Medidas
Peso e dimensão são o que a plataforma usa pra cotar o frete: sem essa medida, não dá pra calcular o envio. Este guia cobre as duas camadas de medida que existem (unidade avulsa e embalagem fechada do atacado) e onde cada uma vive.
Conceitos
Frete se calcula por peso e volume. Mas você vende de dois jeitos: unidades avulsas (o cliente compra 1, 2 ou 3 itens soltos) e lotes fechados (caixa, fardo, pallet no atacado). Cada tipo de venda tem peso/volume diferente, então você precisa cadastrar a medida de cada um.
Unidade avulsa
Quando o cliente compra unidades soltas (1, 2, 3...), o frete usa o peso e tamanho de uma unidade. É o que você preenche em /api/products/{id} (campo dimensions). Exemplo: 1 camiseta pesa 150g e mede 10cm × 20cm × 5cm.
Lote fechado (atacado)
Quando o cliente compra em quantidade grande (10, 50, 100...) e você vende embalagens fechadas (caixa com 10 unidades, fardo com 50), o frete usa o peso/tamanho da embalagem inteira, não de 1 unidade. Exemplo: caixa com 10 camisetas pesa 2kg e mede 40cm × 50cm × 30cm.
Você define quantas unidades "disparam" cada embalagem com min_quantity (mínimo 2). Pode ter mais de uma faixa: "caixa a partir de 10 unidades", "fardo a partir de 50 unidades", etc.
Onde cada um vive
- Unidade avulsa: cadastro de produto, campo
dimensionsemPUT /api/products/{id} - Lotes fechados: rota separada
GET/PUT /api/products/{id}/measures, uma faixa por quantidade mínima
As faixas de preço não carregam medida nenhuma. O que vale para o frete é só o que estiver aqui (unidade) ou em /measures (embalagens fechadas).
| Tipo de venda | Medida | Onde configura |
|---|---|---|
| Unidade avulsa | Uma unidade (peso + dimensões) | Campo dimensions em PUT /api/products/{id} |
| Lote fechado (caixa, fardo, pallet) | Embalagem inteira (min_quantity >= 2) | GET/PUT /api/products/{id}/measures |
Medida da unidade
Cadastrada junto com o produto, não nesta rota:
dimensions.height, dimensions.width, dimensions.length (cm) e dimensions.weight (kg) são opcionais no cadastro, mas sem elas o produto não é cotado no frete até serem preenchidas. Quando informadas, cada valor precisa ser no mínimo 0.001.
{
"dimensions": {
"height": 15.5,
"width": 10.0,
"length": 20.0,
"weight": 0.75
}
}Restrições de empacotamento
Medida não é a única coisa que entra na cubagem. Dois booleans do produto (opcionais, default false, aceitos no POST e no PUT /api/products/{id}) restringem como o item pode ser acomodado dentro de um volume:
| Campo | Efeito |
|---|---|
keep_flat | O item não gira no eixo vertical (o clássico "este lado para cima"). A cubagem respeita a orientação declarada nas dimensões. |
ship_isolated | O item sai sempre em volume próprio, nunca dividindo caixa com outro SKU. |
Os dois mudam o resultado do empacotamento e, por consequência, o frete cotado: com keep_flat, o algoritmo perde uma das rotações possíveis e pode precisar de uma caixa maior; com ship_isolated, o pedido passa a ter no mínimo um volume só para esse SKU, em vez de consolidar tudo num volume único.
{
"keep_flat": true,
"ship_isolated": false
}Medidas de embalagem fechada
Toda faixa de atacado representa uma embalagem fechada (caixa/fardo): é com ela que a plataforma calcula o frete da venda fracionada.
| Campo | Unidade | Regra |
|---|---|---|
min_quantity | unidades | Obrigatório, inteiro. Faixas de embalagem usam >= 2. |
weight | kg | Obrigatório em cada faixa min_quantity >= 2, e maior que zero |
height | cm | Idem |
width | cm | Idem |
length | cm | Idem |
Os quatro campos de medida são tudo-ou-nada por faixa: mandar só parte deles — ou mandar 0 em algum — é recusado com 422 e a mensagem "Cada produto de atacado precisa de ao menos uma faixa com peso e dimensões completas da embalagem". Como o PUT roda em transação, uma faixa inválida derruba a requisição inteira: nada é gravado.
Consultar
{
"success": true,
"message_code": "SUCCESS",
"data": [
{ "min_quantity": 10, "weight": 12.5, "height": 30.0, "width": 40.0, "length": 50.0 },
{ "min_quantity": 50, "weight": 60.0, "height": 100.0, "width": 80.0, "length": 100.0 }
]
}Produto sem faixas cadastradas retorna data vazio.
Substituir
O PUT substitui a lista inteira (reconciliação): faixas presentes no corpo são criadas/atualizadas e faixas ausentes são removidas, então envie sempre a lista completa. O campo tiers é obrigatório no corpo, mesmo que vazio. Faixas com min_quantity = 1 são ignoradas (a medida da unidade se edita no produto, não aqui).
{
"tiers": [
{ "min_quantity": 10, "weight": 12.5, "height": 30.0, "width": 40.0, "length": 50.0 },
{ "min_quantity": 50, "weight": 60.0, "height": 100.0, "width": 80.0, "length": 100.0 }
]
}Para zerar todas as faixas, envie tiers: []: a lista vazia remove todas as faixas >= 2 existentes.

