Ciclo de vida do pedido
Os 9 estados canônicos do pedido, quem seta cada um, transições permitidas e o erro INVALID_TRANSITION.
O pedido percorre uma máquina de estados validada no servidor. Em v1.1 o
parceiro não seta status via API (a rota de PATCH foi removida): todo o fluxo
(confirmação, preparo, separação, entrega, cancelamento) é conduzido pelo
dashboard e PWAs operacionais da OnmIA — e você o recebe via webhook
order.status_changed ou por polling em GET /orders/:id.
Estados canônicos
| Status | Significado | Quem normalmente seta |
|---|---|---|
pending | Criado, aguardando confirmação. | OnmIA (canais próprios). |
confirmed | Confirmado. | OnmIA (canais próprios), dashboard. |
in_kitchen | Em preparo (vertical food). | Dashboard/operação OnmIA. |
ready | Pronto para saída (vertical food). | Dashboard/operação OnmIA. |
picking | Em separação (varejo/grocery). | Dashboard/PWA de separação. |
packed | Separado/expedição (varejo/grocery). | Dashboard/PWA de separação. |
out_for_delivery | Saiu para entrega. | Dashboard/PWA do entregador. |
delivered | Entregue (terminal). | Dashboard/PWA do entregador. |
cancelled | Cancelado (terminal). | Dashboard/operação OnmIA. |
Transições permitidas
O fork em confirmed depende do vertical da loja (food vs. varejo/grocery):
pending -> confirmed | cancelled
confirmed -> picking | in_kitchen | cancelled
in_kitchen -> ready | cancelled (caminho food)
ready -> out_for_delivery | cancelled (caminho food)
picking -> packed | cancelled (caminho varejo/grocery)
packed -> out_for_delivery | cancelled (caminho varejo/grocery)
out_for_delivery -> delivered | cancelled
delivered -> (terminal)
cancelled -> (terminal)O que isso significa para o parceiro
- O parceiro não seta status via API (a rota de PATCH foi removida em v1.1). Todo o fluxo é conduzido pelos canais OnmIA.
- Você recebe o pedido novo pelo webhook
order.createde cada mudança de status pelo webhookorder.status_changed. Para reconciliação, consulteGET /orders/:id(polling). Prepare seu receptor para todos os 9 estados da tabela. deliveredecancelledsão terminais — nenhuma transição sai deles.
Detectar a finalização
Para fechar/baixar o pedido no ERP, filtre order.status_changed por
status ∈ { "delivered", "cancelled" } — os dois estados terminais. delivered
chega de picking/entrega/iFood/dashboard; cancelled da operação OnmIA.
Cancelamento pós-entrega
Não há transição saindo de delivered. Cancelamento de um pedido já entregue
exige tratativa manual com a OnmIA — não é feito pela API.