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 schema que 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 schema da entidade.
  • Arquivo do document — imagem ou PDF anexado ao document. Fica fora do JSON e não é validado contra o schema.

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çãoTipoDescrição
documentsqueryLista os documents de uma entidade, paginados por cursor
documentqueryRetorna um document pelo seu id
documentCreatemutationCria um document em uma entidade, com um arquivo opcional.
documentUpdatemutationAtualiza o conteúdo de um document e, opcionalmente, substitui o arquivo.
documentDeletemutationRemove um document e o seu arquivo.
documentsSearchqueryBusca documents de uma entidade por condições sobre o conteúdo

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 erro WDC103;
  • publicView — cada propriedade do schema declara se é visível publicamente. Apenas as propriedades com publicView: true aparecem no campo data dos documents retornados.
  • O arquivo segue as permissões do document: anexar exige CREATE ou UPDATE, e ler exige READ. Não há publicView para arquivo: sempre que o document é legível, a URL aparece em files.
📘

As permissões são configuradas na entidade, pela API Pública. Se uma consulta retorna WDC103 ou traz menos campos do que o esperado, verifique o publicOperations e o publicView da 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 erro WDC105, independentemente do publicOperations.

🚧

A URL do arquivo é pública: qualquer pessoa com o link pode abri-lo.

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

O 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.

O campo files

O campo files traz os arquivos anexados ao document, numa lista de DocumentFileNode com url e createdAt. Ele fica ao lado de data, e não dentro.

  • Quando o document não tem arquivo, a lista vem vazia ( [ ] ), nunca null;
  • files não é afetado por fields nem por publicView;
  • createdAt é a data em que o arquivo foi vinculado ao document, em UTC;
  • Na query documentsSearch, a lista vem sempre vazia;
  • Use a url exatamente como retornada.

Arquivos do document

documentCreate e documentUpdate aceitam um arquivo opcional no argumento file.

RegraValor
Formatos aceitosjpg, jpeg, png, gif, webp e pdf, sem diferenciar maiúsculas
Tamanho máximo5 MB
Arquivos por document1
🚧

Limite de tamanho do document

O conteúdo do document é limitado a 2.000 caracteres de JSON, validado na criação e na atualização. Um value acima do limite retorna WDC101, com o motivo na extensão detail do erro. O limite é verificado antes da validação contra o schema.
O limite vale apenas para o JSON de value. O arquivo tem limite próprio, de 5 MB.

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.

📘

O externalId de 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:

PropriedadeTipopublicView
skustringtrue
corstringtrue
custonumberfalse

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ódigoMensagemDescrição
WDC101Documento inválidoO document não é um objeto JSON válido, excede 2.000 caracteres ou não atende ao schema da entidade ou o arquivo foi recusado pelo serviço de arquivos (tipo não aceito, conteúdo que não corresponde à extensão ou tamanho acima do máximo
WDC102Ocorreu um erro ao acessar os documentosErro genérico ou serviço de documents indisponível
WDC103Operação não permitida para esta entidadeA operação não está declarada em publicOperations
WDC104Documento ou entidade não encontradoA entidade ou o document informado não existe
WDC105A funcionalidade documents não está habilitada para a lojaA loja não tem o recurso de documents habilitado. Vale para todas as operações, mesmo as declaradas em publicOperations
WDC106Filtro de documentos inválidoFiltro 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
WDC107A busca de documentos está temporariamente indisponívelO índice de busca está indisponível. Ocorre apenas em documentsSearch
WDC108Arquivo inválidoArquivo recusado antes do envio: vazio, sem extensão, com extensão não aceita ou acima de 5 MB. O motivo vem na extensão detail
WDC109O serviço de arquivos está indisponívelO armazenamento de arquivos está indisponível. Ocorre apenas em escritas com arquivo; a mesma operação sem arquivo pode ser feita
WDC200A requisição excedeu o tempo esperadoTempo limite excedido na consulta aos documents
📘

WDC101 x WDC106

Os dois correspondem a um 400 do serviço de documents, mas apontam consertos diferentes: o WDC101 diz que o problema está no document enviado, e o WDC106 que 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ão detail.

📘

WDC108 x WDC101

Em arquivos: o WDC108 verifica nome e tamanho do arquivo; o WDC101 com motivo de arquivo indica que o conteúdo não corresponde à extensão, como um PDF renomeado para .png.

📘

WDC109 x WDC102

Com WDC102, nenhuma operação de document funciona; com WDC109, só o envio de arquivo está impedido.

Exemplo de resposta com WDC108

{
  "errors": [
    {
      "message": "Arquivo inválido",
      "path": ["documentCreate"],
      "extensions": {
        "code": "WDC108",
        "detail": "Extensão \"svg\" não permitida. Aceitos: jpg, jpeg, png, gif, webp, pdf."
      }
    }
  ],
  "data": {
    "documentCreate": null
  }
}

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.

Utilização da funcionalidade

Para utilizar o Document Wake, solicite o acesso via chamado ou entre em contato com o seu Customer Success.

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