Document Wake - visão geral
O Storefront API permite consultar e manter os documents da loja — dados estruturados próprios, definidos pelo lojista e validados por um JSON Schema — diretamente pelo GraphQL, sem passar pela API Pública.
O recurso é composto por dois conceitos:
- Entidade de document — a definição do dado: o nome da entidade, o
schemaque descreve o formato dos documents e as permissões de acesso público; - Document — o dado em si, gravado em JSON e validado contra o
schemada entidade.
Pelo Storefront API são expostos apenas os documents. A criação e a manutenção das entidades são feitas pela API Pública — veja Document Wake na seção API Pública.
Operações disponíveis
| Operação | Tipo | Descrição |
|---|---|---|
documents | query | Lista os documents de uma entidade, paginados por cursor |
document | query | Retorna um document pelo seu id |
documentCreate | mutation | Cria um document em uma entidade |
documentUpdate | mutation | Atualiza o conteúdo de um document |
documentDelete | mutation | Remove um document |
Permissões da entidade
O Storefront API acessa os documents como consumidor público. Isso significa que a entidade precisa liberar explicitamente cada operação, e que os documents retornam apenas os campos marcados como públicos:
publicOperations— a entidade declara quais operações são públicas (CREATE,READ,UPDATE,DELETE). Uma operação não declarada retorna o erroWDC103;publicView— cada propriedade doschemadeclara se é visível publicamente. Apenas as propriedades compublicView: trueaparecem no campodatados documents retornados.
As permissões são configuradas na entidade, pela API Pública. Se uma consulta retornaWDC103ou traz menos campos do que o esperado, verifique opublicOperationse opublicViewda entidade.
Além das permissões da entidade, a funcionalidade de documents precisa estar habilitada para a loja. Quando não está, todas as queries e mutations retornam o erroWDC105, independentemente dopublicOperations.
O identificador dos documents
O id de um document é exposto como uma hash (padrão de identificação global do Storefront API), e não como um número:
eyJFbnRpdHkiOiJEb2N1bWVudFZhbHVlIiwiSWQiOjQ1MDF9
Essa mesma hash é usada como cursor na paginação da query documents e como argumento id em document, documentUpdate e documentDelete. Uma hash inválida ou de outra entidade retorna o erro Identificador de documento inválido.
O campo data
dataO conteúdo do document é retornado no campo data, um escalar dinâmico (Any): ele carrega o objeto JSON do document e, por isso, não recebe seleção de subcampos na query. O id fica sempre fora do data, no nível do nó.
Para limitar o retorno a campos específicos, use o argumento fields, disponível em documents e document.
Limite de tamanho do documentO conteúdo do document é limitado a 2.000 caracteres de JSON, validado na criação e na atualização. Um
valueacima do limite retornaWDC101, com o motivo na extensãodetaildo erro. O limite é verificado antes da validação contra oschema.
Filtrando a listagem
A query documents aceita, além dos argumentos de paginação, três filtros opcionais: externalIds, createdAt_gte e createdAt_lte. Eles são combinados entre si e com a paginação por E (AND), e precisam ser reenviados a cada página — os cursores carregam apenas a posição, não o critério.
Veja os detalhes em Documents.
OexternalIdde um document é apenas critério de busca no Storefront API: ele não é exposto no nó retornado. Filtrar por um único valor devolve no máximo um document, já que o identificador é único entre os documents ativos da entidade; filtrar por vários valores devolve documents que só podem ser distinguidos entre si se o próprio conteúdo do document publicar o identificador como campo público.
Exemplo utilizado nesta seção
Os exemplos a seguir usam uma entidade chamada ficha-tecnica, que libera as quatro operações públicas e cujo schema declara três propriedades:
| Propriedade | Tipo | publicView |
|---|---|---|
sku | string | true |
cor | string | true |
custo | number | false |
Como custo não é público, ele nunca aparece no data retornado pelo Storefront API.
Códigos de erro
Os erros seguem o padrão do Storefront API: a operação retorna null (ou isSuccess: false, em documentDelete) e o detalhamento vem no array errors, com o código em extensions.code.
| Código | Mensagem | Descrição |
|---|---|---|
WDC101 | Documento inválido | O document não é um objeto JSON válido, excede 2.000 caracteres ou não atende ao schema da entidade |
WDC102 | Ocorreu um erro ao acessar os documentos | Erro genérico ou serviço de documents indisponível |
WDC103 | Operação não permitida para esta entidade | A operação não está declarada em publicOperations |
WDC104 | Documento ou entidade não encontrado | A entidade ou o document informado não existe |
WDC105 | A funcionalidade documents não está habilitada para a loja | A loja não tem o recurso de documents habilitado. Vale para todas as operações, mesmo as declaradas em publicOperations |
WDC106 | Filtro de documentos inválido | Filtro ou cursor inválido na listagem: data em formato não aceito ou ambíguo (31/08/2026), mais de 50 valores em externalIds, ou cursores conflitantes |
WDC200 | A requisição excedeu o tempo esperado | Tempo limite excedido na consulta aos documents |
WDC101xWDC106Os dois correspondem a um
400do serviço de documents, mas apontam consertos diferentes: oWDC101diz que o problema está no document enviado, e oWDC106que está nos parâmetros de busca da listagem — que não envia document nenhum. A mensagem específica, que diz qual filtro está errado, vem na extensãodetail.
Nas operações de criação e atualização, quando o document viola o schema da entidade, a extensão detail traz a violação específica:
{
"errors": [
{
"message": "Documento inválido",
"path": ["documentCreate"],
"extensions": {
"code": "WDC101",
"detail": "O documento não está de acordo com o schema da entidade: /custo Value is \"string\" but should be \"number\""
}
}
],
"data": {
"documentCreate": null
}
}Na listagem, a extensão detail é o que distingue um filtro de data malformado de um excesso de valores em externalIds:
{
"errors": [
{
"message": "Filtro de documentos inválido",
"path": ["documents"],
"extensions": {
"code": "WDC106",
"detail": "O filtro createdTo não corresponde a um formato de data aceito."
}
}
],
"data": {
"documents": null
}
}Consulte também Códigos de erros mapeados na API.
Demais documentações:
https://wakecommerce.readme.io/docs/document
https://wakecommerce.readme.io/docs/documents
https://wakecommerce.readme.io/docs/documentcreate
https://wakecommerce.readme.io/docs/documentupdate
https://wakecommerce.readme.io/docs/documentdelete
Updated 15 days ago

