Who may do what with files, in every application
const url = 'https://files.centralcodestation.com/api/v1/tenants/example/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://files.centralcodestation.com/api/v1/tenants/example/permissions \ --header 'Authorization: Bearer <token>'The catalog and, per application the caller may use, whether it may manage its permissions and the roles with their keys.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”The Identity Server tenant id.
Responses
Section titled “Responses”Success.
object
object
The column heading the console shows.
The console shows the content keys and the administration keys as two groups.
The keys this one expands to: only the umbrellas files.manage and files.configure grant others.
Only the tenant owner may grant or withdraw this key (files.permissions.manage).
object
The caller may manage the permissions of this application. When false, roles is empty.
object
The role’s name at the Identity Server.
APPLICATION: a role of this application only.
tenant_owner: holds every key, cannot be changed (role_locked).
The keys mapped onto the role (empty for the implicit owner).
What the service enforces for the role: the mapped keys with files.manage and files.configure expanded, every key for the owner.
False for the owner role, which always holds every key.
Example
{ "catalog": [ { "key": "files.view", "label": "View", "group": "content" } ], "applications": [ { "roles": [ { "name": "tenant_admin", "display_name": "Administrator", "scope": "TENANT" } ] } ]}Error. error is one of: invalid_token.
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, or has the wrong audience (`aud` must be `files-api`).", "path": "/api/v1/tenants/fitness-co/applications/fitness-app/files/01J9Z6S9Q5F5R6Y2W2GZ3B3K4D", "timestamp": "2026-10-22T09:12:33.120Z"}Error. error is one of: not_tenant_member, tenant_not_available, insufficient_scope, client_context_mismatch, principal_not_allowed, files_access_not_granted, missing_capability.
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-co/applications/fitness-app/files/01J9Z6S9Q5F5R6Y2W2GZ3B3K4D", "timestamp": "2026-10-22T09:12:33.120Z"}Error. error is one of: not_found.
object
Stable snake_case error code.
Example
{ "status_code": 404, "error": "not_found", "message": "An id in the path is malformed, or the route does not exist.", "path": "/api/v1/tenants/fitness-co/applications/fitness-app/files/01J9Z6S9Q5F5R6Y2W2GZ3B3K4D", "timestamp": "2026-10-22T09:12:33.120Z"}Error. error is one of: too_many_applications.
object
Stable snake_case error code.
Example
{ "status_code": 422, "error": "too_many_applications", "message": "The tenant has more applications than one tenant-level read or write handles.", "path": "/api/v1/tenants/fitness-co/applications/fitness-app/files/01J9Z6S9Q5F5R6Y2W2GZ3B3K4D", "timestamp": "2026-10-22T09:12:33.120Z"}Error. error is one of: rate_limited.
object
Stable snake_case error code.
Example
{ "status_code": 429, "error": "rate_limited", "message": "Too many requests in the current window; `retry_after` (and the `Retry-After` header) says when to retry.", "path": "/api/v1/tenants/fitness-co/applications/fitness-app/files/01J9Z6S9Q5F5R6Y2W2GZ3B3K4D", "timestamp": "2026-10-22T09:12:33.120Z"}Error. error is one of: identity_unavailable.
object
Stable snake_case error code.
Example
{ "status_code": 503, "error": "identity_unavailable", "message": "The service could not reach the Identity Server and has no fresh cached answer.", "path": "/api/v1/tenants/fitness-co/applications/fitness-app/files/01J9Z6S9Q5F5R6Y2W2GZ3B3K4D", "timestamp": "2026-10-22T09:12:33.120Z"}default
Section titled “default”Error: see error for the code.
object
Stable snake_case error code.
Example
{ "status_code": 403, "error": "invalid_request", "message": "This client is not bound to this tenant/application", "path": "/api/v1/tenants/t1/applications/a1/files/01J9Z6S9Q5F5R6Y2W2GZ3B3K4D"}