Delivery Access Token
O DeliveryAccessToken é um token de leitura usado para ler conteúdo publicado a partir da CDA (entrega pública). Quando o navegador de um site ou aplicativo busca conteúdo publicado, ele chama a CDA com esse token. No momento da emissão, o token é vinculado a um único SpaceRole, e esse papel define o escopo de leitura do token (quais Content Type podem ser lidos).
Na CMA, o DeliveryAccessToken é um recurso subordinado ao Space, e seu caminho tem como base /spaces/{spaceId}/delivery-access-tokens. Como esse token opera exposto ao navegador (cliente), o papel vinculado deve ser definido com o menor privilégio possível (least-privilege), lendo apenas os Content Type necessários (consulte Segurança: vínculo de menor privilégio abaixo). Além disso, se você colocar em allowedReferrers as origens a partir das quais a chamada é permitida, este token não pode ser usado fora dos sites indicados (consulte Regras de formato da origem e Verificação do Referer).
Estrutura do recurso
A seguir está a resposta obtida ao criar um DeliveryAccessToken. O sys (propriedades do sistema) contém o valor e o escopo do token, e o corpo contém name, description e allowedReferrers.
{
"sys": {
"id": "3trmXRM3RqbgSnifyg7PUFQuOAqWOc",
"type": "DeliveryAccessToken",
"space": { "sys": { "id": "HnQ32YiH", "type": "Refer", "targetType": "Space" } },
"user": { "sys": { "id": "3trmXRLdJIqc9GPBbyFYQQw6hf9kGj", "type": "Refer", "targetType": "User" } },
"createdBy": { "sys": { "id": "3trmXRM3RqbgSnifyg7PUFQsSPi0nt", "type": "Refer", "targetType": "User" } },
"createdAt": "2026-06-18T09:24:23.156Z",
"updatedBy": { "sys": { "id": "3trmXRM3RqbgSnifyg7PUFQsSPi0nt", "type": "Refer", "targetType": "User" } },
"updatedAt": "2026-06-18T09:24:23.156Z",
"accessToken": "DVRATbQ8mX2vK9pLs7Rf1Zt0Nc4Wd6Hg5Ua2Ee9Ck3PoYx8Bj6Hg5Ua2Ee9Ck3Po…",
"scopes": ["DELIVERY_ACCESS_TOKEN"]
},
"allowedReferrers": ["https://shop.example.com"],
"description": "Token de entrega somente leitura para o site público da loja de roupas",
"name": "Entrega pública do site"
}Chaves principais:
sys.id: identificador único do DeliveryAccessToken. Entra em{deliveryAccessTokenId}nos caminhos de consulta, atualização e exclusão individuais.sys.accessToken: valor secreto do token usado nas chamadas à CDA. Como o mesmo valor aparece também nas consultas após a emissão, é preciso ter cuidado com a exposição (consulte a seção de segurança abaixo).sys.scopes: escopo de permissões do token. O DeliveryAccessToken é sempre["DELIVERY_ACCESS_TOKEN"]no momento da emissão.sys.user: o usuário dedicado que é o sujeito de permissões deste token. É criado automaticamente na emissão, e as permissões do SpaceRole vinculado são concedidas a esse usuário. Ou seja, as permissões efetivas do token vêm desse usuário. É um usuário diferente de quem realmente emitiu este token (sys.createdBy).name: nome do token definido na criação (por exemplo,Entrega pública do site).description: descrição do token (opcional).allowedReferrers: lista que restringe de quais origens este token pode ser chamado. Se a lista estiver vazia, não há restrição. O token do exemplo acima só passa quando a chamada vem do site público da loja de roupas (https://shop.example.com) (para as regras de formato e a forma de verificação, consulte Regras de formato da origem e Verificação do Referer).
O accessToken do exemplo acima foi substituído por uma string de exemplo por ser um valor secreto. Na prática é uma string longa e opaca, e o mesmo valor aparece mesmo quando o token é consultado novamente após a emissão.
Propriedades do sistema (sys)
Todo DeliveryAccessToken mantém as propriedades comuns do sistema e as propriedades próprias do token no objeto sys. space, user, createdBy e updatedBy entram no formato Refer ({ "sys": { "id", "type": "Refer", "targetType" } }).
| Propriedade | Tipo | Descrição |
|---|---|---|
id | string | Identificador único do recurso. |
type | string | Tipo do recurso. Para o DeliveryAccessToken é sempre "DeliveryAccessToken". |
space | Refer<Space> | O Space ao qual este token pertence. |
user | Refer<User> | O usuário dedicado que é o sujeito de permissões deste token. Criado automaticamente na emissão, e as permissões do SpaceRole vinculado são concedidas a esse usuário (as permissões efetivas do token vêm desse usuário). É um usuário diferente de createdBy (o emissor real). |
createdBy | Refer<User> | O usuário real que emitiu este token (o sujeito de permissões é o user acima). |
createdAt | string (date-time) | Data e hora da criação. |
updatedBy | Refer<User> | O usuário real que fez a última atualização. |
updatedAt | string (date-time) | Data e hora da última atualização. |
accessToken | string | Valor secreto do token usado nas chamadas à CDA. Como aparece igual também nas consultas após a emissão, deve ser tratado de modo a não ser exposto externamente. |
scopes | string array | Escopo de permissões do token. Para o DeliveryAccessToken é sempre ["DELIVERY_ACCESS_TOKEN"]. |
Propriedades do corpo:
| Propriedade | Tipo | Descrição |
|---|---|---|
name | string (1~64) | Nome do token. Definido na criação. |
description | string (≤128) | Descrição do token. Opcional. |
allowedReferrers | string array (0~50) | Lista de origens a partir das quais a chamada deste token é permitida. Uma lista vazia significa que não há restrição. Como a atualização completa substitui o recurso inteiro, enviar a requisição sem este item esvazia a lista e a restrição deixa de valer. Para manter a restrição, envie novamente a lista atual. Também é possível alterá-la depois da emissão. |
Segurança: vínculo de menor privilégio
O DeliveryAccessToken é um token que chama a CDA exposto ao navegador e aos visitantes. Por isso, o SpaceRole ao qual ele é vinculado se torna o limite de segurança deste token.
- No campo
roleda requisição de criação, coloque osys.idde um SpaceRole de menor privilégio que leia apenas os Content Type necessários. Para a entrega pública, recomenda-se um papel somente de leitura. - Nunca vincule o papel
Administrator. Como este token é exposto ao cliente, vincular um papel com permissões administrativas faz com que essas permissões vazem diretamente para fora. Além disso, não use por descuido o primeiro item da lista de SpaceRole; especifique explicitamente osys.iddo papel de menor privilégio pretendido. - Delimite também com
allowedReferrersos lugares onde este token pode ser usado. O papel vinculado define o que se pode ler com este token, e esta lista define de onde ele pode ser chamado. Um token que funciona no navegador não consegue esconder o próprio valor; assim, se você colocar na lista a origem do site público, mesmo que o valor do token vaze para fora, as chamadas à CDA feitas fora desse site não passam (consulte Verificação do Referer). - O
accessTokené um valor secreto que continua sendo consultado com o mesmo valor após a emissão. Injete-o com segurança no build do cliente, mas não o exponha diretamente para fora.
Status e restrições
Restrições de valor a respeitar na criação e na atualização.
| Alvo | Restrição |
|---|---|
name | 1~64 caracteres, obrigatório (na criação). |
description | Até 128 caracteres, opcional. |
role | Refer do SpaceRole, obrigatório (na criação). |
allowedReferrers | De 0 a 50 itens. Cada item precisa seguir as Regras de formato da origem abaixo. |
Regras sobre vínculo e permissões:
- O
rolea vincular precisa realmente existir naquele Space. Se você colocar osys.idde um papel que não existe naquele Space, a criação é recusada. - O chamador só pode vincular os papéis que ele mesmo possui naquele Space. É uma restrição para impedir que se conceda ao token uma permissão mais alta vinculando um papel que o chamador não tem, e uma requisição de criação que a viole é recusada. Porém, o administrador daquele Space (quem possui o papel Administrator) não está sujeito a essa restrição e pode vincular qualquer papel.
- O DeliveryAccessToken é um recurso com limite de quantidade. Se você ultrapassar o limite de emissões do plano atual, a criação é recusada. Consulte os limites por plano em Planos.
- A emissão e o gerenciamento (criar, consultar, atualizar, excluir) exigem que o
settingsdo papel do chamador contenhaSETTING_DELIVERY_ACCESS_TOKEN. Como é uma ação separada deSETTING_SPACE_ACCESS_TOKEN, que emite o Space Access Token com permissão de escrita, é possível conceder apenas a permissão de emitir o token de entrega e bloquear a emissão do token de escrita (consulte SpaceRole). - Esta API é chamada apenas com a sessão de login do console e com o Personal Access Token. Um DeliveryAccessToken emitido não pode, por si mesmo, criar outro DeliveryAccessToken.
Regras de formato da origem
Cada item de allowedReferrers é uma string que aponta para uma origem a partir da qual a chamada é permitida. Escreva no formato a seguir.
"allowedReferrers": [
"https://shop.example.com",
"https://*.shop.example.com",
"http://localhost:3000"
]A lista aceita no máximo 50 itens, e a mesma origem não pode ser incluída duas vezes. As regras que cada item precisa seguir são estas.
- Use apenas o esquema
https. Ohttpé permitido somente emlocalhost,127.0.0.1e[::1]. - Use o curinga apenas como um único rótulo
*.no início. Ele não pode ser usado no caminho. - Escreva o host em ASCII. Coloque os domínios internacionalizados na notação Punycode.
- A porta vai de 1 a 65535. Se você omitir a porta, vale a porta padrão do esquema (443 para
httpse 80 parahttp). - Se você escrever um caminho, a requisição só passa quando o caminho dela é exatamente igual. Como o navegador envia o caminho com codificação por porcentagem, escreva apenas ASCII no caminho.
- Itens que trazem informação de usuário (
user@), consulta (?) ou fragmento (#) são recusados.
Essa verificação vale nos três caminhos: criação, atualização completa e atualização parcial. Se houver um único item que viole as regras, a lista não é salva e a requisição é recusada, e um dos itens que violaram as regras é informado no motivo do erro (consulte Erros).
Verificação do Referer
Depois da emissão, quando você chama a CDA com este token, o allowedReferrers é aplicado a cada requisição para decidir se ela passa.
- Se a lista estiver vazia, não há restrição. A chamada passa a partir de qualquer origem.
- Se a lista tiver ao menos um item, a verificação usa o valor do cabeçalho
Refererda requisição. O cabeçalhoOriginnão é consultado. - Se o cabeçalho
Refererestiver ausente ou com o valor vazio, a requisição é recusada. O navegador envia esse cabeçalho por conta própria, mas, para um token que vai ser usado onde oReferernão é enviado, como em um script de build executado no servidor ou na renderização no servidor, deixe a lista vazia. - Para passar, o esquema, o host e a porta do
Refererprecisam ser todos iguais aos de um item da lista. Se esse item tiver um caminho, o caminho também precisa ser igual. - O item
https://*.shop.example.comabrange todos os hosts que terminam em.shop.example.com, comoadmin.shop.example.com, e não abrange o próprioshop.example.com. Para permitir os dois, inclua tambémhttps://shop.example.comcomo um item à parte. - Essa verificação vale para todas as requisições enviadas com este token. É igual para qualquer caminho da CDA que você chame.
- A requisição barrada na verificação é recusada com HTTP
403. O código devolvido está em Erros abaixo.
Erros
São os códigos que você encontra ao lidar com o DeliveryAccessToken. Para os códigos comuns a todos os recursos, consulte Erros comuns.
| Código | Condição |
|---|---|
WGL400071 | Você colocou em allowedReferrers um item que viola as Regras de formato da origem. A verificação ocorre na criação, na atualização completa e na atualização parcial. |
WGL404001 | O role recebeu o sys.id de um SpaceRole que não existe naquele Space. |
WGL422001 | O chamador tentou vincular ao token um SpaceRole que ele mesmo não possui naquele Space. O administrador daquele Space (quem possui o papel Administrator) não está sujeito a essa restrição. |
WGL429001 | O chamador tentou emitir um novo token com a quantidade de DeliveryAccessToken emitidos já no limite do plano atual. |
WGL403001 | O papel do chamador não tem a permissão de configuração SETTING_DELIVERY_ACCESS_TOKEN. Ela é necessária não só para a emissão, mas também para a consulta, a modificação e a exclusão. |
WEB403001 | Com um token que tem allowedReferrers definido, a chamada foi feita a partir de uma origem que não está na lista, ou a requisição não trazia o Referer. Este código é devolvido não ao lidar com o token, mas ao fazer requisições com ele. |
API
A URL base de todos os endpoints abaixo é https://cma.weegloo.com/v1, e o cabeçalho Authorization precisa de um token Bearer que autentique na CMA. A atualização e a atualização parcial do DeliveryAccessToken não exigem o cabeçalho X-Weegloo-Version.
Documentos relacionados
- SpaceRole: define o papel (escopo de leitura) a vincular a este token.
- Visão geral da CDA: a API de entrega que lê o conteúdo publicado com este token.
- Space Access Token: token que também escreve dentro de um único Space (tem a mesma restrição de origem).
- Personal Access Token: token de Weegloo User para servidor e CI.
