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"
}'
| Field | Type | Required | Description |
|---|---|---|---|
guestName | string | yes | Guest full name |
guestEmail | string | no | Guest email for confirmation |
guestPhone | string | no | Guest phone number |
partySize | integer | yes | Number of guests |
date | string | yes | Reservation date (ISO format: YYYY-MM-DD) |
time | string | yes | Reservation time (HH:mm) |
areaId | string | no | Preferred dining area |
conceptId | string | no | Booking concept (e.g., brunch, dinner) |
eventId | string | no | Special event ID |
notes | string | no | Guest notes |
campaignCode | string | no | Promotional 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..."
| Parameter | Type | Default | Description |
|---|---|---|---|
page | integer | 1 | Page number |
limit | integer | 20 | Items per page |
date | string | — | Filter by date (YYYY-MM-DD) |
status | string | — | Filter by status: PENDING, CONFIRMED, SEATED, COMPLETED, CANCELLED, NO_SHOW |
areaId | string | — | Filter 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:
| From | To |
|---|---|
PENDING | CONFIRMED, CANCELLED |
CONFIRMED | SEATED, CANCELLED, NO_SHOW |
SEATED | COMPLETED |
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 }'