Zum Hauptinhalt springen
This guide documents the internal Admin UI form endpoints used to build and apply dynamic order completion forms. Use this flow when the frontend should render backend-driven form components (customer, address, custom fields, participants) instead of hardcoding field definitions.

Endpoints

  • POST /api/v1/ui/admin/checkout-form
  • POST /api/v1/ui/admin/checkout-form/apply
  • POST /api/v1/ui/admin/customer-form
  • POST /api/v1/ui/admin/address-form
  • POST /api/v1/ui/admin/order-form
  • POST /api/v1/ui/admin/booking-form
All endpoints require:
  • Authorization: Bearer {token}
  • ?o={organization_id}

  1. Build a checkout form from booking context.
  2. Render returned components and collect user input.
  3. Apply form data to booking config.
  4. Send enriched payload to POST /api/v1/orders/from-config.
1

Build checkout form

The response contains form metadata such as components, validations, default, and submitAction.The booking_config supports mixed product orders: besides bookings it accepts standalone add_ons ([{ "add_on_id": 1, "quantity": 2 }]) and booking_passes purchased from bundles ([{ "booking_bundle_id": 12, "quantity": 1 }]). At least one of the three product arrays must be present — bookings may be omitted for bundle/add-on-only orders:
2

Apply submitted form data

The response includes an enriched config with resolved customer IDs and mapped custom fields. Additional config keys such as add_ons and booking_passes are passed through unchanged, so the result can be sent directly to POST /api/v1/orders/from-config for mixed product orders too.
3

Complete order

Use the enriched payload from step 2 as request body for:
See the public admin guide for full order payload options and error handling.

Standalone Form Endpoints

Use these endpoints when editing existing entities outside the full checkout-form flow.

Customer Form

  • customer_id is optional.
  • address_id is optional and can be used to prefill address values directly.
  • include_address_form is optional (true by default). Set to false to return customer fields without embedding address fields.
  • Returns customer fields and (by default) address fields with defaults if customer/address exists.
Customer form payload is split into three write namespaces:
  • customer.* for customer resource attributes such as given_name, family_name, email, mobile, phone, company, sex, and birth_date
  • address.* for address resource attributes such as street_address, zip_code, city, and country_code
  • custom_entry_map.{field_uuid}.value for customer custom fields in the same shape accepted by PATCH /api/v1/customers/{customer_id}
Persistence rules:
  1. Send customer.* as customer attributes to POST or PATCH /api/v1/customers.
  2. Forward custom_entry_map.* directly as the customer resource’s custom_entry_map attribute.
  3. Persist address.* through the separate addresses resource, linked to the customer via relationships.addressable.
Typical update flow for an existing customer:
  1. PATCH /api/v1/customers/{customer_id} with attributes built from customer.* plus custom_entry_map
  2. PATCH /api/v1/addresses/{address_id} if the customer already has an address
  3. Or POST /api/v1/addresses with relationships.addressable = customers/{customer_id} if the customer has no address yet

Address Form

  • customer_id is optional.
  • address_id is optional and takes precedence for prefilling over customer_id.
  • Returns address-only components prefilled from the selected address (or from the customer’s latest address if only customer_id is provided).
  • Address field keys use address.*.
  • Persist the submitted values through the addresses resource, linked via relationships.addressable when creating a new customer address.

Order Form

  • order_id is required.
  • Returns order-level custom field components prefilled from the order.
  • Custom field inputs use custom_entry_map.{field_uuid}.value, so they can be forwarded directly into the order resource’s custom_entry_map attribute on update.

Booking Form

  • booking_id is required.
  • Returns booking-level custom field components prefilled from the booking.
  • Custom field inputs use custom_entry_map.{field_uuid}.value.
  • Persist submitted values with POST /api/v1/ui/admin/booking-form/apply (booking_id + form_data). The apply action writes filled entries, deletes cleared ("" / null) entries, and returns the booking plus a rebuilt meta.form_default.
  • You can also forward custom_entry_map directly into the booking resource on PATCH /api/v1/bookings/{booking_id}.
  • Use this during Admin Booking Edit when changing booking-specific metadata, or during order completion before creating or updating an order.

Error Handling Notes

  • 422 for validation issues (missing required fields, malformed payload).
  • 404 when customer_id, order_id, or booking_id does not belong to the active organization.
  • 401 or 403 when auth or permissions are missing.