API Admin › Referência

Estoque e preço

Endereço base: https://api.denaryx.com/admin/2026-10. Exemplos e regras no guia Estoque e preço. Os erros seguem o formato comum. A especificação inteira: baixar o OpenAPI.

POST /inventory/adjust

Soma ao estoque, em lote

Escopo write_products

Cada item soma o delta (negativo, subtrai) ao estoque de agora, sem ler antes: o jeito seguro com pedidos acontecendo. Até 100 itens, pelo variant_id ou pelo sku, tudo ou nada: se algum ficaria abaixo de zero, nada muda (409 insufficient_inventory, com o item em fields). A variante de produto sem controle de estoque (inventory_tracked falso) recusa o lote (422 inventory_not_tracked).

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: InventoryAdjust

CampoTipoDescrição
itemsobrigatóriolista de objetoDe 1 a 100 itens.
items[].variant_idstring (uuid)
items[].skustringAté 64 caracteres.
items[].deltaobrigatóriointegerDe -1000000 a 1000000.

Resposta

200 Sucesso. (BatchResult)

Os campos da resposta (21)
CampoTipoDescrição
variantslista de Variant
variants[].idstring (uuid)
variants[].product_idstring (uuid)
variants[].optionslista de string
variants[].skustring ou null
variants[].barcodestring ou null
variants[].priceinteger
variants[].compare_at_priceinteger ou null
variants[].costinteger ou null
variants[].inventory_quantityinteger
variants[].inventory_trackedboolean
variants[].prescription_rangeobjeto ou null
variants[].prescription_range.sphere_minnumber
variants[].prescription_range.sphere_maxnumber
variants[].prescription_range.cylinder_maxnumber
variants[].prescription_range.add_minnumber ou nullSem ele: null.
variants[].prescription_range.add_maxnumber ou nullSem ele: null.
variants[].prescription_range.base_curvenumber ou nullA curva base (BC) da caixa, em mm: só na contact_lens.
variants[].prescription_range.diameternumber ou nullO diâmetro (DIA) da caixa, em mm: só na contact_lens.
variants[].positioninteger
variants[].updated_atstring (data e hora)

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).
  • 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).

POST /inventory/set

Grava o estoque, em lote

Escopo write_products

O estoque de cada item passa a ser o número mandado: o que está à venda, depois dos pedidos já feitos. Até 100 itens, tudo ou nada. A variante de produto sem controle de estoque (inventory_tracked falso) recusa o lote (422 inventory_not_tracked).

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: InventorySet

CampoTipoDescrição
itemsobrigatóriolista de objetoDe 1 a 100 itens.
items[].variant_idstring (uuid)
items[].skustringAté 64 caracteres.
items[].inventory_quantityobrigatóriointegerDe 0 a 1000000.

Resposta

200 Sucesso. (BatchResult)

Os campos da resposta (21)
CampoTipoDescrição
variantslista de Variant
variants[].idstring (uuid)
variants[].product_idstring (uuid)
variants[].optionslista de string
variants[].skustring ou null
variants[].barcodestring ou null
variants[].priceinteger
variants[].compare_at_priceinteger ou null
variants[].costinteger ou null
variants[].inventory_quantityinteger
variants[].inventory_trackedboolean
variants[].prescription_rangeobjeto ou null
variants[].prescription_range.sphere_minnumber
variants[].prescription_range.sphere_maxnumber
variants[].prescription_range.cylinder_maxnumber
variants[].prescription_range.add_minnumber ou nullSem ele: null.
variants[].prescription_range.add_maxnumber ou nullSem ele: null.
variants[].prescription_range.base_curvenumber ou nullA curva base (BC) da caixa, em mm: só na contact_lens.
variants[].prescription_range.diameternumber ou nullO diâmetro (DIA) da caixa, em mm: só na contact_lens.
variants[].positioninteger
variants[].updated_atstring (data e hora)

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).
  • 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).

POST /prices/set

Grava preços, em lote

Escopo write_products

O preço, o "de" (compare_at_price; null tira a promoção) e o custo de cada item, só os que vierem. O "de" precisa ser maior que o preço. Até 100 itens, tudo ou nada. As promoções da loja continuam valendo sobre o preço novo.

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: PriceSet

CampoTipoDescrição
itemsobrigatóriolista de objetoDe 1 a 100 itens.
items[].variant_idstring (uuid)
items[].skustringAté 64 caracteres.
items[].priceintegerDe 0 a 100000000.
items[].compare_at_priceinteger ou nullDe 0 a 100000000.
items[].costinteger ou nullDe 0 a 100000000.

Resposta

200 Sucesso. (BatchResult)

Os campos da resposta (21)
CampoTipoDescrição
variantslista de Variant
variants[].idstring (uuid)
variants[].product_idstring (uuid)
variants[].optionslista de string
variants[].skustring ou null
variants[].barcodestring ou null
variants[].priceinteger
variants[].compare_at_priceinteger ou null
variants[].costinteger ou null
variants[].inventory_quantityinteger
variants[].inventory_trackedboolean
variants[].prescription_rangeobjeto ou null
variants[].prescription_range.sphere_minnumber
variants[].prescription_range.sphere_maxnumber
variants[].prescription_range.cylinder_maxnumber
variants[].prescription_range.add_minnumber ou nullSem ele: null.
variants[].prescription_range.add_maxnumber ou nullSem ele: null.
variants[].prescription_range.base_curvenumber ou nullA curva base (BC) da caixa, em mm: só na contact_lens.
variants[].prescription_range.diameternumber ou nullO diâmetro (DIA) da caixa, em mm: só na contact_lens.
variants[].positioninteger
variants[].updated_atstring (data e hora)

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).
  • 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).