API reference

Members

Invite people, set roles and limit a member to clients.

  1. GET/v1/members
  2. DELETE/v1/members/invitations/{id}
  3. POST/v1/members/invite
  4. GET/v1/members/roles
  5. DELETE/v1/members/{userId}
  6. PATCH/v1/members/{userId}
  7. POST/v1/members/{userId}/disable
  8. POST/v1/members/{userId}/enable
GET/v1/members

List team members + pending invites + seat usage (filterable)

Needs: A signed-in panel session, sent as Authorization: Bearer <access token>.

Parameters
NameWhereTypeWhat it is
statusquery"active" | "invited" | "disabled"
rolequery"owner" | "admin" | "editor" | "analyst" | "viewer"
qquerystringSearch over name + email.
Responses
StatusBodyWhen
200MembersResponseDto
200 body · MembersResponseDto
FieldTypeWhat it is
seats requiredSeatUsageDto
seats.used requirednumber
seats.limit requirednumber
members requiredMemberDto[]
members[].id requiredstringuserId for members; invitation id for pending invites.
members[].email requiredstring
members[].name requiredstring | null
members[].role required"owner" | "admin" | "editor" | "analyst" | "viewer"
members[].status required"disabled" | "active" | "invited"
members[].joinedAt requiredstring | null
members[].isYou requiredbooleanTrue for the caller's own row.
members[].disabledAt requiredstring | nullWhen this member's access to the workspace was disabled; null while active.
members[].scope requiredMemberScopeDto[] | nullThe clients this member is limited to, or null for access to the whole workspace.
facets requiredMemberFacetsDtoCounts for the status filter tabs, over every member whatever the filters.
facets.status requiredMemberStatusFacetsDto
facets.role requiredMemberRoleFacetsDto
activeAdmins requirednumberAccepted members who can administer the workspace (owner or admin). Counted over the whole workspace whatever the filters, so it is safe to use for a "last admin" check before removing or demoting someone.
DELETE/v1/members/invitations/{id}

Revoke a pending invitation

Needs: A signed-in panel session, sent as Authorization: Bearer <access token>.

Parameters
NameWhereTypeWhat it is
id requiredpathstring
Responses
StatusBodyWhen
204—
POST/v1/members/invite

Invite a member by email

Needs: A signed-in panel session, sent as Authorization: Bearer <access token>.

Request body · InviteMemberDto
FieldTypeWhat it is
email requiredstring (email)
role required"owner" | "admin" | "editor" | "analyst" | "viewer"
scopeMemberScopeGrantDto[]
scope[].groupId requiredstring (uuid)
scope[].mayPublishboolean
Responses
StatusBodyWhen
201InvitationCreatedDto
201 body · InvitationCreatedDto
FieldTypeWhat it is
id requiredstring
email requiredstring
role required"owner" | "admin" | "editor" | "analyst" | "viewer"
expiresAt requiredstring
GET/v1/members/roles

Every role, and exactly what it may do

These are the rules the API enforces, so what the members screen shows is exactly what each role can do.

Needs: A signed-in panel session, sent as Authorization: Bearer <access token>.

Responses
StatusBodyWhen
200RoleDescriptionDto[]
200 body · RoleDescriptionDto[]
FieldTypeWhat it is
role required"owner" | "admin" | "editor" | "analyst" | "viewer"
label requiredstring
summary requiredstringOne sentence on who this role is for, in a customer's words.
isOwner requiredbooleanTrue for the role that owns the workspace. There is exactly one, and it cannot be assigned from the members screen.
permissions requiredPermissionsDtoWhat each role may do. These are the rules the API enforces.
permissions.domains requiredDomainsPermissions
permissions.consent requiredConsentPermissions
permissions.compliance requiredCompliancePermissions
permissions.banner requiredBannerPermissions
permissions.integrations requiredIntegrationsPermissions
permissions.analytics requiredAnalyticsPermissions
permissions.users requiredUsersPermissions
permissions.settings requiredSettingsPermissions
permissions.billing requiredBillingPermissions
DELETE/v1/members/{userId}

Remove a member

Needs: A signed-in panel session, sent as Authorization: Bearer <access token>.

Parameters
NameWhereTypeWhat it is
userId requiredpathstring
Responses
StatusBodyWhen
204—
PATCH/v1/members/{userId}

Change a member's role, and which clients they may see

An omitted scope leaves their client access as it is; [] clears it and gives them the whole workspace; a list limits them to exactly those domain groups. An owner cannot be limited to clients.

Needs: A signed-in panel session, sent as Authorization: Bearer <access token>.

Parameters
NameWhereTypeWhat it is
userId requiredpathstring
Request body · UpdateMemberRoleDto
FieldTypeWhat it is
role required"owner" | "admin" | "editor" | "analyst" | "viewer"
scopeMemberScopeGrantDto[]
scope[].groupId requiredstring (uuid)
scope[].mayPublishboolean
Responses
StatusBodyWhen
200MemberDto
200 body · MemberDto
FieldTypeWhat it is
id requiredstringuserId for members; invitation id for pending invites.
email requiredstring
name requiredstring | null
role required"owner" | "admin" | "editor" | "analyst" | "viewer"
status required"disabled" | "active" | "invited"
joinedAt requiredstring | null
isYou requiredbooleanTrue for the caller's own row.
disabledAt requiredstring | nullWhen this member's access to the workspace was disabled; null while active.
scope requiredMemberScopeDto[] | nullThe clients this member is limited to, or null for access to the whole workspace.
scope.groupId requiredstring
scope.groupName requiredstring
scope.mayPublish requiredboolean
POST/v1/members/{userId}/disable

Suspend a member's access to this workspace, without removing them

Needs: A signed-in panel session, sent as Authorization: Bearer <access token>.

Parameters
NameWhereTypeWhat it is
userId requiredpathstring
Responses
StatusBodyWhen
200MemberDto
200 body · MemberDto
FieldTypeWhat it is
id requiredstringuserId for members; invitation id for pending invites.
email requiredstring
name requiredstring | null
role required"owner" | "admin" | "editor" | "analyst" | "viewer"
status required"disabled" | "active" | "invited"
joinedAt requiredstring | null
isYou requiredbooleanTrue for the caller's own row.
disabledAt requiredstring | nullWhen this member's access to the workspace was disabled; null while active.
scope requiredMemberScopeDto[] | nullThe clients this member is limited to, or null for access to the whole workspace.
scope.groupId requiredstring
scope.groupName requiredstring
scope.mayPublish requiredboolean
POST/v1/members/{userId}/enable

Restore a suspended member's access to this workspace

Needs: A signed-in panel session, sent as Authorization: Bearer <access token>.

Parameters
NameWhereTypeWhat it is
userId requiredpathstring
Responses
StatusBodyWhen
200MemberDto
200 body · MemberDto
FieldTypeWhat it is
id requiredstringuserId for members; invitation id for pending invites.
email requiredstring
name requiredstring | null
role required"owner" | "admin" | "editor" | "analyst" | "viewer"
status required"disabled" | "active" | "invited"
joinedAt requiredstring | null
isYou requiredbooleanTrue for the caller's own row.
disabledAt requiredstring | nullWhen this member's access to the workspace was disabled; null while active.
scope requiredMemberScopeDto[] | nullThe clients this member is limited to, or null for access to the whole workspace.
scope.groupId requiredstring
scope.groupName requiredstring
scope.mayPublish requiredboolean

Next groupWorkspace