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.
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.
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 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 |
WDC200 | A requisição excedeu o tempo esperado | Tempo limite excedido na consulta aos documents |
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
}
}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 1 day ago

