Skip to content

The caller's tenant-level Chat permissions (e.g. administration.*)

GET
/api/v1/tenants/{tenant_id}/me/capabilities
curl --request GET \
--url https://chat.centralcodestation.com/api/v1/tenants/example/me/capabilities \
--header 'Authorization: Bearer <token>'

Context in the guides

tenant_id
required
string

The Identity Server tenant id.

Success.

Media typeapplication/json
object
tenant_id
required
string
application_id
required

Null on the tenant-level route.

string
nullable
principal_type
required
string
Allowed values: user machine
roles
required

The user’s role names in this context — display only.

Array<string>
capabilities
required

The Chat permission keys the caller holds here, e.g. messages.send.

Array<string>

Example

{
"tenant_id": "fitness",
"application_id": "fitness-app",
"principal_type": "user",
"roles": [
"coach"
],
"capabilities": [
"conversations.read",
"messages.read",
"messages.send",
"messages.update"
]
}

Error. error is one of: invalid_token, token_revoked.

Media typeapplication/json
object
status_code
required
number
error
required

Stable snake_case error code.

string
Allowed values: invalid_request invalid_cursor invalid_limit body_too_long query_too_short query_too_long user_required invalid_json invalid_id_token invalid_redirect_uri too_many_attachments role_locked invalid_grant invalid_token token_revoked missing_capability insufficient_scope not_tenant_member no_application_access tenant_not_available not_conversation_member client_context_mismatch principal_not_allowed system_message_not_allowed chat_access_not_granted not_found application_not_found role_not_found payload_too_large target_user_not_eligible actor_not_member conversation_archived direct_conversation_immutable invalid_reply rate_limited server_error identity_unavailable
message
required
One of:
string
path
required
string
timestamp
required
string format: date-time

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.

Media typeapplication/json
object
status_code
required
number
error
required

Stable snake_case error code.

string
Allowed values: invalid_request invalid_cursor invalid_limit body_too_long query_too_short query_too_long user_required invalid_json invalid_id_token invalid_redirect_uri too_many_attachments role_locked invalid_grant invalid_token token_revoked missing_capability insufficient_scope not_tenant_member no_application_access tenant_not_available not_conversation_member client_context_mismatch principal_not_allowed system_message_not_allowed chat_access_not_granted not_found application_not_found role_not_found payload_too_large target_user_not_eligible actor_not_member conversation_archived direct_conversation_immutable invalid_reply rate_limited server_error identity_unavailable
message
required
One of:
string
path
required
string
timestamp
required
string format: date-time

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.

Media typeapplication/json
object
status_code
required
number
error
required

Stable snake_case error code.

string
Allowed values: invalid_request invalid_cursor invalid_limit body_too_long query_too_short query_too_long user_required invalid_json invalid_id_token invalid_redirect_uri too_many_attachments role_locked invalid_grant invalid_token token_revoked missing_capability insufficient_scope not_tenant_member no_application_access tenant_not_available not_conversation_member client_context_mismatch principal_not_allowed system_message_not_allowed chat_access_not_granted not_found application_not_found role_not_found payload_too_large target_user_not_eligible actor_not_member conversation_archived direct_conversation_immutable invalid_reply rate_limited server_error identity_unavailable
message
required
One of:
string
path
required
string
timestamp
required
string format: date-time

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.

Media typeapplication/json
object
status_code
required
number
error
required

Stable snake_case error code.

string
Allowed values: invalid_request invalid_cursor invalid_limit body_too_long query_too_short query_too_long user_required invalid_json invalid_id_token invalid_redirect_uri too_many_attachments role_locked invalid_grant invalid_token token_revoked missing_capability insufficient_scope not_tenant_member no_application_access tenant_not_available not_conversation_member client_context_mismatch principal_not_allowed system_message_not_allowed chat_access_not_granted not_found application_not_found role_not_found payload_too_large target_user_not_eligible actor_not_member conversation_archived direct_conversation_immutable invalid_reply rate_limited server_error identity_unavailable
message
required
One of:
string
path
required
string
timestamp
required
string format: date-time

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"
}

Error — see error for the code.

Media typeapplication/json
object
status_code
required
number
error
required

Stable snake_case error code.

string
Allowed values: invalid_request invalid_cursor invalid_limit body_too_long query_too_short query_too_long user_required invalid_json invalid_id_token invalid_redirect_uri too_many_attachments role_locked invalid_grant invalid_token token_revoked missing_capability insufficient_scope not_tenant_member no_application_access tenant_not_available not_conversation_member client_context_mismatch principal_not_allowed system_message_not_allowed chat_access_not_granted not_found application_not_found role_not_found payload_too_large target_user_not_eligible actor_not_member conversation_archived direct_conversation_immutable invalid_reply rate_limited server_error identity_unavailable
message
required
One of:
string
path
required
string
timestamp
required
string format: date-time

Example

{
"status_code": 403,
"error": "invalid_request",
"message": "Missing Chat capability messages.send",
"path": "/api/v1/tenants/t1/applications/a1/conversations"
}