Place a delivery order
place_delivery_orderOrders food for delivery in one call. It prices the order, quotes the delivery fee and then either places it or returns a draft, according to the permission the person chose when connecting (get_connection_permissions shows it). With full control it places the order immediately, within the spending limits they set. If they chose to confirm each decision, it places nothing and returns a draft summary with a draftId, which confirm_delivery_order places. Same rules and fields as draft_delivery_order (connected WaitApp account, optionGroups choices as selectedOptions, payment pay_on_delivery or mobile_money). idempotencyKey is required: generate one unique value per order and reuse the SAME value if you retry, so a retry can never create a second order. The venue must still accept the order; track it with check_booking_status using the returned orderCode.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes | ||
| payment | No | ||
| guestName | Yes | ||
| guestPhone | Yes | ||
| restaurantId | Yes | ||
| idempotencyKey | Yes | A unique value you generate for this order; reuse it on any retry | |
| deliveryAddress | No | Full delivery address. Not needed when savedLocationId is given | |
| savedLocationId | No | The id of one of the person's saved locations (see list_saved_locations), used instead of deliveryAddress | |
| mobileMoneyNumber | No | Required for mobile_money: the guest's own mobile money number; they approve the payment prompt on that phone |