Rights matrix

This page is generated from the code. Every endpoint of the control plane is registered behind one guard, and a Go test walks those registrations and writes what it finds to internal/admin/rights.json. Change a guard without regenerating that file and the build fails - so what is written here is what the gateway does.

The capabilities stack: root has all of them. An infra admin holds the routing plane, an app admin the application's identity, a tenant admin the organisations they administer. A control-plane token acts with its owner's capabilities, read again on every request, and its perimeter only ever takes away.

234 endpoints.

acme

Endpoint Any account Dev Tenant admin Tenant creator App admin Infra admin Root Note
GET /api/acme/authorities x x
POST /api/acme/authorities x x
DELETE /api/acme/authorities/{id} x x
PUT /api/acme/authorities/{id} x x

admin-tokens

Endpoint Any account Dev Tenant admin Tenant creator App admin Infra admin Root Note
GET /api/admin-tokens x x x
POST /api/admin-tokens x x x
DELETE /api/admin-tokens/{id} x x x
PUT /api/admin-tokens/{id} x x x
POST /api/admin-tokens/{id}/renew x x x
POST /api/admin-tokens/{id}/toggle x x x

apidocs

Endpoint Any account Dev Tenant admin Tenant creator App admin Infra admin Root Note
POST /api/apidocs/token x x x

audit

Endpoint Any account Dev Tenant admin Tenant creator App admin Infra admin Root Note
GET /api/audit x x x x x x x the handler scopes what it answers
GET /api/audit/export x x x x x x x the handler scopes what it answers

auth-providers

Endpoint Any account Dev Tenant admin Tenant creator App admin Infra admin Root Note
GET /api/auth-providers x x
GET /api/auth-providers/callback-base x x
DELETE /api/auth-providers/{id} x x
PUT /api/auth-providers/{id} x x
POST /api/auth-providers/{id}/check x x
POST /api/auth-providers/{id}/lookup x x
GET /api/auth-providers/{id}/people x x

backup

Endpoint Any account Dev Tenant admin Tenant creator App admin Infra admin Root Note
GET /api/backup x
POST /api/backup/check x
POST /api/backup/copy x
GET /api/backup/info x
DELETE /api/backup/last-copy x
GET /api/backup/pause x x x x x x x the handler scopes what it answers
PUT /api/backup/pause x

branding

Endpoint Any account Dev Tenant admin Tenant creator App admin Infra admin Root Note
GET /api/branding x x
PUT /api/branding x x

catalog

Endpoint Any account Dev Tenant admin Tenant creator App admin Infra admin Root Note
GET /api/catalog x x

certificates

Endpoint Any account Dev Tenant admin Tenant creator App admin Infra admin Root Note
GET /api/certificates x x
POST /api/certificates/acme x x
GET /api/certificates/cert-manager x x
POST /api/certificates/cert-manager x x
POST /api/certificates/file x x
POST /api/certificates/import x x
GET /api/certificates/mounted x x
POST /api/certificates/self-signed x x
POST /api/certificates/signing-request x x
DELETE /api/certificates/{id} x x
POST /api/certificates/{id}/adopt x x
GET /api/certificates/{id}/pem x x
PUT /api/certificates/{id}/placement x x
POST /api/certificates/{id}/retry x x
GET /api/certificates/{id}/signing-request x x

config

Endpoint Any account Dev Tenant admin Tenant creator App admin Infra admin Root Note
GET /api/config/document x
GET /api/config/export x
GET /api/config/history x
GET /api/config/history/{id} x
GET /api/config/history/{id}/plan x
POST /api/config/history/{id}/restore x
POST /api/config/history/{id}/save x
POST /api/config/import x
POST /api/config/preview x
GET /api/config/report x

config-remotes

Endpoint Any account Dev Tenant admin Tenant creator App admin Infra admin Root Note
GET /api/config-remotes x
POST /api/config-remotes x
GET /api/config-remotes/forges x
DELETE /api/config-remotes/{id} x
PUT /api/config-remotes/{id} x
POST /api/config-remotes/{id}/check x

configurations

