Sign in to see your venue's slug and publishable key in every sample.
Your account has no venue yet, so the samples keep their placeholders. Sign out
Signed in as · . Create a publishable key in the console and reload to see it here. Sign out
Signed in as · . The samples show your venue's publishable key. Sign out
Developer docs
Floor plan
Read a venue's zones and placed resources with normalized geometry, for drawing a pick-your-table floor plan view.
Zones and placed resources with normalized geometry, for drawing a "pick your table" view. A venue without a plan answers 200 with empty lists — check tables.length before switching your UI to the floor plan. It follows the same key rules as the rest of /api/venues/** (Keys and headers) and answers 404 with a problem body when no venue has that slug.
Endpoints
GET /api/venues/{venueSlug}/floor-plan
Response 200 OK
| Field | Type | Meaning |
|---|---|---|
slug |
string | The venue |
zones[] |
object[] | id (GUID), name, ordinal (display order) |
tables[] |
object[] | resourceId, name, type, capacity, zoneId, x, y, width, height (all 0–1, relative to the zone), shape (Rectangle or Circle), rotation (degrees) |
{
"slug": "demo-sportsbar",
"zones": [],
"tables": []
}Errors — 404 no venue with that slug.
curl
curl "https://api.bookdineplay.com/api/venues/your-venue/floor-plan" \
-H "X-BookDinePlay-Key: bdp_pk_your_publishable_key" \
-H "Origin: https://www.your-venue.example"JavaScript
const plan = await (await fetch('https://api.bookdineplay.com/api/venues/your-venue/floor-plan', {
headers: { 'X-BookDinePlay-Key': 'bdp_pk_your_publishable_key' }
})).json();
const hasPlan = plan.tables.length > 0;C#
var plan = await client.GetFloorPlanAsync("your-venue", cancellationToken);Next steps
- Venue — the other five reads for this venue.
- Booking flow — when to fetch the floor plan in the widget's lifecycle.
- .NET SDK — the same read as a typed method.