Developer docs

Profile

Read a venue's public profile — name, location, time zone, resource types, paid extras and the per-type booking durations guests may choose.

The venue's public profile: name, description, location, time zone, which resource types it offers, and — when the operator has set them up — paid extras and the booking durations a guest may choose per resource type. 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}

Response 200 OK

Field Type Meaning
slug string The identifier you used in the URL
name, tagline, description string Display text, in the venue's own language
city, country string Location as shown to guests
timezone string IANA time zone every date and time on this venue is in
resourceTypes string[] The types this venue offers: RestaurantTable, BilliardTable, DartBoard, Shuffleboard, BowlingLane, EventArea
extras object[] or null Paid add-ons: id, name, description, price, currency, basis (PerPerson or PerBooking), appliesTo (resource types)
bookingDurations object[] or null Per type: type, defaultMinutes, minMinutes, maxMinutes, stepMinutes, guestSelectable, options (the selectable minutes, ready for a picker)
{
  "slug": "demo-sportsbar",
  "name": "The Neon Tap",
  "tagline": "Sports bar, kitchen & game house",
  "description": "A neighbourhood sports bar where guests come to dine, drink, watch the match, and play. Reserve a table for the big game, book a billiard table or dart board by the hour, or take the whole mezzanine for a private event.",
  "city": "Berlin",
  "country": "Germany",
  "timezone": "Europe/Berlin",
  "resourceTypes": [
    "RestaurantTable",
    "BilliardTable",
    "DartBoard"
  ],
  "extras": null,
  "bookingDurations": [
    {
      "type": "RestaurantTable",
      "defaultMinutes": 120,
      "minMinutes": 60,
      "maxMinutes": 240,
      "stepMinutes": 30,
      "guestSelectable": false,
      "options": [
        120
      ]
    },
    {
      "type": "BilliardTable",
      "defaultMinutes": 60,
      "minMinutes": 60,
      "maxMinutes": 240,
      "stepMinutes": 30,
      "guestSelectable": true,
      "options": [
        60,
        90,
        120
      ]
    },
    {
      "type": "DartBoard",
      "defaultMinutes": 60,
      "minMinutes": 60,
      "maxMinutes": 240,
      "stepMinutes": 30,
      "guestSelectable": true,
      "options": [
        60,
        90,
        120
      ]
    }
  ]
}

Lists in the example are shortened to three entries.

Errors — 404 no venue with that slug; key problems as on Errors.

curl

curl "https://api.bookdineplay.com/api/venues/your-venue" \
  -H "X-BookDinePlay-Key: bdp_pk_your_publishable_key" \
  -H "Origin: https://www.your-venue.example"

JavaScript

const response = await fetch('https://api.bookdineplay.com/api/venues/your-venue', {
  headers: { 'X-BookDinePlay-Key': 'bdp_pk_your_publishable_key' }
});
const venue = await response.json();
console.log(venue.name, venue.resourceTypes);

C#

var venue = await client.GetVenueAsync("your-venue", cancellationToken);
if (venue is null) { /* no venue with that slug */ }

Next steps

  • Venue — the other five reads for this venue.
  • Availability — the bookingDurations values in action, turned into bookable slots.
  • .NET SDK — the same read as a typed method.