Endpoint Any account Dev Tenant admin Tenant creator App admin Infra admin Root Note
GET /api/configurations x
POST /api/configurations x
GET /api/configurations/current x
POST /api/configurations/import x
POST /api/configurations/pull x
DELETE /api/configurations/{id} x
GET /api/configurations/{id} x
PUT /api/configurations/{id} x
POST /api/configurations/{id}/activate x
POST /api/configurations/{id}/capture x
GET /api/configurations/{id}/compare/{other} x
GET /api/configurations/{id}/document x
PUT /api/configurations/{id}/document x
POST /api/configurations/{id}/duplicate x
GET /api/configurations/{id}/export x
GET /api/configurations/{id}/plan x
POST /api/configurations/{id}/pull x
POST /api/configurations/{id}/push x
PUT /api/configurations/{id}/remote x

data-tokens

Endpoint Any account Dev Tenant admin Tenant creator App admin Infra admin Root Note
GET /api/data-tokens x x
DELETE /api/data-tokens/{id} x x

edition

Endpoint Any account Dev Tenant admin Tenant creator App admin Infra admin Root Note
GET /api/edition x x x x x x x the handler scopes what it answers

identity

Endpoint Any account Dev Tenant admin Tenant creator App admin Infra admin Root Note
PUT /api/identity/issuer x x
POST /api/identity/preview x x
GET /api/identity/signing-keys x x
POST /api/identity/signing-keys/renew x x

issues

Endpoint Any account Dev Tenant admin Tenant creator App admin Infra admin Root Note
GET /api/issues x x x x x x x the handler scopes what it answers
DELETE /api/issues/{id} x x x x x x x the handler scopes what it answers
GET /api/issues/{id} x x x x x x x the handler scopes what it answers
POST /api/issues/{id}/comments x x x x x x x the handler scopes what it answers
GET /api/issues/{id}/screenshot x x x x x x x the handler scopes what it answers
PUT /api/issues/{id}/status x x x x x x x the handler scopes what it answers

live

Endpoint Any account Dev Tenant admin Tenant creator App admin Infra admin Root Note
GET /api/live x x x x x x x the handler scopes what it answers

locales

Endpoint Any account Dev Tenant admin Tenant creator App admin Infra admin Root Note
GET /api/locales x x
DELETE /api/locales/{code} x x
GET /api/locales/{code} x x
PUT /api/locales/{code} x x

logs

Endpoint Any account Dev Tenant admin Tenant creator App admin Infra admin Root Note
GET /api/logs x x
PUT /api/logs/level x x

mcp

Endpoint Any account Dev Tenant admin Tenant creator App admin Infra admin Root Note
/mcp x x x x x x x when the agent is switched on; each tool checks again

me

Endpoint Any account Dev Tenant admin Tenant creator App admin Infra admin Root Note
GET /api/me x x x x x x x the handler scopes what it answers
GET /api/me/avatar x x x x x x x the handler scopes what it answers

metrics

Endpoint Any account Dev Tenant admin Tenant creator App admin Infra admin Root Note
GET /api/metrics x x

model

Endpoint Any account Dev Tenant admin Tenant creator App admin Infra admin Root Note
GET /api/model/user-fields x x x x x x x the handler scopes what it answers
PUT /api/model/user-fields x x

oidc

Endpoint Any account Dev Tenant admin Tenant creator App admin Infra admin Root Note
GET /api/oidc/clients x x
POST /api/oidc/clients x x
DELETE /api/oidc/clients/{id} x x
PUT /api/oidc/clients/{id} x x
POST /api/oidc/clients/{id}/secret x x
POST /api/oidc/clients/{id}/try x x

plug

Endpoint Any account Dev Tenant admin Tenant creator App admin Infra admin Root Note
GET /api/plug/developers x x
GET /api/plug/sessions x x
POST /api/plug/sessions/{id}/close x x

portal

Endpoint Any account Dev Tenant admin Tenant creator App admin Infra admin Root Note
GET /api/portal/icons x x x x x x x the handler scopes what it answers

release-notes

Endpoint Any account Dev Tenant admin Tenant creator App admin Infra admin Root Note
GET /api/release-notes x x x x x x x the handler scopes what it answers

roles

