Document Wake
O Document Wake foi desenvolvido para permitir que a loja armazene e consulte dados estruturados próprios na plataforma, sem depender de um cadastro nativo para cada necessidade.
O recurso é organizado em dois conceitos:
- Entidade de document — a definição do dado. É onde se declara o
nameda entidade e oschema(JSON Schema) que descreve o formato dos documents que ela aceita; - Document (valor) — o dado em si, gravado em JSON e validado contra o
schemada entidade no momento da criação e da atualização.
Com essa funcionalidade é possível, por exemplo, manter tabelas auxiliares de integração, configurações de campanhas, dados complementares de produtos ou qualquer informação personalizada que a loja precise consumir depois.
A validação doschemasegue o dialeto JSON Schema draft 2020-12 e a raiz do schema deve declarartype: object.
Entidades de document
| Método | Rota | Descrição |
|---|---|---|
POST | /document/entities | Cria uma entidade de document |
GET | /document/entities | Lista as entidades da loja |
GET | /document/entities/{id} | Retorna uma entidade pelo identificador |
GET | /document/entities/by-name/{name} | Retorna uma entidade pelo nome |
PUT | /document/entities/{id} | Atualiza uma entidade |
DELETE | /document/entities/{id} | Remove uma entidade |
Campos da entidade
| Campo | Tipo | Descrição |
|---|---|---|
id | inteiro | Identificador da entidade |
name | string | Nome da entidade. Obrigatório, até 100 caracteres e único na loja |
schema | string | JSON Schema (draft 2020-12) que descreve os documents aceitos. Obrigatório e com raiz type: object |
publicOperations | array de string | Opcional. Operações liberadas para consumo público: CREATE, READ, UPDATE, DELETE. Quando ausente, nenhuma operação é pública |
createdAt | data | Data de cadastro (UTC) |
updatedAt | data | Data da última atualização (UTC) |
Oschemaé normalizado ao ser gravado: o$schemado dialeto draft 2020-12 é acrescentado quando ausente, o$idé descartado e cada item depropertiesrecebe o atributopublicViewcom valorfalsecaso não tenha sido informado.
O atributopublicViewe a listapublicOperationscontrolam apenas o consumo público dos documents. As chamadas autenticadas pela API Pública sempre retornam o document completo, independentemente dessas marcações.
Documents (valores)
| Método | Rota | Descrição |
|---|---|---|
POST | /document/values | Cria um document informando o identificador da entidade |
POST | /document/values/by-entity-name/{name} | Cria um document informando o nome da entidade |
GET | /document/values/{id} | Retorna um document pelo identificador |
GET | /document/values/by-entity/{entityId} | Lista os documents de uma entidade pelo identificador |
GET | /document/values/by-entity-name/{name} | Lista, paginado por cursor, os documents de uma entidade pelo nome |
PUT | /document/values/{id} | Atualiza um document |
DELETE | /document/values/{id} | Remove um document |
Campos do document
| Campo | Tipo | Descrição |
|---|---|---|
id | inteiro | Identificador do document |
documentEntityId | inteiro | Entidade à qual o document pertence |
value | string | O document em JSON. Deve ser um objeto JSON válido e satisfazer o schema da entidade |
createdAt | data | Data de cadastro (UTC) |
updatedAt | data | Data da última atualização (UTC) |
Ovalueé enviado e retornado como string contendo o JSON do document. Ao montar a requisição, lembre-se de escapar as aspas internas.
Exemplo de schema de entidade
{
"type": "object",
"required": ["sku", "nome", "preco"],
"properties": {
"sku": { "type": "string", "maxLength": 50, "publicView": true },
"nome": { "type": "string", "publicView": true },
"preco": { "type": "number", "minimum": 0, "publicView": true },
"custoInterno": { "type": "number", "minimum": 0 }
}
}Permissões do token
As operações do Document Wake exigem que o token da API Pública tenha as permissões correspondentes liberadas:
[
"post/document/entities",
"get/document/entities",
"get/document/entities/{id}",
"get/document/entities/by-name/{name}",
"put/document/entities/{id}",
"delete/document/entities/{id}",
"post/document/values",
"get/document/values/by-entity/{entityId}",
"get/document/values/by-entity-name/{name}",
"get/document/values/{id}",
"put/document/values/{id}",
"delete/document/values/{id}"
]Updated about 4 hours ago

