curl --request POST \
--url https://api-dev.myrestoo.net/v3/availability/bookings/{date}/{time} \
--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",
"customerUuid": "0199ce9adaab7327bda33ef9f75c123",
"excludeBookingUuid": "50b5571be67b477baa9dead4b290c555",
"promoCode": "promo2x1",
"redemptionCode": "ABC123",
"floorPlanAreaId": 123,
"highChairs": 1,
"addOns": [
{
"id": 101,
"quantity": 1
}
],
"strollers": 1
}
'import requests
url = "https://api-dev.myrestoo.net/v3/availability/bookings/{date}/{time}"
payload = {
"paxChildren": 0,
"pax": 2,
"status": "CONFIRMED",
"customerUuid": "0199ce9adaab7327bda33ef9f75c123",
"excludeBookingUuid": "50b5571be67b477baa9dead4b290c555",
"promoCode": "promo2x1",
"redemptionCode": "ABC123",
"floorPlanAreaId": 123,
"highChairs": 1,
"addOns": [
{
"id": 101,
"quantity": 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',
customerUuid: '0199ce9adaab7327bda33ef9f75c123',
excludeBookingUuid: '50b5571be67b477baa9dead4b290c555',
promoCode: 'promo2x1',
redemptionCode: 'ABC123',
floorPlanAreaId: 123,
highChairs: 1,
addOns: [{id: 101, quantity: 1}],
strollers: 1
})
};
fetch('https://api-dev.myrestoo.net/v3/availability/bookings/{date}/{time}', 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/bookings/{date}/{time}",
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',
'customerUuid' => '0199ce9adaab7327bda33ef9f75c123',
'excludeBookingUuid' => '50b5571be67b477baa9dead4b290c555',
'promoCode' => 'promo2x1',
'redemptionCode' => 'ABC123',
'floorPlanAreaId' => 123,
'highChairs' => 1,
'addOns' => [
[
'id' => 101,
'quantity' => 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/bookings/{date}/{time}"
payload := strings.NewReader("{\n \"paxChildren\": 0,\n \"pax\": 2,\n \"status\": \"CONFIRMED\",\n \"customerUuid\": \"0199ce9adaab7327bda33ef9f75c123\",\n \"excludeBookingUuid\": \"50b5571be67b477baa9dead4b290c555\",\n \"promoCode\": \"promo2x1\",\n \"redemptionCode\": \"ABC123\",\n \"floorPlanAreaId\": 123,\n \"highChairs\": 1,\n \"addOns\": [\n {\n \"id\": 101,\n \"quantity\": 1\n }\n ],\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/bookings/{date}/{time}")
.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 \"customerUuid\": \"0199ce9adaab7327bda33ef9f75c123\",\n \"excludeBookingUuid\": \"50b5571be67b477baa9dead4b290c555\",\n \"promoCode\": \"promo2x1\",\n \"redemptionCode\": \"ABC123\",\n \"floorPlanAreaId\": 123,\n \"highChairs\": 1,\n \"addOns\": [\n {\n \"id\": 101,\n \"quantity\": 1\n }\n ],\n \"strollers\": 1\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-dev.myrestoo.net/v3/availability/bookings/{date}/{time}")
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 \"customerUuid\": \"0199ce9adaab7327bda33ef9f75c123\",\n \"excludeBookingUuid\": \"50b5571be67b477baa9dead4b290c555\",\n \"promoCode\": \"promo2x1\",\n \"redemptionCode\": \"ABC123\",\n \"floorPlanAreaId\": 123,\n \"highChairs\": 1,\n \"addOns\": [\n {\n \"id\": 101,\n \"quantity\": 1\n }\n ],\n \"strollers\": 1\n}"
response = http.request(request)
puts response.read_body{
"cancellationPolicyTerms": {
"lines": [
{
"type": "EXPERIENCE",
"description": "Premium Menu",
"quantity": 2,
"amount": 1000
}
],
"type": "GUARANTEE_AUTHORIZATION",
"amount": 2500,
"amountType": "PER_PAX",
"cancellationNoticeHours": 24,
"currency": "EUR",
"totalAmount": 5000
},
"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
},
"floorPlanArea": {
"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
},
"timeSlot": {
"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 Booking Availability
Validates final availability for a specific booking request and returns the applicable booking conditions, such as cancellation policies, or other requirements defined by the venue.
curl --request POST \
--url https://api-dev.myrestoo.net/v3/availability/bookings/{date}/{time} \
--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",
"customerUuid": "0199ce9adaab7327bda33ef9f75c123",
"excludeBookingUuid": "50b5571be67b477baa9dead4b290c555",
"promoCode": "promo2x1",
"redemptionCode": "ABC123",
"floorPlanAreaId": 123,
"highChairs": 1,
"addOns": [
{
"id": 101,
"quantity": 1
}
],
"strollers": 1
}
'import requests
url = "https://api-dev.myrestoo.net/v3/availability/bookings/{date}/{time}"
payload = {
"paxChildren": 0,
"pax": 2,
"status": "CONFIRMED",
"customerUuid": "0199ce9adaab7327bda33ef9f75c123",
"excludeBookingUuid": "50b5571be67b477baa9dead4b290c555",
"promoCode": "promo2x1",
"redemptionCode": "ABC123",
"floorPlanAreaId": 123,
"highChairs": 1,
"addOns": [
{
"id": 101,
"quantity": 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',
customerUuid: '0199ce9adaab7327bda33ef9f75c123',
excludeBookingUuid: '50b5571be67b477baa9dead4b290c555',
promoCode: 'promo2x1',
redemptionCode: 'ABC123',
floorPlanAreaId: 123,
highChairs: 1,
addOns: [{id: 101, quantity: 1}],
strollers: 1
})
};
fetch('https://api-dev.myrestoo.net/v3/availability/bookings/{date}/{time}', 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/bookings/{date}/{time}",
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',
'customerUuid' => '0199ce9adaab7327bda33ef9f75c123',
'excludeBookingUuid' => '50b5571be67b477baa9dead4b290c555',
'promoCode' => 'promo2x1',
'redemptionCode' => 'ABC123',
'floorPlanAreaId' => 123,
'highChairs' => 1,
'addOns' => [
[
'id' => 101,
'quantity' => 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/bookings/{date}/{time}"
payload := strings.NewReader("{\n \"paxChildren\": 0,\n \"pax\": 2,\n \"status\": \"CONFIRMED\",\n \"customerUuid\": \"0199ce9adaab7327bda33ef9f75c123\",\n \"excludeBookingUuid\": \"50b5571be67b477baa9dead4b290c555\",\n \"promoCode\": \"promo2x1\",\n \"redemptionCode\": \"ABC123\",\n \"floorPlanAreaId\": 123,\n \"highChairs\": 1,\n \"addOns\": [\n {\n \"id\": 101,\n \"quantity\": 1\n }\n ],\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/bookings/{date}/{time}")
.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 \"customerUuid\": \"0199ce9adaab7327bda33ef9f75c123\",\n \"excludeBookingUuid\": \"50b5571be67b477baa9dead4b290c555\",\n \"promoCode\": \"promo2x1\",\n \"redemptionCode\": \"ABC123\",\n \"floorPlanAreaId\": 123,\n \"highChairs\": 1,\n \"addOns\": [\n {\n \"id\": 101,\n \"quantity\": 1\n }\n ],\n \"strollers\": 1\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-dev.myrestoo.net/v3/availability/bookings/{date}/{time}")
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 \"customerUuid\": \"0199ce9adaab7327bda33ef9f75c123\",\n \"excludeBookingUuid\": \"50b5571be67b477baa9dead4b290c555\",\n \"promoCode\": \"promo2x1\",\n \"redemptionCode\": \"ABC123\",\n \"floorPlanAreaId\": 123,\n \"highChairs\": 1,\n \"addOns\": [\n {\n \"id\": 101,\n \"quantity\": 1\n }\n ],\n \"strollers\": 1\n}"
response = http.request(request)
puts response.read_body{
"cancellationPolicyTerms": {
"lines": [
{
"type": "EXPERIENCE",
"description": "Premium Menu",
"quantity": 2,
"amount": 1000
}
],
"type": "GUARANTEE_AUTHORIZATION",
"amount": 2500,
"amountType": "PER_PAX",
"cancellationNoticeHours": 24,
"currency": "EUR",
"totalAmount": 5000
},
"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
},
"floorPlanArea": {
"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
},
"timeSlot": {
"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
GetBookingAvailabilityRequest
Request payload for booking 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"
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 ID of the Floor Plan Area requested, taken from the chosen Time Slot's
floorPlanAreaId. Required when the Shift offers Floor Plan Areas open to
online booking
x >= 1123
The number of high chairs requested
x >= 01
The Shift Add-ons requested
Show child attributes
Show child attributes
The number of strollers requested
x >= 01
Response
GetBookingAvailabilityResponse
Response payload representing the availability for a Booking.
The Cancellation Policy Terms that the customer must review and accept in order to complete and confirm the Booking.
The client application must present these terms to the customer and ensure they are explicitly accepted before allowing the booking confirmation process to continue.
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 Area details.
Show child attributes
Show child attributes
The Shift details.
Show child attributes
Show child attributes
The Time Slot details.
Show child attributes
Show child attributes
The Work Day details.
Show child attributes
Show child attributes