Saldos de estoque
Consulta o saldo físico, reservado e disponível por produto e depósito, e define o estoque mínimo que dispara o alerta.
Listar saldos
A grade de saldos mostra, para cada par produto e depósito, o saldo físico, o reservado e o disponível, além do estoque mínimo. A resposta traz também low_stock_count, o número de itens em alerta em todo o seller, que serve para o indicador no topo de uma tela.
/api/v1/vendor/erp/inventory/stockSellerLista o saldo por produto e depósito
Parâmetros de consulta
product_iduuidSó este produto.
warehouse_iduuidSó este depósito.
lowstring1true1 ou true devolve só itens em alerta de estoque baixo.pageintegerpadrão: 1Página, a partir de 1. Valor inválido ou menor que 1 volta para 1.
per_pageintegerpadrão: 50Itens por página, de 1 a 200. Fora dessa faixa vale o padrão.
Exemplo de requisição: Listar saldos
bash
curl "$BASE_URL/api/v1/vendor/erp/inventory/stock?low=1" \
-H "Authorization: Bearer $TOKEN"Resposta: Listar saldos
200Saldos retornados
json
{
"stock": [
{
"product_id": "94e6917e-8733-4ddc-b446-ed85977117e8",
"product_name": "Camiseta Básica Preta M",
"warehouse_id": "8204b8b8-e7e2-4b96-bba8-5a937fe001c8",
"warehouse_name": "Depósito Central",
"quantity": 18,
"reorder_point": 10,
"low_stock": false,
"reserved": 3,
"available": 15,
"updated_at": "2026-10-11T14:30:00Z"
}
],
"total": 1,
"low_stock_count": 0
}Campos da resposta
stockarraySaldos da página.
product_iduuidProduto.
product_namestringNome do produto. Vazio se o produto não existe mais no catálogo.
warehouse_iduuidDepósito.
warehouse_namestringNome do depósito.
quantityintegerSaldo físico atual neste depósito.
reorder_pointintegerEstoque mínimo.
0 desliga o alerta.low_stockbooleantrue quando reorder_point > 0 e quantity <= reorder_point. Calculado, não gravado.reservedintegerUnidades reservadas (por pedidos em aberto ou reserva manual).
availableintegerDisponível para prometer:
quantity menos reserved. É o ATP (available to promise).updated_atdatetimeÚltima mudança do saldo.
totalintegerTotal de linhas que atendem ao filtro.
low_stock_countintegerItens em alerta em todo o seller, ignorando os filtros da chamada.
Erros: Listar saldos
| 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 stock","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"} |
Definir estoque mínimo
Grava o estoque mínimo (ponto de reposição) de um produto num depósito. Enquanto o saldo for maior que o mínimo está tudo certo; quando ele chega no mínimo ou abaixo, a linha passa a low_stock: true e o seller recebe o alerta. Use 0 para desligar o alerta daquela linha.
/api/v1/vendor/erp/inventory/stock/reorder-pointSellerDefine o estoque mínimo de uma linha
Corpo da requisição
product_iduuidobrigatórioProduto.
warehouse_iduuidobrigatórioDepósito do seller.
reorder_pointintegerobrigatórioEstoque mínimo, zero ou mais.
Exemplo de requisição: Definir estoque mínimo
bash
curl -X PUT "$BASE_URL/api/v1/vendor/erp/inventory/stock/reorder-point" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"product_id": "94e6917e-8733-4ddc-b446-ed85977117e8",
"warehouse_id": "8204b8b8-e7e2-4b96-bba8-5a937fe001c8",
"reorder_point": 10
}'Resposta: Definir estoque mínimo
200Estoque mínimo gravado
json
{
"product_id": "94e6917e-8733-4ddc-b446-ed85977117e8",
"product_name": "Camiseta Básica Preta M",
"warehouse_id": "8204b8b8-e7e2-4b96-bba8-5a937fe001c8",
"warehouse_name": "Depósito Central",
"quantity": 18,
"reorder_point": 10,
"low_stock": false,
"reserved": 3,
"available": 15,
"updated_at": "2026-10-11T14:30:00Z"
}Campos da resposta
product_iduuidProduto.
product_namestringNome do produto. Vazio se o produto não existe mais no catálogo.
warehouse_iduuidDepósito.
warehouse_namestringNome do depósito.
quantityintegerSaldo físico atual neste depósito.
reorder_pointintegerEstoque mínimo.
0 desliga o alerta.low_stockbooleantrue quando reorder_point > 0 e quantity <= reorder_point. Calculado, não gravado.reservedintegerUnidades reservadas (por pedidos em aberto ou reserva manual).
availableintegerDisponível para prometer:
quantity menos reserved. É o ATP (available to promise).updated_atdatetimeÚltima mudança do saldo.
Erros: Definir estoque mínimo
| 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 | product_id ausente. | {"error":"vendorerp: product_id required"} |
| 400 | warehouse_id ausente. | {"error":"vendorerp: warehouse_id required"} |
| 400 | reorder_point negativo. | {"error":"vendorerp: reorder_point must be >= 0"} |
| 404 | O depósito não existe ou é de outro seller. | {"error":"warehouse 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"} |