Skip to main content

Admin: Roles

Create and manage roles. A role is a named set of permissions that can be assigned to users.

Endpoints overview​

MethodEndpointPermissionDescription
GET/api/rolesadmin:roles:viewList all roles
GET/api/roles/:idadmin:roles:viewGet role by ID
POST/api/rolesadmin:roles:createCreate a role
PUT/api/roles/:idadmin:roles:editUpdate a role
DELETE/api/roles/:idadmin:roles:deleteDelete a role
POST/api/roles/:id/permissionsadmin:role_permissions:manageAssign permission to role
PATCH/api/roles/:id/permissions/:permIdadmin:role_permissions:manageUpdate permission scope on role
DELETE/api/roles/:id/permissions/:permIdadmin:role_permissions:manageRevoke 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"
}
FieldRequiredNotes
permissionIdyesUUID of the permission to assign
scopenoglobal (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