Skip to main content

Organizations (platform admin)

List, provision, and manage tenants (organizations) across the deployment. provision_org is the reciprocal of self-service registration — for operators standing up a tenant on a customer's behalf.

::: tip Auth

  • GET /v1/admin/orgs — any platform admin.
  • POST /v1/admin/orgs — platform Admin or higher.
  • PATCH /v1/admin/orgs/:id — platform Admin or higher. :::

GET /v1/admin/orgs

List tenants, newest-first, with offset pagination.

Request

GET /v1/admin/orgs?q=<term>&page=<n>&page_size=<n>

Query paramTypeNotes
qstringFree-text term matched against org name and slug. Blank/absent lists all.
pageint1-indexed. Defaults to 1.
page_sizeintDefaults to 25, clamped to [1, 100].

Response

200 OK

{
"items": [
{
"id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"name": "Acme Inc",
"slug": "acme",
"created_at": "2026-01-15T10:00:00Z",
"suspended": false
}
],
"total": 1,
"page": 1,
"page_size": 25
}
FieldTypeMeaning
items[].idUUIDTenant id.
items[].namestringDisplay name.
items[].slugstringURL-safe slug.
items[].created_atstringRFC3339 creation time.
items[].suspendedbooltrue when the tenant is soft-deleted / suspended.
total / page / page_sizeintOffset-pagination envelope.

POST /v1/admin/orgs

Provision a new tenant and its first owner user in one call.

Request

POST /v1/admin/orgs

{
"organization_name": "Acme Inc",
"organization_slug": "acme",
"owner_email": "owner@acme.com",
"owner_password": "a-strong-password-min-12",
"owner_display_name": "Acme Owner"
}
FieldTypeRequiredNotes
organization_namestringyesDisplay name of the new tenant.
organization_slugstringnoURL-safe slug. Derived from the name when omitted.
owner_emailstringyesEmail of the tenant's first owner.
owner_passwordstringyesInitial password (min 12 chars). The owner can reset it later.
owner_display_namestringnoOptional display name for the owner.

Response

201 Created

{
"organization_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"owner_user_id": "a3f1c2d4-…",
"slug": "acme"
}

PATCH /v1/admin/orgs/:id

Rename and/or suspend/restore a tenant.

Request

PATCH /v1/admin/orgs/:id

{ "name": "Acme Corporation", "suspended": true }
FieldTypeNotes
namestringOptional. Rename the tenant.
suspendedboolOptional. true soft-deletes (suspends); false restores.

Response

200 OK

Returns the updated org row (same shape as one GET list element).


Error responses

StatusCodeWhen
401authentication_requiredNo valid auth credential.
403forbiddenCaller lacks the required platform role.
403csrf_failedCookie-authed POST/PATCH without a valid X-IdentSphere-CSRF header.
400invalid_inputMissing/invalid fields, bad slug, or weak owner password.
409conflictSlug or owner email already in use.
404not_foundNo such org (PATCH).