API Admin › Referência

Produtos e variantes

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 /products

Os produtos da loja

Escopo read_products ou read_content

Na ordem da última mudança, da mais antiga à mais nova, com o id para desempatar: para sincronizar, guarde o updated_at do último que leu e peça updated_at_min na próxima vez. A mudança de estoque de uma variante (um pedido, um ajuste) muda só o updated_at dela, e não o do produto: para o estoque, ver GET /variants.

Parâmetros

NomeOndeTipoDescrição
limitconsultaintegerQuantos itens por página, de 1 a 100 (50 sem ele).
cursorconsultastringO next_cursor da página anterior, como veio. Os filtros continuam os mesmos.
idsconsultastringSó estes ids, separados por vírgula (até 100).
updated_at_minconsultastring (data e hora)Só o que mudou a partir desta data (ISO 8601): a sincronização incremental.
created_at_minconsultastring (data e hora)Só o criado a partir desta data (ISO 8601).
created_at_maxconsultastring (data e hora)Só o criado até esta data (ISO 8601).
activeconsultastringtrue: só os à venda; false: só os ocultos.Um de: true, false.
collection_idconsultastring (uuid)Só os produtos da coleção e das coleções de baixo dela.

Resposta

200 Sucesso. (ProductList)

Os campos da resposta (73)
CampoTipoDescrição
datalista de Product
data[].idstring (uuid)
data[].titlestring
data[].handlestring
data[].descriptionstring
data[].activeboolean
data[].template_suffixstring
data[].seoobjeto
data[].seo.titlestring
data[].seo.descriptionstring
data[].optionslista de objeto
data[].options[].namestring
data[].options[].attribute_idstring (uuid) ou null
data[].brand_idstring (uuid) ou null
data[].mpnstring
data[].conditionstringUm de: new, used, refurbished.
data[].taxobjeto
data[].tax.ncmstring
data[].tax.ceststring
data[].tax.originstring ou nullUm de: 0, 1, 2, 3, 4, 5, 6, 7, 8.
data[].tax.unitstring
data[].dimensionsobjeto ou null
data[].dimensions.weight_gramsintegerMaior que 0, até 30000.
data[].dimensions.height_cmintegerMaior que 0, até 200.
data[].dimensions.width_cmintegerMaior que 0, até 200.
data[].dimensions.length_cmintegerMaior que 0, até 200.
data[].inventory_trackedboolean
data[].sold_separatelyboolean
data[].requires_prescriptionboolean
data[].prescription_typestringUm de: glasses, contact_lens.
data[].contact_lens_modestringUm de: by_prescription, by_power.
data[].collection_idslista de string (uuid)
data[].specificationslista de objeto
data[].specifications[].attribute_idstring (uuid)
data[].specifications[].valuestring ou number ou boolean ou lista de string (uuid)
data[].variantslista de Variant
data[].variants[].idstring (uuid)
data[].variants[].product_idstring (uuid)
data[].variants[].optionslista de string
data[].variants[].skustring ou null
data[].variants[].barcodestring ou null
data[].variants[].priceinteger
data[].variants[].compare_at_priceinteger ou null
data[].variants[].costinteger ou null
data[].variants[].inventory_quantityinteger
data[].variants[].inventory_trackedboolean
data[].variants[].prescription_rangeobjeto ou null
data[].variants[].prescription_range.sphere_minnumber
data[].variants[].prescription_range.sphere_maxnumber
data[].variants[].prescription_range.cylinder_maxnumber
data[].variants[].prescription_range.add_minnumber ou nullSem ele: null.
data[].variants[].prescription_range.add_maxnumber ou nullSem ele: null.
data[].variants[].prescription_range.base_curvenumber ou nullA curva base (BC) da caixa, em mm: só na contact_lens.
data[].variants[].prescription_range.diameternumber ou nullO diâmetro (DIA) da caixa, em mm: só na contact_lens.
data[].variants[].positioninteger
data[].variants[].updated_atstring (data e hora)
data[].imageslista de ProductImage
data[].images[].idstring (uuid)
data[].images[].srcstring
data[].images[].thumbnail_srcstring
data[].images[].widthinteger
data[].images[].heightinteger
data[].images[].altstring
data[].images[].positioninteger
data[].images[].variant_optionobjeto ou null
data[].images[].variant_option.option_indexinteger
data[].images[].variant_option.valuestring
data[].try_onobjeto
data[].try_on.availableboolean
data[].try_on.typestring ou nullUm de: 2d, 3d.
data[].created_atstring (data e hora)
data[].updated_atstring (data e hora)
next_cursorstring ou null

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

