API Admin › Referência

Coleções e marcas

Endereço base: https://api.denaryx.com/admin/2026-10. Exemplos e regras no guia Produtos, coleções e marcas. Os erros seguem o formato comum. A especificação inteira: baixar o OpenAPI.

GET /collections

As coleções da loja

Escopo read_products ou read_content

As categorias da loja, em árvore, numa lista plana na ordem do menu: cada coleção seguida das de baixo dela. Todas (no máximo 2.000) cabem numa página só.

Resposta

200 Sucesso. (CollectionList)

Os campos da resposta (13)
CampoTipoDescrição
datalista de objeto
data[].idstring (uuid)
data[].parent_idstring (uuid) ou null
data[].titlestring
data[].handlestring
data[].pathstring
data[].levelinteger
data[].products_countinteger
data[].attributeslista de objeto
data[].attributes[].attribute_idstring (uuid)
data[].attributes[].requiredboolean
data[].google_category_idinteger ou null
next_cursorstring ou null

Erros

  • 401 O token falta, não existe, foi revogado ou venceu (authentication_error).
  • 403 O token não tem o escopo da rota, ou, com write_content, mandou campos que pedem write_products, listados em fields (permission_error).
  • 429 Chamadas demais: espere o Retry-After (rate_limited).
  • 500 Erro do nosso lado (api_error).
  • 503 A API está ocupada com outras chamadas: espere o Retry-After (api_error).

POST /collections

Cria uma coleção

Escopo write_products

No fim das coleções do mesmo lugar da árvore (até 3 níveis). Sem handle, o endereço sai do título.

Parâmetros

NomeOndeTipoDescrição
Idempotency-KeycabeçalhostringAté 255 caracteres. A mesma escrita mandada de novo com a mesma chave, em até 24 horas, devolve a resposta guardada (com Idempotent-Replayed: true) em vez de acontecer duas vezes.

Corpo application/json: CollectionCreate

CampoTipoDescrição
titleobrigatóriostringAté 60 caracteres.
handlestringAté 60 caracteres.
parent_idstring (uuid) ou null
attributeslista de objetoAté 100 itens.
attributes[].attribute_idobrigatóriostring (uuid)
attributes[].requiredbooleanSem ele: false.
google_category_idinteger ou nullMaior que 0.
descriptionstringAté 5000 caracteres.
seoobjeto
seo.titlestringAté 70 caracteres.
seo.descriptionstringAté 320 caracteres.
template_suffixstringAté 40 caracteres.

Resposta

201 Sucesso. (CollectionWithContent)

Os campos da resposta (16)
CampoTipoDescrição
idstring (uuid)
parent_idstring (uuid) ou null
titlestring
handlestring
pathstring
levelinteger
products_countinteger
attributeslista de objeto
attributes[].attribute_idstring (uuid)
attributes[].requiredboolean
google_category_idinteger ou null
descriptionstring
seoobjeto
seo.titlestring
seo.descriptionstring
template_suffixstring

Erros

  • 400 A chamada veio com campos inválidos; os campos recusados vão em fields (invalid_request).
  • 401 O token falta, não existe, foi revogado ou venceu (authentication_error).
  • 403 O token não tem o escopo da rota, ou, com write_content, mandou campos que pedem write_products, listados em fields (permission_error).
  • 409 O estado do recurso não permite a mudança, ou ele mudou desde a leitura (conflict).
  • 429 Chamadas demais: espere o Retry-After (rate_limited).
  • 500 Erro do nosso lado (api_error).
  • 503 A API está ocupada com outras chamadas: espere o Retry-After (api_error).

GET /collections/{id}

Uma coleção

Escopo read_products ou read_content

Com o texto da página e o título e a descrição para os buscadores.

Parâmetros

NomeOndeTipoDescrição
idobrigatóriocaminhostring (uuid)O id da coleção.

Resposta

200 Sucesso. (CollectionWithContent)

Os campos da resposta (16)
CampoTipoDescrição
idstring (uuid)
parent_idstring (uuid) ou null
titlestring
handlestring
pathstring
levelinteger
products_countinteger
attributeslista de objeto
attributes[].attribute_idstring (uuid)
attributes[].requiredboolean
google_category_idinteger ou null
descriptionstring
seoobjeto
seo.titlestring
seo.descriptionstring
template_suffixstring

Erros

  • 401 O token falta, não existe, foi revogado ou venceu (authentication_error).
  • 403 O token não tem o escopo da rota, ou, com write_content, mandou campos que pedem write_products, listados em fields (permission_error).
  • 404 O recurso não existe nesta loja (not_found).
  • 429 Chamadas demais: espere o Retry-After (rate_limited).
  • 500 Erro do nosso lado (api_error).
  • 503 A API está ocupada com outras chamadas: espere o Retry-After (api_error).

PATCH /collections/{id}

Muda campos de uma coleção

Escopo write_products ou write_content

