Pedidos de compra
Lista, consulta e cria pedidos de compra enviados aos fornecedores do seller.
Listar pedidos de compra
Um pedido de compra (OC, purchase order) é a ordem enviada a um fornecedor com o que o seller quer comprar. A listagem traz o cabeçalho e item_count, do mais novo para o mais antigo.
/api/v1/vendor/erp/compras/ordersSellerLista os pedidos de compra
Parâmetros de consulta
statusstringdraftpending_approvalapprovedsentpartially_receivedreceivedcancelledsupplier_iduuidpageintegerpadrão: 1per_pageintegerpadrão: 50Exemplo de requisição: Listar pedidos de compra
curl "$BASE_URL/api/v1/vendor/erp/compras/orders?status=sent" \
-H "Authorization: Bearer $TOKEN"Resposta: Listar pedidos de compra
{
"orders": [
{
"id": "047a8f24-473b-4638-bc0e-2c159c1fcca2",
"vendor_id": "94bd7e9a-fdad-4d01-8fc2-ba9d677d8b36",
"supplier_id": "e3d204f2-582c-4b7e-bac0-f46214d52c12",
"supplier_name": "Distribuidora Aurora Ltda",
"status": "draft",
"subtotal_cents": 99800,
"freight_cents": 5000,
"other_costs_cents": 0,
"total_cents": 104800,
"notes": "Reposição de outubro",
"item_count": 1,
"created_at": "2026-10-11T14:30:00Z"
}
],
"total": 1
}Campos da resposta
ordersarrayPedidos da página (sem items).
iduuidvendor_iduuidsupplier_iduuidsupplier_namestringstatusstringdraftpending_approvalapprovedsentpartially_receivedreceivedcancelledsubtotal_centsintegerfreight_centsintegerother_costs_centsintegertotal_centsintegernotesstringitem_countintegercreated_byuuidapproved_byuuidapproved_atdatetimereceived_atdatetimecreated_atdatetimeitemsarrayLinhas. Só aparece no detalhe e nas ações; a listagem não traz.
iduuidpo_iduuidproduct_iduuidproduct_namestringqtyintegerreceived_qtyintegerunit_cost_centsintegerline_centsintegerqty vezes unit_cost_cents.totalintegerErros: Listar pedidos de compra
| Status | Quando | Corpo |
|---|---|---|
| 500 | Um filtro de id não é um UUID válido (a plataforma devolve 500, não 400). | {"error":"failed to list purchase orders","detail":"o valor \"xyz\" não é um uuid válido. Envie o identificador completo, com os 36 caracteres e os hífens. Corrija o campo e reenvie."} |
| 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"} |
Consultar pedido de compra
/api/v1/vendor/erp/compras/orders/{id}SellerConsulta um pedido de compra
Parâmetros de caminho
iduuidobrigatórioExemplo de requisição: Consultar pedido de compra
curl "$BASE_URL/api/v1/vendor/erp/compras/orders/3f6c1c1e-8d0b-4a55-9a52-1d6f6a4a7b10" \
-H "Authorization: Bearer $TOKEN"Resposta: Consultar pedido de compra
{
"id": "047a8f24-473b-4638-bc0e-2c159c1fcca2",
"vendor_id": "94bd7e9a-fdad-4d01-8fc2-ba9d677d8b36",
"supplier_id": "e3d204f2-582c-4b7e-bac0-f46214d52c12",
"supplier_name": "Distribuidora Aurora Ltda",
"status": "draft",
"subtotal_cents": 99800,
"freight_cents": 5000,
"other_costs_cents": 0,
"total_cents": 104800,
"notes": "Reposição de outubro",
"item_count": 1,
"created_by": "b00d3e7c-d5b4-4942-827a-06e2c43645af",
"created_at": "2026-10-11T14:30:00Z",
"items": [
{
"id": "f5b504d6-5497-4811-abc8-cccf3e9b79f5",
"po_id": "047a8f24-473b-4638-bc0e-2c159c1fcca2",
"product_id": "94e6917e-8733-4ddc-b446-ed85977117e8",
"product_name": "Camiseta Básica Preta M",
"qty": 20,
"received_qty": 0,
"unit_cost_cents": 4990,
"line_cents": 99800
}
]
}Campos da resposta
iduuidvendor_iduuidsupplier_iduuidsupplier_namestringstatusstringdraftpending_approvalapprovedsentpartially_receivedreceivedcancelledsubtotal_centsintegerfreight_centsintegerother_costs_centsintegertotal_centsintegernotesstringitem_countintegercreated_byuuidapproved_byuuidapproved_atdatetimereceived_atdatetimecreated_atdatetimeitemsarrayLinhas. Só aparece no detalhe e nas ações; a listagem não traz.
iduuidpo_iduuidproduct_iduuidproduct_namestringqtyintegerreceived_qtyintegerunit_cost_centsintegerline_centsintegerqty vezes unit_cost_cents.Erros: Consultar pedido de compra
| Status | Quando | Corpo |
|---|---|---|
| 404 | O pedido não existe ou é de outro seller. | {"error":"purchase order not found"} |
| 500 | O id não é um UUID válido. | {"error":"failed to get purchase order","detail":"o valor \"abc\" não é um uuid válido. ..."} |
| 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"} |
Criar pedido de compra
Cria o pedido em estado draft com as linhas informadas. Ele ainda não é enviado ao fornecedor: percorra o ciclo em Ciclo do pedido. Criar o pedido também registra o custo de cada produto como o último preço negociado com aquele fornecedor.
/api/v1/vendor/erp/compras/ordersSellerCria um pedido de compra
Corpo da requisição
supplier_iduuidobrigatórionotesstringfreight_centsintegerother_costs_centsintegeritemsarrayobrigatórioLinhas do pedido. Linhas com product_id em branco são descartadas em silêncio; precisa sobrar ao menos uma.
product_iduuidobrigatórioqtyintegerobrigatóriounit_cost_centsintegerobrigatórioExemplo de requisição: Criar pedido de compra
curl -X POST "$BASE_URL/api/v1/vendor/erp/compras/orders" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"supplier_id": "e3d204f2-582c-4b7e-bac0-f46214d52c12",
"notes": "Reposição de outubro",
"freight_cents": 5000,
"items": [
{
"product_id": "94e6917e-8733-4ddc-b446-ed85977117e8",
"qty": 20,
"unit_cost_cents": 4990
}
]
}'Resposta: Criar pedido de compra
{
"id": "047a8f24-473b-4638-bc0e-2c159c1fcca2",
"vendor_id": "94bd7e9a-fdad-4d01-8fc2-ba9d677d8b36",
"supplier_id": "e3d204f2-582c-4b7e-bac0-f46214d52c12",
"supplier_name": "Distribuidora Aurora Ltda",
"status": "draft",
"subtotal_cents": 99800,
"freight_cents": 5000,
"other_costs_cents": 0,
"total_cents": 104800,
"notes": "Reposição de outubro",
"item_count": 1,
"created_by": "b00d3e7c-d5b4-4942-827a-06e2c43645af",
"created_at": "2026-10-11T14:30:00Z",
"items": [
{
"id": "f5b504d6-5497-4811-abc8-cccf3e9b79f5",
"po_id": "047a8f24-473b-4638-bc0e-2c159c1fcca2",
"product_id": "94e6917e-8733-4ddc-b446-ed85977117e8",
"product_name": "Camiseta Básica Preta M",
"qty": 20,
"received_qty": 0,
"unit_cost_cents": 4990,
"line_cents": 99800
}
]
}Campos da resposta
iduuidvendor_iduuidsupplier_iduuidsupplier_namestringstatusstringdraftpending_approvalapprovedsentpartially_receivedreceivedcancelledsubtotal_centsintegerfreight_centsintegerother_costs_centsintegertotal_centsintegernotesstringitem_countintegercreated_byuuidapproved_byuuidapproved_atdatetimereceived_atdatetimecreated_atdatetimeitemsarrayLinhas. Só aparece no detalhe e nas ações; a listagem não traz.
iduuidpo_iduuidproduct_iduuidproduct_namestringqtyintegerreceived_qtyintegerunit_cost_centsintegerline_centsintegerqty vezes unit_cost_cents.Erros: Criar pedido de compra
| 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 | supplier_id em branco. | {"error":"vendorerp: supplier_id required"} |
| 400 | Frete ou outras despesas negativos. | {"error":"vendorerp: freight/other costs must be >= 0"} |
| 400 | Alguma linha com qty <= 0. | {"error":"vendorerp: item qty must be positive"} |
| 400 | Alguma linha com unit_cost_cents <= 0. | {"error":"vendorerp: unit cost must be greater than zero"} |
| 400 | Nenhuma linha válida. | {"error":"vendorerp: at least one item required"} |
| 404 | O fornecedor não existe ou é de outro seller. | {"error":"supplier 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"} |