Skip to content

Admin

List Admins

List all platform admins, joined to user + adder info.

Responses

StatusDescriptionBody
200Successful ResponsePlatformAdminResponse[]
422Validation ErrorHTTPValidationError

Add Admin

Grant platform-admin access to an existing, already-registered user.

Request body (required)

FieldTypeRequiredDescription
emailstringyes

Responses

StatusDescriptionBody
201Successful ResponsePlatformAdminResponse
422Validation ErrorHTTPValidationError

Remove Admin

Revoke platform-admin access. Guards: no self-removal, no removing the last admin.

Parameters

NameInTypeRequiredDescription
user_idpathstring (uuid)yes

Responses

StatusDescriptionBody
204Successful Response
422Validation ErrorHTTPValidationError

List Allowed Emails

List all registration-allowlist entries.

Responses

StatusDescriptionBody
200Successful ResponseAllowedEmailResponse[]
422Validation ErrorHTTPValidationError

Add Allowed Email

Add an entry to the registration allowlist.

Request body (required)

FieldTypeRequiredDescription
emailstringyes

Responses

StatusDescriptionBody
201Successful ResponseAllowedEmailResponse
422Validation ErrorHTTPValidationError

DELETE /api/admin/allowed-emails/{allowed_email_id}

Section titled “DELETE /api/admin/allowed-emails/{allowed_email_id}”

Remove Allowed Email

Remove a registration-allowlist entry.

Parameters

NameInTypeRequiredDescription
allowed_email_idpathstring (uuid)yes

Responses

StatusDescriptionBody
204Successful Response
422Validation ErrorHTTPValidationError

List Orgs

List/search all organizations, cross-tenant, with per-org member counts.

Parameters

NameInTypeRequiredDescription
limitqueryintegerno
offsetqueryintegerno
qquerystringnoSearch org name/slug (substring, case-insensitive)

Responses

StatusDescriptionBody
200Successful ResponseOrgListResponse
422Validation ErrorHTTPValidationError

Get Org

Org detail plus its member roster.

Parameters

NameInTypeRequiredDescription
org_idpathstring (uuid)yes

Responses

StatusDescriptionBody
200Successful ResponseOrgDetailResponse
422Validation ErrorHTTPValidationError

Add Org Member

Add an EXISTING, already-registered user to an org. Never creates users or sends invites.

Parameters

NameInTypeRequiredDescription
org_idpathstring (uuid)yes

Request body (required)

FieldTypeRequiredDescription
emailstringyes
rolestringno

Responses

StatusDescriptionBody
201Successful ResponseOrgMemberInfo
422Validation ErrorHTTPValidationError

PATCH /api/admin/orgs/{org_id}/members/{user_id}

Section titled “PATCH /api/admin/orgs/{org_id}/members/{user_id}”

Update Org Member Role

Change a member’s role. Refuses if it would leave the org with 0 owners.

Parameters

NameInTypeRequiredDescription
org_idpathstring (uuid)yes
user_idpathstring (uuid)yes

Request body (required)

FieldTypeRequiredDescription
rolestringyes

Responses

StatusDescriptionBody
200Successful ResponseOrgMemberInfo
422Validation ErrorHTTPValidationError

DELETE /api/admin/orgs/{org_id}/members/{user_id}

Section titled “DELETE /api/admin/orgs/{org_id}/members/{user_id}”

Remove Org Member

Remove a member from an org. Refuses to remove the last OWNER.

Parameters

NameInTypeRequiredDescription
org_idpathstring (uuid)yes
user_idpathstring (uuid)yes

Responses

StatusDescriptionBody
204Successful Response
422Validation ErrorHTTPValidationError

Suspend Org

Suspend an organization — blocks regular member access via get_current_org.

Idempotent: calling this on an already-suspended org is a no-op (keeps the original suspended_at timestamp, 200, no duplicate audit entry) rather than 409 — this is a “make it so” action, safe to double-click from the UI.

Parameters

NameInTypeRequiredDescription
org_idpathstring (uuid)yes

Responses

StatusDescriptionBody
200Successful ResponseOrgSuspensionResponse
422Validation ErrorHTTPValidationError

Unsuspend Org

Lift a suspension. Idempotent no-op if the org isn’t currently suspended.

Parameters

NameInTypeRequiredDescription
org_idpathstring (uuid)yes

Responses

StatusDescriptionBody
200Successful ResponseOrgSuspensionResponse
422Validation ErrorHTTPValidationError

Get Org Usage

Usage summary for one org — same shape/service as the self-serve /api/orgs/{org_id}/usage/summary endpoint, just without membership gating.

Parameters

NameInTypeRequiredDescription
org_idpathstring (uuid)yes
windowquerystringnoCounter/cost window: 24h, 7d, 30d (default 30d)

Responses

StatusDescriptionBody
200Successful ResponseUsageSummaryResponse
422Validation ErrorHTTPValidationError

POST /api/admin/users/{user_id}/deactivate

Section titled “POST /api/admin/users/{user_id}/deactivate”

Deactivate User

Disable a user’s account. Guard: no self-deactivate.

Parameters

NameInTypeRequiredDescription
user_idpathstring (uuid)yes

Responses

StatusDescriptionBody
200Successful ResponseUserStatusResponse
422Validation ErrorHTTPValidationError

POST /api/admin/users/{user_id}/reactivate

Section titled “POST /api/admin/users/{user_id}/reactivate”

Reactivate User

Re-enable a previously deactivated user’s account.

Parameters

NameInTypeRequiredDescription
user_idpathstring (uuid)yes

Responses

StatusDescriptionBody
200Successful ResponseUserStatusResponse
422Validation ErrorHTTPValidationError