Tenants, users and access
此内容尚不支持你的语言。
Signing in, the people in a tenant, the tenants themselves, their plans and their settings.
Every address below is served under the control plane’s base URL. Permission is the guard the route is registered with; who holds it is read from the control plane’s own grant, so it cannot drift from what the server does. A dash means the route carries no permission guard of its own — the access tier below the table is then the whole of what stands in front of it.
Generated from Route. Hand edits to this table are overwritten on the next build — change the Go doc comment, or the generator.
| Route | Permission | Who holds it | Body |
|---|---|---|---|
ANY /api/billing/ |
— | — | — |
ANY /api/billing/admin |
— | — | — |
GET /api/v1/admin/system-plans |
— | — | — |
POST /api/v1/admin/system-plans |
— | — | — |
DELETE /api/v1/admin/system-plans/{slug} |
— | — | — |
GET /api/v1/admin/system-plans/{slug} |
— | — | — |
PUT /api/v1/admin/system-plans/{slug} |
— | — | — |
PUT /api/v1/admin/system-plans/{slug}/link-billing |
— | — | — |
DELETE /api/v1/admin/tenants/{id}/athena-usage |
— | — | — |
GET /api/v1/admin/tenants/{id}/athena-usage |
— | — | — |
GET /api/v1/admin/tenants/{id}/plan |
— | — | — |
PUT /api/v1/admin/tenants/{id}/plan |
— | — | — |
GET /api/v1/auth/invites/validate |
— | — | — |
POST /api/v1/auth/login |
— | — | — |
POST /api/v1/auth/logout |
— | — | — |
POST /api/v1/auth/migrate |
— | — | — |
GET /api/v1/auth/oauth/{provider} |
— | — | — |
GET /api/v1/auth/oauth/{provider}/callback |
— | — | — |
POST /api/v1/auth/refresh |
— | — | — |
POST /api/v1/auth/resend-verification |
— | — | — |
POST /api/v1/auth/signup |
— | — | — |
GET /api/v1/auth/signup/config |
— | — | — |
GET /api/v1/auth/user |
config:read |
developer, operator, readonly, support |
— |
POST /api/v1/auth/verify-email |
— | — | — |
GET /api/v1/auth/whoami |
— | — | — |
GET /api/v1/billing/status |
— | — | — |
GET /api/v1/billing/system-plans |
config:read |
developer, operator, readonly, support |
— |
GET /api/v1/bootstrap/agent-bundle |
— | — | — |
POST /api/v1/bootstrap/complete |
— | — | — |
POST /api/v1/bootstrap/register-wireguard |
— | — | — |
GET /api/v1/bootstrap/script |
— | — | — |
POST /api/v1/bootstrap/validate |
— | — | — |
GET /api/v1/invites |
admin |
an administrator only, through the wildcard grant | — |
POST /api/v1/invites |
admin |
an administrator only, through the wildcard grant | — |
DELETE /api/v1/invites/{code} |
admin |
an administrator only, through the wildcard grant | — |
GET /api/v1/plan |
— | — | — |
GET /api/v1/plans |
— | — | — |
GET /api/v1/settings/backup |
config:read |
developer, operator, readonly, support |
— |
PUT /api/v1/settings/backup |
— | — | — |
DELETE /api/v1/settings/billing |
— | — | — |
GET /api/v1/settings/billing |
— | — | — |
PUT /api/v1/settings/billing |
— | — | — |
POST /api/v1/settings/billing/enroll |
— | — | — |
POST /api/v1/settings/billing/renew |
— | — | — |
POST /api/v1/settings/billing/sync-tenants |
— | — | — |
POST /api/v1/settings/billing/test |
— | — | — |
GET /api/v1/settings/chat-provider/models |
admin |
an administrator only, through the wildcard grant | — |
POST /api/v1/settings/chat-provider/validate |
admin |
an administrator only, through the wildcard grant | — |
DELETE /api/v1/settings/notifications |
admin |
an administrator only, through the wildcard grant | — |
GET /api/v1/settings/notifications |
admin |
an administrator only, through the wildcard grant | — |
PUT /api/v1/settings/notifications |
admin |
an administrator only, through the wildcard grant | — |
POST /api/v1/settings/notifications/test/email |
admin |
an administrator only, through the wildcard grant | — |
POST /api/v1/settings/notifications/test/slack |
admin |
an administrator only, through the wildcard grant | — |
GET /api/v1/settings/oauth |
— | — | — |
DELETE /api/v1/settings/oauth/{provider} |
— | — | — |
PUT /api/v1/settings/oauth/{provider} |
— | — | — |
GET /api/v1/settings/usage/cost |
config:read |
developer, operator, readonly, support |
— |
GET /api/v1/settings/usage/cost/export |
config:read |
developer, operator, readonly, support |
— |
GET /api/v1/settings/wireguard |
admin |
an administrator only, through the wildcard grant | — |
PUT /api/v1/settings/wireguard |
admin |
an administrator only, through the wildcard grant | — |
GET /api/v1/tenants |
— | — | — |
POST /api/v1/tenants |
— | — | — |
DELETE /api/v1/tenants/{id} |
— | — | — |
GET /api/v1/tenants/{id} |
— | — | — |
PUT /api/v1/tenants/{id} |
— | — | — |
POST /api/v1/tenants/{id}/activate |
— | — | — |
GET /api/v1/tenants/{id}/children |
— | — | — |
POST /api/v1/tenants/{id}/children |
— | — | — |
GET /api/v1/tenants/{id}/hierarchy |
— | — | — |
GET /api/v1/tenants/{id}/quota |
— | — | — |
PUT /api/v1/tenants/{id}/quota |
— | — | — |
POST /api/v1/tenants/{id}/suspend |
— | — | — |
GET /api/v1/users |
admin |
an administrator only, through the wildcard grant | — |
POST /api/v1/users |
admin |
an administrator only, through the wildcard grant | — |
GET /api/v1/users/me/onboarding |
config:read |
developer, operator, readonly, support |
— |
PUT /api/v1/users/me/onboarding |
config:write |
an administrator only, through the wildcard grant | — |
POST /api/v1/users/me/onboarding/reset |
config:write |
an administrator only, through the wildcard grant | — |
GET /api/v1/users/me/tenants |
config:read |
developer, operator, readonly, support |
— |
DELETE /api/v1/users/{id} |
admin |
an administrator only, through the wildcard grant | — |
GET /api/v1/users/{id} |
admin |
an administrator only, through the wildcard grant | — |
PUT /api/v1/users/{id} |
admin |
an administrator only, through the wildcard grant | — |
Who can reach these at all
Section titled “Who can reach these at all”authenticated — Behind authentication, cross-site-request-forgery validation and tenant extraction. Every call acts inside exactly one tenant.
platform-operator — Platform-operator surface, across tenants. Not part of a tenant’s own API.
unauthenticated — No authentication middleware on the router. The handler is responsible for whatever verification it needs.
Reachable only by an administrator
Section titled “Reachable only by an administrator”No role holds the permissions below explicitly. They are satisfied by the administrator’s wildcard grant and by nothing else, so an operator or a developer cannot call these routes however their tenant is configured. That is a role-model question rather than a documentation one; it is recorded here because a reader planning around it needs to know before they try.
GET /api/v1/invites— needsadminPOST /api/v1/invites— needsadminDELETE /api/v1/invites/{code}— needsadminGET /api/v1/settings/chat-provider/models— needsadminPOST /api/v1/settings/chat-provider/validate— needsadminDELETE /api/v1/settings/notifications— needsadminGET /api/v1/settings/notifications— needsadminPUT /api/v1/settings/notifications— needsadminPOST /api/v1/settings/notifications/test/email— needsadminPOST /api/v1/settings/notifications/test/slack— needsadminGET /api/v1/settings/wireguard— needsadminPUT /api/v1/settings/wireguard— needsadminGET /api/v1/users— needsadminPOST /api/v1/users— needsadminPUT /api/v1/users/me/onboarding— needsconfig:writePOST /api/v1/users/me/onboarding/reset— needsconfig:writeDELETE /api/v1/users/{id}— needsadminGET /api/v1/users/{id}— needsadminPUT /api/v1/users/{id}— needsadmin
Declared in the source and served by nothing
Section titled “Declared in the source and served by nothing”The addresses below are written into the control plane’s source and are registered on no router: the type that would register them is constructed nowhere, so a walk of the live router does not see them and a caller gets a 404. They are listed so that reading the source does not suggest a surface that is not there.
DELETE /api/v1/tenants/{tenant}/backups/{backup_id}— declared atpkg/api/minio_handlers.go:71, mounted nowhereDELETE /api/v1/tenants/{tenant}/seaweedfs/mounts/{volume}— declared atpkg/api/seaweedfs_handlers.go:68, mounted nowhereDELETE /api/v1/tenants/{tenant}/wireguard/mesh/peers/{node}— declared atpkg/api/wireguard_handlers.go:50, mounted nowhereGET /api/v1/tenants/{tenant}/backups— declared atpkg/api/minio_handlers.go:69, mounted nowhereGET /api/v1/tenants/{tenant}/backups/stats— declared atpkg/api/minio_handlers.go:81, mounted nowhereGET /api/v1/tenants/{tenant}/backups/{backup_id}— declared atpkg/api/minio_handlers.go:70, mounted nowhereGET /api/v1/tenants/{tenant}/minio/credentials— declared atpkg/api/minio_handlers.go:63, mounted nowhereGET /api/v1/tenants/{tenant}/minio/status— declared atpkg/api/minio_handlers.go:58, mounted nowhereGET /api/v1/tenants/{tenant}/seaweedfs/mounts— declared atpkg/api/seaweedfs_handlers.go:66, mounted nowhereGET /api/v1/tenants/{tenant}/seaweedfs/status— declared atpkg/api/seaweedfs_handlers.go:56, mounted nowhereGET /api/v1/tenants/{tenant}/tiering/policy— declared atpkg/api/minio_handlers.go:76, mounted nowhereGET /api/v1/tenants/{tenant}/tiering/stats— declared atpkg/api/minio_handlers.go:78, mounted nowhereGET /api/v1/tenants/{tenant}/wireguard/mesh— declared atpkg/api/wireguard_handlers.go:43, mounted nowhereGET /api/v1/tenants/{tenant}/wireguard/mesh/connectivity— declared atpkg/api/wireguard_handlers.go:53, mounted nowhereGET /api/v1/tenants/{tenant}/wireguard/mesh/peers— declared atpkg/api/wireguard_handlers.go:48, mounted nowherePOST /api/v1/tenants/{tenant}/backups/{backup_id}/restore— declared atpkg/api/minio_handlers.go:72, mounted nowherePOST /api/v1/tenants/{tenant}/backups/{backup_id}/verify— declared atpkg/api/minio_handlers.go:73, mounted nowherePOST /api/v1/tenants/{tenant}/minio/credentials/rotate— declared atpkg/api/minio_handlers.go:64, mounted nowherePOST /api/v1/tenants/{tenant}/minio/disable— declared atpkg/api/minio_handlers.go:60, mounted nowherePOST /api/v1/tenants/{tenant}/minio/enable— declared atpkg/api/minio_handlers.go:59, mounted nowherePOST /api/v1/tenants/{tenant}/seaweedfs/disable— declared atpkg/api/seaweedfs_handlers.go:58, mounted nowherePOST /api/v1/tenants/{tenant}/seaweedfs/enable— declared atpkg/api/seaweedfs_handlers.go:57, mounted nowherePOST /api/v1/tenants/{tenant}/seaweedfs/mounts/{volume}— declared atpkg/api/seaweedfs_handlers.go:67, mounted nowherePOST /api/v1/tenants/{tenant}/wireguard/mesh/disable— declared atpkg/api/wireguard_handlers.go:45, mounted nowherePOST /api/v1/tenants/{tenant}/wireguard/mesh/enable— declared atpkg/api/wireguard_handlers.go:44, mounted nowherePOST /api/v1/tenants/{tenant}/wireguard/mesh/peers— declared atpkg/api/wireguard_handlers.go:49, mounted nowherePUT /api/v1/tenants/{tenant}/tiering/policy— declared atpkg/api/minio_handlers.go:77, mounted nowhere