MethodPathSummaryAuth
GET/v1/admin/user-groupsList platform-scoped tenant-user groupsSession
POST/v1/admin/user-groupsCreate a platform-scoped tenant-user groupSession
PATCH/v1/admin/user-groups/{id}Rename a tenant-user group with CASSession
DELETE/v1/admin/user-groups/{id}Delete an empty tenant-user group with CASSession

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

Operation details

GET /v1/admin/user-groups

List platform-scoped tenant-user groups

operationId
listUserGroups
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

The contract has no separate permission annotation; see the description below and the 403 response.

Parameters

listUserGroups Parameters
NameInTypeRequiredDescription
pagequeryintegerNo—
limitqueryintegerNo—
searchquerystringNo—

Responses

listUserGroups Responses
StatusDescription
200Stable user-group page ordered newest first.

Fields:items: array<UserGroup> 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

POST /v1/admin/user-groups

Create a platform-scoped tenant-user group

operationId
createUserGroup
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

The contract has no separate permission annotation; see the description below and the 403 response.

Parameters

createUserGroup Parameters
NameInTypeRequiredDescription
Idempotency-KeyheaderstringYes—
X-Request-IDheaderstringNoCaller-stable write attempt identifier. Reuse it only with the same idempotency key and body.
traceparentheaderstringNoW3C trace context preserved across an exact retry.

Request body

application/json · Required:Yes

createUserGroup Request body
NameTypeRequiredDescription
namestringYes—

Responses

createUserGroup Responses
StatusDescription
201User group created, or an identical request replayed.

Fields:id: string(uuid) scope_id: string(uuid) name: string revision: integer(int64) member_count: integer(int64) created_at: string(date-time) updated_at: string(date-time)

400The request body or parameters are invalid.
401Authentication failed or the session is invalid.
403The authenticated principal is not allowed to perform the action.
409The requested state conflicts with an existing resource or idempotency fact.
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.
  • 409 Read the current state first; a retry of the same operation keeps the original Idempotency-Key and body.
  • 500 Outcome unknown: read back by ID or list first, then decide whether to retry with the original Idempotency-Key.

↑ Back to list

PATCH /v1/admin/user-groups/{id}

Rename a tenant-user group with CAS

operationId
updateUserGroup
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

The contract has no separate permission annotation; see the description below and the 403 response.

Parameters

updateUserGroup Parameters
NameInTypeRequiredDescription
idpathstring(uuid)Yes—
Idempotency-KeyheaderstringYes—
X-Request-IDheaderstringNoCaller-stable write attempt identifier. Reuse it only with the same idempotency key and body.
traceparentheaderstringNoW3C trace context preserved across an exact retry.

Request body

application/json · Required:Yes

updateUserGroup Request body
NameTypeRequiredDescription
expected_revisioninteger(int64)Yes—
namestringYes—

Responses

updateUserGroup Responses
StatusDescription
200User group updated, or an identical request replayed.

Fields:id: string(uuid) scope_id: string(uuid) name: string revision: integer(int64) member_count: integer(int64) created_at: string(date-time) updated_at: string(date-time)

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.
409The requested state conflicts with an existing resource or idempotency fact.
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.
  • 409 Read the current state first; a retry of the same operation keeps the original Idempotency-Key and body.
  • 500 Outcome unknown: read back by ID or list first, then decide whether to retry with the original Idempotency-Key.

↑ Back to list

DELETE /v1/admin/user-groups/{id}

Delete an empty tenant-user group with CAS

operationId
deleteUserGroup
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

The contract has no separate permission annotation; see the description below and the 403 response.

Parameters

deleteUserGroup Parameters
NameInTypeRequiredDescription
idpathstring(uuid)Yes—
Idempotency-KeyheaderstringYes—
X-Request-IDheaderstringNoCaller-stable write attempt identifier. Reuse it only with the same idempotency key and body.
traceparentheaderstringNoW3C trace context preserved across an exact retry.

Request body

application/json · Required:Yes

deleteUserGroup Request body
NameTypeRequiredDescription
expected_revisioninteger(int64)Yes—

Responses

deleteUserGroup Responses
StatusDescription
204User group deleted
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.
409The requested state conflicts with an existing resource or idempotency fact.
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.
  • 409 Read the current state first; a retry of the same operation keeps the original Idempotency-Key and body.
  • 500 Outcome unknown: read back by ID or list first, then decide whether to retry with the original Idempotency-Key.

↑ Back to list