Anmelden um den Slug und den veröffentlichbaren Schlüssel Ihrer Location in jedem Beispiel zu sehen.
Ihr Konto hat noch keine Location, die Beispiele behalten daher ihre Platzhalter. Abmelden
Angemeldet als · . Legen Sie in der Konsole einen veröffentlichbaren Schlüssel an und laden Sie die Seite neu, um ihn hier zu sehen. Abmelden
Angemeldet als · . Die Beispiele zeigen den veröffentlichbaren Schlüssel Ihrer Location. Abmelden
Entwicklerdokumentation
Ressourcen
Jede buchbare Ressource lesen – Tische, Billardtische, Dartscheiben, Bahnen und Eventflächen – mit Kapazität, Dauer und Bepreisung.
Jede buchbare Ressource – Tische, Billardtische, Dartscheiben, Bahnen, Eventflächen – mit Kapazität, der für sie geltenden Buchungsdauer und ihrer Bepreisung. resources listet nur, was der Tarif der Location Gästen zu buchen erlaubt – Billardtische und Dartscheiben einer Starter-Location fehlen hier, sind also nicht nur als nicht verfügbar markiert. Er folgt denselben Schlüsselregeln wie der Rest von /api/venues/** (Schlüssel und Header) und antwortet mit 404 und einem Problem-Body, wenn keine Location diesen Slug hat.
Endpunkte
GET /api/venues/{venueSlug}/resources
Antwort 200 OK
| Feld | Typ | Bedeutung |
|---|---|---|
slug |
string | Die Location |
resources[] |
object[] | Eine je Ressource |
id, name, description |
string | id ist das, was resourceId überall sonst bedeutet |
type |
string | Einer der Ressourcentypen |
capacity |
integer | Plätze oder Spieler |
slotDurationMinutes |
integer | Die wirksame Buchungsdauer: die eigene Überschreibung der Ressource, sofern gesetzt, sonst der Standard der Location für den Typ |
slotDurationOverrideMinutes |
integer oder null | Nur die Überschreibung; null, wenn die Ressource den Standard erbt |
pricing |
object | model (Free, PerHour, PerGame, PerSession, FixedFee, Deposit, MinimumSpend), amount, currency, depositAmount (nullable), minimumSpend (nullable), unitLabel (z. B. „pro Stunde“) |
allowsFoodOrdering |
boolean | Ob ein sitzender Gast aus der Tischsitzung bestellen kann |
active |
boolean | Auf diesem öffentlichen Endpunkt immer true – eine Ressource, die der Tarif der Location Gästen nicht zu buchen erlaubt, fehlt in resources vollständig, statt mit active: false gesendet zu werden |
resourceGroupId, resourceGroupName, resourceGroupDescription |
string (GUID), string, string (alle null, wenn ungruppiert) | Die ResourceGroup, zu der diese Ressource gehört – ein Zuhause für die eigenen Verkaufstexte des Betreibers – mitgeliefert als id und als Name/Beschreibung zusammen, da ein öffentlicher Aufrufer keine Betreiber-Sitzung hat, über die er die id nachschlagen könnte. Mit resourceGroupId als ?resourceGroup= auf eine Gruppe filtern, siehe Verfügbarkeit |
seatSold |
boolean | false (der Standard für jede Ressource) bedeutet, eine Reservierung belegt die gesamte Ressource für ihre Dauer – zum Beispiel ein Billardtisch. true bedeutet, mehrere Reservierungen können sie sich im selben Zeitfenster teilen, bis zusammen capacity erreicht ist – etwa eine Eventfläche mit 31 Plätzen, bei der eine Gruppe von vier Personen nicht den ganzen Raum blockieren soll. Siehe seatsRemaining unter Verfügbarkeit dafür, wie eine platzweise verkaufte Ressource meldet, wie viel Platz noch frei ist. Wird eine Ressource von platzweise zurück auf exklusiv umgestellt, werden bereits bestehende Reservierungen, die sich einen Termin teilen, nicht storniert – aber keine davon lässt sich mehr bearbeiten (PUT einer Reservierung), solange mehr als eine übrig ist, da eine exklusive Ressource die anderen jetzt als kollidierende Überschneidung sieht. Stornieren ist davon unberührt; auf eine übrig bleibende Reservierung reduzieren (oder andere verschieben), bevor man sich darauf verlässt, die übrigen bearbeiten zu können |
{
"slug": "demo-sportsbar",
"resources": [
{
"id": "table-2a",
"name": "Window table",
"type": "RestaurantTable",
"capacity": 2,
"description": "Seats up to 2. Reserved free of charge.",
"slotDurationMinutes": 120,
"pricing": {
"model": "Free",
"amount": 0,
"currency": "EUR",
"depositAmount": null,
"minimumSpend": null,
"unitLabel": "booking"
},
"allowsFoodOrdering": true,
"slotDurationOverrideMinutes": null,
"active": true,
"seatSold": false
},
{
"id": "table-4a",
"name": "Table 4",
"type": "RestaurantTable",
"capacity": 4,
"description": "Seats up to 4. Reserved free of charge.",
"slotDurationMinutes": 120,
"pricing": {
"model": "Free",
"amount": 0,
"currency": "EUR",
"depositAmount": null,
"minimumSpend": null,
"unitLabel": "booking"
},
"allowsFoodOrdering": true,
"slotDurationOverrideMinutes": null,
"active": true,
"seatSold": false
},
{
"id": "table-4b",
"name": "Table 7",
"type": "RestaurantTable",
"capacity": 4,
"description": "Seats up to 4. Reserved free of charge.",
"slotDurationMinutes": 120,
"pricing": {
"model": "Free",
"amount": 0,
"currency": "EUR",
"depositAmount": null,
"minimumSpend": null,
"unitLabel": "booking"
},
"allowsFoodOrdering": true,
"slotDurationOverrideMinutes": null,
"active": true,
"seatSold": false
}
]
}Fehler – 404 keine Location mit diesem Slug.
curl
curl "https://api.bookdineplay.com/api/venues/your-venue/resources" \
-H "X-BookDinePlay-Key: bdp_pk_your_publishable_key" \
-H "Origin: https://www.your-venue.example"JavaScript
const { resources } = await (await fetch('https://api.bookdineplay.com/api/venues/your-venue/resources', {
headers: { 'X-BookDinePlay-Key': 'bdp_pk_your_publishable_key' }
})).json();
const lanes = resources.filter(r => r.type === 'BowlingLane');C#
var resources = await client.GetResourcesAsync("your-venue", cancellationToken);Nächste Schritte
- Venue – die übrigen fünf Lesezugriffe dieser Location.
- Verfügbarkeit – aus einem Ressourcentyp buchbare Slots machen.
- .NET-SDK – derselbe Lesezugriff als typisierte Methode.