curl --request POST \
--url https://api-dev.myrestoo.net/v3/availability/work-days/{date}/shifts/{time}/time-slots \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'Restoo-Account-Id: <restoo-account-id>' \
--header 'Restoo-Partner-Id: <restoo-partner-id>' \
--data '
{
"paxChildren": 0,
"pax": 2,
"status": "CONFIRMED",
"filters": {
"floorPlanAreaIds": [
1,
2
]
},
"customerUuid": "0199ce9adaab7327bda33ef9f75c123",
"excludeBookingUuid": "50b5571be67b477baa9dead4b290c555",
"promoCode": "promo2x1",
"redemptionCode": "ABC123",
"highChairs": 1,
"strollers": 1
}
'import requests
url = "https://api-dev.myrestoo.net/v3/availability/work-days/{date}/shifts/{time}/time-slots"
payload = {
"paxChildren": 0,
"pax": 2,
"status": "CONFIRMED",
"filters": { "floorPlanAreaIds": [1, 2] },
"customerUuid": "0199ce9adaab7327bda33ef9f75c123",
"excludeBookingUuid": "50b5571be67b477baa9dead4b290c555",
"promoCode": "promo2x1",
"redemptionCode": "ABC123",
"highChairs": 1,
"strollers": 1
}
headers = {
"Restoo-Partner-Id": "<restoo-partner-id>",
"Restoo-Account-Id": "<restoo-account-id>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'Restoo-Partner-Id': '<restoo-partner-id>',
'Restoo-Account-Id': '<restoo-account-id>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
paxChildren: 0,
pax: 2,
status: 'CONFIRMED',
filters: {floorPlanAreaIds: [1, 2]},
customerUuid: '0199ce9adaab7327bda33ef9f75c123',
excludeBookingUuid: '50b5571be67b477baa9dead4b290c555',
promoCode: 'promo2x1',
redemptionCode: 'ABC123',
highChairs: 1,
strollers: 1
})
};
fetch('https://api-dev.myrestoo.net/v3/availability/work-days/{date}/shifts/{time}/time-slots', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api-dev.myrestoo.net/v3/availability/work-days/{date}/shifts/{time}/time-slots",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'paxChildren' => 0,
'pax' => 2,
'status' => 'CONFIRMED',
'filters' => [
'floorPlanAreaIds' => [
1,
2
]
],
'customerUuid' => '0199ce9adaab7327bda33ef9f75c123',
'excludeBookingUuid' => '50b5571be67b477baa9dead4b290c555',
'promoCode' => 'promo2x1',
'redemptionCode' => 'ABC123',
'highChairs' => 1,
'strollers' => 1
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"Restoo-Account-Id: <restoo-account-id>",
"Restoo-Partner-Id: <restoo-partner-id>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api-dev.myrestoo.net/v3/availability/work-days/{date}/shifts/{time}/time-slots"
payload := strings.NewReader("{\n \"paxChildren\": 0,\n \"pax\": 2,\n \"status\": \"CONFIRMED\",\n \"filters\": {\n \"floorPlanAreaIds\": [\n 1,\n 2\n ]\n },\n \"customerUuid\": \"0199ce9adaab7327bda33ef9f75c123\",\n \"excludeBookingUuid\": \"50b5571be67b477baa9dead4b290c555\",\n \"promoCode\": \"promo2x1\",\n \"redemptionCode\": \"ABC123\",\n \"highChairs\": 1,\n \"strollers\": 1\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Restoo-Partner-Id", "<restoo-partner-id>")
req.Header.Add("Restoo-Account-Id", "<restoo-account-id>")
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api-dev.myrestoo.net/v3/availability/work-days/{date}/shifts/{time}/time-slots")
.header("Restoo-Partner-Id", "<restoo-partner-id>")
.header("Restoo-Account-Id", "<restoo-account-id>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"paxChildren\": 0,\n \"pax\": 2,\n \"status\": \"CONFIRMED\",\n \"filters\": {\n \"floorPlanAreaIds\": [\n 1,\n 2\n ]\n },\n \"customerUuid\": \"0199ce9adaab7327bda33ef9f75c123\",\n \"excludeBookingUuid\": \"50b5571be67b477baa9dead4b290c555\",\n \"promoCode\": \"promo2x1\",\n \"redemptionCode\": \"ABC123\",\n \"highChairs\": 1,\n \"strollers\": 1\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-dev.myrestoo.net/v3/availability/work-days/{date}/shifts/{time}/time-slots")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Restoo-Partner-Id"] = '<restoo-partner-id>'
request["Restoo-Account-Id"] = '<restoo-account-id>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"paxChildren\": 0,\n \"pax\": 2,\n \"status\": \"CONFIRMED\",\n \"filters\": {\n \"floorPlanAreaIds\": [\n 1,\n 2\n ]\n },\n \"customerUuid\": \"0199ce9adaab7327bda33ef9f75c123\",\n \"excludeBookingUuid\": \"50b5571be67b477baa9dead4b290c555\",\n \"promoCode\": \"promo2x1\",\n \"redemptionCode\": \"ABC123\",\n \"highChairs\": 1,\n \"strollers\": 1\n}"
response = http.request(request)
puts response.read_body{
"metadata": {
"filters": {
"floorPlanAreas": [
{
"name": "Terrace",
"summary": "<p>The beautiful terrace of our restaurant.</p>",
"images": [
{
"type": "THUMBNAIL",
"url": "https://example.com/assets/image.jpg"
}
],
"id": 101
}
]
}
},
"promo": {
"name": "Summer Discount 2025",
"id": 101
},
"availability": {
"isAvailable": false,
"outcome": "SHIFT_FULL",
"code": "TENANT_BOOKING_MAX_DATE_NOTICE_EXCEEDED",
"detail": "Bookings cannot be made more than 30 days in advance.",
"fallbackOptions": [
{
"action": "CONTACT",
"isPreferred": true
}
]
},
"accountId": "best-burger",
"addOns": [
{
"name": "Premium wine tasting",
"summary": "<p>Enjoy our best wines with your experience.</p>",
"unitPrice": 1000,
"currency": "EUR",
"id": 101
}
],
"experience": {
"name": "Premium Menu",
"summary": "<p>A 5-course premium tasting menu.</p>",
"description": "<p>Enjoy a 5-course tasting menu crafted by our head chef.</p>",
"detailsUrl": "https://example.com/experiences/premium-menu",
"images": [
{
"type": "THUMBNAIL",
"url": "https://example.com/assets/image.jpg"
}
],
"turnMinutes": 90,
"isTimeLimited": true,
"minBookingSize": 2,
"maxBookingSize": 10,
"minTicketsPerBooking": 1,
"paxPerTicket": 4,
"automaticTicketQuantity": false,
"pricePerTicket": 7500,
"minAdvanceBookingMinutes": 60,
"firstBookingTime": "18:00:00",
"lastBookingTime": "23:00:00",
"groupId": 1,
"floorPlanAreas": ":\n [\n {\n \"id\": 1,\n \"name\": \"Terrace\",\n \"summary\": \"The beautiful terrace of our restaurant.\",\n \"images\": [],\n }\n ]",
"hasAddOns": true,
"currency": "EUR",
"id": 101
},
"floorPlanAreas": [
{
"availability": {
"isAvailable": false,
"outcome": "SHIFT_FULL",
"code": "TENANT_BOOKING_MAX_DATE_NOTICE_EXCEEDED",
"detail": "Bookings cannot be made more than 30 days in advance.",
"fallbackOptions": [
{
"action": "CONTACT",
"isPreferred": true
}
]
},
"name": "Terrace",
"summary": "<p>The beautiful terrace of our restaurant.</p>",
"images": [
{
"type": "THUMBNAIL",
"url": "https://example.com/assets/image.jpg"
}
],
"id": 101
}
],
"shift": {
"type": {
"id": "LUNCH",
"name": "Lunch"
},
"firstBookingAt": "2025-03-20T20:00:00+02:00",
"lastBookingAt": "2025-03-21T01:00:00+02:00",
"hasExperiences": true,
"hasAddOns": true,
"isExperienceRequired": true
},
"timeSlots": [
{
"availability": {
"isAvailable": false,
"outcome": "SHIFT_FULL",
"code": "TENANT_BOOKING_MAX_DATE_NOTICE_EXCEEDED",
"detail": "Bookings cannot be made more than 30 days in advance.",
"fallbackOptions": [
{
"action": "CONTACT",
"isPreferred": true
}
]
},
"startAt": "2025-03-20T20:00:00+02:00",
"isTimeLimited": true,
"strollersAvailable": {
"type": "LIMITED",
"available": 3
},
"highChairsAvailable": {
"type": "LIMITED",
"available": 3
},
"experienceId": 123,
"floorPlanAreaId": 123,
"turnMinutes": 90
}
],
"workDay": {
"date": "2025-03-20"
}
}{
"type": "about:blank",
"title": "Conflict",
"status": 409,
"code": "BOOKING_IS_NOT_ON_SEATED_GROUP",
"detail": "The booking must be on the seated group status to be ended."
}{
"type": "about:blank",
"title": "Validation Error",
"status": 422,
"code": "VALIDATION_ERROR",
"detail": "The request is not valid.",
"errors": [
{
"parameter": "status",
"reason": "The selected status is invalid."
}
]
}Get Shift Availability
Retrieves availability for a specific Shift.
curl --request POST \
--url https://api-dev.myrestoo.net/v3/availability/work-days/{date}/shifts/{time}/time-slots \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'Restoo-Account-Id: <restoo-account-id>' \
--header 'Restoo-Partner-Id: <restoo-partner-id>' \
--data '
{
"paxChildren": 0,
"pax": 2,
"status": "CONFIRMED",
"filters": {
"floorPlanAreaIds": [
1,
2
]
},
"customerUuid": "0199ce9adaab7327bda33ef9f75c123",
"excludeBookingUuid": "50b5571be67b477baa9dead4b290c555",
"promoCode": "promo2x1",
"redemptionCode": "ABC123",
"highChairs": 1,
"strollers": 1
}
'import requests
url = "https://api-dev.myrestoo.net/v3/availability/work-days/{date}/shifts/{time}/time-slots"
payload = {
"paxChildren": 0,
"pax": 2,
"status": "CONFIRMED",
"filters": { "floorPlanAreaIds": [1, 2] },
"customerUuid": "0199ce9adaab7327bda33ef9f75c123",
"excludeBookingUuid": "50b5571be67b477baa9dead4b290c555",
"promoCode": "promo2x1",
"redemptionCode": "ABC123",
"highChairs": 1,
"strollers": 1
}
headers = {
"Restoo-Partner-Id": "<restoo-partner-id>",
"Restoo-Account-Id": "<restoo-account-id>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'Restoo-Partner-Id': '<restoo-partner-id>',
'Restoo-Account-Id': '<restoo-account-id>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
paxChildren: 0,
pax: 2,
status: 'CONFIRMED',
filters: {floorPlanAreaIds: [1, 2]},
customerUuid: '0199ce9adaab7327bda33ef9f75c123',
excludeBookingUuid: '50b5571be67b477baa9dead4b290c555',
promoCode: 'promo2x1',
redemptionCode: 'ABC123',
highChairs: 1,
strollers: 1
})
};
fetch('https://api-dev.myrestoo.net/v3/availability/work-days/{date}/shifts/{time}/time-slots', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api-dev.myrestoo.net/v3/availability/work-days/{date}/shifts/{time}/time-slots",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'paxChildren' => 0,
'pax' => 2,
'status' => 'CONFIRMED',
'filters' => [
'floorPlanAreaIds' => [
1,
2
]
],
'customerUuid' => '0199ce9adaab7327bda33ef9f75c123',
'excludeBookingUuid' => '50b5571be67b477baa9dead4b290c555',
'promoCode' => 'promo2x1',
'redemptionCode' => 'ABC123',
'highChairs' => 1,
'strollers' => 1
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"Restoo-Account-Id: <restoo-account-id>",
"Restoo-Partner-Id: <restoo-partner-id>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api-dev.myrestoo.net/v3/availability/work-days/{date}/shifts/{time}/time-slots"
payload := strings.NewReader("{\n \"paxChildren\": 0,\n \"pax\": 2,\n \"status\": \"CONFIRMED\",\n \"filters\": {\n \"floorPlanAreaIds\": [\n 1,\n 2\n ]\n },\n \"customerUuid\": \"0199ce9adaab7327bda33ef9f75c123\",\n \"excludeBookingUuid\": \"50b5571be67b477baa9dead4b290c555\",\n \"promoCode\": \"promo2x1\",\n \"redemptionCode\": \"ABC123\",\n \"highChairs\": 1,\n \"strollers\": 1\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Restoo-Partner-Id", "<restoo-partner-id>")
req.Header.Add("Restoo-Account-Id", "<restoo-account-id>")
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api-dev.myrestoo.net/v3/availability/work-days/{date}/shifts/{time}/time-slots")
.header("Restoo-Partner-Id", "<restoo-partner-id>")
.header("Restoo-Account-Id", "<restoo-account-id>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"paxChildren\": 0,\n \"pax\": 2,\n \"status\": \"CONFIRMED\",\n \"filters\": {\n \"floorPlanAreaIds\": [\n 1,\n 2\n ]\n },\n \"customerUuid\": \"0199ce9adaab7327bda33ef9f75c123\",\n \"excludeBookingUuid\": \"50b5571be67b477baa9dead4b290c555\",\n \"promoCode\": \"promo2x1\",\n \"redemptionCode\": \"ABC123\",\n \"highChairs\": 1,\n \"strollers\": 1\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-dev.myrestoo.net/v3/availability/work-days/{date}/shifts/{time}/time-slots")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Restoo-Partner-Id"] = '<restoo-partner-id>'
request["Restoo-Account-Id"] = '<restoo-account-id>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"paxChildren\": 0,\n \"pax\": 2,\n \"status\": \"CONFIRMED\",\n \"filters\": {\n \"floorPlanAreaIds\": [\n 1,\n 2\n ]\n },\n \"customerUuid\": \"0199ce9adaab7327bda33ef9f75c123\",\n \"excludeBookingUuid\": \"50b5571be67b477baa9dead4b290c555\",\n \"promoCode\": \"promo2x1\",\n \"redemptionCode\": \"ABC123\",\n \"highChairs\": 1,\n \"strollers\": 1\n}"
response = http.request(request)
puts response.read_body{
"metadata": {
"filters": {
"floorPlanAreas": [
{
"name": "Terrace",
"summary": "<p>The beautiful terrace of our restaurant.</p>",
"images": [
{
"type": "THUMBNAIL",
"url": "https://example.com/assets/image.jpg"
}
],
"id": 101
}
]
}
},
"promo": {
"name": "Summer Discount 2025",
"id": 101
},
"availability": {
"isAvailable": false,
"outcome": "SHIFT_FULL",
"code": "TENANT_BOOKING_MAX_DATE_NOTICE_EXCEEDED",
"detail": "Bookings cannot be made more than 30 days in advance.",
"fallbackOptions": [
{
"action": "CONTACT",
"isPreferred": true
}
]
},
"accountId": "best-burger",
"addOns": [
{
"name": "Premium wine tasting",
"summary": "<p>Enjoy our best wines with your experience.</p>",
"unitPrice": 1000,
"currency": "EUR",
"id": 101
}
],
"experience": {
"name": "Premium Menu",
"summary": "<p>A 5-course premium tasting menu.</p>",
"description": "<p>Enjoy a 5-course tasting menu crafted by our head chef.</p>",
"detailsUrl": "https://example.com/experiences/premium-menu",
"images": [
{
"type": "THUMBNAIL",
"url": "https://example.com/assets/image.jpg"
}
],
"turnMinutes": 90,
"isTimeLimited": true,
"minBookingSize": 2,
"maxBookingSize": 10,
"minTicketsPerBooking": 1,
"paxPerTicket": 4,
"automaticTicketQuantity": false,
"pricePerTicket": 7500,
"minAdvanceBookingMinutes": 60,
"firstBookingTime": "18:00:00",
"lastBookingTime": "23:00:00",
"groupId": 1,
"floorPlanAreas": ":\n [\n {\n \"id\": 1,\n \"name\": \"Terrace\",\n \"summary\": \"The beautiful terrace of our restaurant.\",\n \"images\": [],\n }\n ]",
"hasAddOns": true,
"currency": "EUR",
"id": 101
},
"floorPlanAreas": [
{
"availability": {
"isAvailable": false,
"outcome": "SHIFT_FULL",
"code": "TENANT_BOOKING_MAX_DATE_NOTICE_EXCEEDED",
"detail": "Bookings cannot be made more than 30 days in advance.",
"fallbackOptions": [
{
"action": "CONTACT",
"isPreferred": true
}
]
},
"name": "Terrace",
"summary": "<p>The beautiful terrace of our restaurant.</p>",
"images": [
{
"type": "THUMBNAIL",
"url": "https://example.com/assets/image.jpg"
}
],
"id": 101
}
],
"shift": {
"type": {
"id": "LUNCH",
"name": "Lunch"
},
"firstBookingAt": "2025-03-20T20:00:00+02:00",
"lastBookingAt": "2025-03-21T01:00:00+02:00",
"hasExperiences": true,
"hasAddOns": true,
"isExperienceRequired": true
},
"timeSlots": [
{
"availability": {
"isAvailable": false,
"outcome": "SHIFT_FULL",
"code": "TENANT_BOOKING_MAX_DATE_NOTICE_EXCEEDED",
"detail": "Bookings cannot be made more than 30 days in advance.",
"fallbackOptions": [
{
"action": "CONTACT",
"isPreferred": true
}
]
},
"startAt": "2025-03-20T20:00:00+02:00",
"isTimeLimited": true,
"strollersAvailable": {
"type": "LIMITED",
"available": 3
},
"highChairsAvailable": {
"type": "LIMITED",
"available": 3
},
"experienceId": 123,
"floorPlanAreaId": 123,
"turnMinutes": 90
}
],
"workDay": {
"date": "2025-03-20"
}
}{
"type": "about:blank",
"title": "Conflict",
"status": 409,
"code": "BOOKING_IS_NOT_ON_SEATED_GROUP",
"detail": "The booking must be on the seated group status to be ended."
}{
"type": "about:blank",
"title": "Validation Error",
"status": 422,
"code": "VALIDATION_ERROR",
"detail": "The request is not valid.",
"errors": [
{
"parameter": "status",
"reason": "The selected status is invalid."
}
]
}Authorizations
All requests must include the static API Key in the Authorization header using the Bearer scheme.
Headers
Unique identifier of your Partner account (defined by Restoo).
Path Parameters
The date for the availability search in ISO 8601 format (YYYY-MM-DD)
"2025-03-20"
The time for the availability search in ISO 8601 format (HH:MM:SS)
"22:30:00"
Body
GetShiftAvailabilityRequest
Request payload for shift availability query.
The number of children in the Booking. Available only if the Tenant setting for differentiating adults and children is enabled
0 <= x <= 1000
The number of people (or adults, depending on Tenant settings) in the Booking
1 <= x <= 1002
Desired status of the Booking.
This value determines how availability should be evaluated and how the Booking should be handled if created.
CONFIRMED— The Booking should be immediately confirmed.REQUESTED— The Booking requires manual review and confirmation by the venue.PENDING_WAIT_LIST_BOOKING— The customer wishes to join the wait list and may be confirmed if availability becomes available.
Availability requests should initially be performed using the CONFIRMED status.
If no availability is found, alternative statuses may be offered depending on
the availability result and venue configuration.
Not all statuses are available for every availability request
REQUESTED, PENDING_MERCHANT_CONFIRMATION, PENDING_WAIT_LIST_BOOKING, CONFIRMED, WAIT_LIST_WALK_IN, ARRIVED, SEATED, DESSERTS, ACCOUNT_SENT, ACCOUNT_PAID, ATTENDED, CANCELED, NO_SHOW, DECLINED_BY_MERCHANT, DELETED "CONFIRMED"
Filters to apply on the shift availability request.
Show child attributes
Show child attributes
The Customer UUID.
Include this field only to associate the request with an existing Customer in Restoo
"0199ce9adaab7327bda33ef9f75c123"
UUID of the Booking to be excluded from the availability search. Required only when updating an existing Booking
"50b5571be67b477baa9dead4b290c555"
The promotion code requested for the reservation
6 - 255"promo2x1"
The alphanumeric code to redeem the purchased Product
6"ABC123"
The Experience requested
Show child attributes
Show child attributes
The number of high chairs requested
x >= 01
The number of strollers requested
x >= 01
Response
GetShiftAvailabilityResponse
Response payload representing the availability a Shift.
Metadata returned with the shift availability response.
Show child attributes
Show child attributes
The Promo applied during the availability request, if any.
If null, no Promo was applied or no valid Promo was detected.
Show child attributes
Show child attributes
The Availability details for the request.
Show child attributes
Show child attributes
The unique Restoo Account identifier for the Tenant
"best-burger"
The Add-ons sent in the request, resolved with their current name, price and currency, and localized. Empty means none were requested, not that none exist.
Get Booking Availability flattens both levels, the Shift's and the Experience's. The other responses carry only the Experience's
Show child attributes
Show child attributes
The Experience details.
Show child attributes
Show child attributes
The Floor Plan Areas of the Shift. An area can appear here and still have no
bookable times of its own in timeSlots
Show child attributes
Show child attributes
The Shift details.
Show child attributes
Show child attributes
The bookable Time Slots, one entry per combination of start time and Floor Plan
Area. startAt is not unique: the same time comes back once per area, each entry
with its own availability and floorPlanAreaId
Show child attributes
Show child attributes
The Work Day details.
Show child attributes
Show child attributes