Só o que vier muda. Um parent_id novo move a coleção, com as de baixo, para o fim do lugar novo; o endereço antigo leva ao novo. Com write_content, só os textos: title, description, seo e handle; qualquer outro campo dá 403 missing_scope, com os campos que pedem write_products em fields.

Parâmetros

NomeOndeTipoDescrição
idobrigatóriocaminhostring (uuid)O id da coleção.
Idempotency-KeycabeçalhostringAté 255 caracteres. A mesma escrita mandada de novo com a mesma chave, em até 24 horas, devolve a resposta guardada (com Idempotent-Replayed: true) em vez de acontecer duas vezes.

Corpo application/json: CollectionUpdate

CampoTipoDescrição
titlestringAté 60 caracteres.
handlestringAté 60 caracteres.
parent_idstring (uuid) ou null
attributeslista de objetoAté 100 itens.
attributes[].attribute_idobrigatóriostring (uuid)
attributes[].requiredbooleanSem ele: false.
google_category_idinteger ou nullMaior que 0.
descriptionstringAté 5000 caracteres.
seoobjeto
seo.titlestringAté 70 caracteres.
seo.descriptionstringAté 320 caracteres.
template_suffixstringAté 40 caracteres.

Resposta

200 Sucesso. (CollectionWithContent)

Os campos da resposta (16)
CampoTipoDescrição
idstring (uuid)
parent_idstring (uuid) ou null
titlestring
handlestring
pathstring
levelinteger
products_countinteger
attributeslista de objeto
attributes[].attribute_idstring (uuid)
attributes[].requiredboolean
google_category_idinteger ou null
descriptionstring
seoobjeto
seo.titlestring
seo.descriptionstring
template_suffixstring

Erros

  • 400 A chamada veio com campos inválidos; os campos recusados vão em fields (invalid_request).
  • 401 O token falta, não existe, foi revogado ou venceu (authentication_error).
  • 403 O token não tem o escopo da rota, ou, com write_content, mandou campos que pedem write_products, listados em fields (permission_error).
  • 404 O recurso não existe nesta loja (not_found).
  • 409 O estado do recurso não permite a mudança, ou ele mudou desde a leitura (conflict).
  • 422 O pedido é válido, mas não pode ser atendido como está (invalid_request).
  • 429 Chamadas demais: espere o Retry-After (rate_limited).
  • 500 Erro do nosso lado (api_error).
  • 503 A API está ocupada com outras chamadas: espere o Retry-After (api_error).

DELETE /collections/{id}

Exclui uma coleção

Escopo write_products

Os produtos saem dela e continuam nas outras. A coleção com outras debaixo dela não sai (409).

Parâmetros

NomeOndeTipoDescrição
idobrigatóriocaminhostring (uuid)O id da coleção.
Idempotency-KeycabeçalhostringAté 255 caracteres. A mesma escrita mandada de novo com a mesma chave, em até 24 horas, devolve a resposta guardada (com Idempotent-Replayed: true) em vez de acontecer duas vezes.

Resposta

204 Sucesso, sem corpo.

Erros

  • 401 O token falta, não existe, foi revogado ou venceu (authentication_error).
  • 403 O token não tem o escopo da rota, ou, com write_content, mandou campos que pedem write_products, listados em fields (permission_error).
  • 404 O recurso não existe nesta loja (not_found).
  • 409 O estado do recurso não permite a mudança, ou ele mudou desde a leitura (conflict).
  • 429 Chamadas demais: espere o Retry-After (rate_limited).
  • 500 Erro do nosso lado (api_error).
  • 503 A API está ocupada com outras chamadas: espere o Retry-After (api_error).

GET /brands

As marcas da loja

Escopo read_products ou read_content

Todas (no máximo 2.000), em ordem de nome, numa página só.

Resposta

200 Sucesso. (BrandList)

Os campos da resposta (11)
CampoTipoDescrição
datalista de Brand
data[].idstring (uuid)
data[].namestring
data[].handlestring
data[].descriptionstring
data[].logo_urlstring ou null
data[].seoobjeto
data[].seo.titlestring
data[].seo.descriptionstring
data[].products_countinteger
next_cursorstring ou null

Erros

  • 401 O token falta, não existe, foi revogado ou venceu (authentication_error).
  • 403 O token não tem o escopo da rota, ou, com write_content, mandou campos que pedem write_products, listados em fields (permission_error).
  • 429 Chamadas demais: espere o Retry-After (rate_limited).
  • 500 Erro do nosso lado (api_error).
  • 503 A API está ocupada com outras chamadas: espere o Retry-After (api_error).

POST /brands

Cria uma marca

Escopo write_products

Sem handle, o endereço sai do nome. O logo se envia pelo painel.

Parâmetros

NomeOndeTipoDescrição
Idempotency-KeycabeçalhostringAté 255 caracteres. A mesma escrita mandada de novo com a mesma chave, em até 24 horas, devolve a resposta guardada (com Idempotent-Replayed: true) em vez de acontecer duas vezes.

Corpo application/json: BrandCreate

