Entwicklerdokumentation

Location-Verzeichnis

Die Liste der BookDinePlay-App mit den Locations, die zugestimmt haben – nach Name und Ort durchsuchbar, seitenweise, nur für BookDinePlays eigene Schlüssel.

Das Location-Verzeichnis ist die Liste, über die Gäste in der BookDinePlay-App eine Location finden. Eine Location erscheint darin erst, wenn ihr Betreiber in der Konsole Meine Location in der BookDinePlay-App zeigen anhakt (Location → BookDinePlay-App), und nur solange ihr Konto aktiv ist: Eine Location, die die Einstellung wieder ausschaltet oder deren Abo ausgesetzt ist, verschwindet mit der nächsten Anfrage.

Das Verzeichnis antwortet nur BookDinePlays eigenem App-Schlüssel und dem Plattform-Schlüssel. Der veröffentlichbare oder geheime Schlüssel einer Location wird mit 403 platform-key-required abgelehnt: Ein Schlüssel, der zu einer Location gehört, hat beim Auflisten anderer nichts zu suchen. Für Ihre eigene Location lesen Sie stattdessen GET /api/venues/{venueSlug}.

Endpunkte

GET /api/venues

Query

Parameter Typ Bedeutung
query String, optional Trifft irgendwo im Namen der Location, ohne Groß-/Kleinschreibung. Höchstens 100 Zeichen
city String, optional Trifft den Ort der Location exakt, ohne Groß-/Kleinschreibung. Höchstens 100 Zeichen
page Ganzzahl, optional Seitennummer ab 1, höchstens 20000; Standard 1
pageSize Ganzzahl, optional Locations pro Seite, 1 bis 50; Standard 20

Antwort 200 OK

Feld Typ Bedeutung
venues Objekt[] Die Locations dieser Seite, nach Name sortiert
venues[].slug String Der Bezeichner für jede andere Route /api/venues/{venueSlug}
venues[].name, venues[].tagline String Anzeigetext in der Sprache der Location
venues[].city, venues[].country String Ort, wie Gäste ihn sehen
venues[].resourceTypes String[] Die Typen, die ein Gast dort buchen kann, wie im Profil
page, pageSize Ganzzahl Die Seite und Seitengröße dieser Antwort
totalCount Ganzzahl Wie viele Locations über alle Seiten passen
{
  "venues": [
    {
      "slug": "demo-bowling",
      "name": "Strike Lounge",
      "tagline": "Bowling, kitchen & bar",
      "city": "Hamburg",
      "country": "Germany",
      "resourceTypes": [
        "RestaurantTable",
        "BowlingLane"
      ]
    },
    {
      "slug": "demo-sportsbar",
      "name": "The Neon Tap",
      "tagline": "Sports bar, kitchen & game house",
      "city": "Berlin",
      "country": "Germany",
      "resourceTypes": [
        "RestaurantTable",
        "BilliardTable",
        "DartBoard"
      ]
    }
  ],
  "page": 1,
  "pageSize": 20,
  "totalCount": 2
}

Fehler – 400 bei einer page unter 1 oder über 20000, einer pageSize außerhalb von 1–50 oder einer query bzw. city über 100 Zeichen (errors im Problem nennt den Parameter); 403 platform-key-required für den Schlüssel einer Location; 403 app-key-from-browser, wenn der App-Schlüssel mit einem Origin ankommt; 429 rate-limited, wenn der App-Schlüssel über seinem Limit liegt (Fehler).

curl

curl "https://api.bookdineplay.com/api/venues?query=neon&pageSize=10" \
  -H "X-BookDinePlay-Key: $BOOKDINEPLAY_APP_KEY"

JavaScript

// Serverseitig (Node.js): Aus einem Browser wird der App-Schlüssel abgelehnt.
const response = await fetch('https://api.bookdineplay.com/api/venues?query=neon&pageSize=10', {
  headers: { 'X-BookDinePlay-Key': process.env.BOOKDINEPLAY_APP_KEY }
});
const { venues, totalCount } = await response.json();

C#

var page = await client.ListDirectoryAsync(query: "neon", pageSize: 10, cancellationToken: cancellationToken);
foreach (var venue in page.Venues) { Console.WriteLine($"{venue.Name}, {venue.City}"); }

Nächste Schritte

  • Profil – alles über eine Location aus dem Verzeichnis.
  • Authentifizierung – die Schlüsseltypen und was jeder aufrufen darf.