Cria um produto

Escopo write_products

Com as variantes (de 1 a 100). Sem handle, o endereço sai do título. Um produto à venda nas coleções que pedem atributos obrigatórios precisa deles em specifications. O SKU, o código de barras e o handle não se repetem na loja (409).

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

CampoTipoDescrição
titleobrigatóriostringDe 2 a 120 caracteres.
handlestringAté 100 caracteres.
descriptionstringAté 5000 caracteres.Sem ele: "".
activebooleanSem ele: true.
template_suffixstringAté 40 caracteres.Sem ele: "".
seoobjetoSem ele: {}.
seo.titlestringAté 70 caracteres.
seo.descriptionstringAté 320 caracteres.
optionslista de objetoAté 3 itens.Sem ele: [].
options[].nameobrigatóriostringAté 30 caracteres.
options[].attribute_idstring (uuid) ou null
brand_idstring (uuid) ou null
mpnstringAté 60 caracteres.Sem ele: "".
conditionstringUm de: new, used, refurbished.Sem ele: "new".
taxobjetoSem ele: {}.
tax.ncmstring
tax.ceststring
tax.originstring ou nullUm de: 0, 1, 2, 3, 4, 5, 6, 7, 8.
tax.unitstring
dimensionsobjeto ou null
dimensions.weight_gramsobrigatóriointegerMaior que 0, até 30000.
dimensions.height_cmobrigatóriointegerMaior que 0, até 200.
dimensions.width_cmobrigatóriointegerMaior que 0, até 200.
dimensions.length_cmobrigatóriointegerMaior que 0, até 200.
inventory_trackedbooleanSem ele: true.
sold_separatelybooleanSem ele: true.
requires_prescriptionbooleanSem ele: false.
prescription_typestringA receita que a lente pede: glasses (óculos) ou contact_lens (lente de contato). Só vale com requires_prescription.Um de: glasses, contact_lens.Sem ele: "glasses".
contact_lens_modestringComo a lente de contato é vendida: by_prescription (o grau vem da receita, a variante tem a faixa) ou by_power (uma opção só, o grau, como -2,00; cada variante é a caixa de um grau, com sku, barcode e estoque, e a prescription_range sai do grau). Só vale com prescription_type contact_lens.Um de: by_prescription, by_power.Sem ele: "by_prescription".
collection_idslista de string (uuid)Até 10 itens.Sem ele: [].
specificationslista de objetoAté 100 itens.Sem ele: [].
specifications[].attribute_idobrigatóriostring (uuid)
specifications[].valueobrigatóriostring ou number ou boolean ou lista de string (uuid)
variantsobrigatóriolista de VariantCreateDe 1 a 100 itens.
variants[].optionslista de stringAté 3 itens.Sem ele: [].
variants[].skustring ou nullAté 64 caracteres.
variants[].barcodestring ou null
variants[].priceobrigatóriointegerDe 0 a 100000000.
variants[].compare_at_priceinteger ou nullDe 0 a 100000000.
variants[].costinteger ou nullDe 0 a 100000000.
variants[].inventory_quantityintegerDe 0 a 1000000.Sem ele: 0.
variants[].prescription_rangeobjeto ou null
variants[].prescription_range.sphere_minobrigatórionumber
variants[].prescription_range.sphere_maxobrigatórionumber
variants[].prescription_range.cylinder_maxobrigatórionumber
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.

Resposta

201 Sucesso. (Product)

