Overview
An ACL (Access Control List) is a security feature used in systems (e.g., networking, file systems, databases) to define rules for what users or systems can access specific resources and what actions they can perform on them.
Key Components of an ACL in Merge's Ticketing API
The object to be accessed: Tickets and Collections (a group of tickets)
The permissions cascade based on:
access_level
(enum field on tickets and collections to indicate where access is inherited from)
All of the following have access to read a Ticket
Assignees: Users or Teams that are directly responsible
Viewers: Inclusive of Users or Teams with any level of access. They could be directly assigned or tagged as a follower of a ticket/collection.
How to determine ticket access
How to determine if an individual or a team has access to a specific ticket
Fetch all tickets of interest: GET /tickets
Determine users that have direct access to a Ticket
Use GET /ticket/{ticket_id}/viewers which returns a list of Viewer objects that point to a User id or Team id that are viewers of a Ticket with the given id.
Use a query param for
Teams
on theUsers
object (GET /users?team={team_id}) to return the list of Users that are associated with the teams with access to a ticketDetermine users that have indirect access to a Ticket by using the
access_level
field on the Ticket objectIf
access_level
=PRIVATE
, then everyone with access has direct access and can be retrieved via the GET /ticket/{ticket_id}/viewers endpoint.If
access_level
=COLLECTION
, then all Viewers from the ticket's collections have indirect access.Use GET /collections/{collection_id}/viewers to retrieve all users
Use the
access_level
field on the Collection object to determine if you need to traverse a level higher to retrieve the parent collection and their viewers.
If
access_level
=COMPANY
, then all Users at the company have the ability to view the given ticket.If
access_level
=PUBLIC
, then all Users and select external parties have access to the ticket.
ENUM Value for access_level on Tickets | Definitions |
| All internal and select external users and teams can access this ticket |
| All users and teams from the company can access this ticket |
| Only users and teams who have access to the parent collection can access this ticket |
| Only a specific subset of users and teams can access this ticket |
How to determine ticket assignment
How to determine which individuals or teams are assigned to a specific ticket
Fetch all tickets of interest: GET /tickets
Users: see the
ticket.assignees
fieldTeams: see the
ticket.assigned_teams
field
Considerations
Overrides: Ticket-level permissions override collection level permissions
Field level ACLs: Merge does not support permissions at the field level. Only a few systems like ServiceNow have support for field level permissions. If you would like to maintain access at the field level, consider having each individual authenticate using their credentials. That way permissions are maintained by the third-party platform.