SpaceRole

Última atualização: 22 de junho de 2026

SpaceRole é um conjunto de permissões concedido aos membros de um Space. Reúne em um único recurso o que se pode fazer (ler, criar, editar, excluir, publicar) sobre Content Type, Content e Media, e se há acesso às configurações do Space. Os filtros que estreitam o escopo das permissões (apenas determinado Content Type, apenas o que o próprio usuário criou, e assim por diante) também são definidos dentro do SpaceRole.

Um SpaceRole criado, por si só, não se aplica a ninguém. Você o concede a um membro inserindo o Refer deste SpaceRole em roles do Space Membership. Um mesmo membro pode ter vários SpaceRole ao mesmo tempo. Além disso, um DeliveryAccessToken também é vinculado a um único SpaceRole de least-privilege (privilégio mínimo), o que determina o escopo que pode ser entregue por esse token.

Estrutura do recurso

A seguir está a resposta da consulta individual do SpaceRole "Produto somente leitura". Junto com sys (propriedades do sistema), ele tem as propriedades de corpo que definem as permissões: contentType, content, media e 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": "Produto somente leitura",
  "contentType": { "All": { "Allow": [] } },
  "content": {
    "Read": {
      "Allow": [
        { "contentType": { "sys": { "id": "3trmXRLdJF4GBlAjtcuoZ7Pnxj8dlA", "type": "Refer", "targetType": "ContentType" } } }
      ]
    }
  },
  "media": { "All": { "Allow": [] } },
  "settings": []
}

Chaves principais:

  • contentType: mapa de permissões sobre o Content Type em si (o esquema). Define, por ação, a permissão de ler, criar, alterar, excluir e publicar o Content Type.
  • content: mapa de permissões sobre o Content (os dados de conteúdo). O exemplo acima limita a leitura apenas ao Content de um determinado Content Type.
  • media: mapa de permissões sobre a Media (arquivos e imagens).
  • settings: array de strings que define a permissão de acesso às configurações do Space. Acesso total é ["SETTING_ALL"]; para não conceder acesso a nenhuma configuração, use [].
  • isLocked: se for true, trata-se de um papel fornecido por padrão pelo Weegloo (por exemplo, Administrator), que não pode ser modificado nem excluído.

Propriedades do sistema (sys)

Todo SpaceRole mantém as propriedades comuns do sistema no objeto sys. space, createdBy e updatedBy entram no formato Refer ({ "sys": { "id", "type": "Refer", "targetType" } }).

PropriedadeTipoDescrição
idstringIdentificador único do recurso.
typestringTipo do recurso. Para SpaceRole, é sempre "SpaceRole".
spaceRefer<Space>O Space ao qual este SpaceRole pertence.
createdByRefer<User>Usuário que o criou.
createdAtstring (date-time)Momento da criação.
updatedByRefer<User>Último usuário que o modificou.
updatedAtstring (date-time)Momento da última modificação.
isLockedbooleanSe for true, é um papel fornecido por padrão e não pode ser modificado nem excluído. Papéis criados por você mesmo são false.
versioninteger (≥1)Versão do recurso. Aumenta em 1 a cada modificação.

SpaceRole é um recurso de configuração sem o conceito de publicação. Por isso, ao contrário de Content e Media, ele não tem publish, archive ou status em sys, tendo apenas version. O version aumenta a cada modificação do SpaceRole.

Mapa de permissões: contentType, content, media

contentType, content e media são, cada um, um mapa que tem ações como chaves. As ações são Read (ler), Create (criar), Edit (editar), Delete (excluir) e Publish (publicar), havendo também All, que indica todas as ações de uma vez. O valor de cada ação é um objeto que contém os arrays de regras Allow (permitir) e Deny (negar).

"content": {
  "Read":   { "Allow": [ /* regra */ ], "Deny": [ /* regra */ ] },
  "Edit":   { "Allow": [ /* regra */ ] }
}

Cada objeto de regra (rule) tem filtros opcionais que estreitam o escopo da permissão.

  • contentType: limita o alvo ao qual a regra se aplica a um único Content Type. Insere-se um Refer que aponta para o Content Type.
  • createdBy: limita apenas aos recursos criados por um determinado usuário. Se você inserir o id de um usuário específico em sys.id, limita apenas ao que essa pessoa criou; se inserir o valor reservado :self, limita "apenas ao que o usuário que está chamando agora criou".
  • tag: limita apenas aos recursos com uma determinada Tag.

Um array Allow vazio [] significa permitir a ação sobre todo o tipo correspondente. Como o filtro está vazio, não há nada a filtrar, então a ação fica aberta para todos os recursos.

Exemplo 1: Administrator (permissões totais, fornecido por padrão)

O papel Administrator concede Allow vazio na ação All em contentType, content e media, permitindo tudo, e atribui ["SETTING_ALL"] a settings, acessando todas as configurações do Space. Como esse papel é fornecido por padrão pelo Weegloo, seu sys.isLocked é true e ele não pode ser modificado nem excluído.

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

Exemplo 2: Somente leitura (apenas um Content Type)

Este é um exemplo de papel de least-privilege que você cria por conta própria. Coloca-se uma regra apenas na ação Read de content e, pelo filtro contentType dessa regra, limita-se a um único Content Type. O próprio Content Type e a Media foram deixados abertos com All em Allow vazio, mas os dados de conteúdo só podem ser lidos para aquele único tipo. Como settings é [], não há acesso às configurações do Space. Quando se vincula esse tipo de papel a um DeliveryAccessToken, o token de entrega passa a ler apenas aquele escopo. O JSON deste papel é igual ao "Produto somente leitura" em Estrutura do recurso acima.

settings (acesso às configurações do Space)

settings não é um mapa de permissões, mas um array de strings. Contém a permissão de acesso às configurações do Space; acesso total é ["SETTING_ALL"] e, para não conceder nenhum acesso, deixa-se [].

A lista de ações (Read, Create, Edit, Delete, Publish, All), as chaves de filtro (contentType, createdBy, tag) e o significado de :self seguem a definição das regras de permissão weegloo-space-role.

API

A URL base de todos os endpoints abaixo é https://cma.weegloo.com/v1, e é necessário um token Bearer que autentique no CMA no header Authorization. A modificação de papéis (PUT, PATCH) exige enviar também o header X-Weegloo-Version (o sys.version do recurso atual) para o controle de concorrência otimista. A criação e a exclusão não têm esse header. Papéis fornecidos por padrão com sys.isLocked igual a true não podem ser modificados nem excluídos.