Back to API overview

Admin Portal

15 endpoints

Self-serve IT admin portal for SSO, SCIM, and domains.

admin_portal.read
admin_portal.write
sub_orgs.read
sub_orgs.write
apps_config.read
apps_config.write
members.read
members.write

Branding, custom domains, and org administration. Org-scoped routes do not require subOrgId.

Authenticate with your organization API key. Include subOrgId as a query parameter or in the request body when using an org-wide key. Organization-scoped keys automatically target their organization.

Admin portal

GET
/v1/admin-portal

Get admin portal overview including branding, domains, and setup checklist. Requires admin_portal.read.

Query Parameters

ParamTypeRequiredDescription
subOrgIdstringNoOrganization ID. Required for org-wide keys on write operations; optional on list when the key is scoped to one organization.

Response — 200

{ "overview": { /* branding, domains, checklist */ } }
PATCH
/v1/admin-portal

Update branding settings. Requires admin_portal.write.

Query Parameters

ParamTypeRequiredDescription
subOrgIdstringNoOrganization ID. Required for org-wide keys on write operations; optional on list when the key is scoped to one organization.

Request Body

ParamTypeRequiredDescription
brand_namestringNoDisplay name shown in the admin portal
logo_urlstringNoURL of the organization logo
support_emailstringNoSupport contact email
subOrgIdstringYesOrganization ID. Required for org-wide keys on write operations; optional on list when the key is scoped to one organization.

Response — 200

{ "overview": { /* updated */ } }
POST
/v1/admin-portal

Manage custom domains (add_domain, verify_domain, remove_domain). Requires admin_portal.write.

Query Parameters

ParamTypeRequiredDescription
subOrgIdstringNoOrganization ID. Required for org-wide keys on write operations; optional on list when the key is scoped to one organization.

Request Body

ParamTypeRequiredDescription
actionstringYesDomain action: add_domain, verify_domain, or remove_domain
domainstringNoDomain name to add
domainIdstringNoDomain ID for verify or remove actions
subOrgIdstringYesOrganization ID. Required for org-wide keys on write operations; optional on list when the key is scoped to one organization.

Response — 200

{ "success": true }

Organizations

GET
/v1/organizations

List all organizations in the account. Requires sub_orgs.read.

Response — 200

{ "subOrganizations": [ /* sub-org objects */ ] }
POST
/v1/organizations

Create an organization. Requires sub_orgs.write.

Request Body

ParamTypeRequiredDescription
namestringYesOrganization display name
slugstringYesURL-safe slug (unique within the org)
descriptionstringNoOptional description

Response — 200

{ "subOrganization": { /* created */ } }
GET
/v1/organizations/{subOrgId}

Get an organization by ID. Requires sub_orgs.read.

Response — 200

{ "subOrganization": { /* sub-org */ } }
PATCH
/v1/organizations/{subOrgId}

Update organization name, description, or status. Requires sub_orgs.write.

Request Body

ParamTypeRequiredDescription
namestringNoOrganization display name
descriptionstringNoOptional description
statusstringNoactive, suspended, or archived

Response — 200

{ "subOrganization": { /* updated */ } }
DELETE
/v1/organizations/{subOrgId}

Archive an organization. Requires sub_orgs.write.

Response — 200

{ "success": true }
GET
/v1/organizations/{subOrgId}/members

List members assigned to an organization. Requires sub_orgs.read.

Response — 200

{ "members": [ /* roster */ ] }
PUT
/v1/organizations/{subOrgId}/members

Replace the organization member roster. Requires sub_orgs.write.

Request Body

ParamTypeRequiredDescription
membersobject[]YesArray of { membershipId, role? } objects

Response — 200

{ "members": [ /* updated roster */ ] }

Team members

GET
/v1/members

List organization team members. Requires members.read.

Response — 200

{ "members": [ /* org members */ ] }
PATCH
/v1/members/{membershipId}

Change an organization member's role. Requires members.write.

Request Body

ParamTypeRequiredDescription
newRolestringYesAccount role: owner, admin, member, or developer

Response — 200

{ "member": { /* updated */ } }
DELETE
/v1/members/{membershipId}

Remove a member from the organization. Requires members.write.

Response — 200

{ "success": true }

Service configuration

GET
/v1/organization-apps

Get enabled services and sidebar layout for an organization. Requires apps_config.read.

Query Parameters

ParamTypeRequiredDescription
subOrgIdstringNoOrganization ID. Required for org-wide keys on write operations; optional on list when the key is scoped to one organization.

Response — 200

{ "enabledAppIds": [], "appGroups": [], "sidebarGroupsCollapsible": true }
PUT
/v1/organization-apps

Save enabled services and sidebar configuration. Requires apps_config.write.

Query Parameters

ParamTypeRequiredDescription
subOrgIdstringNoOrganization ID. Required for org-wide keys on write operations; optional on list when the key is scoped to one organization.

Request Body

ParamTypeRequiredDescription
enabledAppIdsstring[]NoArray of enabled OS service IDs
appGroupsobject[]NoSidebar group layout configuration
sidebarGroupsCollapsiblebooleanNoWhether sidebar groups can be collapsed
subOrgIdstringYesOrganization ID. Required for org-wide keys on write operations; optional on list when the key is scoped to one organization.

Response — 200

{ "enabledAppIds": [], "appGroups": [] }