Reports that the POS will not fulfil the order.
failure_code is the outcome the ordering channel is told, and is what the channel
maps onto its own reject vocabulary — always send the code that describes what
actually happened. info is the one line a channel shows a human.
A request that omits failure_code is still accepted, but only so that callers not
yet on this contract keep working: their reason and info are normalised onto a
canonical code on a best-effort basis. That tolerance is deprecated — send the code.
A channel fails an order over to another acceptance mechanism unless
store_explicitly_declined_order is true, so send that flag only for a fulfillable
order a person at the store deliberately turned down. Every automatic failure —
an offline POS, a timeout, a menu or payload problem — leaves it false.
Name the offending items in item_metadata whenever the code is about specific
items. The ids are resolved back to the ordering channel's own item ids, so a
channel can tell the customer which item was the problem.
Rejecting an order is idempotent, and cannot contradict an accepted one: a repeat
call refreshes the recorded detail, and an order already accepted or cancelled
answers 409.
| Time | Status | User Agent | |
|---|---|---|---|
Retrieving recent requests… | |||
Used by the Point-of-Sale to reject an order once it has been processed.
The order should be rejected with an appropriate reason.
400bad request when the failure code or an item error type is not a canonical one
401not authorized
404not found when no order carries the guid
409conflict when the order's outcome is already settled