Endpoint Any account Dev Tenant admin Tenant creator App admin Infra admin Root Note
GET /api/roles x x
POST /api/roles x x
DELETE /api/roles/{name} x x
PUT /api/roles/{name} x x

routes

Endpoint Any account Dev Tenant admin Tenant creator App admin Infra admin Root Note
GET /api/routes x x
GET /api/routes/health x x
POST /api/routes/probe x x
POST /api/routes/reorder x x
POST /api/routes/respond-preview x x
POST /api/routes/version-preview x x
DELETE /api/routes/{id} x x
GET /api/routes/{id} x x
PUT /api/routes/{id} x x
PUT /api/routes/{id}/audit x x
GET /api/routes/{id}/files x x
DELETE /api/routes/{id}/files/{name...} x x
PATCH /api/routes/{id}/files/{name...} x x
PUT /api/routes/{id}/files/{name...} x x
GET /api/routes/{id}/operations x x
PUT /api/routes/{id}/role-map x x
PUT /api/routes/{id}/security x x
DELETE /api/routes/{id}/spec x x
PUT /api/routes/{id}/spec x x

schedules

Endpoint Any account Dev Tenant admin Tenant creator App admin Infra admin Root Note
GET /api/schedules x x or a token scoped to schedules
POST /api/schedules a token scoped to schedules only, while its service moves to the internal plane (port 7070), which is this endpoint's home
DELETE /api/schedules/{id} x x or a token scoped to schedules
GET /api/schedules/{id} x x or a token scoped to schedules
PUT /api/schedules/{id} a token scoped to schedules only, while its service moves to the internal plane (port 7070), which is this endpoint's home
POST /api/schedules/{id}/pause x x or a token scoped to schedules
POST /api/schedules/{id}/resume x x or a token scoped to schedules
PATCH /api/schedules/{id}/run a token scoped to schedules only, while its service moves to the internal plane (port 7070), which is this endpoint's home
POST /api/schedules/{id}/run x x or a token scoped to schedules
GET /api/schedules/{id}/runs x x or a token scoped to schedules

services

Endpoint Any account Dev Tenant admin Tenant creator App admin Infra admin Root Note
GET /api/services x x

sessions

Endpoint Any account Dev Tenant admin Tenant creator App admin Infra admin Root Note
GET /api/sessions x x x x x x x the handler scopes what it answers
DELETE /api/sessions/{id} x x x x x x x the handler scopes what it answers

settings

Endpoint Any account Dev Tenant admin Tenant creator App admin Infra admin Root Note
GET /api/settings x x x x x x x the handler scopes what it answers
PUT /api/settings x x

settings/agent

Endpoint Any account Dev Tenant admin Tenant creator App admin Infra admin Root Note
GET /api/settings/agent x x
PUT /api/settings/agent x x

settings/audit

Endpoint Any account Dev Tenant admin Tenant creator App admin Infra admin Root Note
GET /api/settings/audit x
PUT /api/settings/audit x

settings/issues

Endpoint Any account Dev Tenant admin Tenant creator App admin Infra admin Root Note
GET /api/settings/issues x x
PUT /api/settings/issues x x

settings/mail-relay

Endpoint Any account Dev Tenant admin Tenant creator App admin Infra admin Root Note
GET /api/settings/mail-relay x x
PUT /api/settings/mail-relay x x
POST /api/settings/mail-relay/test x x

settings/maintenance

Endpoint Any account Dev Tenant admin Tenant creator App admin Infra admin Root Note
GET /api/settings/maintenance x x
PUT /api/settings/maintenance x x

settings/plug

Endpoint Any account Dev Tenant admin Tenant creator App admin Infra admin Root Note
GET /api/settings/plug x x
PUT /api/settings/plug x x

settings/proxy

Endpoint Any account Dev Tenant admin Tenant creator App admin Infra admin Root Note
GET /api/settings/proxy x x
PUT /api/settings/proxy x x

settings/schedules

Endpoint Any account Dev Tenant admin Tenant creator App admin Infra admin Root Note
GET /api/settings/schedules x
PUT /api/settings/schedules x

settings/telemetry

