orders/from-config), see Admin Booking Creation.
For conventions, see JSON-API Conventions. For slot search, see Availability & Booking Search.
Prerequisites
- Resource + service configuration exists
- Cookies are enabled (cart and order authorization are cookie/query based)
- Optional customer auth for prefilled fields
Canonical Path Docs
/api/v1/order*cart/checkout endpoints: ../../paths/public/orders.yaml
Flow Overview
1
Add Booking to Cart
add_ons_by_service and sub_bookings_by_service are mapped by service id and booking index:Legacy inputs (
booking_add_ons, sub_bookings) still exist but are deprecated.Exact add-booking request fields (current request rules):Path docs:
/api/v1/order/bookings in ../../paths/public/orders.yaml.Current cart:2
Recommendations in Cart (Before Checkout)
Recommendations are a cart-time feature, not a post-order step.
3
Edit Cart and Voucher
Edit add-ons for one booking:Remove one booking:Remove multiple bookings:Clear cart:Apply voucher:Remove voucher:Optional booking pre-calculation:
4
Collect Checkout Data
Collect the customer data, payment method, and legal document acceptances required for the current organization.Public integrations should treat these requirements as organization-defined checkout configuration rather than depending on internal UI helper endpoints.
5
Optional Guest Email Verification
If guest email verification is enabled for the checkout flow, complete that verification before the final order submission.The external contract is the
verify_guest_email field on POST /api/v1/order. Helper endpoints used by anny-hosted UIs are internal-only and not part of the external integration surface.6
Submit Checkout
Customer and address are submitted as separate objects. Keep customer fields under Validation depends on the organization’s checkout configuration and selected payment method. Address fields returned by
the form are organization-country aware (for example state/area is only returned where relevant).
customer.* and address fields under
address.*.7
Handle Payment Redirect
If
meta.payment.next_action.type = redirect, redirect to meta.payment.next_action.url.After the payment provider redirects the user back, proceed to Step 8 to fetch the completed order.8
Fetch Last Succeeded Orders
last-succeeded authorization is token-pair based and requires matching oids[] and oats[] arrays.