SpaceRole
Última actualización: 22 de junio de 2026
SpaceRole es un conjunto de permisos que se otorga a los miembros de un Space. En un solo recurso recoge qué se puede hacer (leer, crear, editar, eliminar, publicar) sobre Content Type, Content y Media, y si se puede acceder a la configuración del Space. Los filtros que acotan el alcance del permiso (por ejemplo, solo ciertos Content Type, o solo lo que uno mismo ha creado) también se definen dentro del SpaceRole.
Un SpaceRole creado no se aplica a nadie por sí solo. Se otorga a un miembro añadiendo un Refer a este SpaceRole en el campo roles de Space Membership. Un mismo miembro puede tener varios SpaceRole a la vez. Además, un DeliveryAccessToken también se vincula a un único SpaceRole de least-privilege (mínimo privilegio), lo que determina el alcance de lo que ese token puede entregar.
Estructura del recurso
A continuación se muestra la respuesta de una consulta individual del SpaceRole "Producto solo lectura". Junto con sys (propiedades del sistema), tiene las propiedades de cuerpo que definen los permisos: contentType, content, media y settings.
{
"sys": {
"id": "3trmXRM3RqbgSnifyg7ObyNrQQbHbm",
"type": "SpaceRole",
"space": { "sys": { "id": "HnQ32YiH", "type": "Refer", "targetType": "Space" } },
"createdBy": { "sys": { "id": "3p4tcFbQRwz503VXdtHXNI5dZH5TVB", "type": "Refer", "targetType": "User" } },
"createdAt": "2026-06-16T09:53:16.617Z",
"updatedBy": { "sys": { "id": "3p4tcFbQRwz503VXdtHXNI5dZH5TVB", "type": "Refer", "targetType": "User" } },
"updatedAt": "2026-06-16T09:53:16.617Z",
"isLocked": false,
"version": 1
},
"name": "Producto solo lectura",
"contentType": { "All": { "Allow": [] } },
"content": {
"Read": {
"Allow": [
{ "contentType": { "sys": { "id": "3trmXRLdJF4GBlAjtcuoZ7Pnxj8dlA", "type": "Refer", "targetType": "ContentType" } } }
]
}
},
"media": { "All": { "Allow": [] } },
"settings": []
}Claves principales:
contentType: mapa de permisos sobre el Content Type en sí (el esquema). Define por acción los permisos para leer, crear, editar, eliminar y publicar Content Type.content: mapa de permisos sobre Content (los datos de contenido). El ejemplo anterior está limitado a leer únicamente el Content de un Content Type concreto.media: mapa de permisos sobre Media (archivos e imágenes).settings: array de cadenas que define el permiso de acceso a la configuración del Space. El acceso total es["SETTING_ALL"]; si no se concede acceso a ninguna configuración, es[].isLocked: si estrue, se trata de un rol que Weegloo proporciona de forma predeterminada (por ejemplo, Administrator) y no se puede modificar ni eliminar.
Propiedades del sistema (sys)
Todos los SpaceRole recogen propiedades del sistema comunes en el objeto sys. space, createdBy y updatedBy entran con forma Refer ({ "sys": { "id", "type": "Refer", "targetType" } }).
| Propiedad | Tipo | Descripción |
|---|---|---|
id | string | Identificador único del recurso. |
type | string | Tipo de recurso. Para SpaceRole siempre es "SpaceRole". |
space | Refer<Space> | El Space al que pertenece este SpaceRole. |
createdBy | Refer<User> | Usuario que lo creó. |
createdAt | string (date-time) | Momento de creación. |
updatedBy | Refer<User> | Último usuario que lo modificó. |
updatedAt | string (date-time) | Momento de la última modificación. |
isLocked | boolean | Si es true, es un rol provisto de forma predeterminada y no se puede modificar ni eliminar. Los roles creados por uno mismo son false. |
version | integer (≥1) | Versión del recurso. Aumenta en 1 con cada modificación. |
SpaceRole es un recurso de configuración sin concepto de publicación. Por eso, a diferencia de Content y Media, su sys no tiene publish, archive ni status, y solo tiene version. version aumenta cada vez que se modifica el SpaceRole.
Mapa de permisos: contentType, content, media
contentType, content y media son cada uno un mapa que tiene acciones como claves. Las acciones son Read (leer), Create (crear), Edit (editar), Delete (eliminar) y Publish (publicar), y también existe All, que abarca todas las acciones a la vez. El valor de cada acción es un objeto que contiene los arrays de reglas Allow (permitir) y Deny (denegar).
"content": {
"Read": { "Allow": [ /* regla */ ], "Deny": [ /* regla */ ] },
"Edit": { "Allow": [ /* regla */ ] }
}Cada objeto de regla (rule) tiene filtros opcionales que acotan el alcance del permiso.
contentType: limita el destino al que se aplica la regla a un único Content Type concreto. Se introduce unReferque apunta al Content Type.createdBy: limita a los recursos creados por un usuario concreto. Si se introduce un id de usuario concreto ensys.id, se limita solo a lo que esa persona creó; si se introduce el valor reservado:self, se limita a "solo lo creado por el usuario que llama en este momento".tag: limita solo a los recursos que tienen un Tag concreto.
Un array Allow vacío [] significa que se permite la acción sobre todo el conjunto de ese tipo. Como el filtro está vacío, no hay nada que filtrar, por lo que la acción queda abierta para todos los recursos.
Ejemplo 1: Administrator (permisos totales, provisto por defecto)
El rol Administrator otorga un Allow vacío en la acción All de contentType, content y media, permitiendo así todo, y da ["SETTING_ALL"] en settings para acceder a toda la configuración del Space. Como Weegloo provee este rol por defecto, su sys.isLocked es true y no se puede modificar ni eliminar.
{
"sys": {
"id": "3trmXRLdJF4GBlAjtcuoWfVubsasp4",
"type": "SpaceRole",
"space": { "sys": { "id": "HnQ32YiH", "type": "Refer", "targetType": "Space" } },
"createdBy": { "sys": { "id": "_", "type": "Refer", "targetType": "User" } },
"createdAt": "2026-06-14T14:56:04.737Z",
"updatedBy": { "sys": { "id": "_", "type": "Refer", "targetType": "User" } },
"updatedAt": "2026-06-14T14:56:04.737Z",
"isLocked": true,
"version": 1
},
"name": "Administrator",
"description": "Members of this role have full access to everything in this space.",
"contentType": { "All": { "Allow": [] } },
"content": { "All": { "Allow": [] } },
"media": { "All": { "Allow": [] } },
"settings": ["SETTING_ALL"]
}Ejemplo 2: Solo lectura (únicamente un Content Type concreto)
Es un ejemplo de rol de least-privilege creado por uno mismo. Solo coloca una regla en la acción Read de content, y mediante el filtro contentType de esa regla lo limita a un único Content Type concreto. El Content Type en sí y Media quedan abiertos con All y un Allow vacío, pero los datos de contenido solo permiten leer ese único tipo. Como settings es [], no se puede acceder a la configuración del Space. Si se vincula un rol así a un DeliveryAccessToken, el token de entrega solo leerá ese alcance. El JSON de este rol es igual al de "Producto solo lectura" en la Estructura del recurso anterior.
settings (acceso a la configuración del Space)
settings no es un mapa de permisos, sino un array de cadenas. Recoge el permiso de acceso a la configuración del Space: el acceso total es ["SETTING_ALL"], y si no se concede ningún acceso se deja como [].
La lista de acciones (
Read,Create,Edit,Delete,Publish,All), las claves de filtro (contentType,createdBy,tag) y el significado de:selfse basan en la definición de reglas de permisosweegloo-space-role.
API
La URL base de todos los endpoints siguientes es https://cma.weegloo.com/v1, y el header Authorization requiere un token Bearer que autentique frente a CMA. La modificación de roles (PUT, PATCH) requiere enviar también el header X-Weegloo-Version (el sys.version del recurso actual) para el control de concurrencia optimista. La creación y la eliminación no llevan este header. Los roles provistos por defecto cuyo sys.isLocked es true no se pueden modificar ni eliminar.
Documentos relacionados
- Space Membership: vincula un SpaceRole en el campo
rolesdel miembro. - Delivery Access Token: token de entrega que se vincula a un SpaceRole de least-privilege.
- Content Type: el Content Type al que apuntan las reglas de permisos.
