Pular para o conteúdo principal

Atualizar produtos e seus relacionamentos

Este endpoint é utilizado para atualizar um lote de produtos de uma vez. A atualização é realizada via o mesmo endpoint de criação (POST), que funciona como upsert — se o produto com o externalReference informado já existir, seus dados serão atualizados.

POST /v1/batch/products

  • Authorization: Basic Auth contendo a chave pública e secreta disponibilizadas para o cliente.
    • Exemplo: Basic <base64-encoded-credentials>
  • x-contractAccountId: Identificador da conta do contrato do cliente.
    • Exemplo: x-contractAccountId: 9f36a666-acd5-4987-a47f-3de247f65d82

Exemplo de Autorização

Para gerar o valor de Authorization, você precisa codificar suas credenciais (public_key:secret_key) em base64. Por exemplo, se sua chave pública for public_key e sua chave secreta for secret_key, você deve codificar public_key:secret_key em base64.

echo -n 'public_key:secret_key' | base64

Corpo da Requisição

O corpo da requisição deve ser uma lista de objetos de produtos, cada um contendo os seguintes campos:

CampoTipoNullableLimiteDescrição
externalReferencestringNão-Referência externa do produto para rastreabilidade. Obrigatório para identificar o produto a ser atualizado
namestringNão120Nome do produto. Máximo 120 caracteres
similarTermsstringSim-Termos similares para facilitar a busca separados por vírgula.
slugstringNão120Slug único do produto. Máximo 120 caracteres
titlestringNão60Texto de exibição do produto. Máximo 60 caracteres
shortDescriptionstringNão160Descrição breve do produto. Máximo 160 caracteres
longDescriptionstringNão-Descrição longa do produto
brandExternalReferencestringSim30Referência externa da marca já cadastrada. Máximo 30 caracteres
categoryExternalReferencestringSim30Referência externa da categoria já cadastrada. Máximo 30 caracteres
displayInSiteboolNão-Define se o produto será exibido no site
displayInSoldOutboolNão-Define se o produto será exibido quando esgotado
fiscalCodestringNão30Código fiscal do produto. Máximo 30 caracteres
EANstringSim48Código de barras EAN. Máximo 48 caracteres
PunctuationintNão-Pontuação do produto (deve ser ≥ 0)
CharacteristicsstringSim-Características descritivas do produto
ActiveboolSim-Produto ativo/inativo
SKUsarrayNão-SKUs do produto a ser cadastrado. Os SKUs não enviados serão removidos

Campos dos SKUs

CampoTipoNullableLimiteDescrição
externalReferencestringNão-Referência externa do SKU
NamestringNão120Nome do SKU. Máximo 120 caracteres
EANstringNão30Código de barras EAN do SKU. Máximo 30 caracteres
ReferencestringNão30Referência interna do SKU. Máximo 30 caracteres
WeightForFreightdecimalNão-Peso para cálculo de frete (deve ser > 0)
HeightForFreightdecimalNão-Altura para cálculo de frete (deve ser > 0)
WidthForFreightdecimalNão-Largura para cálculo de frete (deve ser > 0)
LengthForFreightdecimalNão-Comprimento para cálculo de frete (deve ser > 0)
WeightRealdecimalNão-Peso real do produto (deve ser > 0)
HeightRealdecimalNão-Altura real do produto (deve ser > 0)
WidthRealdecimalNão-Largura real do produto (deve ser > 0)
LengthRealdecimalNão-Comprimento real do produto (deve ser > 0)
ArrivalDatedateNão-Data de chegada do produto
UnitOfMeasureintNão-Unidade de medida (ver tabela abaixo)
ArithmeticFactordecimalSim-Fator aritmético para cálculo de preço por peso
ManufacturerCodestringNão-Código do fabricante
WeightdecimalSim-Peso do produto (deve ser > 0 se fornecido)
MinimumWeightForSaledecimalSim-Peso mínimo para venda (deve ser > 0 se fornecido)
SkuPackageMinAmountintSim-Quantidade mínima do pacote (deve ser > 0 se fornecido)
SkuPackageMaxAmountintSim-Quantidade máxima do pacote (deve ser > 0 se fornecido)
ExhibitionBadge1stringSim15Badge de exibição 1. Máximo 15 caracteres
ExhibitionBadge2stringSim15Badge de exibição 2. Máximo 15 caracteres
ExhibitionBadge3stringSim15Badge de exibição 3. Máximo 15 caracteres

