The tenant's roles with their Chat capabilities in one context
const url = 'https://chat.centralcodestation.com/api/v1/tenants/example/admin/role-permissions';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://chat.centralcodestation.com/api/v1/tenants/example/admin/role-permissions \ --header 'Authorization: Bearer <token>'Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”The Identity Server tenant id.
Query Parameters
Section titled “Query Parameters”A chat-enabled tenant application; omit for the tenant-wide mapping.
Responses
Section titled “Responses”Success.
object
The context: a tenant application, or null for the tenant-wide mapping.
Grantable: the Identity Server catalog keys Chat enforces.
object
Keys Chat enforces that the catalog does not define.
object
True for tenant_owner: holds every capability, not editable.
Example
{ "application_id": "fitness-app", "available_capabilities": [ { "key": "conversations.read", "description": "List and open conversations the caller belongs to." }, { "key": "messages.send", "description": "Send messages." } ], "missing_capabilities": [], "items": [ { "role_id": "role-owner", "role": "tenant_owner", "display_name": "Owner", "role_scope": "tenant", "system": true, "locked": true, "capabilities": [ "conversations.read", "messages.send" ] }, { "role_id": "role-coach", "role": "coach", "display_name": "Coach", "role_scope": "application", "system": false, "locked": false, "capabilities": [ "conversations.read", "messages.read", "messages.send", "messages.update" ] } ], "note": "Roles and their assignment to people are managed in the Identity Server."}Error. error is one of: invalid_token, token_revoked.
object
Stable snake_case error code.
Example
{ "status_code": 401, "error": "invalid_token", "message": "The bearer token is missing, malformed, expired, signed by an unknown key, has the wrong audience (`aud` must be `chat-api`), or lacks the required scope.", "path": "/api/v1/tenants/fitness/applications/fitness-app/conversations", "timestamp": "2026-10-14T09:30:00.000Z"}Error. error is one of: not_tenant_member, no_application_access, tenant_not_available, insufficient_scope, client_context_mismatch, missing_capability, principal_not_allowed.
object
Stable snake_case error code.
Example
{ "status_code": 403, "error": "not_tenant_member", "message": "The user is not an active member of the tenant in the URL.", "path": "/api/v1/tenants/fitness/applications/fitness-app/conversations", "timestamp": "2026-10-14T09:30:00.000Z"}Error. error is one of: rate_limited.
object
Stable snake_case error code.
Example
{ "status_code": 429, "error": "rate_limited", "message": "The caller exceeded a rate limit", "path": "/api/v1/tenants/fitness/applications/fitness-app/conversations", "timestamp": "2026-10-14T09:30:00.000Z"}Error. error is one of: identity_unavailable.
object
Stable snake_case error code.
Example
{ "status_code": 503, "error": "identity_unavailable", "message": "Chat could not reach the Identity Server and has no fresh cached answer.", "path": "/api/v1/tenants/fitness/applications/fitness-app/conversations", "timestamp": "2026-10-14T09:30:00.000Z"}default
Section titled “default”Error — see error for the code.
object
Stable snake_case error code.
Example
{ "status_code": 403, "error": "invalid_request", "message": "Missing Chat capability messages.send", "path": "/api/v1/tenants/t1/applications/a1/conversations"}