Os campos da resposta (71)
CampoTipoDescrição
idstring (uuid)
titlestring
handlestring
descriptionstring
activeboolean
template_suffixstring
seoobjeto
seo.titlestring
seo.descriptionstring
optionslista de objeto
options[].namestring
options[].attribute_idstring (uuid) ou null
brand_idstring (uuid) ou null
mpnstring
conditionstringUm de: new, used, refurbished.
taxobjeto
tax.ncmstring
tax.ceststring
tax.originstring ou nullUm de: 0, 1, 2, 3, 4, 5, 6, 7, 8.
tax.unitstring
dimensionsobjeto ou null
dimensions.weight_gramsintegerMaior que 0, até 30000.
dimensions.height_cmintegerMaior que 0, até 200.
dimensions.width_cmintegerMaior que 0, até 200.
dimensions.length_cmintegerMaior que 0, até 200.
inventory_trackedboolean
sold_separatelyboolean
requires_prescriptionboolean
prescription_typestringUm de: glasses, contact_lens.
contact_lens_modestringUm de: by_prescription, by_power.
collection_idslista de string (uuid)
specificationslista de objeto
specifications[].attribute_idstring (uuid)
specifications[].valuestring ou number ou boolean ou lista de string (uuid)
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)
imageslista de ProductImage
images[].idstring (uuid)
images[].srcstring
images[].thumbnail_srcstring
images[].widthinteger
images[].heightinteger
images[].altstring
images[].positioninteger
images[].variant_optionobjeto ou null
images[].variant_option.option_indexinteger
images[].variant_option.valuestring
try_onobjeto
try_on.availableboolean
try_on.typestring ou nullUm de: 2d, 3d.
created_atstring (data e hora)
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).
  • 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 /products/count

Quantos produtos casam com os filtros

Escopo read_products ou read_content

Os mesmos filtros da lista.

Parâmetros

NomeOndeTipoDescrição
idsconsultastringSó estes ids, separados por vírgula (até 100).
updated_at_minconsultastring (data e hora)Só o que mudou a partir desta data (ISO 8601): a sincronização incremental.
created_at_minconsultastring (data e hora)Só o criado a partir desta data (ISO 8601).
created_at_maxconsultastring (data e hora)Só o criado até esta data (ISO 8601).
activeconsultastringtrue: só os à venda; false: só os ocultos.Um de: true, false.
collection_idconsultastring (uuid)Só os produtos da coleção e das coleções de baixo dela.

Resposta

200 Sucesso. (Count)

Os campos da resposta (1)
CampoTipoDescrição
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).
  • 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 /products/{id}

Um produto

Escopo read_products ou read_content

O produto, com as variantes e as fotos.

Parâmetros

NomeOndeTipoDescrição
idobrigatóriocaminhostring (uuid)O id do produto.

Resposta

200 Sucesso. (Product)

Os campos da resposta (71)
CampoTipoDescrição
idstring (uuid)
titlestring
handlestring
descriptionstring
activeboolean
template_suffixstring
seoobjeto
seo.titlestring
seo.descriptionstring
optionslista de objeto
options[].namestring
options[].attribute_idstring (uuid) ou null
brand_idstring (uuid) ou null
mpnstring
conditionstringUm de: new, used, refurbished.
taxobjeto
tax.ncmstring
tax.ceststring
tax.originstring ou nullUm de: 0, 1, 2, 3, 4, 5, 6, 7, 8.
tax.unitstring
dimensionsobjeto ou null
dimensions.weight_gramsintegerMaior que 0, até 30000.
dimensions.height_cmintegerMaior que 0, até 200.
dimensions.width_cmintegerMaior que 0, até 200.
dimensions.length_cmintegerMaior que 0, até 200.
inventory_trackedboolean
sold_separatelyboolean
requires_prescriptionboolean
prescription_typestringUm de: glasses, contact_lens.
contact_lens_modestringUm de: by_prescription, by_power.
collection_idslista de string (uuid)
specificationslista de objeto
specifications[].attribute_idstring (uuid)
specifications[].valuestring ou number ou boolean ou lista de string (uuid)
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)
imageslista de ProductImage
images[].idstring (uuid)
images[].srcstring
images[].thumbnail_srcstring
images[].widthinteger
images[].heightinteger
images[].altstring
images[].positioninteger
images[].variant_optionobjeto ou null
images[].variant_option.option_indexinteger
images[].variant_option.valuestring
try_onobjeto
try_on.availableboolean
try_on.typestring ou nullUm de: 2d, 3d.
created_atstring (data e hora)
updated_atstring (data e hora)

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 /products/{id}

Muda campos de um produto

Escopo write_products ou write_content

Só o que vier muda. As variantes ficam como estão: elas mudam pelas rotas delas e pelos lotes de estoque e de preço. As listas (options, collection_ids, specifications) trocam a anterior inteira. Com write_content, só os textos: title, description, seo e handle (o endereço antigo leva ao novo); 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 do produto.
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: ProductUpdate

