API Reference
Admin API
Signing key management, user administration, roles, and invites.
The Admin API provides endpoints for managing JWT signing keys, users, roles, and invites. These endpoints require admin-level permissions.
Signing Keys
List Keys
GET /api/admin/keysResponse:
[
{
"keyId": "key_abc123",
"algorithm": "HS256",
"active": true,
"createdAt": 1710000000000
}
]Create Key
POST /api/admin/keysGenerates a new signing key pair. The secret is returned only once.
Deactivate Key
POST /api/admin/keys/:id/deactivateDeactivated keys can no longer sign new tokens but existing tokens remain valid until expiration.
Rotate Key
POST /api/admin/keys/:id/rotateCreates a new key and deactivates the old one in a single atomic operation.
Users
List Users
GET /api/usersGet User
GET /api/users/:idCreate User
POST /api/usersRequest Body:
{
"name": "Jane Smith",
"email": "[email protected]",
"password": "secure-password"
}Update User
PATCH /api/users/:idDelete User
DELETE /api/users/:idChange Password
POST /api/users/:id/change-passwordMFA Management
POST /api/users/:id/mfa/setup # Start MFA setup (returns QR code)
POST /api/users/:id/mfa/confirm # Confirm MFA with TOTP code
POST /api/users/:id/mfa/disable # Disable MFARole Assignments
POST /api/users/:id/roles # Assign role
DELETE /api/users/:id/roles/:roleId # Remove roleRoles
List Roles
GET /api/rolesBuilt-in Roles:
| Role | Description |
|---|---|
super_admin | Full system access |
admin | Manage topics, schemas, mappings, users |
editor | Create and modify topics, schemas, mappings |
viewer | Read-only access |
Create Custom Role
POST /api/rolesRequest Body:
{
"name": "webhook_manager",
"description": "Can manage webhook endpoints",
"permissions": [
{ "resource": "webhooks", "action": "read" },
{ "resource": "webhooks", "action": "create" },
{ "resource": "webhooks", "action": "update" },
{ "resource": "webhooks", "action": "delete" }
]
}Update / Delete Role
PATCH /api/roles/:id
DELETE /api/roles/:idInvites
List Invites
GET /api/invitesCreate Invite
POST /api/invitesRequest Body:
{
"email": "[email protected]",
"roleId": "role_editor"
}Accept Invite
POST /api/invites/acceptRequest Body:
{
"token": "invite_token_abc123",
"name": "New User",
"password": "secure-password"
}Revoke / Delete Invite
POST /api/invites/:id/revoke
DELETE /api/invites/:idGet Invite by Token
GET /api/invites/by-token/:tokenUsed by the invite acceptance page to display invite details.