SpaceRole

Dernière mise à jour : 22 juin 2026

Un SpaceRole est un ensemble de permissions accordé aux membres d'un Space. Il regroupe dans une seule ressource ce qu'il est possible de faire (lire, créer, modifier, supprimer, publier) sur les Content Type, Content et Media, ainsi que l'accès aux paramètres du Space. Les filtres qui restreignent la portée des permissions (à un seul Content Type, à ce que l'on a créé soi-même, etc.) sont eux aussi définis à l'intérieur du SpaceRole.

Un SpaceRole créé ne s'applique de lui-même à personne. Vous l'attribuez à un membre en plaçant un Refer vers ce SpaceRole dans le champ roles de la Space Membership. Un même membre peut détenir plusieurs SpaceRole en même temps. Un DeliveryAccessToken est lui aussi lié à un unique SpaceRole en least-privilege (privilège minimal), ce qui détermine la portée de ce que ce token peut recevoir en distribution.

Structure de la ressource

Voici la réponse de la lecture unitaire du SpaceRole « Produit en lecture seule ». Avec sys (propriétés système), il possède les propriétés de corps qui définissent les permissions : contentType, content, media et 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": "Produit en lecture seule",
  "contentType": { "All": { "Allow": [] } },
  "content": {
    "Read": {
      "Allow": [
        { "contentType": { "sys": { "id": "3trmXRLdJF4GBlAjtcuoZ7Pnxj8dlA", "type": "Refer", "targetType": "ContentType" } } }
      ]
    }
  },
  "media": { "All": { "Allow": [] } },
  "settings": []
}

Clés principales :

  • contentType : carte de permissions sur le Content Type lui-même (le schéma). Définit, action par action, le droit de lire, créer, modifier, supprimer et publier un Content Type.
  • content : carte de permissions sur le Content (les données de contenu). L'exemple ci-dessus limite la lecture au seul Content d'un Content Type précis.
  • media : carte de permissions sur les Media (fichiers et images).
  • settings : tableau de chaînes qui définit le droit d'accès aux paramètres du Space. L'accès total est ["SETTING_ALL"] ; pour n'accorder aucun accès aux paramètres, utilisez [].
  • isLocked : si true, il s'agit d'un rôle fourni par défaut par Weegloo (par exemple Administrator), qui ne peut être ni modifié ni supprimé.

Propriétés système (sys)

Chaque SpaceRole place ses propriétés système communes dans l'objet sys. Les champs space, createdBy et updatedBy se présentent sous la forme Refer ({ "sys": { "id", "type": "Refer", "targetType" } }).

PropriétéTypeDescription
idstringIdentifiant unique de la ressource.
typestringType de ressource. Pour un SpaceRole, toujours "SpaceRole".
spaceRefer<Space>Le Space auquel appartient ce SpaceRole.
createdByRefer<User>Utilisateur qui l'a créé.
createdAtstring (date-time)Date et heure de création.
updatedByRefer<User>Dernier utilisateur à l'avoir modifié.
updatedAtstring (date-time)Date et heure de la dernière modification.
isLockedbooleanSi true, c'est un rôle fourni par défaut qui ne peut être ni modifié ni supprimé. Un rôle créé soi-même vaut false.
versioninteger (≥1)Version de la ressource. Augmente de 1 à chaque modification.

Un SpaceRole est une ressource de configuration sans notion de publication. C'est pourquoi, contrairement aux Content et Media, son sys ne comporte ni publish, ni archive, ni status, et possède seulement version. La version augmente à chaque modification du SpaceRole.

Carte de permissions : contentType, content, media

contentType, content et media sont chacun une carte ayant des actions pour clés. Les actions sont Read (lire), Create (créer), Edit (modifier), Delete (supprimer) et Publish (publier), avec également All qui désigne toutes les actions à la fois. La valeur de chaque action est un objet contenant les tableaux de règles Allow (autoriser) et Deny (refuser).

"content": {
  "Read":   { "Allow": [ /* règle */ ], "Deny": [ /* règle */ ] },
  "Edit":   { "Allow": [ /* règle */ ] }
}

Chaque objet règle (rule) possède des filtres facultatifs qui restreignent la portée de la permission.

  • contentType : restreint la cible de la règle à un seul Content Type. Vous y placez un Refer qui pointe vers le Content Type.
  • createdBy : restreint aux seules ressources créées par un utilisateur précis. En renseignant l'sys.id d'un utilisateur donné, la portée se limite à ce qu'il a créé ; avec la valeur réservée :self, elle se limite à « ce que l'utilisateur appelant a créé ».
  • tag : restreint aux seules ressources portant un Tag précis.

Un tableau Allow vide [] signifie que l'action est autorisée sur tout le type concerné. Le filtre étant vide, il n'y a rien à écarter, et l'action s'ouvre donc à toutes les ressources.

Exemple 1 : Administrator (toutes les permissions, fourni par défaut)

Le rôle Administrator autorise tout : il accorde un Allow vide à l'action All pour contentType, content et media, et donne ["SETTING_ALL"] à settings pour accéder à l'ensemble des paramètres du Space. Comme ce rôle est fourni par défaut par Weegloo, son sys.isLocked vaut true et il ne peut être ni modifié ni supprimé.

{
  "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"]
}

Exemple 2 : lecture seule (un seul Content Type)

Exemple d'un rôle least-privilege que vous créez vous-même. Une règle est posée uniquement sur l'action Read de content, et le filtre contentType de cette règle la limite à un seul Content Type. Le Content Type lui-même et les Media restent ouverts via All avec un Allow vide, mais pour les données de contenu, seule la lecture de ce type précis est possible. Comme settings vaut [], l'accès aux paramètres du Space n'est pas accordé. Lier un tel rôle à un DeliveryAccessToken fait que le token de distribution ne lit que cette portée. Le JSON de ce rôle est identique à celui de « Produit en lecture seule » dans la structure de la ressource ci-dessus.

settings (accès aux paramètres du Space)

settings n'est pas une carte de permissions, mais un tableau de chaînes. Il porte le droit d'accès aux paramètres du Space : l'accès total est ["SETTING_ALL"], et pour n'accorder aucun accès, laissez [].

La liste des actions (Read, Create, Edit, Delete, Publish, All), les clés de filtre (contentType, createdBy, tag) et la signification de :self se fondent sur la définition des règles de permission weegloo-space-role.

API

L'URL de base de tous les endpoints ci-dessous est https://cma.weegloo.com/v1, et un token Bearer authentifiant CMA est requis dans l'en-tête Authorization. La modification d'un rôle (PUT, PATCH) exige aussi l'envoi de l'en-tête X-Weegloo-Version (la sys.version actuelle de la ressource) pour le contrôle de concurrence optimiste. La création et la suppression n'ont pas cet en-tête. Les rôles fournis par défaut dont sys.isLocked vaut true ne peuvent être ni modifiés ni supprimés.