checkout.place_order
Turn a completed cart into an order — atomically reserves stock, freezes totalizers, creates the order (pending_payment). The order CONSUMES the cart lines; the cart itself survives with its buyer, address and preferences, ready for another purchase (one cart, many orders). Idempotent: repeating this call on the same cart while it is still empty returns the SAME order_id instead of creating a second one.
- Scope:
public - System: no
- Reachable from: an ANONYMOUS face — no credential, and never
/v1/commands/*. Which path serves it is not derivable from the registry; see the anonymous faces. - Events:
order.created,inventory.reserved,order.hold.applied,promotion.applied
Input (JSON Schema)
Section titled “Input (JSON Schema)”{ "properties": { "cart_id": { "minLength": 1, "type": "string" }, "origin": { "properties": { "city": { "type": "string" }, "name": { "type": "string" }, "region": { "type": "string" } }, "type": "object" } }, "required": [ "cart_id" ], "type": "object"}Result (200)
Section titled “Result (200)”{ "additionalProperties": false, "properties": { "order_id": { "type": "string" } }, "required": [ "order_id" ], "type": "object"}Errors
Section titled “Errors”validation_failed (400) · unauthorized (401) · forbidden (403) · conflict (409) · internal (500)