Ordeliya Docs

Reservations

Table reservation system — booking, availability, tables, dining areas, and waitlist management.

Overview

The Reservations API provides a full table booking system. Manage reservations, check availability, assign tables, configure dining areas, and handle waitlists — all programmatically.


Reservations

POST /reservations

Create a new reservation.

Auth: Bearer Token (write:reservations)

curl -X POST https://api.ordeliya.com/reservations \
  -H "Authorization: Bearer ord_live_sk_7f3a9b2c..." \
  -H "Content-Type: application/json" \
  -d '{
    "guestName": "Lars Andersen",
    "guestEmail": "lars@example.dk",
    "guestPhone": "+4531234567",
    "partySize": 4,
    "date": "2026-03-20",
    "time": "19:00",
    "areaId": "area_d1n2",
    "notes": "Window table preferred",
    "campaignCode": "BIRTHDAY20"
  }'
FieldTypeRequiredDescription
guestNamestringyesGuest full name
guestEmailstringnoGuest email for confirmation
guestPhonestringnoGuest phone number
partySizeintegeryesNumber of guests
datestringyesReservation date (ISO format: YYYY-MM-DD)
timestringyesReservation time (HH:mm)
areaIdstringnoPreferred dining area
conceptIdstringnoBooking concept (e.g., brunch, dinner)
eventIdstringnoSpecial event ID
notesstringnoGuest notes
campaignCodestringnoPromotional campaign code

Response 201 Created

{
  "success": true,
  "data": {
    "id": "rsv_k7m2n8v4",
    "storeId": "store_r4k7",
    "guestName": "Lars Andersen",
    "guestEmail": "lars@example.dk",
    "guestPhone": "+4531234567",
    "partySize": 4,
    "date": "2026-03-20",
    "time": "19:00",
    "status": "PENDING",
    "areaId": "area_d1n2",
    "notes": "Window table preferred",
    "tables": [],
    "createdAt": "2026-03-15T10:00:00.000Z"
  }
}

GET /reservations

List reservations with filtering.

Auth: Bearer Token or API Key (read:reservations)

curl "https://api.ordeliya.com/reservations?date=2026-03-20&status=PENDING" \
  -H "Authorization: Bearer ord_live_sk_7f3a9b2c..."
ParameterTypeDefaultDescription
pageinteger1Page number
limitinteger20Items per page
datestringFilter by date (YYYY-MM-DD)
statusstringFilter by status: PENDING, CONFIRMED, SEATED, COMPLETED, CANCELLED, NO_SHOW
areaIdstringFilter by dining area

Response 200 OK

{
  "success": true,
  "data": [
    {
      "id": "rsv_k7m2n8v4",
      "guestName": "Lars Andersen",
      "partySize": 4,
      "date": "2026-03-20",
      "time": "19:00",
      "status": "PENDING",
      "tables": []
    }
  ],
  "meta": {
    "total": 12,
    "page": 1,
    "limit": 20,
    "totalPages": 1
  }
}

GET /reservations/:id

Get full reservation detail including assigned tables and messages.

Auth: Bearer Token or API Key (read:reservations)

curl https://api.ordeliya.com/reservations/rsv_k7m2n8v4 \
  -H "Authorization: Bearer ord_live_sk_7f3a9b2c..."

PATCH /reservations/:id

Update reservation details (guest info, party size, date/time, notes).

Auth: Bearer Token (write:reservations)

curl -X PATCH https://api.ordeliya.com/reservations/rsv_k7m2n8v4 \
  -H "Authorization: Bearer ord_live_sk_7f3a9b2c..." \
  -H "Content-Type: application/json" \
  -d '{
    "partySize": 6,
    "time": "19:30",
    "notes": "Now 6 guests, need larger table"
  }'

PATCH /reservations/:id/status

Update reservation status (confirm, seat, complete, cancel, mark as no-show).

Auth: Bearer Token (write:reservations)