CampoTipoDescrição
titlestringDe 2 a 120 caracteres.
handlestringAté 100 caracteres.
descriptionstringAté 5000 caracteres.
activeboolean
template_suffixstringAté 40 caracteres.
seoobjeto
seo.titlestringAté 70 caracteres.
seo.descriptionstringAté 320 caracteres.
optionslista de objetoAté 3 itens.
options[].nameobrigatóriostringAté 30 caracteres.
options[].attribute_idstring (uuid) ou null
brand_idstring (uuid) ou null
mpnstringAté 60 caracteres.
conditionstringUm de: new, used, refurbished.
taxobjeto
tax.ncmstring
tax.ceststring
tax.originstring ou nullUm de: 0, 1, 2, 3, 4, 5, 6, 7, 8.
tax.unitstring
dimensionsobjeto ou null
dimensions.weight_gramsobrigatóriointegerMaior que 0, até 30000.
dimensions.height_cmobrigatóriointegerMaior que 0, até 200.
dimensions.width_cmobrigatóriointegerMaior que 0, até 200.
dimensions.length_cmobrigatóriointegerMaior que 0, até 200.
inventory_trackedboolean
sold_separatelyboolean
requires_prescriptionboolean
prescription_typestringA receita que a lente pede: glasses (óculos) ou contact_lens (lente de contato). Só vale com requires_prescription.Um de: glasses, contact_lens.
contact_lens_modestringComo a lente de contato é vendida: by_prescription (o grau vem da receita, a variante tem a faixa) ou by_power (uma opção só, o grau, como -2,00; cada variante é a caixa de um grau, com sku, barcode e estoque, e a prescription_range sai do grau). Só vale com prescription_type contact_lens.Um de: by_prescription, by_power.
collection_idslista de string (uuid)Até 10 itens.
specificationslista de objetoAté 100 itens.
specifications[].attribute_idobrigatóriostring (uuid)
specifications[].valueobrigatóriostring ou number ou boolean ou lista de string (uuid)

Resposta

200 Sucesso. (Product)

Os campos da resposta (71)
CampoTipoDescrição
idstring (uuid)
titlestring
handlestring
descriptionstring
activeboolean
template_suffixstring
seoobjeto
seo.titlestring
seo.descriptionstring
optionslista de objeto
options[].namestring
options[].attribute_idstring (uuid) ou null
brand_idstring (uuid) ou null
mpnstring
conditionstringUm de: new, used, refurbished.
taxobjeto
tax.ncmstring
tax.ceststring
tax.originstring ou nullUm de: 0, 1, 2, 3, 4, 5, 6, 7, 8.
tax.unitstring
dimensionsobjeto ou null
dimensions.weight_gramsintegerMaior que 0, até 30000.
dimensions.height_cmintegerMaior que 0, até 200.
dimensions.width_cmintegerMaior que 0, até 200.
dimensions.length_cmintegerMaior que 0, até 200.
inventory_trackedboolean
sold_separatelyboolean
requires_prescriptionboolean
prescription_typestringUm de: glasses, contact_lens.
contact_lens_modestringUm de: by_prescription, by_power.
collection_idslista de string (uuid)
specificationslista de objeto
specifications[].attribute_idstring (uuid)
specifications[].valuestring ou number ou boolean ou lista de string (uuid)
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)
imageslista de ProductImage
images[].idstring (uuid)
images[].srcstring
images[].thumbnail_srcstring
images[].widthinteger
images[].heightinteger
images[].altstring
images[].positioninteger
images[].variant_optionobjeto ou null
images[].variant_option.option_indexinteger
images[].variant_option.valuestring
try_onobjeto
try_on.availableboolean
try_on.typestring ou nullUm de: 2d, 3d.
created_atstring (data e hora)
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).
  • 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 /products/{id}

Exclui um produto

Escopo write_products

Com as variantes e as fotos. Os pedidos já feitos continuam com o nome e o preço da compra.

Parâmetros

NomeOndeTipoDescrição
idobrigatóriocaminhostring (uuid)O id do produto.
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).

POST /products/{id}/variants

Acrescenta uma variante

Escopo write_products

No fim da lista do produto, com um valor para cada opção dele. A combinação de valores não se repete no produto.

Parâmetros

NomeOndeTipoDescrição
idobrigatóriocaminhostring (uuid)O id do produto.
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: VariantCreate

