Tables
Authenticated API
Table management endpoints require a valid JWT Bearer token with staff roles. Accessible via the API gateway at /v1/commerce/tables/*.
List Tables
GET /v1/commerce/tables
curl https://dev.api.olympuscloud.ai/v1/commerce/tables \
-H "Authorization: Bearer $TOKEN"
Response
[
{
"id": "t1-uuid",
"tenant_id": "550e8400-e29b-41d4-a716-446655449100",
"location_id": "550e8400-e29b-41d4-a716-446655449110",
"table_number": "1",
"section": "Main Dining",
"capacity": 4,
"status": "available",
"x": 100,
"y": 200,
"width": 80,
"height": 80,
"rotation": 0.0,
"shape": "rect",
"server_id": null,
"current_order_id": null,
"created_at": "2026-02-19T10:00:00Z",
"updated_at": "2026-02-19T10:00:00Z"
}
]
Create Table
POST /v1/commerce/tables
| Field | Type | Required | Description |
|---|---|---|---|
location_id | string (UUID) | Yes | Location UUID |
table_number | string | Yes | Table identifier (e.g., "1", "A1", "Patio-2") |
capacity | integer | Yes | Maximum seating capacity |
section | string | No | Section name (e.g., "Main Dining", "Patio") |
shape | string | Yes | "rect" or "circle" |
x | integer | Yes | X position on floor plan |
y | integer | Yes | Y position on floor plan |
width | integer | Yes | Width on floor plan |
height | integer | Yes | Height on floor plan |
rotation | number | No | Rotation angle in degrees (default: 0) |
curl -X POST https://dev.api.olympuscloud.ai/v1/commerce/tables \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOKEN" \
-d '{
"location_id": "550e8400-e29b-41d4-a716-446655449110",
"table_number": "15",
"section": "Patio",
"capacity": 6,
"shape": "rect",
"x": 300, "y": 400, "width": 100, "height": 60
}'
Update Table Status
PUT /v1/commerce/tables/:table_id/status
| Field | Type | Required | Description |
|---|---|---|---|
status | string | Yes | "available", "occupied", "reserved", "cleaning", "maintenance" |
server_id | string (UUID) | No | Assign a server to the table |
current_order_id | string (UUID) | No | Link active order |
curl -X PUT https://dev.api.olympuscloud.ai/v1/commerce/tables/TABLE_ID/status \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOKEN" \
-d '{"status": "occupied", "server_id": "550e8400-e29b-41d4-a716-446655449122"}'
Seat a Party
POST /v1/commerce/tables/:table_id/seat
Seat a walk-in or waitlist party at a table.
| Field | Type | Required | Description |
|---|---|---|---|
guest_count | integer | Yes | Number of guests |
waitlist_entry_id | string (UUID) | No | Link to waitlist entry (if from waitlist) |
curl -X POST https://dev.api.olympuscloud.ai/v1/commerce/tables/TABLE_ID/seat \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOKEN" \
-d '{"guest_count": 4}'
Assign Table to Server
PUT /v1/commerce/tables/:table_id/assign
curl -X PUT https://dev.api.olympuscloud.ai/v1/commerce/tables/TABLE_ID/assign \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOKEN" \
-d '{"server_id": "550e8400-e29b-41d4-a716-446655449122"}'
Table Status Values
| Status | Description |
|---|---|
available | Open for seating |
occupied | Guests are seated |
reserved | Held for a reservation |
cleaning | Being cleaned after service |
maintenance | Out of service |