MethodPathSummaryAuth
GET/v1/admin/tenant-scopesList tenant scope targets for platform administrationSession
PUT/v1/admin/tenant-scopes/{scope_id}/parentPut a tenant under a reseller, or back to the platformSession

Contract file:api/openapi/v1/control.yaml

Operation details

GET /v1/admin/tenant-scopes

List tenant scope targets for platform administration

operationId
listTenantScopes
Auth
  • Session: the Bearer session of a signed-in control plane user, used by the customer in their own control plane; a plugin must never ask for it.
Required permissions

All of:identity.users.manage

Description (from the contract)

Returns a small read-only tenant directory for platform identities. Requires identity.users.manage (or platform.admin) in a platform scope. Billing and other tenant data are intentionally excluded; suspended and closed tenants remain visible with their status.

Parameters

listTenantScopes Parameters
NameInTypeRequiredDescription
pagequeryintegerNo—
limitqueryintegerNo—
searchquerystringNoCase-insensitive substring matched against tenant name, stable short tenant ID, tenant UUID, and scope UUID.
parentquerystringNoReseller filter: "none" = platform customers only; a reseller scope UUID (canonical lower case) = its customers; omitted = all.

Responses

listTenantScopes Responses
StatusDescription
200Stable tenant scope page ordered newest first.

Fields:items: array<TenantScope> page: integer limit: integer total: integer(int64)

400The request body or parameters are invalid.
401Authentication failed or the session is invalid.
403The authenticated principal is not allowed to perform the action.
500The request could not be completed because of an internal failure.

What to do on failure

  • 400 Fix the parameters or body per the field list; do not retry unchanged.
  • 401 Check the credential format and whether it expired or was rotated.
  • 403 Check the key scopes, the owner’s current permissions and the tenant scope; never switch to a more privileged account.
  • 500 Outcome unknown: read back by ID or list first, then decide whether to retry with the original Idempotency-Key.

↑ Back to list

PUT /v1/admin/tenant-scopes/{scope_id}/parent

Put a tenant under a reseller, or back to the platform

operationId
setTenantParent
Auth
  • Session: the Bearer session of a signed-in control plane user, used by the customer in their own control plane; a plugin must never ask for it.
Required permissions

All of:identity.users.manage

Description (from the contract)

parent_scope_id null makes the tenant a platform customer again. The parent must be an active reseller, not the tenant itself; a reseller cannot have a parent (one level); a reseller at its customer_limit refuses new customers. Existing subscriptions are kept until they expire. Requires identity.users.manage in the platform scope.

Parameters

setTenantParent Parameters
NameInTypeRequiredDescription
scope_idpathstring(uuid)Yes—

Request body

application/json · Required:Yes

setTenantParent Request body
NameTypeRequiredDescription
parent_scope_idstring(uuid) | null(uuid)Yes—

Responses

setTenantParent Responses
StatusDescription
200The tenant's reseller.

Fields:tenant_scope_id: string(uuid) parent_scope_id: string(uuid) | null(uuid)

400The request body or parameters are invalid.
401Authentication failed or the session is invalid.
403The authenticated principal is not allowed to perform the action.
404The requested resource was not found.
422The request is well formed but breaks a business rule (error.code names it).
500The request could not be completed because of an internal failure.

What to do on failure

  • 400 Fix the parameters or body per the field list; do not retry unchanged.
  • 401 Check the credential format and whether it expired or was rotated.
  • 403 Check the key scopes, the owner’s current permissions and the tenant scope; never switch to a more privileged account.
  • 404 The resource does not exist or belongs to another tenant.
  • 500 Outcome unknown: read back by ID or list first, then decide whether to retry with the original Idempotency-Key.

↑ Back to list