CampoTipoDescrição
optionslista de stringAté 3 itens.Sem ele: [].
skustring ou nullAté 64 caracteres.
barcodestring ou null
priceobrigatóriointegerDe 0 a 100000000.
compare_at_priceinteger ou nullDe 0 a 100000000.
costinteger ou nullDe 0 a 100000000.
inventory_quantityintegerDe 0 a 1000000.Sem ele: 0.
prescription_rangeobjeto ou null
prescription_range.sphere_minobrigatórionumber
prescription_range.sphere_maxobrigatórionumber
prescription_range.cylinder_maxobrigatórionumber
prescription_range.add_minnumber ou nullSem ele: null.
prescription_range.add_maxnumber ou nullSem ele: null.
prescription_range.base_curvenumber ou nullA curva base (BC) da caixa, em mm: só na contact_lens.
prescription_range.diameternumber ou nullO diâmetro (DIA) da caixa, em mm: só na contact_lens.

Resposta

201 Sucesso. (Variant)

Os campos da resposta (20)
CampoTipoDescrição
idstring (uuid)
product_idstring (uuid)
optionslista de string
skustring ou null
barcodestring ou null
priceinteger
compare_at_priceinteger ou null
costinteger ou null
inventory_quantityinteger
inventory_trackedboolean
prescription_rangeobjeto ou null
prescription_range.sphere_minnumber
prescription_range.sphere_maxnumber
prescription_range.cylinder_maxnumber
prescription_range.add_minnumber ou nullSem ele: null.
prescription_range.add_maxnumber ou nullSem ele: null.
prescription_range.base_curvenumber ou nullA curva base (BC) da caixa, em mm: só na contact_lens.
prescription_range.diameternumber ou nullO diâmetro (DIA) da caixa, em mm: só na contact_lens.
positioninteger
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).
  • 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).

PATCH /products/{id}/variants/{variant_id}

Muda campos de uma variante

Escopo write_products

Só o que vier muda. inventory_quantity grava o número absoluto: com pedidos acontecendo, prefira POST /inventory/adjust.

Parâmetros

NomeOndeTipoDescrição
idobrigatóriocaminhostring (uuid)O id do produto.
variant_idobrigatóriocaminhostring (uuid)O id da variante.
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: VariantUpdate

CampoTipoDescrição
optionslista de stringAté 3 itens.
skustring ou nullAté 64 caracteres.
barcodestring ou null
priceintegerDe 0 a 100000000.
compare_at_priceinteger ou nullDe 0 a 100000000.
costinteger ou nullDe 0 a 100000000.
inventory_quantityintegerDe 0 a 1000000.
prescription_rangeobjeto ou null
prescription_range.sphere_minobrigatórionumber
prescription_range.sphere_maxobrigatórionumber
prescription_range.cylinder_maxobrigatórionumber
prescription_range.add_minnumber ou nullSem ele: null.
prescription_range.add_maxnumber ou nullSem ele: null.
prescription_range.base_curvenumber ou nullA curva base (BC) da caixa, em mm: só na contact_lens.
prescription_range.diameternumber ou nullO diâmetro (DIA) da caixa, em mm: só na contact_lens.

Resposta

200 Sucesso. (Variant)

Os campos da resposta (20)
CampoTipoDescrição
idstring (uuid)
product_idstring (uuid)
optionslista de string
skustring ou null
barcodestring ou null
priceinteger
compare_at_priceinteger ou null
costinteger ou null
inventory_quantityinteger
inventory_trackedboolean
prescription_rangeobjeto ou null
prescription_range.sphere_minnumber
prescription_range.sphere_maxnumber
prescription_range.cylinder_maxnumber
prescription_range.add_minnumber ou nullSem ele: null.
prescription_range.add_maxnumber ou nullSem ele: null.
prescription_range.base_curvenumber ou nullA curva base (BC) da caixa, em mm: só na contact_lens.
prescription_range.diameternumber ou nullO diâmetro (DIA) da caixa, em mm: só na contact_lens.
positioninteger
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).
  • 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 /products/{id}/variants/{variant_id}

Exclui uma variante

Escopo write_products

O produto fica com as outras. A única variante não sai: exclua o produto.

Parâmetros

NomeOndeTipoDescrição
idobrigatóriocaminhostring (uuid)O id do produto.
variant_idobrigatóriocaminhostring (uuid)O id da variante.
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

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

