Atributos & Templates
Com estas rotas você modela e preenche os atributos do catálogo: define atributos, opções, grupos e templates (com versão e herança), associa templates a categorias, preenche os valores em produtos e SKUs, valida/publica e busca. A chave é o refId, informado por você.
Todas as rotas exigem Bearer; listas/buscas usam cursor. Ações usam sufixo :validate/:publish; PUT substitui e PATCH altera parcialmente.
Essencial para todas as rotas
Legenda: ✔ obrigatório · ○ opcional. Read-only (id, status, inherited, sourceTemplateRefId) não é enviado pelo parceiro.
Header de auth (Bearer) obrigatório; com corpo soma Content-Type: application/json:
Authorization: Bearer <access_token> # POST /oauth/token (spec 023)
Content-Type: application/json # POST/PUT/PATCH
Envelope de listagem/busca (nunca array bare):
{ "items": [ /* ... */ ], "hasMore": true, "nextCursor": "opaque-value" }
Para listas keyset por id, nextCursor é o id do último item (número); para a busca facetada (§ Busca), o cursor é opaco (base64 da tupla de ordenação preço,skuId), pois a ordem é por campo não-único.
ValidationReport (retorno dos :validate — 026 §37):
{ "valid": false, "errors": [
{ "code": "REQUIRED_VALUE_MISSING", "path": "values.color", "attributeRefId": "color",
"message": "O atributo Cor é obrigatório." } ] }
Erros de recurso: AppError { code, message } (404/409/422). Auth: 401/403 pelo middleware.
{version} real = 1.0. Casca responde sample fixo; 4xx são contrato-alvo.