VenddorDocumentação API
API atualAPI legada
Guia rápidoReferência completa
Carregando índice…
API legada/Guia rápido/Produtos

Alterar produto

Atualiza um produto existente enviando só os campos que mudam, como preço, estoque, status, categorias, descrições e dados de envio.

Use esta operação para manter o cadastro em dia: o ERP que atualiza preço e estoque, o PIM que corrige descrições, a regra que desativa um item descontinuado, ou o passo que publica um produto que estava aguardando aprovação. A alteração é parcial: você envia apenas as chaves que quer mudar e todo o resto fica como está. Enviar o produto inteiro também funciona, e é o que o painel faz.

Cada alteração relevante (preço, estoque, nome, status, SKU...) é registrada no histórico de alterações do produto, com o usuário e o horário. Mudar o estoque pelo campo de quantidade grava um movimento no extrato de estoque.

PUT/api/v1.0/products/{id}Admin

Alterar um produto

Autenticação: HTTP Basic com e-mail:chave_de_api de um administrador, ou Authorization: Bearer <JWT>. A rota também responde em /api/products/{id}, com ids decimais em string. Só as chaves enviadas são alteradas; chaves desconhecidas são ignoradas. Se nenhuma chave conhecida vier no corpo, ou se todas forem ignoradas, a resposta é 400 no fields to update.

Parâmetros de caminho

idstringobrigatório
Id do produto: o product_id, em UUID (na rota /api/products/{id}, também o id decimal).

Corpo da requisição

productstring
Novo nome, até 255 caracteres.
company_idstring
Novo seller (UUID; decimal em /api/products). vendor_id é aceito como sinônimo. "0" e vazio são ignorados.
main_categorystring
Nova categoria principal.
category_idsarray
Lista de categorias. Sem main_category, a primeira vira a principal; as outras entram como adicionais.
statusstring
ADH
Novo status: A ativo, D desativado, H oculto. Qualquer outro valor (inclusive R, X ou nomes como pending) vira A, e não gera erro. Enviar A em um produto aguardando aprovação o publica.
pricestring
Novo preço de venda, string decimal ("49.90", "49,90"). Um número JSON é lido em reais. Texto que não é número grava R$ 0,00 sem erro.
list_pricestring
Novo preço "de". Não pode ser menor que o preço. Esta API não consegue apagar o preço de lista: só definir.
product_codestring
Novo código (SKU). Único na loja. Enviar "" apaga o código.
full_descriptionstring
Nova descrição completa, em HTML.
short_descriptionstring
Nova descrição curta.
seo_namestring
Novo slug da URL.
amountstring
Novo estoque, inteiro (string "20" ou número 20). Uma string não inteira ("7.5") é ignorada.
weightstring
Novo peso em kg.
free_shippingstring
YN
Y frete grátis, N desliga.
min_qtyinteger
Quantidade mínima por compra. Enviar a chave com null grava 0; a ausência da chave não mexe.
max_qtyinteger
Quantidade máxima por compra. Mesma regra de presença de min_qty.
qty_stepinteger
Múltiplo de compra. Mesma regra de presença de min_qty.
page_titlestring
Título SEO.
meta_descriptionstring
Descrição SEO.
meta_keywordsstring
Palavras-chave SEO.
search_wordsstring
Termos extras para a busca da loja.
promo_textstring
Texto promocional acima do botão de compra.
zero_price_actionstring
PRA
O que fazer com preço zero: P vender por zero, R bloquear a compra online, A pedir orçamento.

Exemplo de requisição

bash
curl -u "$EMAIL:$API_KEY" -X PUT \
  "$BASE_URL/api/v1.0/products/0497b6a8-c868-43be-ac21-2abddd24cd3c" \
  -H "Content-Type: application/json" \
  -d '{"price": "52.90", "amount": 20, "status": "A"}'

Resposta

200Produto alterado
json
{ "product_id": "0497b6a8-c868-43be-ac21-2abddd24cd3c" }

Campos da resposta

product_idstring
Id do produto alterado. UUID em /api/v1.0; decimal em string em /api/products. Para ver o resultado, consulte o produto (Consultar produto).

Erros

StatusQuandoCorpo
400JSON inválido, ou número em formato inválido{"message":"Invalid JSON: ...","status":400}
400Nenhum campo conhecido no corpo{"message":"no fields to update","status":400}
400Regra de negócio violada: preço ou custo negativos, list_price menor que o preço, nome longo demais, quantidades inválidas, código do produto ou de barras repetido, categoria inexistente{"message":"<código>: <texto>","status":400}. O texto vem do serviço de catálogo e pode estar em português ou inglês
400{id} que não é UUID{"message":"update product abc: pq: invalid input syntax for type uuid: \"abc\" (22P02)","status":400}
401Sem credenciais, chave inválida ou token expirado{"message":"Authentication required. Use HTTP Basic with email:api_key or Bearer <jwt>.","status":401}
403Usuário sem permissão de escrita{"message":"Forbidden: admin scope required","status":403}
404O produto não existe ou está na lixeira{"message":"Product not found","status":404}
429Limite de requisições{"error":"rate limit exceeded","detail":"too many requests, please try again later"}
Campos do mestre são ignorados em silêncio

Em uma oferta ligada a um produto mestre, os campos que o mestre controla (por exemplo nome, descrição e categoria) são descartados do seu PUT, e o restante é gravado normalmente. Se todos os campos enviados forem desses, a resposta é 400 no fields to update com a explicação. Campos do seller (preço, estoque, SKU, status) sempre podem ser alterados.

Cuidado com o status

O status só entende A, D e H. Um valor desconhecido não é recusado: vira A e reativa o produto. Se o seu ERP guarda "inativo" como I ou 0, traduza para D antes de enviar.

Veja também

  • Consultar produto
  • Preço e estoque
Anterior
Criar produto
Próxima
Excluir produto
Nesta página
  • Exemplo de requisição
  • Resposta
  • Erros
  • Veja também