As variantes da loja

Escopo read_products

Na ordem da última mudança, como a lista de produtos: é por aqui que se sincroniza o estoque e o preço (updated_at_min). Com sku, acha a variante pelo SKU.

Parâmetros

NomeOndeTipoDescrição
limitconsultaintegerQuantos itens por página, de 1 a 100 (50 sem ele).
cursorconsultastringO next_cursor da página anterior, como veio. Os filtros continuam os mesmos.
idsconsultastringSó estes ids, separados por vírgula (até 100).
skuconsultastringA variante com este SKU (exato).
product_idconsultastring (uuid)Só as variantes deste produto.
updated_at_minconsultastring (data e hora)Só o que mudou a partir desta data (ISO 8601): a sincronização incremental.

Resposta

200 Sucesso. (VariantList)

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

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).
  • 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 /products/{id}/images

Acrescenta uma foto

Escopo write_products

O arquivo (JPEG, PNG ou WebP, até 10 MB) num multipart, ou, em JSON, o endereço https de onde a API baixa a foto. A foto entra no fim da lista, em WebP, em dois tamanhos. Um produto tem até 10 fotos. O endereço precisa ser público: a API não busca endereços internos nem segue mais de 3 redirecionamentos.

Parâmetros

NomeOndeTipoDescrição
idobrigatóriocaminhostring (uuid)O id do produto.
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 multipart/form-data

CampoTipoDescrição
fileobrigatórioarquivoA foto.
altstringO texto da foto (até 125 caracteres).

Corpo application/json: ProductImageFromUrl

Ou, no lugar do envio do arquivo, um JSON:

CampoTipoDescrição
srcobrigatóriostringAté 2000 caracteres.
altstringAté 125 caracteres.Sem ele: "".

Resposta

201 Sucesso. (ProductImage)

Os campos da resposta (10)
CampoTipoDescrição
idstring (uuid)
srcstring
thumbnail_srcstring
widthinteger
heightinteger
altstring
positioninteger
variant_optionobjeto ou null
variant_option.option_indexinteger
variant_option.valuestring

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).
  • 413 O corpo ou o arquivo passou do tamanho máximo (invalid_request).
  • 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).

PATCH /products/{id}/images/{image_id}

Muda o texto de uma foto

Escopo write_products ou write_content

O texto alternativo (alt), que os buscadores e os leitores de tela leem. Vazio, a vitrine usa o nome do produto. O arquivo e a ordem não mudam por aqui.

Parâmetros

NomeOndeTipoDescrição
idobrigatóriocaminhostring (uuid)O id do produto.
image_idobrigatóriocaminhostring (uuid)O id da foto.
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: ProductImageUpdate

CampoTipoDescrição
altobrigatóriostringAté 125 caracteres.

Resposta

200 Sucesso. (ProductImage)

Os campos da resposta (10)
CampoTipoDescrição
idstring (uuid)
srcstring
thumbnail_srcstring
widthinteger
heightinteger
altstring
positioninteger
variant_optionobjeto ou null
variant_option.option_indexinteger
variant_option.valuestring

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).
  • 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 /products/{id}/images/{image_id}

Exclui uma foto

Escopo write_products

As outras fotos sobem uma posição.

Parâmetros

NomeOndeTipoDescrição
idobrigatóriocaminhostring (uuid)O id do produto.
image_idobrigatóriocaminhostring (uuid)O id da foto.
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).

GET /products/{id}/try_on

O provador virtual do produto

Escopo read_products

O arquivo do produto, que vale para as variantes sem um próprio (null, sem arquivo), e as variantes que têm o delas.

Parâmetros

NomeOndeTipoDescrição
idobrigatóriocaminhostring (uuid)O id do produto.

Resposta

200 Sucesso. (ProductTryOn)

