Reservations API

Create and manage table reservations. Reservations integrate with the tables system to automatically update table statuses.

Reservation Object

NameTypeRequiredDescription
iduuidRequiredUnique reservation identifier
restaurant_iduuidRequiredOwning restaurant
table_iduuidOptionalAssigned table (can be null if unassigned)
customer_namestringRequiredName of the guest
customer_phonestringOptionalGuest phone number
customer_emailstringOptionalGuest email address
party_sizeintegerRequiredNumber of guests
reservation_datestring (date)RequiredDate in YYYY-MM-DD format
reservation_timestring (time)RequiredTime in HH:MM format
duration_minutesintegerOptionalExpected duration in minutes
statusstringRequired"pending", "confirmed", "seated", "completed", "cancelled", "no_show"
notesstringOptionalAdditional notes
created_atstring (datetime)RequiredISO 8601 creation timestamp
updated_atstring (datetime)RequiredISO 8601 last-update timestamp

List Reservations

GET/api/reservationsProtected

Retrieve reservations within a date range.

Query Parameters

NameTypeRequiredDescription
date_fromstring (date)RequiredStart date (YYYY-MM-DD)
date_tostring (date)OptionalEnd date (YYYY-MM-DD). Defaults to date_from if omitted.
bash
curl -X GET __PH1__Authorization: Bearer <token>"
json
// Response 200
{
  __PH1__: [
    {
      __PH2__: "res-uuid",
      __PH4__: "table-uuid",
      __PH6__: "Schmidt, Hans",
      __PH8__: "+49 170 1234567",
      __PH10__: 4,
      __PH11__: "2026-03-20",
      __PH13__: "19:30",
      __PH15__: 120,
      __PH16__: "confirmed",
      __PH18__: "Birthday dinner",
      __PH20__: "2026-03-18T10:00:00Z",
      __PH22__: "2026-03-19T08:30:00Z"
    }
  ]
}

Get Reservation

GET/api/reservations/{id}Protected

Retrieve a single reservation by ID.

json
// Response 200
{
  __PH1__: "res-uuid",
  __PH3__: "table-uuid",
  __PH5__: "Schmidt, Hans",
  __PH7__: "+49 170 1234567",
  __PH9__: "hans@example.com",
  __PH11__: 4,
  __PH12__: "2026-03-20",
  __PH14__: "19:30",
  __PH16__: 120,
  __PH17__: "confirmed",
  __PH19__: "Birthday dinner",
  __PH21__: "2026-03-18T10:00:00Z",
  __PH23__: "2026-03-19T08:30:00Z"
}

Create Reservation

POST/api/reservationsProtected

Create a new reservation. The assigned table (if provided) will show a reserved status at the specified time.

Request Body

NameTypeRequiredDescription
customer_namestringRequiredName of the guest
party_sizeintegerRequiredNumber of guests
reservation_datestring (date)RequiredDate in YYYY-MM-DD format
reservation_timestring (time)RequiredTime in HH:MM format
table_iduuidOptionalTable to assign
customer_phonestringOptionalGuest phone number
customer_emailstringOptionalGuest email address
duration_minutesintegerOptionalExpected duration in minutes
notesstringOptionalAdditional notes
json
// Request
{
  __PH2__: "Mueller, Anna",
  __PH4__: 2,
  __PH5__: "2026-03-21",
  __PH7__: "20:00",
  __PH9__: "table-uuid",
  __PH11__: "+49 160 9876543",
  __PH13__: 90,
  __PH14__: "Anniversary dinner"
}

// Response 201
{
  __PH16__: "new-res-uuid",
  __PH18__: "table-uuid",
  __PH20__: "Mueller, Anna",
  __PH22__: "+49 160 9876543",
  __PH24__: null,
  __PH25__: 2,
  __PH26__: "2026-03-21",
  __PH28__: "20:00",
  __PH30__: 90,
  __PH31__: "pending",
  __PH33__: "Anniversary dinner",
  __PH35__: "2026-03-20T12:00:00Z",
  __PH37__: "2026-03-20T12:00:00Z"
}

Update Reservation

PUT/api/reservations/{id}Protected

Update an existing reservation. All mutable fields can be changed.

json
// Request
{
  __PH1__: 3,
  __PH2__: "20:30",
  __PH4__: "Anniversary dinner - added +1 guest"
}

Update Reservation Status

PATCH/api/reservations/{id}/statusProtected

Transition a reservation to a new status.

Request Body

NameTypeRequiredDescription
statusstringRequired"pending", "confirmed", "seated", "completed", "cancelled", or "no_show"
json
// Request
{ __PH2__: "seated" }

// Response 200
{
  __PH4__: "res-uuid",
  __PH6__: "seated",
  __PH8__: "2026-03-20T19:35:00Z"
}

Delete Reservation

DELETE/api/reservations/{id}Protected

Delete a reservation. If the reservation had a table assigned, the table status is recalculated.

json
// Response 200
{
  __PH1__: "Reservation deleted successfully"
}

Get Table Reservations

GET/api/reservations/table/{tableId}Protected

Retrieve all reservations for a specific table. Optionally filter by date.

Query Parameters

NameTypeRequiredDescription
datestring (date)OptionalFilter by date (YYYY-MM-DD). Defaults to today.
bash
curl -X GET __PH1__Authorization: Bearer <token>"
json
// Response 200
{
  __PH1__: [
    {
      __PH2__: "res-uuid",
      __PH4__: "Schmidt, Hans",
      __PH6__: 4,
      __PH7__: "19:30",
      __PH9__: 120,
      __PH10__: "confirmed"
    },
    {
      __PH12__: "res-uuid-2",
      __PH14__: "Weber, Lisa",
      __PH16__: 2,
      __PH17__: "21:30",
      __PH19__: 90,
      __PH20__: "pending"
    }
  ]
}