The descriptions of the operations and fields are the contract’s own, in English.
/identity/v1/organizations/{org}/entitlementsList an organization's active entitlements
- Credential
- API key
- Permission
entitlements.read
Returns the organization's own ACTIVE, organization-scoped entitlement set (revoked rows are tombstones, never active; a team's own entitlements are listed on the team). No request body. Failures: 400 name-invalid (an organization id outside the C7 pattern); 404 organization-not-found (the organization is unknown — a 404, not an empty list); 500 server faults. Needs entitlements.read in the route's organization; a platform operator holds it at platform level.
curl "https://console.latam.ccsio.ai/identity/v1/organizations/{org}/entitlements" \
-H "Authorization: Bearer $CCSIO_API_KEY"Parameters
| Name | In | Description |
|---|---|---|
X-Request-IDoptional | header | string Optional request ULID. A valid ULID (upper or lowercase) is honored; when the header is absent or invalid, the runtime mints the id. The response X-Request-ID header carries the canonical uppercase form. |
orgrequired | path | string The organization id (C7 identifier). A value outside the pattern is refused with 400 name-invalid. |
Responses
- 200
The organization's active entitlement views.
Schema
ListEntitlementsResponseDetailentitlementsarray of EntitlementDetailrequiredorg_idstringrequiredThe organization id (C7 identifier).
pattern ^[a-z][a-z0-9._-]{0,63}$
team_idstring or nullrequirednull = organization-scoped; a C7 team id = team-scoped.
pattern ^[a-z][a-z0-9._-]{0,63}$
capabilitystringrequiredThe entitlement capability, one of the four closed families.
Allowed values:
"model_access""brain_capacity""billing_state""feature"model_refstringrequiredThe C0 model reference; empty unless capability=model_access.
feature_keystringrequiredThe feature key, a closed vocabulary; empty unless capability=feature.
Allowed values:
"""memory.connectors""memory.zero_content_retention"capacity_quantityintegerrequiredBrain capacity's amount; 0 unless capability=brain_capacity, where it is always > 0.
at least 0
capacity_unitstringrequiredBrain capacity's unit (gigabytes of indexed content; provisional, and the only unit today); empty unless capability=brain_capacity.
Allowed values:
"""gb"statestringrequiredThe entitlement state: active (part of the scope's active set) or revoked (the tombstone).
Allowed values:
"active""revoked"created_atstring (date-time)requiredRFC 3339, second precision, UTC.
- 400
Client refusal unrelated to authentication, including malformed input, a denied or failed request.
- 401
The request carries no credential, more than one, or one the platform does not accept, and is refused before the operation runs; `error.code` says why. Supply exactly one credential. Codes: invalid-request (no credential, or both Authorization:
Read more
Bearer and x-api-key), api-key-invalid (a value that is not a platform API key, or a key of a kind the platform does not accept), api-key-unknown, api-key-revoked, api-key-expired, bootstrap-disabled (the one-shot installation credential, once a key exists), token-malformed (a bearer token that is not a JWT), token-algorithm-unsupported, token-signature-invalid, token-claim-invalid, token-issuer-mismatch, token-audience-mismatch, token-expired, token-not-yet-valid, issuer-untrusted, issuer-residency-mismatch (the issuer belongs to another plane), issuer-resolution-unknown, jwks-unavailable, jwks-key-not-found, staff-token-inactive (a platform operator's token), staff-not-operator, staff-directory-unavailable, identity-not-provisioned (a verified identity with no account on this plane), organization-not-found (a verified identity or key whose organization this plane does not know), internal-error (a fault while the credential is checked is refused too, fail closed), context-cancelled
- 402
The organization has to pay first: its standing is payment_required.
Read more
The request boundary applies this payment gate to every route except an organization's billing routes, the caller's own context, organization list, onboarding, session report and personal keys, the public routes, and the routes of platform operators, who administer an organization that has to pay. The operations the gate covers declare this response. On /v1 the refusal is rendered in the OpenAI error format. Code: payment-required
- 403
The credential is valid but may not do this here; the request is refused by the request boundary before the handler runs, and `error.code` says which refusal. An operation may add codes of its own.
Read more
Codes: policy-denied (no role of the caller holds the permission the operation needs, or the credential class may not call it: a personal API key outside inference and MCP, a route that needs a signed-in person, the one-shot installation credential outside its three steps), tenant-mismatch (the organization a path, query, body or X-Tenant header names is not the caller's own), organization-provisioning, organization-suspended, organization-disabled, organization-deleted (the state of the caller's organization), user-disabled, residency-mismatch (the organization lives on another plane), organization-selection-required (a caller with more than one organization, or a platform operator, must name one in X-Organization-Id), organization-not-selectable, no-active-organization-membership, team-not-selectable (the X-Organization-Id or X-Team-Id the caller sent does not name an organization or team it may act in), identity-managed-by-provider (a person who is not a platform operator changes an organization's status, which belongs to the identity provider), support-session-required (a platform operator reads an organization's data without an open support session)
- 404
The requested resource or path was not found.
- 405
The path is claimed but the request method is not allowed. Go ServeMux returns its standard plain-text response and lists permitted methods in Allow.
- 500
Platform failure, rendered without internal cause details.
/identity/v1/organizations/{org}/entitlements/{capability}Read one active entitlement
- Credential
- API key
- Permission
entitlements.read
Reads one stored row of the organization's ACTIVE set by capability (and model_ref, query-carried, for model_access, or feature_key, query-carried, for feature). No request body.
Read more
Failures: 400 name-invalid (an organization id outside the C7 pattern); 404 organization-not-found (the organization is unknown), 404 entitlement-not-found (an absent or revoked entitlement; a capability outside the four families, or a member that does not go with the family, finds none and is answered the same way); 500 server faults.
curl "https://console.latam.ccsio.ai/identity/v1/organizations/{org}/entitlements/{capability}" \
-H "Authorization: Bearer $CCSIO_API_KEY"Parameters
| Name | In | Description |
|---|---|---|
X-Request-IDoptional | header | string Optional request ULID. A valid ULID (upper or lowercase) is honored; when the header is absent or invalid, the runtime mints the id. The response X-Request-ID header carries the canonical uppercase form. |
orgrequired | path | string The organization id (C7 identifier). A value outside the pattern is refused with 400 name-invalid. |
capabilityrequired | path | string The entitlement capability, path-carried because it is a closed enum. One of the four families: model_access, brain_capacity, billing_state, feature. A read or a revoke names a stored entitlement, so a value outside the four (or a member that does not go with the family) finds none and is answered 404 entitlement-not-found, not as a malformed request. |
model_refoptional | query | string The entitlement's C0 model reference, query-carried because a C0 ref may contain '/' and ':' (path segments would mangle them into several tokens). Present for model_access; absent for every other family. |
feature_keyoptional | query | string The feature key: required when capability is feature, forbidden otherwise (400 entitlement-invalid). |
Responses
- 200
The entitlement view in state active.
Schema
EntitlementDetailorg_idstringrequiredThe organization id (C7 identifier).
pattern ^[a-z][a-z0-9._-]{0,63}$
team_idstring or nullrequirednull = organization-scoped; a C7 team id = team-scoped.
pattern ^[a-z][a-z0-9._-]{0,63}$
capabilitystringrequiredThe entitlement capability, one of the four closed families.
Allowed values:
"model_access""brain_capacity""billing_state""feature"model_refstringrequiredThe C0 model reference; empty unless capability=model_access.
feature_keystringrequiredThe feature key, a closed vocabulary; empty unless capability=feature.
Allowed values:
"""memory.connectors""memory.zero_content_retention"capacity_quantityintegerrequiredBrain capacity's amount; 0 unless capability=brain_capacity, where it is always > 0.
at least 0
capacity_unitstringrequiredBrain capacity's unit (gigabytes of indexed content; provisional, and the only unit today); empty unless capability=brain_capacity.
Allowed values:
"""gb"statestringrequiredThe entitlement state: active (part of the scope's active set) or revoked (the tombstone).
Allowed values:
"active""revoked"created_atstring (date-time)requiredRFC 3339, second precision, UTC.
- 400
Client refusal unrelated to authentication, including malformed input, a denied or failed request.
- 401
The request carries no credential, more than one, or one the platform does not accept, and is refused before the operation runs; `error.code` says why. Supply exactly one credential. Codes: invalid-request (no credential, or both Authorization:
Read more
Bearer and x-api-key), api-key-invalid (a value that is not a platform API key, or a key of a kind the platform does not accept), api-key-unknown, api-key-revoked, api-key-expired, bootstrap-disabled (the one-shot installation credential, once a key exists), token-malformed (a bearer token that is not a JWT), token-algorithm-unsupported, token-signature-invalid, token-claim-invalid, token-issuer-mismatch, token-audience-mismatch, token-expired, token-not-yet-valid, issuer-untrusted, issuer-residency-mismatch (the issuer belongs to another plane), issuer-resolution-unknown, jwks-unavailable, jwks-key-not-found, staff-token-inactive (a platform operator's token), staff-not-operator, staff-directory-unavailable, identity-not-provisioned (a verified identity with no account on this plane), organization-not-found (a verified identity or key whose organization this plane does not know), internal-error (a fault while the credential is checked is refused too, fail closed), context-cancelled
- 402
The organization has to pay first: its standing is payment_required.
Read more
The request boundary applies this payment gate to every route except an organization's billing routes, the caller's own context, organization list, onboarding, session report and personal keys, the public routes, and the routes of platform operators, who administer an organization that has to pay. The operations the gate covers declare this response. On /v1 the refusal is rendered in the OpenAI error format. Code: payment-required
- 403
The credential is valid but may not do this here; the request is refused by the request boundary before the handler runs, and `error.code` says which refusal. An operation may add codes of its own.
Read more
Codes: policy-denied (no role of the caller holds the permission the operation needs, or the credential class may not call it: a personal API key outside inference and MCP, a route that needs a signed-in person, the one-shot installation credential outside its three steps), tenant-mismatch (the organization a path, query, body or X-Tenant header names is not the caller's own), organization-provisioning, organization-suspended, organization-disabled, organization-deleted (the state of the caller's organization), user-disabled, residency-mismatch (the organization lives on another plane), organization-selection-required (a caller with more than one organization, or a platform operator, must name one in X-Organization-Id), organization-not-selectable, no-active-organization-membership, team-not-selectable (the X-Organization-Id or X-Team-Id the caller sent does not name an organization or team it may act in), identity-managed-by-provider (a person who is not a platform operator changes an organization's status, which belongs to the identity provider), support-session-required (a platform operator reads an organization's data without an open support session)
- 404
The requested resource or path was not found.
- 405
The path is claimed but the request method is not allowed. Go ServeMux returns its standard plain-text response and lists permitted methods in Allow.
- 500
Platform failure, rendered without internal cause details.
/identity/v1/organizations/{org}/teams/{team}/entitlementsList one team's own active entitlements
- Credential
- API key
- Permission
entitlements.read
Returns exactly this team's own active, team-scoped entitlements: never the organization-scoped set (GET .../entitlements lists that) and never another team's. The team's existence is checked: an unknown team is 404, not an empty list.
Read more
Needs entitlements.read for the team: the team's own administrator may read it, as may an organization-wide administrator or a platform ccsio_admin. Failures: 400 name-invalid; 404 team-not-found (an unknown team, or an unknown organization); 500 server faults.
curl "https://console.latam.ccsio.ai/identity/v1/organizations/{org}/teams/{team}/entitlements" \
-H "Authorization: Bearer $CCSIO_API_KEY"Parameters
| Name | In | Description |
|---|---|---|
X-Request-IDoptional | header | string Optional request ULID. A valid ULID (upper or lowercase) is honored; when the header is absent or invalid, the runtime mints the id. The response X-Request-ID header carries the canonical uppercase form. |
orgrequired | path | string The organization id (C7 identifier). A value outside the pattern is refused with 400 name-invalid. |
teamrequired | path | string The team id (C7 identifier). A value outside the pattern is refused with 400 name-invalid. |
Responses
- 200
This team's own active entitlements.
Schema
ListEntitlementsResponseDetailentitlementsarray of EntitlementDetailrequiredorg_idstringrequiredThe organization id (C7 identifier).
pattern ^[a-z][a-z0-9._-]{0,63}$
team_idstring or nullrequirednull = organization-scoped; a C7 team id = team-scoped.
pattern ^[a-z][a-z0-9._-]{0,63}$
capabilitystringrequiredThe entitlement capability, one of the four closed families.
Allowed values:
"model_access""brain_capacity""billing_state""feature"model_refstringrequiredThe C0 model reference; empty unless capability=model_access.
feature_keystringrequiredThe feature key, a closed vocabulary; empty unless capability=feature.
Allowed values:
"""memory.connectors""memory.zero_content_retention"capacity_quantityintegerrequiredBrain capacity's amount; 0 unless capability=brain_capacity, where it is always > 0.
at least 0
capacity_unitstringrequiredBrain capacity's unit (gigabytes of indexed content; provisional, and the only unit today); empty unless capability=brain_capacity.
Allowed values:
"""gb"statestringrequiredThe entitlement state: active (part of the scope's active set) or revoked (the tombstone).
Allowed values:
"active""revoked"created_atstring (date-time)requiredRFC 3339, second precision, UTC.
- 400
Client refusal unrelated to authentication, including malformed input, a denied or failed request.
- 401
The request carries no credential, more than one, or one the platform does not accept, and is refused before the operation runs; `error.code` says why. Supply exactly one credential. Codes: invalid-request (no credential, or both Authorization:
Read more
Bearer and x-api-key), api-key-invalid (a value that is not a platform API key, or a key of a kind the platform does not accept), api-key-unknown, api-key-revoked, api-key-expired, bootstrap-disabled (the one-shot installation credential, once a key exists), token-malformed (a bearer token that is not a JWT), token-algorithm-unsupported, token-signature-invalid, token-claim-invalid, token-issuer-mismatch, token-audience-mismatch, token-expired, token-not-yet-valid, issuer-untrusted, issuer-residency-mismatch (the issuer belongs to another plane), issuer-resolution-unknown, jwks-unavailable, jwks-key-not-found, staff-token-inactive (a platform operator's token), staff-not-operator, staff-directory-unavailable, identity-not-provisioned (a verified identity with no account on this plane), organization-not-found (a verified identity or key whose organization this plane does not know), internal-error (a fault while the credential is checked is refused too, fail closed), context-cancelled
- 402
The organization has to pay first: its standing is payment_required.
Read more
The request boundary applies this payment gate to every route except an organization's billing routes, the caller's own context, organization list, onboarding, session report and personal keys, the public routes, and the routes of platform operators, who administer an organization that has to pay. The operations the gate covers declare this response. On /v1 the refusal is rendered in the OpenAI error format. Code: payment-required
- 403
The credential is valid but may not do this here; the request is refused by the request boundary before the handler runs, and `error.code` says which refusal. An operation may add codes of its own.
Read more
Codes: policy-denied (no role of the caller holds the permission the operation needs, or the credential class may not call it: a personal API key outside inference and MCP, a route that needs a signed-in person, the one-shot installation credential outside its three steps), tenant-mismatch (the organization a path, query, body or X-Tenant header names is not the caller's own), organization-provisioning, organization-suspended, organization-disabled, organization-deleted (the state of the caller's organization), user-disabled, residency-mismatch (the organization lives on another plane), organization-selection-required (a caller with more than one organization, or a platform operator, must name one in X-Organization-Id), organization-not-selectable, no-active-organization-membership, team-not-selectable (the X-Organization-Id or X-Team-Id the caller sent does not name an organization or team it may act in), identity-managed-by-provider (a person who is not a platform operator changes an organization's status, which belongs to the identity provider), support-session-required (a platform operator reads an organization's data without an open support session)
- 404
The requested resource or path was not found.
- 405
The path is claimed but the request method is not allowed. Go ServeMux returns its standard plain-text response and lists permitted methods in Allow.
- 500
Platform failure, rendered without internal cause details.
/identity/v1/organizations/{org}/teams/{team}/entitlementsGrant a team an entitlement
- Credential
- API key
- Permission
team-entitlements.manage- Request body
- Body up to 1 MiB
Allocates part of what the organization holds to one of its teams: never more than the organization itself holds, which is enforced server-side.
Read more
Needs team-entitlements.manage in the organization (the Root and Organization Admin roles hold it; a team's own administrator does not), unlike the organization-scoped create, which is a platform operator's. A presence capability (model_access, feature) requires the organization to hold the same model or feature actively (a model it reaches through a model group counts); brain_capacity requires the sum of every team's active share, this one included, to be at most the organization's own quantity. billing_state is organization-only and cannot be team-scoped. The body is the one of the organization-scoped create; the team always comes from the path, never from the body. Idempotent upsert: granting what the team already holds returns it, re-creating a revoked entitlement re-activates it, and brain_capacity's quantity and unit are overwritten by a re-create (the one deliberate deviation from pure idempotency). Failures: 400 invalid-request (capability missing, a member present or absent against the family, or an unknown member); 400 name-invalid (organization or team outside the C7 pattern); 400 entitlement-invalid (a capability, feature key, capacity, unit or model reference outside its closed vocabulary or pattern, or billing_state); 404 organization-not-found; 404 entitlement-team-not-found (the team does not exist in this organization); 409 entitlement-exceeds-organization (the grant would exceed what the organization holds); 500 server faults.
curl -X POST "https://console.latam.ccsio.ai/identity/v1/organizations/{org}/teams/{team}/entitlements" \
-H "Authorization: Bearer $CCSIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"capability": "model_access"
}'Parameters
| Name | In | Description |
|---|---|---|
X-Request-IDoptional | header | string Optional request ULID. A valid ULID (upper or lowercase) is honored; when the header is absent or invalid, the runtime mints the id. The response X-Request-ID header carries the canonical uppercase form. |
orgrequired | path | string The organization id (C7 identifier). A value outside the pattern is refused with 400 name-invalid. |
teamrequired | path | string The team id (C7 identifier). A value outside the pattern is refused with 400 name-invalid. |
Request body application/json
capabilitystringrequiredThe entitlement capability, one of the four closed families. A value outside the taxonomy is refused with 400 entitlement-invalid.
Allowed values:
"model_access""brain_capacity""billing_state""feature"model_refstringoptionalThe C0 model reference, required for model_access and forbidden otherwise. PRESENCE is a request-shape check (400 invalid-request); the pattern and the taxonomy are the domain's (400 entitlement-invalid).
pattern ^[A-Za-z0-9][A-Za-z0-9._:/-]{0,127}$
feature_keystringoptionalThe feature key, required for feature and forbidden otherwise. Its presence is a request-shape check (400 invalid-request); the closed vocabulary is the domain's (400 entitlement-invalid).
Allowed values:
"memory.connectors""memory.zero_content_retention"capacity_quantityintegeroptionalBrain capacity's amount, required (and > 0) for brain_capacity and forbidden otherwise. Its presence is a request-shape check (400 invalid-request); the positive-value rule is the domain's (400 entitlement-invalid).
at least 1
capacity_unitstringoptionalBrain capacity's unit, required for brain_capacity and forbidden otherwise (gigabytes of indexed content; provisional, and the only unit today).
Allowed values:
"gb"
Responses
- 200
The team-scoped entitlement, in state active.
Schema
EntitlementDetailorg_idstringrequiredThe organization id (C7 identifier).
pattern ^[a-z][a-z0-9._-]{0,63}$
team_idstring or nullrequirednull = organization-scoped; a C7 team id = team-scoped.
pattern ^[a-z][a-z0-9._-]{0,63}$
capabilitystringrequiredThe entitlement capability, one of the four closed families.
Allowed values:
"model_access""brain_capacity""billing_state""feature"model_refstringrequiredThe C0 model reference; empty unless capability=model_access.
feature_keystringrequiredThe feature key, a closed vocabulary; empty unless capability=feature.
Allowed values:
"""memory.connectors""memory.zero_content_retention"capacity_quantityintegerrequiredBrain capacity's amount; 0 unless capability=brain_capacity, where it is always > 0.
at least 0
capacity_unitstringrequiredBrain capacity's unit (gigabytes of indexed content; provisional, and the only unit today); empty unless capability=brain_capacity.
Allowed values:
"""gb"statestringrequiredThe entitlement state: active (part of the scope's active set) or revoked (the tombstone).
Allowed values:
"active""revoked"created_atstring (date-time)requiredRFC 3339, second precision, UTC.
- 400
Client refusal unrelated to authentication, including malformed input, a denied or failed request.
- 401
The request carries no credential, more than one, or one the platform does not accept, and is refused before the operation runs; `error.code` says why. Supply exactly one credential. Codes: invalid-request (no credential, or both Authorization:
Read more
Bearer and x-api-key), api-key-invalid (a value that is not a platform API key, or a key of a kind the platform does not accept), api-key-unknown, api-key-revoked, api-key-expired, bootstrap-disabled (the one-shot installation credential, once a key exists), token-malformed (a bearer token that is not a JWT), token-algorithm-unsupported, token-signature-invalid, token-claim-invalid, token-issuer-mismatch, token-audience-mismatch, token-expired, token-not-yet-valid, issuer-untrusted, issuer-residency-mismatch (the issuer belongs to another plane), issuer-resolution-unknown, jwks-unavailable, jwks-key-not-found, staff-token-inactive (a platform operator's token), staff-not-operator, staff-directory-unavailable, identity-not-provisioned (a verified identity with no account on this plane), organization-not-found (a verified identity or key whose organization this plane does not know), internal-error (a fault while the credential is checked is refused too, fail closed), context-cancelled
- 402
The organization has to pay first: its standing is payment_required.
Read more
The request boundary applies this payment gate to every route except an organization's billing routes, the caller's own context, organization list, onboarding, session report and personal keys, the public routes, and the routes of platform operators, who administer an organization that has to pay. The operations the gate covers declare this response. On /v1 the refusal is rendered in the OpenAI error format. Code: payment-required
- 403
The credential is valid but may not do this here; the request is refused by the request boundary before the handler runs, and `error.code` says which refusal. An operation may add codes of its own.
Read more
Codes: policy-denied (no role of the caller holds the permission the operation needs, or the credential class may not call it: a personal API key outside inference and MCP, a route that needs a signed-in person, the one-shot installation credential outside its three steps), tenant-mismatch (the organization a path, query, body or X-Tenant header names is not the caller's own), organization-provisioning, organization-suspended, organization-disabled, organization-deleted (the state of the caller's organization), user-disabled, residency-mismatch (the organization lives on another plane), organization-selection-required (a caller with more than one organization, or a platform operator, must name one in X-Organization-Id), organization-not-selectable, no-active-organization-membership, team-not-selectable (the X-Organization-Id or X-Team-Id the caller sent does not name an organization or team it may act in), identity-managed-by-provider (a person who is not a platform operator changes an organization's status, which belongs to the identity provider), support-session-required (a platform operator reads an organization's data without an open support session)
- 404
The requested resource or path was not found.
- 405
The path is claimed but the request method is not allowed. Go ServeMux returns its standard plain-text response and lists permitted methods in Allow.
- 409
The request conflicts with the current state of the resource or with an invariant it protects (a taken name, a role still in use, an organization that must not be deleted, an archived team, the last active root, a seat or service account limit).
- 500
Platform failure, rendered without internal cause details.
/identity/v1/organizations/{org}/teams/{team}/entitlements/{capability}Read one of a team's own entitlements
- Credential
- API key
- Permission
entitlements.read
Reads one of the team's own active entitlements by capability (path-carried), with model_ref for model_access or feature_key for feature in the query: the same members that identify the entitlement when it is granted.
Read more
A read names a stored entitlement, so a capability outside the four families, a member that does not go with the family, an entitlement the team does not hold, an unknown team, and an entitlement that was revoked all find none: 404 entitlement-not-found. Needs entitlements.read for the team. Failures: 400 name-invalid (organization or team outside the C7 pattern); 404 organization-not-found; 404 entitlement-not-found; 500 server faults.
curl "https://console.latam.ccsio.ai/identity/v1/organizations/{org}/teams/{team}/entitlements/{capability}" \
-H "Authorization: Bearer $CCSIO_API_KEY"Parameters
| Name | In | Description |
|---|---|---|
X-Request-IDoptional | header | string Optional request ULID. A valid ULID (upper or lowercase) is honored; when the header is absent or invalid, the runtime mints the id. The response X-Request-ID header carries the canonical uppercase form. |
orgrequired | path | string The organization id (C7 identifier). A value outside the pattern is refused with 400 name-invalid. |
teamrequired | path | string The team id (C7 identifier). A value outside the pattern is refused with 400 name-invalid. |
capabilityrequired | path | string The entitlement capability, path-carried because it is a closed enum. One of the four families: model_access, brain_capacity, billing_state, feature. A read or a revoke names a stored entitlement, so a value outside the four (or a member that does not go with the family) finds none and is answered 404 entitlement-not-found, not as a malformed request. |
model_refoptional | query | string The entitlement's C0 model reference, query-carried because a C0 ref may contain '/' and ':' (path segments would mangle them into several tokens). Present for model_access; absent for every other family. |
feature_keyoptional | query | string The feature key: required when capability is feature, forbidden otherwise (400 entitlement-invalid). |
Responses
- 200
This team's own active entitlement of the capability.
Schema
EntitlementDetailorg_idstringrequiredThe organization id (C7 identifier).
pattern ^[a-z][a-z0-9._-]{0,63}$
team_idstring or nullrequirednull = organization-scoped; a C7 team id = team-scoped.
pattern ^[a-z][a-z0-9._-]{0,63}$
capabilitystringrequiredThe entitlement capability, one of the four closed families.
Allowed values:
"model_access""brain_capacity""billing_state""feature"model_refstringrequiredThe C0 model reference; empty unless capability=model_access.
feature_keystringrequiredThe feature key, a closed vocabulary; empty unless capability=feature.
Allowed values:
"""memory.connectors""memory.zero_content_retention"capacity_quantityintegerrequiredBrain capacity's amount; 0 unless capability=brain_capacity, where it is always > 0.
at least 0
capacity_unitstringrequiredBrain capacity's unit (gigabytes of indexed content; provisional, and the only unit today); empty unless capability=brain_capacity.
Allowed values:
"""gb"statestringrequiredThe entitlement state: active (part of the scope's active set) or revoked (the tombstone).
Allowed values:
"active""revoked"created_atstring (date-time)requiredRFC 3339, second precision, UTC.
- 400
Client refusal unrelated to authentication, including malformed input, a denied or failed request.
- 401
The request carries no credential, more than one, or one the platform does not accept, and is refused before the operation runs; `error.code` says why. Supply exactly one credential. Codes: invalid-request (no credential, or both Authorization:
Read more
Bearer and x-api-key), api-key-invalid (a value that is not a platform API key, or a key of a kind the platform does not accept), api-key-unknown, api-key-revoked, api-key-expired, bootstrap-disabled (the one-shot installation credential, once a key exists), token-malformed (a bearer token that is not a JWT), token-algorithm-unsupported, token-signature-invalid, token-claim-invalid, token-issuer-mismatch, token-audience-mismatch, token-expired, token-not-yet-valid, issuer-untrusted, issuer-residency-mismatch (the issuer belongs to another plane), issuer-resolution-unknown, jwks-unavailable, jwks-key-not-found, staff-token-inactive (a platform operator's token), staff-not-operator, staff-directory-unavailable, identity-not-provisioned (a verified identity with no account on this plane), organization-not-found (a verified identity or key whose organization this plane does not know), internal-error (a fault while the credential is checked is refused too, fail closed), context-cancelled
- 402
The organization has to pay first: its standing is payment_required.
Read more
The request boundary applies this payment gate to every route except an organization's billing routes, the caller's own context, organization list, onboarding, session report and personal keys, the public routes, and the routes of platform operators, who administer an organization that has to pay. The operations the gate covers declare this response. On /v1 the refusal is rendered in the OpenAI error format. Code: payment-required
- 403
The credential is valid but may not do this here; the request is refused by the request boundary before the handler runs, and `error.code` says which refusal. An operation may add codes of its own.
Read more
Codes: policy-denied (no role of the caller holds the permission the operation needs, or the credential class may not call it: a personal API key outside inference and MCP, a route that needs a signed-in person, the one-shot installation credential outside its three steps), tenant-mismatch (the organization a path, query, body or X-Tenant header names is not the caller's own), organization-provisioning, organization-suspended, organization-disabled, organization-deleted (the state of the caller's organization), user-disabled, residency-mismatch (the organization lives on another plane), organization-selection-required (a caller with more than one organization, or a platform operator, must name one in X-Organization-Id), organization-not-selectable, no-active-organization-membership, team-not-selectable (the X-Organization-Id or X-Team-Id the caller sent does not name an organization or team it may act in), identity-managed-by-provider (a person who is not a platform operator changes an organization's status, which belongs to the identity provider), support-session-required (a platform operator reads an organization's data without an open support session)
- 404
The requested resource or path was not found.
- 405
The path is claimed but the request method is not allowed. Go ServeMux returns its standard plain-text response and lists permitted methods in Allow.
- 500
Platform failure, rendered without internal cause details.
/identity/v1/organizations/{org}/teams/{team}/entitlements/{capability}/revokeRevoke one of a team's own entitlements
- Credential
- API key
- Permission
team-entitlements.manage
Moves one of the team's own entitlements from active to revoked: a tombstone, never a physical delete, so the revocation stays auditable.
Read more
Idempotent: revoking one that is already revoked returns it again, in state revoked. capability is path-carried and model_ref or feature_key ride the query, exactly as for the read. Needs team-entitlements.manage in the organization, the same authorization as the grant. Failures: 400 name-invalid; 404 organization-not-found; 404 entitlement-not-found (the team holds no such entitlement, active or revoked; a capability outside the four families finds none); 500 server faults.
curl -X POST "https://console.latam.ccsio.ai/identity/v1/organizations/{org}/teams/{team}/entitlements/{capability}/revoke" \
-H "Authorization: Bearer $CCSIO_API_KEY"Parameters
| Name | In | Description |
|---|---|---|
X-Request-IDoptional | header | string Optional request ULID. A valid ULID (upper or lowercase) is honored; when the header is absent or invalid, the runtime mints the id. The response X-Request-ID header carries the canonical uppercase form. |
orgrequired | path | string The organization id (C7 identifier). A value outside the pattern is refused with 400 name-invalid. |
teamrequired | path | string The team id (C7 identifier). A value outside the pattern is refused with 400 name-invalid. |
capabilityrequired | path | string The entitlement capability, path-carried because it is a closed enum. One of the four families: model_access, brain_capacity, billing_state, feature. A read or a revoke names a stored entitlement, so a value outside the four (or a member that does not go with the family) finds none and is answered 404 entitlement-not-found, not as a malformed request. |
model_refoptional | query | string The entitlement's C0 model reference, query-carried because a C0 ref may contain '/' and ':' (path segments would mangle them into several tokens). Present for model_access; absent for every other family. |
feature_keyoptional | query | string The feature key: required when capability is feature, forbidden otherwise (400 entitlement-invalid). |
Responses
- 200
The revoked (tombstoned) entitlement.
Schema
EntitlementDetailorg_idstringrequiredThe organization id (C7 identifier).
pattern ^[a-z][a-z0-9._-]{0,63}$
team_idstring or nullrequirednull = organization-scoped; a C7 team id = team-scoped.
pattern ^[a-z][a-z0-9._-]{0,63}$
capabilitystringrequiredThe entitlement capability, one of the four closed families.
Allowed values:
"model_access""brain_capacity""billing_state""feature"model_refstringrequiredThe C0 model reference; empty unless capability=model_access.
feature_keystringrequiredThe feature key, a closed vocabulary; empty unless capability=feature.
Allowed values:
"""memory.connectors""memory.zero_content_retention"capacity_quantityintegerrequiredBrain capacity's amount; 0 unless capability=brain_capacity, where it is always > 0.
at least 0
capacity_unitstringrequiredBrain capacity's unit (gigabytes of indexed content; provisional, and the only unit today); empty unless capability=brain_capacity.
Allowed values:
"""gb"statestringrequiredThe entitlement state: active (part of the scope's active set) or revoked (the tombstone).
Allowed values:
"active""revoked"created_atstring (date-time)requiredRFC 3339, second precision, UTC.
- 400
Client refusal unrelated to authentication, including malformed input, a denied or failed request.
- 401
The request carries no credential, more than one, or one the platform does not accept, and is refused before the operation runs; `error.code` says why. Supply exactly one credential. Codes: invalid-request (no credential, or both Authorization:
Read more
Bearer and x-api-key), api-key-invalid (a value that is not a platform API key, or a key of a kind the platform does not accept), api-key-unknown, api-key-revoked, api-key-expired, bootstrap-disabled (the one-shot installation credential, once a key exists), token-malformed (a bearer token that is not a JWT), token-algorithm-unsupported, token-signature-invalid, token-claim-invalid, token-issuer-mismatch, token-audience-mismatch, token-expired, token-not-yet-valid, issuer-untrusted, issuer-residency-mismatch (the issuer belongs to another plane), issuer-resolution-unknown, jwks-unavailable, jwks-key-not-found, staff-token-inactive (a platform operator's token), staff-not-operator, staff-directory-unavailable, identity-not-provisioned (a verified identity with no account on this plane), organization-not-found (a verified identity or key whose organization this plane does not know), internal-error (a fault while the credential is checked is refused too, fail closed), context-cancelled
- 402
The organization has to pay first: its standing is payment_required.
Read more
The request boundary applies this payment gate to every route except an organization's billing routes, the caller's own context, organization list, onboarding, session report and personal keys, the public routes, and the routes of platform operators, who administer an organization that has to pay. The operations the gate covers declare this response. On /v1 the refusal is rendered in the OpenAI error format. Code: payment-required
- 403
The credential is valid but may not do this here; the request is refused by the request boundary before the handler runs, and `error.code` says which refusal. An operation may add codes of its own.
Read more
Codes: policy-denied (no role of the caller holds the permission the operation needs, or the credential class may not call it: a personal API key outside inference and MCP, a route that needs a signed-in person, the one-shot installation credential outside its three steps), tenant-mismatch (the organization a path, query, body or X-Tenant header names is not the caller's own), organization-provisioning, organization-suspended, organization-disabled, organization-deleted (the state of the caller's organization), user-disabled, residency-mismatch (the organization lives on another plane), organization-selection-required (a caller with more than one organization, or a platform operator, must name one in X-Organization-Id), organization-not-selectable, no-active-organization-membership, team-not-selectable (the X-Organization-Id or X-Team-Id the caller sent does not name an organization or team it may act in), identity-managed-by-provider (a person who is not a platform operator changes an organization's status, which belongs to the identity provider), support-session-required (a platform operator reads an organization's data without an open support session)
- 404
The requested resource or path was not found.
- 405
The path is claimed but the request method is not allowed. Go ServeMux returns its standard plain-text response and lists permitted methods in Allow.
- 500
Platform failure, rendered without internal cause details.
Generated from the platform contracts at commit 5f833620.