Admin: Roles
Create and manage roles. A role is a named set of permissions that can be assigned to users.
Endpoints overviewβ
| Method | Endpoint | Permission | Description |
|---|---|---|---|
GET | /api/roles | admin:roles:view | List all roles |
GET | /api/roles/:id | admin:roles:view | Get role by ID |
POST | /api/roles | admin:roles:create | Create a role |
PUT | /api/roles/:id | admin:roles:edit | Update a role |
DELETE | /api/roles/:id | admin:roles:delete | Delete a role |
POST | /api/roles/:id/permissions | admin:role_permissions:manage | Assign permission to role |
PATCH | /api/roles/:id/permissions/:permId | admin:role_permissions:manage | Update permission scope on role |
DELETE | /api/roles/:id/permissions/:permId | admin:role_permissions:manage | Revoke permission from role |
Endpointsβ
List all rolesβ
GET /api/roles β Auth required, Permission: admin:roles:view
Response β 200
[
{
"id": "role-uuid-001",
"name": "Editor",
"createdAt": "2025-01-05T09:00:00.000Z",
"nameI18n": { "uk": "Π Π΅Π΄Π°ΠΊΡΠΎΡ", "en": "Editor", "es": "Editor" },
"permissions": [
{
"id": "perm-uuid-001",
"name": "episode:edit",
"description": "Edit episodes",
"category": "episodes",
"scopeable": false,
"scope": "global"
}
]
}
]
Get role by IDβ
GET /api/roles/:id β Auth required, Permission: admin:roles:view
Response β 200 β single role object (same shape as list item, always includes permissions)
Create roleβ
POST /api/roles β Auth required, Permission: admin:roles:create
Request body
{ "name": "Narrator" }
Response β 201
{
"id": "role-uuid-002",
"name": "Narrator",
"createdAt": "2025-04-01T10:00:00.000Z",
"nameI18n": null,
"permissions": []
}
Update roleβ
PUT /api/roles/:id β Auth required, Permission: admin:roles:edit
Request body
{ "name": "Senior Editor" }
Response β 200 β updated role object
Delete roleβ
DELETE /api/roles/:id β Auth required, Permission: admin:roles:delete
Response β 204
Role Permissionsβ
Assign permission to roleβ
POST /api/roles/:id/permissions β Auth required, Permission: admin:role_permissions:manage
Request body
{
"permissionId": "perm-uuid-005",
"scope": "global"
}
| Field | Required | Notes |
|---|---|---|
permissionId | yes | UUID of the permission to assign |
scope | no | global (default) | assigned |
Response β 204
Update permission scope on roleβ
PATCH /api/roles/:id/permissions/:permId β Auth required, Permission: admin:role_permissions:manage
Request body
{ "scope": "assigned" }
scope must be "global" or "assigned".
Response β 204
Revoke permission from roleβ
DELETE /api/roles/:id/permissions/:permId β Auth required, Permission: admin:role_permissions:manage
Response β 204