curl -X PATCH https://api.ordeliya.com/reservations/rsv_k7m2n8v4/status \
  -H "Authorization: Bearer ord_live_sk_7f3a9b2c..." \
  -H "Content-Type: application/json" \
  -d '{ "status": "CONFIRMED" }'

Valid status transitions:

FromTo
PENDINGCONFIRMED, CANCELLED
CONFIRMEDSEATED, CANCELLED, NO_SHOW
SEATEDCOMPLETED

GET /reservations/stats

Get reservation statistics for the dashboard.

Auth: Bearer Token (read:reservations)

curl https://api.ordeliya.com/reservations/stats \
  -H "Authorization: Bearer ord_live_sk_7f3a9b2c..."

Response 200 OK

{
  "success": true,
  "data": {
    "todayTotal": 18,
    "todayPending": 3,
    "todayConfirmed": 12,
    "todaySeated": 2,
    "todayCompleted": 1,
    "weekTotal": 87,
    "averagePartySize": 3.4,
    "noShowRate": 0.05
  }
}

GET /reservations/availability

Check available time slots for a given date and party size.

Auth: Bearer Token or API Key (read:reservations)

curl "https://api.ordeliya.com/reservations/availability?date=2026-03-20&partySize=4" \
  -H "Authorization: Bearer ord_live_sk_7f3a9b2c..."

Response 200 OK

{
  "success": true,
  "data": {
    "date": "2026-03-20",
    "partySize": 4,
    "slots": [
      { "time": "17:00", "available": true },
      { "time": "17:30", "available": true },
      { "time": "18:00", "available": true },
      { "time": "18:30", "available": false },
      { "time": "19:00", "available": true },
      { "time": "19:30", "available": true },
      { "time": "20:00", "available": true },
      { "time": "20:30", "available": false },
      { "time": "21:00", "available": true }
    ]
  }
}

POST /reservations/:id/assign-tables

Assign tables to a reservation.

Auth: Bearer Token (write:reservations)

curl -X POST https://api.ordeliya.com/reservations/rsv_k7m2n8v4/assign-tables \
  -H "Authorization: Bearer ord_live_sk_7f3a9b2c..." \
  -H "Content-Type: application/json" \
  -d '{
    "tableIds": ["tbl_w1n2d3", "tbl_w4n5d6"]
  }'

POST /reservations/:id/messages

Send a message to the guest (e.g., confirmation details, special instructions).

Auth: Bearer Token (write:reservations)

curl -X POST https://api.ordeliya.com/reservations/rsv_k7m2n8v4/messages \
  -H "Authorization: Bearer ord_live_sk_7f3a9b2c..." \
  -H "Content-Type: application/json" \
  -d '{
    "text": "Your table is ready! We have reserved the window area for your birthday celebration."
  }'

Tables

GET /reservations/tables

List all restaurant tables.

curl https://api.ordeliya.com/reservations/tables \
  -H "Authorization: Bearer ord_live_sk_7f3a9b2c..."

Response 200 OK

{
  "success": true,
  "data": [
    {
      "id": "tbl_w1n2d3",
      "name": "Table 1",
      "capacity": 4,
      "areaId": "area_d1n2",
      "areaName": "Window Section",
      "isActive": true
    },
    {
      "id": "tbl_w4n5d6",
      "name": "Table 2",
      "capacity": 2,
      "areaId": "area_d1n2",
      "areaName": "Window Section",
      "isActive": true
    }
  ]
}

POST /reservations/tables

Create a new table.

curl -X POST https://api.ordeliya.com/reservations/tables \
  -H "Authorization: Bearer ord_live_sk_7f3a9b2c..." \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Table 5",
    "capacity": 6,
    "areaId": "area_d1n2"
  }'

PATCH /reservations/tables/:tableId

Update a table (name, capacity, area assignment).

DELETE /reservations/tables/:tableId

Remove a table.


Dining Areas

GET /reservations/areas

List all dining areas.

curl https://api.ordeliya.com/reservations/areas \
  -H "Authorization: Bearer ord_live_sk_7f3a9b2c..."

Response 200 OK

