Caixas de embalagem
Cadastra as caixas que o empacotamento usa para dividir um pedido em volumes e calcular peso e medidas.
Para cotar e emitir etiquetas, a plataforma precisa saber em que caixas o pedido cabe. Ela enche as caixas da menor para a maior, escolhendo a menor que serve. O catálogo tem as caixas da loja (valem para todos os sellers; você pode usar mas não alterar) e as suas. Requer o módulo correios-shipping.
Listar caixas
Devolve as suas caixas (ativas e desativadas) e as caixas ativas da loja. As apagadas não aparecem.
/api/v1/vendor/shipping/packaging-boxesSellerLista as caixas de embalagem disponíveis ao seller
Exemplo de requisição: listar
curl "$BASE_URL/api/v1/vendor/shipping/packaging-boxes" \
-H "Authorization: Bearer $TOKEN"Resposta: listar
{
"packaging_boxes": [
{
"id": "6a5b4c3d-2e1f-4a0b-9c8d-7e6f5a4b3c2d",
"vendor_id": "5f1c2d3e-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"name": "Caixa M",
"length_mm": 300,
"width_mm": 200,
"height_mm": 100,
"max_weight_grams": 5000,
"max_items": 0,
"tare_weight_grams": 120,
"dedicated": false,
"status": "A",
"position": 0,
"length_cm": 30,
"width_cm": 20,
"height_cm": 10
}
],
"total": 1
}Campos da resposta
packaging_boxesarrayCaixas disponíveis.
iduuidvendor_iduuidnamestringlength_mm, width_mm, height_mmintegerlength_cm, width_cm, height_cmnumbermax_weight_gramsintegermax_itemsinteger0 = sem limite de unidades (só peso e medidas limitam).tare_weight_gramsintegerdedicatedbooleantrue = caixa exclusiva dos produtos em product_ids.product_idsarraystatusstringADA ativa ou D desativada.positionintegertotalintegerErros: listar
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 401 | Sem cabeçalho Authorization, ou token inválido ou expirado. | {"error":"invalid or expired token"} |
| 403 | O token não é de um usuário seller (por exemplo, é um token de administrador). | {"error":"insufficient permissions"} |
| 403 | O módulo correios-shipping está desligado na loja. | {"error":"module_disabled","module":"correios-shipping"} |
| 403 | O usuário não tem conta de seller. | {"error":"no vendor account associated with this user"} |
| 403 | O usuário não tem o privilégio necessário (vendor_settings ou um privilégio de leitura de configurações). | {"error":"insufficient vendor privileges","privilege_required_any":["..."]} |
| 500 | Falha ao consultar. | {"error":"failed to list packaging boxes"} |
Criar uma caixa
Cria uma caixa sua. Se vier vendor_id no corpo, ele é ignorado.
/api/v1/vendor/shipping/packaging-boxesSellerCria uma caixa de embalagem do seller
Corpo da requisição
namestringobrigatóriolength_mm, width_mm, height_mmintegerobrigatóriolength_cm, width_cm e height_cm no lugar (decimais aceitos); se enviar os dois, o milímetro vale.max_weight_gramsintegerobrigatóriomax_itemsintegerpadrão: 00 = sem limite.tare_weight_gramsintegerpadrão: 0dedicatedbooleanpadrão: falseproduct_idsarraydedicated: true. Em PUT: omitido = mantém; [] = remove todos.statusstringpadrão: AADA ou D. Vazio = A. Qualquer outra letra é recusada.positionintegerpadrão: 0Exemplo de requisição: criar
curl -X POST "$BASE_URL/api/v1/vendor/shipping/packaging-boxes" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Caixa M",
"length_cm": 30,
"width_cm": 20,
"height_cm": 10,
"max_weight_grams": 5000,
"tare_weight_grams": 120
}'Resposta: criar
{
"id": "6a5b4c3d-2e1f-4a0b-9c8d-7e6f5a4b3c2d",
"vendor_id": "5f1c2d3e-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"name": "Caixa M",
"length_mm": 300,
"width_mm": 200,
"height_mm": 100,
"max_weight_grams": 5000,
"max_items": 0,
"tare_weight_grams": 120,
"dedicated": false,
"status": "A",
"position": 0,
"length_cm": 30,
"width_cm": 20,
"height_cm": 10
}Campos da resposta
iduuidvendor_iduuidnamestringlength_mm, width_mm, height_mmintegerlength_cm, width_cm, height_cmnumbermax_weight_gramsintegermax_itemsinteger0 = sem limite de unidades (só peso e medidas limitam).tare_weight_gramsintegerdedicatedbooleantrue = caixa exclusiva dos produtos em product_ids.product_idsarraystatusstringADA ativa ou D desativada.positionintegerErros: criar
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 400 | Corpo que não é JSON. | {"error":"invalid request body"} |
| 400 | Regra violada: name is required, medida não positiva, max_weight_grams must be greater than zero, valores negativos, product_ids require a dedicated packaging box ou status fora de A/D. A mensagem cita length_cm/width_cm/height_cm mesmo quando você enviou milímetros. | {"error":"failed to create packaging box","detail":"length_cm must be greater than zero"} |
| 404 | Algum product_ids não é um produto seu. | {"error":"packaging box product not found","detail":"packaging box product not found: 1f2e..."} |
| 401 | Sem cabeçalho Authorization, ou token inválido ou expirado. | {"error":"invalid or expired token"} |
| 403 | O token não é de um usuário seller (por exemplo, é um token de administrador). | {"error":"insufficient permissions"} |
| 403 | O módulo correios-shipping está desligado na loja. | {"error":"module_disabled","module":"correios-shipping"} |
| 403 | O usuário não tem conta de seller. | {"error":"no vendor account associated with this user"} |
| 403 | O usuário não tem o privilégio necessário (vendor_settings). | {"error":"insufficient vendor privileges","privilege_required_any":["..."]} |
Alterar uma caixa
Substitui os dados da caixa: envie sempre todos os campos obrigatórios, como na criação. Só caixas suas; as da loja respondem 404.
/api/v1/vendor/shipping/packaging-boxes/{id}SellerAltera uma caixa de embalagem do seller
Parâmetros de caminho
iduuidobrigatórioCorpo da requisição
namestringobrigatóriolength_mm, width_mm, height_mmintegerobrigatóriolength_cm, width_cm e height_cm no lugar (decimais aceitos); se enviar os dois, o milímetro vale.max_weight_gramsintegerobrigatóriomax_itemsintegerpadrão: 00 = sem limite.tare_weight_gramsintegerpadrão: 0dedicatedbooleanpadrão: falseproduct_idsarraydedicated: true. Em PUT: omitido = mantém; [] = remove todos.statusstringpadrão: AADA ou D. Vazio = A. Qualquer outra letra é recusada.positionintegerpadrão: 0Exemplo de requisição: alterar
curl -X PUT "$BASE_URL/api/v1/vendor/shipping/packaging-boxes/6a5b4c3d-2e1f-4a0b-9c8d-7e6f5a4b3c2d" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Caixa M reforçada",
"length_cm": 30,
"width_cm": 20,
"height_cm": 10,
"max_weight_grams": 8000,
"tare_weight_grams": 150
}'Resposta: alterar
{
"id": "6a5b4c3d-2e1f-4a0b-9c8d-7e6f5a4b3c2d",
"vendor_id": "5f1c2d3e-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"name": "Caixa M reforçada",
"length_mm": 300,
"width_mm": 200,
"height_mm": 100,
"max_weight_grams": 8000,
"max_items": 0,
"tare_weight_grams": 150,
"dedicated": false,
"status": "A",
"position": 0,
"length_cm": 30,
"width_cm": 20,
"height_cm": 10
}Campos da resposta
iduuidvendor_iduuidnamestringlength_mm, width_mm, height_mmintegerlength_cm, width_cm, height_cmnumbermax_weight_gramsintegermax_itemsinteger0 = sem limite de unidades (só peso e medidas limitam).tare_weight_gramsintegerdedicatedbooleantrue = caixa exclusiva dos produtos em product_ids.product_idsarraystatusstringADA ativa ou D desativada.positionintegerErros: alterar
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 400 | Corpo que não é JSON. | {"error":"invalid request body"} |
| 400 | Regra violada: name is required, medida não positiva, max_weight_grams must be greater than zero, valores negativos, product_ids require a dedicated packaging box ou status fora de A/D. A mensagem cita length_cm/width_cm/height_cm mesmo quando você enviou milímetros. | {"error":"failed to update packaging box","detail":"length_cm must be greater than zero"} |
| 404 | A caixa não existe, é da loja ou de outro seller, ou algum produto não é seu. | {"error":"packaging box not found","detail":"packaging box not found"} |
| 401 | Sem cabeçalho Authorization, ou token inválido ou expirado. | {"error":"invalid or expired token"} |
| 403 | O token não é de um usuário seller (por exemplo, é um token de administrador). | {"error":"insufficient permissions"} |
| 403 | O módulo correios-shipping está desligado na loja. | {"error":"module_disabled","module":"correios-shipping"} |
| 403 | O usuário não tem conta de seller. | {"error":"no vendor account associated with this user"} |
| 403 | O usuário não tem o privilégio necessário (vendor_settings). | {"error":"insufficient vendor privileges","privilege_required_any":["..."]} |
Apagar uma caixa
Apaga uma caixa sua. A exclusão é lógica: pedidos que já usaram a caixa continuam podendo citá-la. Se a caixa tem produtos associados, a plataforma recusa com 409, a menos que você confirme com force=true.
/api/v1/vendor/shipping/packaging-boxes/{id}SellerApaga uma caixa de embalagem do seller
Parâmetros de caminho
iduuidobrigatórioParâmetros de consulta
forcebooleanpadrão: falsetrue, 1 ou yes para apagar mesmo com produtos associados (as associações são removidas).Exemplo de requisição: apagar
curl -X DELETE "$BASE_URL/api/v1/vendor/shipping/packaging-boxes/6a5b4c3d-2e1f-4a0b-9c8d-7e6f5a4b3c2d" \
-H "Authorization: Bearer $TOKEN"Resposta: apagar
{
"associated_products": 0
}Campos da resposta
associated_productsintegerErros: apagar
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 409 | A caixa tem produtos associados e force não foi enviado. | {"error":"packaging box has associated products","associated_products":3} |
| 404 | A caixa não existe, é da loja, é de outro seller ou já foi apagada. | {"error":"packaging box not found"} |
| 401 | Sem cabeçalho Authorization, ou token inválido ou expirado. | {"error":"invalid or expired token"} |
| 403 | O token não é de um usuário seller (por exemplo, é um token de administrador). | {"error":"insufficient permissions"} |
| 403 | O módulo correios-shipping está desligado na loja. | {"error":"module_disabled","module":"correios-shipping"} |
| 403 | O usuário não tem conta de seller. | {"error":"no vendor account associated with this user"} |
| 403 | O usuário não tem o privilégio necessário (vendor_settings). | {"error":"insufficient vendor privileges","privilege_required_any":["..."]} |