Prerequisites
- A valid Bearer token with admin access — see Authentication
- Organization context (
?o={organization_id})
Status Changes
Request path documentation:paths/admin/bookings.yamlforPATCH /api/v1/bookings/{booking_id}paths/admin/bookings.yamlforGET /api/v1/bookings/{booking_id}/cancel
Accept a Requested Booking
When a booking has statusrequested, accept it by updating the booking status:
Reject a Requested Booking
Reject a requested booking with the same update endpoint:Cancel a Booking
Cancel an accepted or requested booking with the dedicated cancel action:Check-In / Check-Out
Request path documentation:paths/admin/bookings.yamlforPOST /api/v1/bookings/{booking_id}/check-inpaths/admin/bookings.yamlforPOST /api/v1/bookings/{booking_id}/check-out- Scan for
POST /api/v1/scans(staff / kiosk scanner)
Check-In
Check-Out
- Log a
Scanrecord with the timestamp - Update the booking’s check-in/check-out status
- Can be triggered by admin users or via self-service terminals
Resources can be configured with auto-expiry — if a customer doesn’t check in within a configured window, the booking expires automatically.
Delayed forms at check-in
Legal documents and custom forms can be configured with collection timingcheck_in. If those details are still missing when you check a booking in, the API does not complete the check-in until the client collects and submits them.
Advertise support for the dynamic check-in form with:
form_data), check-in fails with HTTP 400 and code scans.check_in_requires_details_unsupported.
1. First attempt — details still required:
meta.form_url (GET /api/ui/booking-check-in-form). It returns the same dynamic-form shape as checkout (components, validations), limited to still-missing items (documents.{uuid}, service_custom_fields.{uuid}).
3. Re-submit check-in with the collected values:
meta.status is the resulting scan status (for example valid) and check_in_date is set. Invalid form_data returns HTTP 422. Timing / geo / business-rule failures return HTTP 400 with a scans.* error code.
Scanner endpoint (POST /scans)
Staff and kiosk clients that create scans by booking code use the same delayed-form flow. Unlike the booking check-in action, submit details only as data.attributes.meta.form_data (JSON:API) — top-level form_data is ignored.
Generating Documents
Generate a PDF or ticket from a document template:
Returns a
files resource with the generated document.
Booking exports are documented with the other admin export endpoints in Exports.