role_update
role_update is implemented by handleRoleUpdate in src/api/handlers/roles/role_update.osl.
Handles the role update protocol operation through the resource-specific helper and storage layers.
Access
Section titled “Access”| Gate | Requirement |
|---|---|
| Authentication | Required by the central API gate. |
| Central permission | manage_roles |
| Broadcast | Not marked global directly by this adapter. A helper may emit focused or server-wide updates. |
Request
Section titled “Request”Every request includes cmd: "role_update" and may include an opaque listener correlation value.
| Field | Validation / meaning |
|---|---|
id |
schema.string().minLen(1).optional() |
name |
schema.string().minLen(1).maxLen(64).optional() |
description |
schema.string().optional() |
color |
schema.string().optional() |
gradient |
schema.array(schema.any()).optional() |
permissions |
schema.array(schema.string()).optional() |
hoisted |
schema.boolean().optional() |
self_assignable |
schema.boolean().optional() |
category |
schema.string().optional() |
Validator source
Section titled “Validator source”The handler and shared validation path use these OSL schema definitions before normalization:
*schema.Schema schemaRoleUpdate = schema.object({ id: schema.string().minLen(1).optional(), name: schema.string().minLen(1).maxLen(64).optional(), description: schema.string().optional(), color: schema.string().optional(), gradient: schema.array(schema.any()).optional(), permissions: schema.array(schema.string()).optional(), hoisted: schema.boolean().optional(), self_assignable: schema.boolean().optional(), category: schema.string().optional()}).requireAnyValue(["id", "name"])Processing path
Section titled “Processing path”handleCmdenforces authentication and themanage_rolespermission.dispatchCmdroutesrole_updatetohandleRoleUpdate.- The adapter validates and normalizes input, then calls its domain collaborators.
- Durable mutations complete before the response or event is returned.
onMessageadds the request listener to direct responses and performs any marked broadcast.
Direct collaborators visible in the handler: roleNameFromIdOrName, roleManageError, roleName, roleFromName, newPerms, userHasPermission, roleUpdate, auditRecord, broadcastAuthed
Responses and events
Section titled “Responses and events”Response/event command names visible in this adapter: role_update.
Validation and domain failures use:
{ "cmd": "error", "val": "<message>", "src": "role_update", "listener": "<copied from request>"}