{
  "success": true,
  "data": [
    {
      "id": "area_d1n2",
      "name": "Window Section",
      "description": "Tables with a street view",
      "capacity": 20,
      "isActive": true,
      "tableCount": 5
    },
    {
      "id": "area_t3r4",
      "name": "Terrace",
      "description": "Outdoor seating (weather permitting)",
      "capacity": 30,
      "isActive": true,
      "tableCount": 8
    }
  ]
}

POST /reservations/areas

Create a new dining area.

curl -X POST https://api.ordeliya.com/reservations/areas \
  -H "Authorization: Bearer ord_live_sk_7f3a9b2c..." \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Private Room",
    "description": "For private events and large parties",
    "capacity": 12
  }'

PATCH /reservations/areas/:areaId

Update a dining area.

DELETE /reservations/areas/:areaId

Remove a dining area.


Settings

GET /reservations/settings

Get reservation settings for the current store.

curl https://api.ordeliya.com/reservations/settings \
  -H "Authorization: Bearer ord_live_sk_7f3a9b2c..."

Response 200 OK

{
  "success": true,
  "data": {
    "isEnabled": true,
    "areasEnabled": true,
    "waitlistEnabled": true,
    "depositEnabled": false,
    "maxPartySize": 12,
    "slotDurationMinutes": 30,
    "advanceBookingDays": 30,
    "autoConfirm": false,
    "confirmationMessage": "Thank you for your reservation!",
    "cancellationPolicy": "Please cancel at least 2 hours before your reservation."
  }
}

PATCH /reservations/settings

Update reservation settings.

curl -X PATCH https://api.ordeliya.com/reservations/settings \
  -H "Authorization: Bearer ord_live_sk_7f3a9b2c..." \
  -H "Content-Type: application/json" \
  -d '{
    "maxPartySize": 20,
    "autoConfirm": true,
    "waitlistEnabled": true
  }'

Waitlist

GET /reservations/waitlist

List waitlist entries.

curl https://api.ordeliya.com/reservations/waitlist \
  -H "Authorization: Bearer ord_live_sk_7f3a9b2c..."

POST /reservations/waitlist

Add a guest to the waitlist when no slots are available.

curl -X POST https://api.ordeliya.com/reservations/waitlist \
  -H "Authorization: Bearer ord_live_sk_7f3a9b2c..." \
  -H "Content-Type: application/json" \
  -d '{
    "guestName": "Sofia Larsen",
    "guestPhone": "+4540123456",
    "partySize": 2,
    "date": "2026-03-20",
    "preferredTime": "19:00"
  }'

PATCH /reservations/waitlist/:entryId/status

Update waitlist entry status (e.g., notify, convert to reservation).

curl -X PATCH https://api.ordeliya.com/reservations/waitlist/wl_a1b2c3/status \
  -H "Authorization: Bearer ord_live_sk_7f3a9b2c..." \
  -H "Content-Type: application/json" \
  -d '{ "status": "NOTIFIED" }'

Bulk Operations

POST /reservations/bulk-confirm

Confirm all pending reservations for a specific date.

curl -X POST https://api.ordeliya.com/reservations/bulk-confirm \
  -H "Authorization: Bearer ord_live_sk_7f3a9b2c..." \
  -H "Content-Type: application/json" \
  -d '{ "date": "2026-03-20" }'

POST /reservations/bulk-cancel

Cancel multiple reservations at once.

curl -X POST https://api.ordeliya.com/reservations/bulk-cancel \
  -H "Authorization: Bearer ord_live_sk_7f3a9b2c..." \
  -H "Content-Type: application/json" \
  -d '{
    "ids": ["rsv_a1b2c3", "rsv_d4e5f6"],
    "reason": "Restaurant closed due to private event"
  }'

POST /reservations/pause

Emergency pause — temporarily stop accepting reservations.

curl -X POST https://api.ordeliya.com/reservations/pause \
  -H "Authorization: Bearer ord_live_sk_7f3a9b2c..." \
  -H "Content-Type: application/json" \
  -d '{ "paused": true }'