Os campos da resposta (41)
CampoTipoDescrição
product_idstring (uuid)
try_onTryOn ou null
try_on.typestringUm de: 2d, 3d.
try_on.width_mmnumber
try_on.adjustmentsobjeto
try_on.adjustments.vertical_offset_mmnumber
try_on.adjustments.tilt_degreesnumber
try_on.adjustments.size_factornumber
try_on.frontobjeto ou null
try_on.front.srcstring
try_on.front.widthinteger
try_on.front.heightinteger
try_on.sideobjeto ou null
try_on.side.srcstring
try_on.side.widthinteger
try_on.side.heightinteger
try_on.modelobjeto ou null
try_on.model.srcstring
try_on.model.trianglesinteger
try_on.updated_atstring (data e hora)
variantslista de objeto
variants[].variant_idstring (uuid)
variants[].try_onTryOn
variants[].try_on.typestringUm de: 2d, 3d.
variants[].try_on.width_mmnumber
variants[].try_on.adjustmentsobjeto
variants[].try_on.adjustments.vertical_offset_mmnumber
variants[].try_on.adjustments.tilt_degreesnumber
variants[].try_on.adjustments.size_factornumber
variants[].try_on.frontobjeto ou null
variants[].try_on.front.srcstring
variants[].try_on.front.widthinteger
variants[].try_on.front.heightinteger
variants[].try_on.sideobjeto ou null
variants[].try_on.side.srcstring
variants[].try_on.side.widthinteger
variants[].try_on.side.heightinteger
variants[].try_on.modelobjeto ou null
variants[].try_on.model.srcstring
variants[].try_on.model.trianglesinteger
variants[].try_on.updated_atstring (data e hora)

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

PUT /products/{id}/try_on

Grava o provador virtual do produto

Escopo write_products

Os arquivos vão por endereço https público, e a API baixa e processa cada um, como no painel: no 2d, a frente (front_url) e o lado (side_url, opcional), em PNG com o fundo transparente, até 10 MB; no 3d, o GLB (model_url), até 8 MB. type e width_mm sempre. Sem arquivo novo, fica o gravado do mesmo tipo: a largura e os ajustes mudam sem reenviar. Os ajustes que não vierem ficam como estavam (no arquivo novo, os padrões). side_url null tira o lado. A foto que não serve (sem transparência, pequena demais) e o GLB recusado dão 422 try_on_rejected, com o motivo.

Parâmetros

NomeOndeTipoDescrição
idobrigatóriocaminhostring (uuid)O id do produto.
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: TryOnUpdate

CampoTipoDescrição
typeobrigatóriostringUm de: 2d, 3d.
width_mmobrigatórionumberDe 80 a 200.
adjustmentsobjeto
adjustments.vertical_offset_mmnumberDe -10 a 10.
adjustments.tilt_degreesnumberDe -5 a 20.
adjustments.size_factornumberDe 0.8 a 1.2.
front_urlstringAté 2000 caracteres.
side_urlstring ou nullAté 2000 caracteres.
model_urlstringAté 2000 caracteres.

Resposta

200 Sucesso. (ProductTryOn)

Os campos da resposta (41)
CampoTipoDescrição
product_idstring (uuid)
try_onTryOn ou null
try_on.typestringUm de: 2d, 3d.
try_on.width_mmnumber
try_on.adjustmentsobjeto
try_on.adjustments.vertical_offset_mmnumber
try_on.adjustments.tilt_degreesnumber
try_on.adjustments.size_factornumber
try_on.frontobjeto ou null
try_on.front.srcstring
try_on.front.widthinteger
try_on.front.heightinteger
try_on.sideobjeto ou null
try_on.side.srcstring
try_on.side.widthinteger
try_on.side.heightinteger
try_on.modelobjeto ou null
try_on.model.srcstring
try_on.model.trianglesinteger
try_on.updated_atstring (data e hora)
variantslista de objeto
variants[].variant_idstring (uuid)
variants[].try_onTryOn
variants[].try_on.typestringUm de: 2d, 3d.
variants[].try_on.width_mmnumber
variants[].try_on.adjustmentsobjeto
variants[].try_on.adjustments.vertical_offset_mmnumber
variants[].try_on.adjustments.tilt_degreesnumber
variants[].try_on.adjustments.size_factornumber
variants[].try_on.frontobjeto ou null
variants[].try_on.front.srcstring
variants[].try_on.front.widthinteger
variants[].try_on.front.heightinteger
variants[].try_on.sideobjeto ou null
variants[].try_on.side.srcstring
variants[].try_on.side.widthinteger
variants[].try_on.side.heightinteger
variants[].try_on.modelobjeto ou null
variants[].try_on.model.srcstring
variants[].try_on.model.trianglesinteger
variants[].try_on.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).
  • 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).
  • 413 O corpo ou o arquivo passou do tamanho máximo (invalid_request).
  • 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 /products/{id}/try_on