Possíveis valores para UnitOfMeasure

ValorDescrição
1Unidade (Un)
2Quilograma (Kg)
3Grama (g)
4Miligrama (Mg)

Exemplo de Corpo da Requisição

[
{
"externalReference": "1",
"name": "Arroz branco",
"similarTerms": "arroz, branco",
"slug": "arroz-branco-prato-fino-1kg-431150",
"title": "Arroz Branco Prato Fino 1kg",
"shortDescription": "ARROZ B PRATO FINO 1KG",
"longDescription": "Arroz Branco Prato Fino 1kg",
"displayInSite": false,
"displayInSoldOut": false,
"fiscalCode": "1111111",
"EAN": "7896891504153",
"Punctuation": 1,
"Characteristics": "Arroz branco tipo 1, grãos selecionados, pacote de 1kg",
"Active": false,
"brandExternalReference": null,
"categoryExternalReference": "4",
"SKUs": [
{
"externalReference": "10",
"Name": "Arroz Branco Prato Fino 1kg",
"EAN": "1234567890123",
"Reference": "REF12345",
"WeightForFreight": 1.5,
"HeightForFreight": 10.0,
"WidthForFreight": 5.0,
"LengthForFreight": 20.0,
"WeightReal": 1.4,
"HeightReal": 9.8,
"WidthReal": 4.9,
"LengthReal": 19.8,
"ArrivalDate": "2023-10-01",
"ManufacturerCode": "MFG12345",
"UnitOfMeasure": 2,
"Weight": 1.5,
"ArithmeticFactor": 2,
"MinimumWeightForSale": 1.5,
"SkuPackageMinAmount": 1,
"SkuPackageMaxAmount": 3,
"ExhibitionBadge1": "Promoção",
"ExhibitionBadge2": "Novidade",
"ExhibitionBadge3": "Frete Grátis"
}
]
}
]

Respostas

  • 200: Retorna sucesso da operação. A resposta incluirá detalhes sobre o processamento da lista de produtos.
  • 400: Retorna erro de requisição inválida. Isso geralmente ocorre devido a dados de entrada mal formatados, limites de caracteres excedidos ou campos obrigatórios faltando.
  • 500: Retorna erro interno do servidor. Indica problemas no processamento da requisição no servidor.

Exemplo de Resposta para Sucesso (200)

{ "operationId": "402fe685-2060-432b-ac57-223eb2e680f3" }

Comportamento Especial para SKUs

⚠️ ATENÇÃO: Durante a atualização de produtos, os SKUs são tratados de forma especial:

  • SKUs enviados: Serão criados ou atualizados conforme necessário
  • SKUs não enviados: Serão removidos do produto
  • SKUs com erro: Gerarão webhooks de erro específicos (ProductWithSKUs_PartiallyFailed = 30)

Esta abordagem garante que o estado final dos SKUs no sistema corresponda exatamente ao que foi enviado na requisição de atualização.

Mensagem de notificação webhook

Quando a operação é processada, uma mensagem é enviada para os endpoints de notificação registrados pelo webhook.

Tipos de Eventos

Tipos de eventos para atualização de produtos:

  • ProductWithSKUs_Updated = 27: Produto com SKUs atualizado com sucesso
  • ProductWithSKUs_UpdateFailed = 29: Falha na atualização do produto com SKUs
  • ProductWithSKUs_PartiallyFailed = 30: Falha parcial (alguns SKUs falharam)

IMPORTANTE: Para receber notificações de erro, você deve explicitamente incluir os tipos de eventos de erro (como ProductWithSKUs_UpdateFailed) na configuração do seu webhook.