Fluxo de separação
Assume a lista, separa item a item, embala ou cancela.
Assumir lista
Marca você como responsável pela lista e muda o estado de open para picking. Só uma lista open pode ser assumida.
/api/v1/vendor/erp/picking/{id}/claimSellerAssume uma lista de separação
Parâmetros de caminho
iduuidobrigatórioExemplo de requisição: Assumir lista
curl -X POST "$BASE_URL/api/v1/vendor/erp/picking/3f6c1c1e-8d0b-4a55-9a52-1d6f6a4a7b10/claim" \
-H "Authorization: Bearer $TOKEN"Resposta: Assumir lista
{
"id": "10426b19-4e8e-48b1-98a5-dae83ff3ab29",
"vendor_id": "94bd7e9a-fdad-4d01-8fc2-ba9d677d8b36",
"order_id": "87fdfd05-07bf-4031-a468-219fc35e4e39",
"order_number": "PEDIDO-20261011-0004",
"status": "picking",
"assigned_to": "b00d3e7c-d5b4-4942-827a-06e2c43645af",
"notes": "",
"created_at": "2026-10-11T14:30:00Z",
"updated_at": "2026-10-11T14:30:00Z",
"item_count": 1,
"items": [
{
"id": "d70ce8fe-594a-411f-ba3b-7ef97fbc1ce2",
"picking_list_id": "10426b19-4e8e-48b1-98a5-dae83ff3ab29",
"product_id": "c3f92551-9dda-4fc7-b518-353d1c4e4035",
"product_name": "Notebook Slim Rosa",
"requested_qty": 2,
"picked_qty": 0,
"shortage_reason": "",
"updated_at": "2026-10-11T14:30:00Z"
}
]
}Campos da resposta
iduuidvendor_iduuidorder_iduuidorder_numberstringstatusstringopenpickingpackedcancelledassigned_touuidnull enquanto open.notesstringcreated_atdatetimeupdated_atdatetimeitem_countintegeritems.itemsarrayItens da lista. Vazio na listagem; preenchido no detalhe e nas ações.
iduuidpicking_list_iduuidproduct_iduuidproduct_namestringrequested_qtyintegerpicked_qtyintegershortage_reasonstringpicked_qty < requested_qty.updated_atdatetimeErros: Assumir lista
| Status | Quando | Corpo |
|---|---|---|
| 400 | A lista não está open. | {"error":"cannot claim list in status \"picking\""} |
| 404 | A lista não existe ou é de outro seller. | {"error":"picking list not found"} |
| 401 | Cabeçalho Authorization ausente, token inválido, expirado ou revogado. | {"error":"missing authorization header"} |
| 403 | O token não é de um usuário seller (por exemplo, é de administrador). | {"error":"insufficient permissions"} |
| 403 | O usuário não está vinculado a um seller, ou o cadastro do seller ainda está em análise (vendor_pending_review). | {"error":"no vendor account associated with this user"} |
Separar item
Informa quanto de um item foi realmente separado. Pode ser chamada de novo para corrigir. Se separar menos do que o pedido, é preciso dizer o motivo da falta.
/api/v1/vendor/erp/picking/{id}/items/{itemId}/pickSellerRegistra a quantidade separada de um item
Parâmetros de caminho
iduuidobrigatórioitemIduuidobrigatórioitems[].id).Corpo da requisição
quantityintegerobrigatóriorequested_qty. É o total do item, não um acréscimo.shortage_reasonstringquantity < requested_qty. Ignorado quando o item foi separado por inteiro.Exemplo de requisição: Separar item
curl -X POST "$BASE_URL/api/v1/vendor/erp/picking/3f6c1c1e-8d0b-4a55-9a52-1d6f6a4a7b10/items/8c5e2d3a-41b7-4f0a-9d6e-7a2b1c0d9e11/pick" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"quantity": 1,
"shortage_reason": "Uma unidade avariada"
}'Resposta: Separar item
{
"id": "10426b19-4e8e-48b1-98a5-dae83ff3ab29",
"vendor_id": "94bd7e9a-fdad-4d01-8fc2-ba9d677d8b36",
"order_id": "87fdfd05-07bf-4031-a468-219fc35e4e39",
"order_number": "PEDIDO-20261011-0004",
"status": "picking",
"assigned_to": "b00d3e7c-d5b4-4942-827a-06e2c43645af",
"notes": "",
"created_at": "2026-10-11T14:30:00Z",
"updated_at": "2026-10-11T14:30:00Z",
"item_count": 1,
"items": [
{
"id": "d70ce8fe-594a-411f-ba3b-7ef97fbc1ce2",
"picking_list_id": "10426b19-4e8e-48b1-98a5-dae83ff3ab29",
"product_id": "c3f92551-9dda-4fc7-b518-353d1c4e4035",
"product_name": "Notebook Slim Rosa",
"requested_qty": 2,
"picked_qty": 1,
"shortage_reason": "Uma unidade avariada",
"updated_at": "2026-10-11T14:30:00Z"
}
]
}Campos da resposta
iduuidvendor_iduuidorder_iduuidorder_numberstringstatusstringopenpickingpackedcancelledassigned_touuidnull enquanto open.notesstringcreated_atdatetimeupdated_atdatetimeitem_countintegeritems.itemsarrayItens da lista. Vazio na listagem; preenchido no detalhe e nas ações.
iduuidpicking_list_iduuidproduct_iduuidproduct_namestringrequested_qtyintegerpicked_qtyintegershortage_reasonstringpicked_qty < requested_qty.updated_atdatetimeErros: Separar item
| Status | Quando | Corpo |
|---|---|---|
| 400 | Corpo não é um JSON válido. | {"error":"invalid request body","detail":"invalid character 'b' looking for beginning of object key string"} |
| 400 | A lista não está em picking (assuma-a antes). | {"error":"vendorerp: list is not in picking"} |
| 400 | quantity negativa. | {"error":"vendorerp: picked qty cannot be negative"} |
| 400 | quantity maior que requested_qty. | {"error":"vendorerp: picked qty exceeds requested"} |
| 400 | Separou menos que o pedido sem informar shortage_reason. | {"error":"vendorerp: shortage reason required when picking less than requested"} |
| 404 | A lista ou o item não existe. | {"error":"picking item not found"} |
| 401 | Cabeçalho Authorization ausente, token inválido, expirado ou revogado. | {"error":"missing authorization header"} |
| 403 | O token não é de um usuário seller (por exemplo, é de administrador). | {"error":"insufficient permissions"} |
| 403 | O usuário não está vinculado a um seller, ou o cadastro do seller ainda está em análise (vendor_pending_review). | {"error":"no vendor account associated with this user"} |
Embalar lista
Conclui a separação: o estado vai de picking para packed. A plataforma não confere se todos os itens foram separados e não mexe em estoque nem no status do pedido; atualize o pedido pelo fluxo de pedidos.
/api/v1/vendor/erp/picking/{id}/packSellerMarca a lista como embalada
Parâmetros de caminho
iduuidobrigatórioExemplo de requisição: Embalar lista
curl -X POST "$BASE_URL/api/v1/vendor/erp/picking/3f6c1c1e-8d0b-4a55-9a52-1d6f6a4a7b10/pack" \
-H "Authorization: Bearer $TOKEN"Resposta: Embalar lista
{
"id": "10426b19-4e8e-48b1-98a5-dae83ff3ab29",
"vendor_id": "94bd7e9a-fdad-4d01-8fc2-ba9d677d8b36",
"order_id": "87fdfd05-07bf-4031-a468-219fc35e4e39",
"order_number": "PEDIDO-20261011-0004",
"status": "packed",
"assigned_to": "b00d3e7c-d5b4-4942-827a-06e2c43645af",
"notes": "",
"created_at": "2026-10-11T14:30:00Z",
"updated_at": "2026-10-11T14:30:00Z",
"item_count": 1,
"items": [
{
"id": "d70ce8fe-594a-411f-ba3b-7ef97fbc1ce2",
"picking_list_id": "10426b19-4e8e-48b1-98a5-dae83ff3ab29",
"product_id": "c3f92551-9dda-4fc7-b518-353d1c4e4035",
"product_name": "Notebook Slim Rosa",
"requested_qty": 2,
"picked_qty": 0,
"shortage_reason": "",
"updated_at": "2026-10-11T14:30:00Z"
}
]
}Campos da resposta
iduuidvendor_iduuidorder_iduuidorder_numberstringstatusstringopenpickingpackedcancelledassigned_touuidnull enquanto open.notesstringcreated_atdatetimeupdated_atdatetimeitem_countintegeritems.itemsarrayItens da lista. Vazio na listagem; preenchido no detalhe e nas ações.
iduuidpicking_list_iduuidproduct_iduuidproduct_namestringrequested_qtyintegerpicked_qtyintegershortage_reasonstringpicked_qty < requested_qty.updated_atdatetimeErros: Embalar lista
| Status | Quando | Corpo |
|---|---|---|
| 400 | A lista não está em picking. | {"error":"cannot move list from \"open\" to \"packed\""} |
| 404 | A lista não existe ou é de outro seller. | {"error":"picking list not found"} |
| 401 | Cabeçalho Authorization ausente, token inválido, expirado ou revogado. | {"error":"missing authorization header"} |
| 403 | O token não é de um usuário seller (por exemplo, é de administrador). | {"error":"insufficient permissions"} |
| 403 | O usuário não está vinculado a um seller, ou o cadastro do seller ainda está em análise (vendor_pending_review). | {"error":"no vendor account associated with this user"} |
Cancelar lista
Cancela uma lista open ou picking. Uma lista packed ou já cancelled não pode ser cancelada.
/api/v1/vendor/erp/picking/{id}/cancelSellerCancela uma lista de separação
Parâmetros de caminho
iduuidobrigatórioCorpo da requisição
reasonstringnotes. O corpo inteiro é opcional.Exemplo de requisição: Cancelar lista
curl -X POST "$BASE_URL/api/v1/vendor/erp/picking/3f6c1c1e-8d0b-4a55-9a52-1d6f6a4a7b10/cancel" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"reason": "Pedido cancelado pelo cliente"
}'Resposta: Cancelar lista
{
"id": "10426b19-4e8e-48b1-98a5-dae83ff3ab29",
"vendor_id": "94bd7e9a-fdad-4d01-8fc2-ba9d677d8b36",
"order_id": "87fdfd05-07bf-4031-a468-219fc35e4e39",
"order_number": "PEDIDO-20261011-0004",
"status": "cancelled",
"assigned_to": null,
"notes": "Pedido cancelado pelo cliente",
"created_at": "2026-10-11T14:30:00Z",
"updated_at": "2026-10-11T14:30:00Z",
"item_count": 1,
"items": [
{
"id": "d70ce8fe-594a-411f-ba3b-7ef97fbc1ce2",
"picking_list_id": "10426b19-4e8e-48b1-98a5-dae83ff3ab29",
"product_id": "c3f92551-9dda-4fc7-b518-353d1c4e4035",
"product_name": "Notebook Slim Rosa",
"requested_qty": 2,
"picked_qty": 0,
"shortage_reason": "",
"updated_at": "2026-10-11T14:30:00Z"
}
]
}Campos da resposta
iduuidvendor_iduuidorder_iduuidorder_numberstringstatusstringopenpickingpackedcancelledassigned_touuidnull enquanto open.notesstringcreated_atdatetimeupdated_atdatetimeitem_countintegeritems.itemsarrayItens da lista. Vazio na listagem; preenchido no detalhe e nas ações.
iduuidpicking_list_iduuidproduct_iduuidproduct_namestringrequested_qtyintegerpicked_qtyintegershortage_reasonstringpicked_qty < requested_qty.updated_atdatetimeErros: Cancelar lista
| Status | Quando | Corpo |
|---|---|---|
| 400 | A lista já foi embalada ou cancelada. | {"error":"cannot move list from \"packed\" to \"cancelled\""} |
| 404 | A lista não existe ou é de outro seller. | {"error":"picking list not found"} |
| 401 | Cabeçalho Authorization ausente, token inválido, expirado ou revogado. | {"error":"missing authorization header"} |
| 403 | O token não é de um usuário seller (por exemplo, é de administrador). | {"error":"insufficient permissions"} |
| 403 | O usuário não está vinculado a um seller, ou o cadastro do seller ainda está em análise (vendor_pending_review). | {"error":"no vendor account associated with this user"} |