Skip to content
v0.3

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
{
"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"
}
{
"additionalProperties": false,
"properties": {
"order_id": {
"type": "string"
}
},
"required": [
"order_id"
],
"type": "object"
}

validation_failed (400) · unauthorized (401) · forbidden (403) · conflict (409) · internal (500)