Roles
GET /roles
List all roles (built-in and custom).
- Auth required: Yes
- Permission:
roles.manage
Response
{
"roles": [
{
"id": "role_abc",
"name": "Developer",
"description": "Access to SSH and SFTP only",
"isBuiltin": false,
"permissions": ["connections.create", "connections.edit_own"],
"createdAt": "2024-01-01T00:00:00.000Z",
"updatedAt": "2024-01-01T00:00:00.000Z"
}
]
}
GET /roles/permissions
List all available permissions grouped by category.
- Auth required: Yes
- Permission:
roles.manage
Response
{
"permissionGroups": {
"connections": ["connections.create", "connections.edit_own", "..."],
"sessions": ["sessions.view_any", "sessions.delete"],
"users": ["users.manage"],
"roles": ["roles.manage"],
"audit": ["audit.view_any"],
"settings": ["settings.manage", "settings.notifications", "settings.backup"]
}
}
POST /roles
Create a custom role.
- Auth required: Yes
- Permission:
roles.manage
Request body
{
"name": "Developer",
"description": "SSH and SFTP access only",
"permissions": ["connections.create", "connections.edit_own", "connections.delete_own"]
}
Response
{
"id": "role_xyz",
"name": "Developer",
"description": "SSH and SFTP access only",
"isBuiltin": false,
"permissions": ["connections.create", "connections.edit_own", "connections.delete_own"],
"createdAt": "2024-01-01T00:00:00.000Z",
"updatedAt": "2024-01-01T00:00:00.000Z"
}
PUT /roles/:id
Update a role's name, description, or permissions. Built-in roles cannot have their name or description changed, but their permissions can be updated.
- Auth required: Yes
- Permission:
roles.manage
Request body (all fields optional)
{
"name": "Senior Developer",
"description": "Extended access",
"permissions": ["connections.create", "connections.edit_any"]
}
Response
{
"id": "role_xyz",
"name": "Senior Developer",
"isBuiltin": false,
"permissions": ["connections.create", "connections.edit_any"],
"createdAt": "...",
"updatedAt": "..."
}
POST /roles/:id/reset
Reset a built-in role to its default permissions.
- Auth required: Yes
- Permission:
roles.manage
Response
{
"id": "role_abc",
"name": "user",
"isBuiltin": true,
"permissions": ["connections.create", "connections.edit_own", "connections.delete_own"],
"createdAt": "...",
"updatedAt": "..."
}
DELETE /roles/:id
Delete a custom role. Cannot delete built-in roles or roles that still have users assigned.
- Auth required: Yes
- Permission:
roles.manage
Response
{ "success": true }