Admin Portal
Self-serve IT admin portal for SSO, SCIM, and domains.
Branding, custom domains, and org administration. Org-scoped routes do not require subOrgId.
subOrgId as a query parameter or in the request body when using an org-wide key. Sub-org-scoped keys automatically target their sub-organization.Admin portal
/v1/admin-portalGet admin portal overview including branding, domains, and setup checklist. Requires admin_portal.read.
Query Parameters
| Param | Type | Required | Description |
|---|---|---|---|
| subOrgId | string | No | Sub-organization ID. Required for org-wide keys on write operations; optional on list when the key is scoped to one sub-org. |
Response — 200
/v1/admin-portalUpdate branding settings. Requires admin_portal.write.
Query Parameters
| Param | Type | Required | Description |
|---|---|---|---|
| subOrgId | string | No | Sub-organization ID. Required for org-wide keys on write operations; optional on list when the key is scoped to one sub-org. |
Request Body
| Param | Type | Required | Description |
|---|---|---|---|
| brand_name | string | No | Display name shown in the admin portal |
| logo_url | string | No | URL of the organization logo |
| support_email | string | No | Support contact email |
| subOrgId | string | Yes | Sub-organization ID. Required for org-wide keys on write operations; optional on list when the key is scoped to one sub-org. |
Response — 200
/v1/admin-portalManage custom domains (add_domain, verify_domain, remove_domain). Requires admin_portal.write.
Query Parameters
| Param | Type | Required | Description |
|---|---|---|---|
| subOrgId | string | No | Sub-organization ID. Required for org-wide keys on write operations; optional on list when the key is scoped to one sub-org. |
Request Body
| Param | Type | Required | Description |
|---|---|---|---|
| action | string | Yes | Domain action: add_domain, verify_domain, or remove_domain |
| domain | string | No | Domain name to add |
| domainId | string | No | Domain ID for verify or remove actions |
| subOrgId | string | Yes | Sub-organization ID. Required for org-wide keys on write operations; optional on list when the key is scoped to one sub-org. |
Response — 200
Sub-organizations
/v1/sub-organizationsList all sub-organizations in the organization. Requires sub_orgs.read.
Response — 200
/v1/sub-organizationsCreate a sub-organization. Requires sub_orgs.write.
Request Body
| Param | Type | Required | Description |
|---|---|---|---|
| name | string | Yes | Sub-organization display name |
| slug | string | Yes | URL-safe slug (unique within the org) |
| description | string | No | Optional description |
Response — 200
/v1/sub-organizations/{subOrgId}Get a sub-organization by ID. Requires sub_orgs.read.
Response — 200
/v1/sub-organizations/{subOrgId}Update sub-organization name, description, or status. Requires sub_orgs.write.
Request Body
| Param | Type | Required | Description |
|---|---|---|---|
| name | string | No | Sub-organization display name |
| description | string | No | Optional description |
| status | string | No | active, suspended, or archived |
Response — 200
/v1/sub-organizations/{subOrgId}Archive a sub-organization. Requires sub_orgs.write.
Response — 200
/v1/sub-organizations/{subOrgId}/membersList members assigned to a sub-organization. Requires sub_orgs.read.
Response — 200
/v1/sub-organizations/{subOrgId}/membersReplace the sub-organization member roster. Requires sub_orgs.write.
Request Body
| Param | Type | Required | Description |
|---|---|---|---|
| members | object[] | Yes | Array of { membershipId, role? } objects |
Response — 200
Team members
/v1/membersList organization team members. Requires members.read.
Response — 200
/v1/members/{membershipId}Change an organization member's role. Requires members.write.
Request Body
| Param | Type | Required | Description |
|---|---|---|---|
| newRole | string | Yes | Organization role: owner, admin, member, or developer |
Response — 200
/v1/members/{membershipId}Remove a member from the organization. Requires members.write.
Response — 200
App configuration
/v1/organization-appsGet enabled apps and sidebar layout for a sub-organization. Requires apps_config.read.
Query Parameters
| Param | Type | Required | Description |
|---|---|---|---|
| subOrgId | string | No | Sub-organization ID. Required for org-wide keys on write operations; optional on list when the key is scoped to one sub-org. |
Response — 200
/v1/organization-appsSave enabled apps and sidebar configuration. Requires apps_config.write.
Query Parameters
| Param | Type | Required | Description |
|---|---|---|---|
| subOrgId | string | No | Sub-organization ID. Required for org-wide keys on write operations; optional on list when the key is scoped to one sub-org. |
Request Body
| Param | Type | Required | Description |
|---|---|---|---|
| enabledAppIds | string[] | No | Array of enabled OS app IDs |
| appGroups | object[] | No | Sidebar group layout configuration |
| sidebarGroupsCollapsible | boolean | No | Whether sidebar groups can be collapsed |
| subOrgId | string | Yes | Sub-organization ID. Required for org-wide keys on write operations; optional on list when the key is scoped to one sub-org. |