Endpoint Any account Dev Tenant admin Tenant creator App admin Infra admin Root Note
GET /api/settings/telemetry x x
PUT /api/settings/telemetry x x
POST /api/settings/telemetry/test x x

settings/tenancy

Endpoint Any account Dev Tenant admin Tenant creator App admin Infra admin Root Note
PUT /api/settings/tenancy x x

settings/tls

Endpoint Any account Dev Tenant admin Tenant creator App admin Infra admin Root Note
GET /api/settings/tls x x
PUT /api/settings/tls x x
PUT /api/settings/tls/doors/{plane} x x
PUT /api/settings/tls/ports/{plane} x x

tenants

Endpoint Any account Dev Tenant admin Tenant creator App admin Infra admin Root Note
GET /api/tenants x x x x x x x the handler scopes what it answers
POST /api/tenants x x
DELETE /api/tenants/{id} x x for the organisation in the path
GET /api/tenants/{id} x x for the organisation in the path
PUT /api/tenants/{id} x x for the organisation in the path
GET /api/tenants/{id}/group-rules x x for the organisation in the path
POST /api/tenants/{id}/group-rules x x for the organisation in the path
GET /api/tenants/{id}/group-rules/reported x x for the organisation in the path
DELETE /api/tenants/{id}/group-rules/{ruleId} x x for the organisation in the path
PUT /api/tenants/{id}/group-rules/{ruleId} x x for the organisation in the path
GET /api/tenants/{id}/groups x x for the organisation in the path
POST /api/tenants/{id}/groups x x for the organisation in the path
DELETE /api/tenants/{id}/groups/{groupId} x x for the organisation in the path
PUT /api/tenants/{id}/groups/{groupId} x x for the organisation in the path
GET /api/tenants/{id}/members x x for the organisation in the path
DELETE /api/tenants/{id}/members/{userId} x x for the organisation in the path
PUT /api/tenants/{id}/members/{userId} x x for the organisation in the path
GET /api/tenants/{id}/members/{userId}/groups x x for the organisation in the path
PUT /api/tenants/{id}/members/{userId}/groups x x for the organisation in the path
GET /api/tenants/{id}/members/{userId}/logins x x for the organisation in the path
POST /api/tenants/{id}/members/{userId}/reset-password x x for the organisation in the path
POST /api/tenants/{id}/owner x x for the organisation in the path

themes

Endpoint Any account Dev Tenant admin Tenant creator App admin Infra admin Root Note
GET /api/themes x x
POST /api/themes x x
GET /api/themes/fonts x x
GET /api/themes/presets x x
GET /api/themes/templates x x
DELETE /api/themes/{id} x x
PUT /api/themes/{id} x x
POST /api/themes/{id}/activate x x
GET /api/themes/{id}/preview x x

trusted-authorities

Endpoint Any account Dev Tenant admin Tenant creator App admin Infra admin Root Note
GET /api/trusted-authorities x x
POST /api/trusted-authorities x x
GET /api/trusted-authorities/https-switch x x
GET /api/trusted-authorities/platform x x
POST /api/trusted-authorities/platform x x
DELETE /api/trusted-authorities/{id} x x
PUT /api/trusted-authorities/{id} x x

users

Endpoint Any account Dev Tenant admin Tenant creator App admin Infra admin Root Note
GET /api/users x x
POST /api/users x x
GET /api/users/lookup x x x x x x x the handler scopes what it answers
POST /api/users/must-change-password x x
DELETE /api/users/{id} x x
PUT /api/users/{id} x x
GET /api/users/{id}/identities x x
GET /api/users/{id}/logins x x
POST /api/users/{id}/must-change-password x x
POST /api/users/{id}/reset-password x x

vault

Endpoint Any account Dev Tenant admin Tenant creator App admin Infra admin Root Note
GET /api/vault x x x x x x x the handler scopes what it answers
POST /api/vault/export x x x x x x x the handler scopes what it answers
POST /api/vault/import x x x x x x x the handler scopes what it answers
POST /api/vault/stash x x x x x x x the handler scopes what it answers
DELETE /api/vault/{scope}/{name} x x x x x x x the handler scopes what it answers
PUT /api/vault/{scope}/{name} x x x x x x x the handler scopes what it answers