Tira o provador virtual do produto

Escopo write_products

Os arquivos saem. Na variante, ela volta a usar o arquivo do produto. Sem arquivo, 404.

Parâmetros

NomeOndeTipoDescrição
idobrigatóriocaminhostring (uuid)O id do produto.
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).

GET /products/{id}/variants/{variant_id}/try_on

O provador virtual da variante

Escopo read_products

O arquivo próprio da variante (a cor). null: a variante usa o do produto.

Parâmetros

NomeOndeTipoDescrição
idobrigatóriocaminhostring (uuid)O id do produto.
variant_idobrigatóriocaminhostring (uuid)O id da variante.

Resposta

200 Sucesso. (VariantTryOn)

Os campos da resposta (21)
CampoTipoDescrição
product_idstring (uuid)
variant_idstring (uuid)
try_onTryOn ou null
try_on.typestringUm de: 2d, 3d.
try_on.width_mmnumber
try_on.adjustmentsobjeto
try_on.adjustments.vertical_offset_mmnumber
try_on.adjustments.tilt_degreesnumber
try_on.adjustments.size_factornumber
try_on.frontobjeto ou null
try_on.front.srcstring
try_on.front.widthinteger
try_on.front.heightinteger
try_on.sideobjeto ou null
try_on.side.srcstring
try_on.side.widthinteger
try_on.side.heightinteger
try_on.modelobjeto ou null
try_on.model.srcstring
try_on.model.trianglesinteger
try_on.updated_atstring (data e hora)

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

PUT /products/{id}/variants/{variant_id}/try_on

Grava o provador virtual da variante

Escopo write_products

Os arquivos vão por endereço https público, e a API baixa e processa cada um, como no painel: no 2d, a frente (front_url) e o lado (side_url, opcional), em PNG com o fundo transparente, até 10 MB; no 3d, o GLB (model_url), até 8 MB. type e width_mm sempre. Sem arquivo novo, fica o gravado do mesmo tipo: a largura e os ajustes mudam sem reenviar. Os ajustes que não vierem ficam como estavam (no arquivo novo, os padrões). side_url null tira o lado. A foto que não serve (sem transparência, pequena demais) e o GLB recusado dão 422 try_on_rejected, com o motivo.

Parâmetros

NomeOndeTipoDescrição
idobrigatóriocaminhostring (uuid)O id do produto.
variant_idobrigatóriocaminhostring (uuid)O id da variante.
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: TryOnUpdate

CampoTipoDescrição
typeobrigatóriostringUm de: 2d, 3d.
width_mmobrigatórionumberDe 80 a 200.
adjustmentsobjeto
adjustments.vertical_offset_mmnumberDe -10 a 10.
adjustments.tilt_degreesnumberDe -5 a 20.
adjustments.size_factornumberDe 0.8 a 1.2.
front_urlstringAté 2000 caracteres.
side_urlstring ou nullAté 2000 caracteres.
model_urlstringAté 2000 caracteres.

Resposta

200 Sucesso. (VariantTryOn)

Os campos da resposta (21)
CampoTipoDescrição
product_idstring (uuid)
variant_idstring (uuid)
try_onTryOn ou null
try_on.typestringUm de: 2d, 3d.
try_on.width_mmnumber
try_on.adjustmentsobjeto
try_on.adjustments.vertical_offset_mmnumber
try_on.adjustments.tilt_degreesnumber
try_on.adjustments.size_factornumber
try_on.frontobjeto ou null
try_on.front.srcstring
try_on.front.widthinteger
try_on.front.heightinteger
try_on.sideobjeto ou null
try_on.side.srcstring
try_on.side.widthinteger
try_on.side.heightinteger
try_on.modelobjeto ou null
try_on.model.srcstring
try_on.model.trianglesinteger
try_on.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).
  • 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).
  • 413 O corpo ou o arquivo passou do tamanho máximo (invalid_request).
  • 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 /products/{id}/variants/{variant_id}/try_on

Tira o provador virtual da variante

Escopo write_products

Os arquivos saem. Na variante, ela volta a usar o arquivo do produto. Sem arquivo, 404.

Parâmetros

NomeOndeTipoDescrição
idobrigatóriocaminhostring (uuid)O id do produto.
variant_idobrigatóriocaminhostring (uuid)O id da variante.
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).