Required scopes
Resource types
A bookable resource can represent any schedulable entity:location · service · room · equipment · person
Booking statuses
List resources
GET /api/bookings/resources
Returns all active bookable resources for the tenant.
Query parameters
string
Filter by resource type:
location, service, room, equipment, or person.string
Search by resource name.
boolean
default:"false"
When
true, includes resources where isActive is false.integer
Maximum number of results.
integer
default:"0"
Results to skip for pagination.
Response
Get available slots
GET /api/bookings/resources/{id}/availability
Returns available time slots for a resource within a date range. Use this before creating a booking to present real-time availability to a user.
Path parameters
string
required
UUID of the bookable resource.
Query parameters
string
Start of the date range (ISO 8601, for example
2024-08-01 or 2024-08-01T00:00:00Z). Defaults to now.string
End of the date range (ISO 8601). Defaults to 7 days from
from.Response
remaining reflects the number of additional bookings that can be made for the slot, based on maxConcurrent.
List bookings
GET /api/bookings
Returns a list of bookings for the tenant, with optional filters.
Query parameters
string
Filter by resource UUID.
string
Filter by booking status:
confirmed, cancelled, no_show, completed.string
Filter by the lead UUID associated with the booking.
string
Return bookings starting on or after this date (ISO 8601).
string
Return bookings starting on or before this date (ISO 8601).
integer
Maximum number of results.
integer
default:"0"
Offset for pagination.
Create a booking
POST /api/bookings
Confirms a booking for a slot. The slot is validated against the resource’s operating hours and closures at write time. If the slot is no longer available, the request returns 409 Conflict.
Request body
string
required
Opaque slot ID obtained from the availability endpoint.
string
required
Guest’s first name.
string
required
Guest’s last name.
string
required
Guest’s email address. Used for confirmation emails.
string
Guest’s phone number.
string
Additional notes from the guest.
string
What the guest is interested in (for example, a specific program or service).
string
default:"api"
Attribution for the booking source.
Response
Returns201 Created with the confirmed booking object. Returns 409 Conflict if the slot has been taken.
Get a booking
GET /api/bookings/{id}
Retrieves a single booking by ID.
Path parameters
string
required
UUID of the booking.
Response
Returns200 OK with { "booking": { booking object } }.
Cancel a booking
DELETE /api/bookings/{id}
Cancels a booking. The booking record is retained; its status changes to cancelled. Returns 404 if the booking is already cancelled.
Path parameters
string
required
UUID of the booking to cancel.
Response
Returns200 OK with { "success": true }.