Venue scoping
Every endpoint is scoped to one venue, which is named in the path rather than in a query string or body:Times, dates and timezones
Every wall-clock value in this API is in the venue’s own timezone, and no value is ever converted to or from UTC.
Date ranges are inclusive at both ends, and
endDate always defaults to startDate.
Typical flow
1
Fetch the vocabularies
Tags and reservation statuses are per-venue reference data. Cache them; they change rarely.
2
Ask what's available
Get Availability for the party size and date range. The response carries the
serviceId, sectionId and menuOptionId values the next step needs.3
Create the reservation
Create a Reservation with the ids you were given. A slot that has gone in the meantime returns
409 rather than double-booking.4
Read it back
Get a Reservation by the
id the create returned, or list a date range.5
Amend or cancel it
Update a Reservation changes the time, party size, status or guest details. Cancel a Reservation releases its table.
Endpoints
Get Availability
GET bookable services, sections and timesList Reservations
GET a venue’s reservations by date rangeGet a Reservation
GET one reservation by idCreate a Reservation
POST a reservation and allocate a tableUpdate a Reservation
PATCH an existing reservationCancel a Reservation
POST a cancellation and release the tableList Venue Tags
GET a venue’s guest tagsReservation Statuses
GET the statuses a venue usesErrors
Validation failures and missing resources return a consistent envelope.errors is present only on a validation failure, keyed by field path:
Validation failure — 400
409 and 501 responses:
Conflict — 409
requestId when reporting a problem.