Remessas e rastreio
Cria, lista e atualiza as remessas de um pedido, com transportadora, código de rastreio e itens enviados em cada uma.
Uma remessa (envio) é um pacote que saiu da loja: ela diz quais itens, em que quantidade, por qual transportadora e com qual código de rastreio. Um pedido pode ter várias remessas (envio parcial: três itens saem hoje, dois amanhã), e a plataforma controla quanto de cada item ainda falta enviar.
Quando você grava o código de rastreio, o cliente recebe o e-mail de envio com o código e o link da transportadora, e a remessa passa para "enviada".
Status de uma remessa
| Nome (requisição) | Letra (resposta) | Significado |
|---|---|---|
pending | N | Criada, ainda sem despacho (sem código de rastreio). |
shipped | A | Despachada. É o status que a remessa recebe ao ser criada com código de rastreio. |
in_transit | P | Em trânsito. |
out_for_delivery | W | Saiu para entrega. |
awaiting_pickup | H | Aguardando retirada. |
delivered | C | Entregue. |
delivery_failed | F | Tentativa de entrega falhou. |
returned | D | Devolvida; os itens voltam a contar como "a enviar". |
lost | L | Extraviada. |
canceled | I | Cancelada. |
/api/v1/admin/orders/{id}/shipmentsAdminLista as remessas de um pedido
Lista as remessas do pedido, com os itens de cada uma. Exige view_orders ou manage_orders.
Path parameters
iduuidobrigatório/api/v1/admin/orders/{id}/shipmentsAdminCria uma remessa
Cria uma remessa com os itens e as quantidades informadas. A plataforma confere que os itens são do pedido e que não se envia mais do que o pedido tem (descontadas as remessas anteriores que não foram devolvidas). Exige manage_orders.
Com tracking_code, a remessa nasce como enviada (A), registra shipped_at e o cliente recebe o e-mail de rastreio. Sem o código, nasce pendente (N); informe o código depois com a rota de atualização. mark_shipped despacha mesmo sem código.
Path parameters
iduuidobrigatórioCorpo da requisição
itemsarrayobrigatórioItens da remessa. Pelo menos um.
order_item_iduuidobrigatórioitems[].id em Consultar pedido).quantity_shippedintegerobrigatóriocarrierstringCorreios, Jadlog...).tracking_codestringnotesstringtracking_urlstringhttp ou https, até 2048 caracteres. Aparece no acompanhamento do pedido.estimated_delivery_atstringAAAA-MM-DD (meia-noite no fuso de Brasília) ou RFC 3339.public_notestringnotes continua interna.mark_shippedbooleantrue despacha a remessa mesmo sem código de rastreio./api/v1/admin/orders/{id}/shipments/{shipmentId}AdminAtualiza uma remessa
Atualiza transportadora, código, status e observação de uma remessa existente. Só os campos enviados mudam. Exige manage_orders. Se você informar um tracking_code, o cliente recebe o e-mail de envio com o código (é o único aviso, pois esta rota não emite outro evento).
Mudar o status para shipped, in_transit ou delivered preenche shipped_at; delivered também preenche delivered_at. Atualizar a remessa não muda o status do pedido.
Estes campos não podem ser alterados aqui e causam 400 immutable_field: items (cancele a remessa e crie outra), mark_shipped, e tracking_url, estimated_delivery_at e public_note (use a rota de rastreio abaixo).
Path parameters
iduuidobrigatórioshipmentIduuidobrigatórioCorpo da requisição
tracking_codestringcarrierstringstatusstringpendingshippedin_transitout_for_deliveryawaiting_pickupdelivereddelivery_failedreturnedlostcancelednotesstring/api/v1/admin/orders/{id}/shipments/{shipmentId}/trackingAdminAtualiza os dados de rastreio de uma remessa
Grava os dados de rastreio exibidos ao cliente (link, previsão e texto público) e registra a atualização na linha do tempo do pedido, sem mudar o status. Existe quando a loja ativa o recurso de acompanhamento de pedidos (fluxo de status); sem ele responde 403 module_disabled. Exige manage_orders. Envie ao menos um campo.
Path parameters
iduuidobrigatórioshipmentIduuidobrigatórioCorpo da requisição
carrierstringtracking_codestringtracking_urlstringhttp/https, até 2048 caracteres).estimated_delivery_atstringAAAA-MM-DD ou RFC 3339. Vazio limpa a previsão.public_notestringExemplo de requisição
# Criar a remessa já com rastreio
curl -X POST "$BASE_URL/api/v1/admin/orders/$ORDER_ID/shipments" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"carrier": "Correios",
"tracking_code": "BR123456789BR",
"notes": "Caixa 1 de 2",
"items": [{ "order_item_id": "9787424c-0fca-44a9-9c96-9bba0c1f4704", "quantity_shipped": 1 }]
}'
# Marcar como entregue depois
curl -X PUT "$BASE_URL/api/v1/admin/orders/$ORDER_ID/shipments/$SHIPMENT_ID" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"status":"delivered"}'Resposta
{
"id": "45171534-2fbd-46ca-973a-132149a564da",
"order_id": "2b4bd680-b717-4295-a2be-8b5c6771a4d0",
"tracking_code": "BR123456789BR",
"carrier": "Correios",
"status": "A",
"notes": "Caixa 1 de 2",
"shipped_at": "2026-10-11T20:16:39.661262Z",
"created_by": "d4613dde-ac7a-431c-9232-50d8cd6ad5fc",
"created_at": "2026-10-11T20:16:39.661262Z",
"updated_at": "2026-10-11T20:16:39.661262Z",
"items": [
{
"id": "e28a4232-aade-47e5-83e1-2ecda9da3927",
"shipment_id": "45171534-2fbd-46ca-973a-132149a564da",
"order_item_id": "9787424c-0fca-44a9-9c96-9bba0c1f4704",
"quantity_shipped": 1,
"product_name": "Notebook Vintage Vermelho",
"product_sku": "SD-004018-C"
}
]
}{
"order_id": "2b4bd680-b717-4295-a2be-8b5c6771a4d0",
"count": 1,
"shipments": [
{ "id": "45171534-2fbd-46ca-973a-132149a564da", "tracking_code": "BR123456789BR", "carrier": "Correios", "status": "A", "items": [] }
]
}{
"id": "45171534-2fbd-46ca-973a-132149a564da",
"carrier": "Correios",
"tracking_code": "BR123456789BR",
"tracking_url": "https://rastreamento.correios.com.br/app/index.php?objeto=BR123456789BR",
"estimated_delivery_at": "2026-10-20T03:00:00Z",
"public_note": "Saiu do centro de distribuição",
"shipped_at": "2026-10-11T20:16:39.661262Z",
"created_at": "2026-10-11T20:16:39.661262Z",
"updated_at": "2026-10-11T21:02:10.114Z"
}Campos da resposta (remessa)
iduuidorder_iduuidtracking_codestringcarrierstringstatusstringnotesstringshipped_atstringdelivered_atstringcreated_byuuiditemsarrayorder_item_id, quantity_shipped, product_name, product_sku e product_image.countintegertracking_urlstringestimated_delivery_atstringpublic_notestringErros
| Status | Quando | Corpo |
|---|---|---|
| 400 | Corpo inválido; items vazio; order_item_id ou quantity_shipped faltando | {"error":"at least one item is required"}, {"error":"order_item_id is required for each item"}, {"error":"quantity_shipped must be at least 1"} |
| 400 | status de remessa inválido | {"error":"invalid shipment status: bogus"} |
| 400 | Campo que não pode ser alterado nesta rota | {"error":"immutable_field","detail":"o campo \"tracking_url\" não pode ser alterado por este endpoint: ... use PUT /api/v1/admin/orders/{id}/shipments/{shipmentId}/tracking ..."} |
| 401 | Sem credenciais ou token expirado | {"error":"invalid or expired token"} |
| 403 | Sem manage_orders; ou recurso de acompanhamento desligado (rota de rastreio) | {"error":"insufficient privileges","required":"manage_orders"} ou {"error":"module_disabled","module":"order-status-flow"} |
| 404 | Pedido, item ou remessa não encontrados | {"error":"order not found: ..."}, {"error":"order item not found: ..."}, {"error":"shipment not found"} |
| 422 | Quantidade maior que a pendente, ou item de outro pedido | {"error":"cannot ship 1 of item 9787424c-...: only 0 remaining unshipped (total: 1, already shipped: 1)"} |
| 422 | Dados de rastreio inválidos | {"error":"validation_failed","issues":[{"field":"tracking_url","code":"invalid"}]}, com field entre tracking_url, estimated_delivery_at, tracking e code entre invalid, too_long, nothing_to_update |
| 500 | Falha interna | {"error":"failed to create shipment","detail":"..."} |