Administrar roles¶
Un rol determina lo que alguien puede hacer. Esta página muestra cómo das un rol a un miembro o a un grupo y cómo lo retiras, cómo haces que un rol valga en las organizaciones que están debajo de la tuya, y cómo creas roles propios. Qué son los roles y qué roles integrados hay está en Roles y acceso.
Dar roles puede hacerlo people-admin (solo member y people-admin) u org-admin; crear,
modificar y eliminar roles propios solo puede org-admin. Los roles aún no tienen pantalla en OS:
los administras mediante la API. Los ejemplos usan $OS, $TOKEN y $ORG como en
Administrar grupos.
Ver los roles¶
curl -s "$OS/api/v1/organisations/$ORG/roles" -H "Authorization: Bearer $TOKEN"
OS muestra primero los roles integrados, con su nombre como id (org-admin), y luego los roles
propios, con un id como rol_.... Cada rol muestra sus rules, así que lees exactamente lo que
puede hacer un rol integrado con GET .../roles/org-admin.
Dar un rol¶
curl -s -X POST "$OS/api/v1/organisations/$ORG/role-assignments" \
-H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
-d '{"role": "people-admin", "member_id": "mem_..."}'
OS responde 201 con la concesión:
{"id": "ras_...", "role": "people-admin", "member_id": "mem_...", "group_id": null,
"reach": "organisation", "granted_by": "per_...", "created_at": "2026-10-17T09:12:00Z",
"allowed_actions": ["see", "use", "write", "delete"]}
rolees el nombre de un rol integrado o el id de un rol propio.- Indica
member_idpara un miembro, ogroup_idpara un grupo; entonces todo miembro del grupo tiene el rol. reachesorganisation(por defecto) odescendants, consulta más abajo.
Solo puedes dar un rol que tengas tú mismo, con al menos el mismo alcance, o del que tengas todas
las reglas (por qué). Un
miembro tiene como máximo 32 roles, contando member.
GET .../role-assignments?member_id=mem_... o ?group_id=grp_... muestra los roles de un miembro o
de un grupo.
Quitar un rol¶
curl -s -X DELETE "$OS/api/v1/organisations/$ORG/role-assignments/ras_..." \
-H "Authorization: Bearer $TOKEN"
Quitas un rol si tus reglas te permiten dar ese rol (use sobre el rol) y puedes modificar al
miembro o al grupo; que tengas tú el rol no importa aquí. Una organización mantiene siempre al menos
un miembro activo que tenga org-admin por sí mismo, no mediante un grupo. OS rechaza con 409
una retirada que no deje ninguno; primero da org-admin a otro miembro.
Hacer que un rol valga en las organizaciones de debajo¶
Con "reach": "descendants" el rol vale también en todas las organizaciones que están debajo de la
tuya. Así un socio da a sus empleados de soporte acceso a las organizaciones de sus clientes, sin que
se hagan miembros de ellas. Solo puedes dar este alcance si tienes tú mismo el rol con alcance
descendants. OS rechaza con 409 si una organización de debajo recibiera así más reglas en las
funciones de IA de las que puede tener (500), o más de 32 atributos y etiquetas.
curl -s -X POST "$OS/api/v1/organisations/$ORG/role-assignments" \
-H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
-d '{"role": "org-admin", "group_id": "grp_...", "reach": "descendants"}'
Crear un rol propio¶
Un rol propio es un nombre con reglas. Este rol permite a un jefe de equipo ver y administrar a los miembros de su propio departamento:
curl -s -X POST "$OS/api/v1/organisations/$ORG/roles" \
-H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
-d '{"name": "Jefe de equipo", "rules": [
{"id": "own-department", "effect": "permit", "kind": "membership",
"actions": ["see", "write"],
"when": [{"atom": "label_among", "label": "department", "attribute": "department"}]}
]}'
La regla dice: un miembro puede ver y modificar a otro miembro si un departamento de ese miembro es también un departamento suyo. Cómo escribes reglas está en Tipos y acciones.
namees único en la organización y no es el nombre de un rol integrado, como máximo 64 caracteres.rules: como máximo 200, cada una con como máximo 15 condiciones.labelsson opcionales, como en un grupo. La etiquetabuiltines de los roles integrados.- Una organización tiene como máximo 100 roles propios.
Un rol no puede contener reglas sobre memory_write, share_link, artifact_download, router y
egress_host (422): valen para toda la organización y están en el
documento de reglas. Una condición nombra role, group, o
un atributo que tu organización o una organización superior haya definido.
Debes tener tú mismo cada regla que permite el rol. No se puede escribir una regla que deniegue sobre la administración (organizaciones, miembros, invitaciones, grupos, roles, reglas y atributos); sobre las funciones de IA sí.
Modificar o eliminar un rol propio¶
Sustituyes un rol propio entero con PUT .../roles/rol_... e indicas en If-Match la versión que
leíste, como en un grupo. Solo se comprueban frente a lo que
tienes tú las reglas que añades: puedes editar un rol que contiene una regla que añadió otra persona.
Quien tiene el rol queda sujeto de inmediato a las reglas nuevas.
DELETE .../roles/rol_... elimina el rol y se lo quita a todos los que lo tenían. Los roles
integrados no se modifican ni se eliminan.
Si OS rechaza¶
| Respuesta | Significado | Qué haces |
|---|---|---|
403 |
No puedes hacer esto, o das algo que tú mismo no tienes. El mensaje indica entonces el rol o la regla: "you do not hold the role org-admin", o el id de la regla (o #3 para la cuarta regla sin id). |
Pide a un administrador que sí lo tenga, o quita esa regla. |
404 |
La concesión, el rol propio que modificas, el miembro o el grupo no existe, o no puedes verlo. | Comprueba el id. |
409 |
El rol ya se dio allí, el nombre ya está en uso, el rol se modificó desde que lo leíste, es un rol integrado, desaparecería el último administrador, la organización ya tiene 100 roles propios, un miembro recibiría más de 32 roles, operator fuera de la organización más alta, o las reglas de la organización, o de una organización de debajo, juntas serían demasiado grandes (500 reglas, o 32 atributos y etiquetas, por ejemplo por una regla con una etiqueta nueva). |
Lee el mensaje; lee de nuevo o quita antes algo. |
422 |
La solicitud no es correcta: un rol que no existe, un reach desconocido, tanto member_id como group_id (o ninguno de los dos), una regla que deniega sobre la administración, dos reglas con el mismo id, demasiadas condiciones, una regla sobre un tipo para toda la organización, una parte que el tipo no admite, una condición sobre un atributo desconocido, o un valor que el atributo no permite, también si una organización superior lo definió. |
Lee detail o errors en la respuesta. |