CampoTipoDescrição
nameobrigatóriostringAté 60 caracteres.
handlestringAté 60 caracteres.
descriptionstringAté 2000 caracteres.
seoobjeto
seo.titlestringAté 70 caracteres.
seo.descriptionstringAté 320 caracteres.

Resposta

201 Sucesso. (Brand)

Os campos da resposta (9)
CampoTipoDescrição
idstring (uuid)
namestring
handlestring
descriptionstring
logo_urlstring ou null
seoobjeto
seo.titlestring
seo.descriptionstring
products_countinteger

Erros

  • 400 A chamada veio com campos inválidos; os campos recusados vão em fields (invalid_request).
  • 401 O token falta, não existe, foi revogado ou venceu (authentication_error).
  • 403 O token não tem o escopo da rota, ou, com write_content, mandou campos que pedem write_products, listados em fields (permission_error).
  • 409 O estado do recurso não permite a mudança, ou ele mudou desde a leitura (conflict).
  • 429 Chamadas demais: espere o Retry-After (rate_limited).
  • 500 Erro do nosso lado (api_error).
  • 503 A API está ocupada com outras chamadas: espere o Retry-After (api_error).

GET /brands/{id}

Uma marca

Escopo read_products ou read_content

A marca, com quantos produtos são dela.

Parâmetros

NomeOndeTipoDescrição
idobrigatóriocaminhostring (uuid)O id da marca.

Resposta

200 Sucesso. (Brand)

Os campos da resposta (9)
CampoTipoDescrição
idstring (uuid)
namestring
handlestring
descriptionstring
logo_urlstring ou null
seoobjeto
seo.titlestring
seo.descriptionstring
products_countinteger

Erros

  • 401 O token falta, não existe, foi revogado ou venceu (authentication_error).
  • 403 O token não tem o escopo da rota, ou, com write_content, mandou campos que pedem write_products, listados em fields (permission_error).
  • 404 O recurso não existe nesta loja (not_found).
  • 429 Chamadas demais: espere o Retry-After (rate_limited).
  • 500 Erro do nosso lado (api_error).
  • 503 A API está ocupada com outras chamadas: espere o Retry-After (api_error).

PATCH /brands/{id}

Muda campos de uma marca

Escopo write_products ou write_content

Só o que vier muda; o logo fica. Um handle novo leva o endereço antigo ao novo. Todos os campos da marca são texto: write_content basta.

Parâmetros

NomeOndeTipoDescrição
idobrigatóriocaminhostring (uuid)O id da marca.
Idempotency-KeycabeçalhostringAté 255 caracteres. A mesma escrita mandada de novo com a mesma chave, em até 24 horas, devolve a resposta guardada (com Idempotent-Replayed: true) em vez de acontecer duas vezes.

Corpo application/json: BrandUpdate

CampoTipoDescrição
namestringAté 60 caracteres.
handlestringAté 60 caracteres.
descriptionstringAté 2000 caracteres.
seoobjeto
seo.titlestringAté 70 caracteres.
seo.descriptionstringAté 320 caracteres.

Resposta

200 Sucesso. (Brand)

Os campos da resposta (9)
CampoTipoDescrição
idstring (uuid)
namestring
handlestring
descriptionstring
logo_urlstring ou null
seoobjeto
seo.titlestring
seo.descriptionstring
products_countinteger

Erros

  • 400 A chamada veio com campos inválidos; os campos recusados vão em fields (invalid_request).
  • 401 O token falta, não existe, foi revogado ou venceu (authentication_error).
  • 403 O token não tem o escopo da rota, ou, com write_content, mandou campos que pedem write_products, listados em fields (permission_error).
  • 404 O recurso não existe nesta loja (not_found).
  • 409 O estado do recurso não permite a mudança, ou ele mudou desde a leitura (conflict).
  • 429 Chamadas demais: espere o Retry-After (rate_limited).
  • 500 Erro do nosso lado (api_error).
  • 503 A API está ocupada com outras chamadas: espere o Retry-After (api_error).

DELETE /brands/{id}

Exclui uma marca

Escopo write_products

Os produtos dela ficam sem marca.

Parâmetros

NomeOndeTipoDescrição
idobrigatóriocaminhostring (uuid)O id da marca.
Idempotency-KeycabeçalhostringAté 255 caracteres. A mesma escrita mandada de novo com a mesma chave, em até 24 horas, devolve a resposta guardada (com Idempotent-Replayed: true) em vez de acontecer duas vezes.

Resposta

204 Sucesso, sem corpo.

Erros

  • 401 O token falta, não existe, foi revogado ou venceu (authentication_error).
  • 403 O token não tem o escopo da rota, ou, com write_content, mandou campos que pedem write_products, listados em fields (permission_error).
  • 404 O recurso não existe nesta loja (not_found).
  • 429 Chamadas demais: espere o Retry-After (rate_limited).
  • 500 Erro do nosso lado (api_error).
  • 503 A API está ocupada com outras chamadas: espere o Retry-After (api_error).