curl --request PUT \
--url https://api-dev.myrestoo.net/v3/bookings/{bookingUuid} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'Restoo-Account-Id: <restoo-account-id>' \
--header 'Restoo-Partner-Id: <restoo-partner-id>' \
--data '
{
"customer": {
"hasGdprConsent": true,
"acceptsMarketing": true,
"name": "Steve Jobs",
"birthDate": "1979-03-20",
"postalCode": "28045",
"language": "en",
"country": "ES",
"uuid": "50b5571be67b477baa9dead4b290c555",
"email": "steve.jobs@restoo.me",
"phone": "+34600111222"
},
"date": "2025-03-20",
"time": "22:30:00",
"paxChildren": 0,
"pax": 2,
"status": "CONFIRMED",
"floorPlanAreaId": 123,
"experience": {
"tickets": 2,
"id": 101,
"addOns": [
{
"id": 101,
"quantity": 1
}
]
},
"customerSpecialRequests": "Table near the window",
"hasAllergies": true,
"allergiesDescription": "Peanuts, shellfish, lactose intolerance",
"specialOccasion": "BIRTHDAY",
"needsAccessibleSeating": true,
"hotelRoom": "Room 305",
"redemptionCode": "ABC123",
"promoCode": "promo2x1",
"highChairs": 1,
"addOns": [
{
"id": 101,
"quantity": 1
}
],
"strollers": 1
}
'import requests
url = "https://api-dev.myrestoo.net/v3/bookings/{bookingUuid}"
payload = {
"customer": {
"hasGdprConsent": True,
"acceptsMarketing": True,
"name": "Steve Jobs",
"birthDate": "1979-03-20",
"postalCode": "28045",
"language": "en",
"country": "ES",
"uuid": "50b5571be67b477baa9dead4b290c555",
"email": "steve.jobs@restoo.me",
"phone": "+34600111222"
},
"date": "2025-03-20",
"time": "22:30:00",
"paxChildren": 0,
"pax": 2,
"status": "CONFIRMED",
"floorPlanAreaId": 123,
"experience": {
"tickets": 2,
"id": 101,
"addOns": [
{
"id": 101,
"quantity": 1
}
]
},
"customerSpecialRequests": "Table near the window",
"hasAllergies": True,
"allergiesDescription": "Peanuts, shellfish, lactose intolerance",
"specialOccasion": "BIRTHDAY",
"needsAccessibleSeating": True,
"hotelRoom": "Room 305",
"redemptionCode": "ABC123",
"promoCode": "promo2x1",
"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.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {
'Restoo-Partner-Id': '<restoo-partner-id>',
'Restoo-Account-Id': '<restoo-account-id>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
customer: {
hasGdprConsent: true,
acceptsMarketing: true,
name: 'Steve Jobs',
birthDate: '1979-03-20',
postalCode: '28045',
language: 'en',
country: 'ES',
uuid: '50b5571be67b477baa9dead4b290c555',
email: 'steve.jobs@restoo.me',
phone: '+34600111222'
},
date: '2025-03-20',
time: '22:30:00',
paxChildren: 0,
pax: 2,
status: 'CONFIRMED',
floorPlanAreaId: 123,
experience: {tickets: 2, id: 101, addOns: [{id: 101, quantity: 1}]},
customerSpecialRequests: 'Table near the window',
hasAllergies: true,
allergiesDescription: 'Peanuts, shellfish, lactose intolerance',
specialOccasion: 'BIRTHDAY',
needsAccessibleSeating: true,
hotelRoom: 'Room 305',
redemptionCode: 'ABC123',
promoCode: 'promo2x1',
highChairs: 1,
addOns: [{id: 101, quantity: 1}],
strollers: 1
})
};
fetch('https://api-dev.myrestoo.net/v3/bookings/{bookingUuid}', 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/bookings/{bookingUuid}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'customer' => [
'hasGdprConsent' => true,
'acceptsMarketing' => true,
'name' => 'Steve Jobs',
'birthDate' => '1979-03-20',
'postalCode' => '28045',
'language' => 'en',
'country' => 'ES',
'uuid' => '50b5571be67b477baa9dead4b290c555',
'email' => 'steve.jobs@restoo.me',
'phone' => '+34600111222'
],
'date' => '2025-03-20',
'time' => '22:30:00',
'paxChildren' => 0,
'pax' => 2,
'status' => 'CONFIRMED',
'floorPlanAreaId' => 123,
'experience' => [
'tickets' => 2,
'id' => 101,
'addOns' => [
[
'id' => 101,
'quantity' => 1
]
]
],
'customerSpecialRequests' => 'Table near the window',
'hasAllergies' => true,
'allergiesDescription' => 'Peanuts, shellfish, lactose intolerance',
'specialOccasion' => 'BIRTHDAY',
'needsAccessibleSeating' => true,
'hotelRoom' => 'Room 305',
'redemptionCode' => 'ABC123',
'promoCode' => 'promo2x1',
'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/bookings/{bookingUuid}"
payload := strings.NewReader("{\n \"customer\": {\n \"hasGdprConsent\": true,\n \"acceptsMarketing\": true,\n \"name\": \"Steve Jobs\",\n \"birthDate\": \"1979-03-20\",\n \"postalCode\": \"28045\",\n \"language\": \"en\",\n \"country\": \"ES\",\n \"uuid\": \"50b5571be67b477baa9dead4b290c555\",\n \"email\": \"steve.jobs@restoo.me\",\n \"phone\": \"+34600111222\"\n },\n \"date\": \"2025-03-20\",\n \"time\": \"22:30:00\",\n \"paxChildren\": 0,\n \"pax\": 2,\n \"status\": \"CONFIRMED\",\n \"floorPlanAreaId\": 123,\n \"experience\": {\n \"tickets\": 2,\n \"id\": 101,\n \"addOns\": [\n {\n \"id\": 101,\n \"quantity\": 1\n }\n ]\n },\n \"customerSpecialRequests\": \"Table near the window\",\n \"hasAllergies\": true,\n \"allergiesDescription\": \"Peanuts, shellfish, lactose intolerance\",\n \"specialOccasion\": \"BIRTHDAY\",\n \"needsAccessibleSeating\": true,\n \"hotelRoom\": \"Room 305\",\n \"redemptionCode\": \"ABC123\",\n \"promoCode\": \"promo2x1\",\n \"highChairs\": 1,\n \"addOns\": [\n {\n \"id\": 101,\n \"quantity\": 1\n }\n ],\n \"strollers\": 1\n}")
req, _ := http.NewRequest("PUT", 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.put("https://api-dev.myrestoo.net/v3/bookings/{bookingUuid}")
.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 \"customer\": {\n \"hasGdprConsent\": true,\n \"acceptsMarketing\": true,\n \"name\": \"Steve Jobs\",\n \"birthDate\": \"1979-03-20\",\n \"postalCode\": \"28045\",\n \"language\": \"en\",\n \"country\": \"ES\",\n \"uuid\": \"50b5571be67b477baa9dead4b290c555\",\n \"email\": \"steve.jobs@restoo.me\",\n \"phone\": \"+34600111222\"\n },\n \"date\": \"2025-03-20\",\n \"time\": \"22:30:00\",\n \"paxChildren\": 0,\n \"pax\": 2,\n \"status\": \"CONFIRMED\",\n \"floorPlanAreaId\": 123,\n \"experience\": {\n \"tickets\": 2,\n \"id\": 101,\n \"addOns\": [\n {\n \"id\": 101,\n \"quantity\": 1\n }\n ]\n },\n \"customerSpecialRequests\": \"Table near the window\",\n \"hasAllergies\": true,\n \"allergiesDescription\": \"Peanuts, shellfish, lactose intolerance\",\n \"specialOccasion\": \"BIRTHDAY\",\n \"needsAccessibleSeating\": true,\n \"hotelRoom\": \"Room 305\",\n \"redemptionCode\": \"ABC123\",\n \"promoCode\": \"promo2x1\",\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/bookings/{bookingUuid}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.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 \"customer\": {\n \"hasGdprConsent\": true,\n \"acceptsMarketing\": true,\n \"name\": \"Steve Jobs\",\n \"birthDate\": \"1979-03-20\",\n \"postalCode\": \"28045\",\n \"language\": \"en\",\n \"country\": \"ES\",\n \"uuid\": \"50b5571be67b477baa9dead4b290c555\",\n \"email\": \"steve.jobs@restoo.me\",\n \"phone\": \"+34600111222\"\n },\n \"date\": \"2025-03-20\",\n \"time\": \"22:30:00\",\n \"paxChildren\": 0,\n \"pax\": 2,\n \"status\": \"CONFIRMED\",\n \"floorPlanAreaId\": 123,\n \"experience\": {\n \"tickets\": 2,\n \"id\": 101,\n \"addOns\": [\n {\n \"id\": 101,\n \"quantity\": 1\n }\n ]\n },\n \"customerSpecialRequests\": \"Table near the window\",\n \"hasAllergies\": true,\n \"allergiesDescription\": \"Peanuts, shellfish, lactose intolerance\",\n \"specialOccasion\": \"BIRTHDAY\",\n \"needsAccessibleSeating\": true,\n \"hotelRoom\": \"Room 305\",\n \"redemptionCode\": \"ABC123\",\n \"promoCode\": \"promo2x1\",\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{
"redirectUrl": "https://example.com/widget/?view=reservation/confirmed&uuid=...",
"privateNotes": "Customer requested a table near the window.",
"quotedWaitMinutes": 15,
"isWalkIn": true,
"hasFixedTables": false,
"isHighlighted": false,
"channel": "API",
"ticketPartner": "DEFAULT",
"ticketExternalId": "POS-98234",
"ticketTotalAmount": 12500,
"tableReadyAt": "2025-03-20T20:15:00+02:00",
"arrivedAt": "2025-03-20T20:25:00+02:00",
"seatedAt": "2025-03-20T20:30:00+02:00",
"endedAt": "2025-03-20T22:15:00+02:00",
"ip": "192.168.0.25",
"customer": {
"privateNotes": "Customer prefers a table near the terrace.",
"visitFrequency": 30,
"averageOrderAmountPerPax": 4500,
"bookingReputation": 0.85,
"bookingsCount": 25,
"visitsCount": 18,
"cancellationsCount": 3,
"noShowsCount": 2,
"firstVisitAt": "2023-05-10T20:00:00+02:00",
"lastVisitAt": "2025-03-15T21:30:00+02:00",
"firstCancellationAt": "2024-09-12T19:00:00+02:00",
"nextVisitScheduledAt": "2025-04-05T22:00:00+02:00",
"tags": [
{
"id": 1,
"name": "VIP",
"color": "#FF5733"
}
],
"uuid": "50b5571be67b477baa9dead4b290c555",
"email": "steve.jobs@restoo.me",
"phone": "+34600111222",
"birthDate": "1979-03-20",
"postalCode": "28045",
"isVip": true,
"isBusiness": false,
"language": "en",
"acceptsImportantAlerts": true,
"hasGdprConsent": true,
"acceptsMarketing": true,
"country": "ES",
"name": "Steve Jobs"
},
"tables": [
{
"name": "T101",
"floorPlanAreaId": 12,
"posId": "POS-T101",
"id": 101
}
],
"uuid": "50b5571be67b477baa9dead4b290c555",
"bookingAt": "2025-03-20T23:00:00+02:00",
"status": "CONFIRMED",
"isTimeLimited": true,
"customerSpecialRequests": "Table near the window",
"hasAllergies": true,
"allergiesDescription": "Peanuts, shellfish, lactose intolerance",
"specialOccasion": "BIRTHDAY",
"needsAccessibleSeating": true,
"hotelRoom": "Room 305",
"publicNotes": "Your reservation includes a birthday cake.",
"isReconfirmed": true,
"isReconfirmedByCustomer": false,
"cancelReason": "CHANGED_PLANS",
"bookingPartner": "GOOGLE",
"bookingExternalId": "book_123456",
"shiftType": {
"id": "LUNCH",
"name": "Lunch"
},
"floorPlanArea": {
"name": "Terrace",
"id": 101
},
"promo": {
"name": "Summer Discount 2025",
"id": 101
},
"product": {
"orderItemId": 101,
"orderUuid": "50b5571be67b477baa9dead4b290c555",
"currency": "EUR",
"experienceTickets": 1,
"id": 101,
"isGift": true,
"name": "Gift Card",
"quantity": 1,
"taxRate": 1050,
"type": "ITEM",
"unitPrice": 7500
},
"experience": {
"tickets": 1,
"discount": 10.5,
"experienceId": 123,
"name": "Premium Menu",
"pricePerTicket": 7500,
"currency": "EUR",
"id": 101
},
"cancellationPolicy": {
"status": "PENDING_SIGNATURE",
"signDeadlineAt": "2025-03-20T22:00:00+02:00",
"signedAt": "2025-03-20T21:35:10+02:00",
"signedFromIp": "203.0.113.10",
"endedAt": "2025-03-21T23:59:59+02:00",
"endedBy": "GUEST",
"chargeStatus": "SUCCEEDED",
"refundStatus": null,
"type": "GUARANTEE_AUTHORIZATION",
"amount": 2500,
"amountType": "PER_PAX",
"cancellationNoticeHours": 24,
"currency": "EUR",
"cancellationFeeAmount": 5000,
"chargedAmount": 5000,
"guaranteedPax": 2,
"id": 101,
"refundedAmount": 0
},
"addOns": [
{
"addOnId": 123,
"name": "Premium wine tasting",
"unitPrice": 1000,
"currency": "EUR",
"id": 101,
"quantity": 1
}
],
"accountId": "best-burger",
"highChairs": 1,
"paxChildren": 0,
"pax": 2,
"strollers": 1,
"turnMinutes": 90,
"createdAt": "2025-03-20T18:45:00+02:00",
"updatedAt": "2025-03-21T09:30:00+02:00"
}{
"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."
}
]
}Update Booking
Updates an existing Booking with the provided details.
curl --request PUT \
--url https://api-dev.myrestoo.net/v3/bookings/{bookingUuid} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'Restoo-Account-Id: <restoo-account-id>' \
--header 'Restoo-Partner-Id: <restoo-partner-id>' \
--data '
{
"customer": {
"hasGdprConsent": true,
"acceptsMarketing": true,
"name": "Steve Jobs",
"birthDate": "1979-03-20",
"postalCode": "28045",
"language": "en",
"country": "ES",
"uuid": "50b5571be67b477baa9dead4b290c555",
"email": "steve.jobs@restoo.me",
"phone": "+34600111222"
},
"date": "2025-03-20",
"time": "22:30:00",
"paxChildren": 0,
"pax": 2,
"status": "CONFIRMED",
"floorPlanAreaId": 123,
"experience": {
"tickets": 2,
"id": 101,
"addOns": [
{
"id": 101,
"quantity": 1
}
]
},
"customerSpecialRequests": "Table near the window",
"hasAllergies": true,
"allergiesDescription": "Peanuts, shellfish, lactose intolerance",
"specialOccasion": "BIRTHDAY",
"needsAccessibleSeating": true,
"hotelRoom": "Room 305",
"redemptionCode": "ABC123",
"promoCode": "promo2x1",
"highChairs": 1,
"addOns": [
{
"id": 101,
"quantity": 1
}
],
"strollers": 1
}
'import requests
url = "https://api-dev.myrestoo.net/v3/bookings/{bookingUuid}"
payload = {
"customer": {
"hasGdprConsent": True,
"acceptsMarketing": True,
"name": "Steve Jobs",
"birthDate": "1979-03-20",
"postalCode": "28045",
"language": "en",
"country": "ES",
"uuid": "50b5571be67b477baa9dead4b290c555",
"email": "steve.jobs@restoo.me",
"phone": "+34600111222"
},
"date": "2025-03-20",
"time": "22:30:00",
"paxChildren": 0,
"pax": 2,
"status": "CONFIRMED",
"floorPlanAreaId": 123,
"experience": {
"tickets": 2,
"id": 101,
"addOns": [
{
"id": 101,
"quantity": 1
}
]
},
"customerSpecialRequests": "Table near the window",
"hasAllergies": True,
"allergiesDescription": "Peanuts, shellfish, lactose intolerance",
"specialOccasion": "BIRTHDAY",
"needsAccessibleSeating": True,
"hotelRoom": "Room 305",
"redemptionCode": "ABC123",
"promoCode": "promo2x1",
"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.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {
'Restoo-Partner-Id': '<restoo-partner-id>',
'Restoo-Account-Id': '<restoo-account-id>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
customer: {
hasGdprConsent: true,
acceptsMarketing: true,
name: 'Steve Jobs',
birthDate: '1979-03-20',
postalCode: '28045',
language: 'en',
country: 'ES',
uuid: '50b5571be67b477baa9dead4b290c555',
email: 'steve.jobs@restoo.me',
phone: '+34600111222'
},
date: '2025-03-20',
time: '22:30:00',
paxChildren: 0,
pax: 2,
status: 'CONFIRMED',
floorPlanAreaId: 123,
experience: {tickets: 2, id: 101, addOns: [{id: 101, quantity: 1}]},
customerSpecialRequests: 'Table near the window',
hasAllergies: true,
allergiesDescription: 'Peanuts, shellfish, lactose intolerance',
specialOccasion: 'BIRTHDAY',
needsAccessibleSeating: true,
hotelRoom: 'Room 305',
redemptionCode: 'ABC123',
promoCode: 'promo2x1',
highChairs: 1,
addOns: [{id: 101, quantity: 1}],
strollers: 1
})
};
fetch('https://api-dev.myrestoo.net/v3/bookings/{bookingUuid}', 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/bookings/{bookingUuid}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'customer' => [
'hasGdprConsent' => true,
'acceptsMarketing' => true,
'name' => 'Steve Jobs',
'birthDate' => '1979-03-20',
'postalCode' => '28045',
'language' => 'en',
'country' => 'ES',
'uuid' => '50b5571be67b477baa9dead4b290c555',
'email' => 'steve.jobs@restoo.me',
'phone' => '+34600111222'
],
'date' => '2025-03-20',
'time' => '22:30:00',
'paxChildren' => 0,
'pax' => 2,
'status' => 'CONFIRMED',
'floorPlanAreaId' => 123,
'experience' => [
'tickets' => 2,
'id' => 101,
'addOns' => [
[
'id' => 101,
'quantity' => 1
]
]
],
'customerSpecialRequests' => 'Table near the window',
'hasAllergies' => true,
'allergiesDescription' => 'Peanuts, shellfish, lactose intolerance',
'specialOccasion' => 'BIRTHDAY',
'needsAccessibleSeating' => true,
'hotelRoom' => 'Room 305',
'redemptionCode' => 'ABC123',
'promoCode' => 'promo2x1',
'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/bookings/{bookingUuid}"
payload := strings.NewReader("{\n \"customer\": {\n \"hasGdprConsent\": true,\n \"acceptsMarketing\": true,\n \"name\": \"Steve Jobs\",\n \"birthDate\": \"1979-03-20\",\n \"postalCode\": \"28045\",\n \"language\": \"en\",\n \"country\": \"ES\",\n \"uuid\": \"50b5571be67b477baa9dead4b290c555\",\n \"email\": \"steve.jobs@restoo.me\",\n \"phone\": \"+34600111222\"\n },\n \"date\": \"2025-03-20\",\n \"time\": \"22:30:00\",\n \"paxChildren\": 0,\n \"pax\": 2,\n \"status\": \"CONFIRMED\",\n \"floorPlanAreaId\": 123,\n \"experience\": {\n \"tickets\": 2,\n \"id\": 101,\n \"addOns\": [\n {\n \"id\": 101,\n \"quantity\": 1\n }\n ]\n },\n \"customerSpecialRequests\": \"Table near the window\",\n \"hasAllergies\": true,\n \"allergiesDescription\": \"Peanuts, shellfish, lactose intolerance\",\n \"specialOccasion\": \"BIRTHDAY\",\n \"needsAccessibleSeating\": true,\n \"hotelRoom\": \"Room 305\",\n \"redemptionCode\": \"ABC123\",\n \"promoCode\": \"promo2x1\",\n \"highChairs\": 1,\n \"addOns\": [\n {\n \"id\": 101,\n \"quantity\": 1\n }\n ],\n \"strollers\": 1\n}")
req, _ := http.NewRequest("PUT", 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.put("https://api-dev.myrestoo.net/v3/bookings/{bookingUuid}")
.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 \"customer\": {\n \"hasGdprConsent\": true,\n \"acceptsMarketing\": true,\n \"name\": \"Steve Jobs\",\n \"birthDate\": \"1979-03-20\",\n \"postalCode\": \"28045\",\n \"language\": \"en\",\n \"country\": \"ES\",\n \"uuid\": \"50b5571be67b477baa9dead4b290c555\",\n \"email\": \"steve.jobs@restoo.me\",\n \"phone\": \"+34600111222\"\n },\n \"date\": \"2025-03-20\",\n \"time\": \"22:30:00\",\n \"paxChildren\": 0,\n \"pax\": 2,\n \"status\": \"CONFIRMED\",\n \"floorPlanAreaId\": 123,\n \"experience\": {\n \"tickets\": 2,\n \"id\": 101,\n \"addOns\": [\n {\n \"id\": 101,\n \"quantity\": 1\n }\n ]\n },\n \"customerSpecialRequests\": \"Table near the window\",\n \"hasAllergies\": true,\n \"allergiesDescription\": \"Peanuts, shellfish, lactose intolerance\",\n \"specialOccasion\": \"BIRTHDAY\",\n \"needsAccessibleSeating\": true,\n \"hotelRoom\": \"Room 305\",\n \"redemptionCode\": \"ABC123\",\n \"promoCode\": \"promo2x1\",\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/bookings/{bookingUuid}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.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 \"customer\": {\n \"hasGdprConsent\": true,\n \"acceptsMarketing\": true,\n \"name\": \"Steve Jobs\",\n \"birthDate\": \"1979-03-20\",\n \"postalCode\": \"28045\",\n \"language\": \"en\",\n \"country\": \"ES\",\n \"uuid\": \"50b5571be67b477baa9dead4b290c555\",\n \"email\": \"steve.jobs@restoo.me\",\n \"phone\": \"+34600111222\"\n },\n \"date\": \"2025-03-20\",\n \"time\": \"22:30:00\",\n \"paxChildren\": 0,\n \"pax\": 2,\n \"status\": \"CONFIRMED\",\n \"floorPlanAreaId\": 123,\n \"experience\": {\n \"tickets\": 2,\n \"id\": 101,\n \"addOns\": [\n {\n \"id\": 101,\n \"quantity\": 1\n }\n ]\n },\n \"customerSpecialRequests\": \"Table near the window\",\n \"hasAllergies\": true,\n \"allergiesDescription\": \"Peanuts, shellfish, lactose intolerance\",\n \"specialOccasion\": \"BIRTHDAY\",\n \"needsAccessibleSeating\": true,\n \"hotelRoom\": \"Room 305\",\n \"redemptionCode\": \"ABC123\",\n \"promoCode\": \"promo2x1\",\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{
"redirectUrl": "https://example.com/widget/?view=reservation/confirmed&uuid=...",
"privateNotes": "Customer requested a table near the window.",
"quotedWaitMinutes": 15,
"isWalkIn": true,
"hasFixedTables": false,
"isHighlighted": false,
"channel": "API",
"ticketPartner": "DEFAULT",
"ticketExternalId": "POS-98234",
"ticketTotalAmount": 12500,
"tableReadyAt": "2025-03-20T20:15:00+02:00",
"arrivedAt": "2025-03-20T20:25:00+02:00",
"seatedAt": "2025-03-20T20:30:00+02:00",
"endedAt": "2025-03-20T22:15:00+02:00",
"ip": "192.168.0.25",
"customer": {
"privateNotes": "Customer prefers a table near the terrace.",
"visitFrequency": 30,
"averageOrderAmountPerPax": 4500,
"bookingReputation": 0.85,
"bookingsCount": 25,
"visitsCount": 18,
"cancellationsCount": 3,
"noShowsCount": 2,
"firstVisitAt": "2023-05-10T20:00:00+02:00",
"lastVisitAt": "2025-03-15T21:30:00+02:00",
"firstCancellationAt": "2024-09-12T19:00:00+02:00",
"nextVisitScheduledAt": "2025-04-05T22:00:00+02:00",
"tags": [
{
"id": 1,
"name": "VIP",
"color": "#FF5733"
}
],
"uuid": "50b5571be67b477baa9dead4b290c555",
"email": "steve.jobs@restoo.me",
"phone": "+34600111222",
"birthDate": "1979-03-20",
"postalCode": "28045",
"isVip": true,
"isBusiness": false,
"language": "en",
"acceptsImportantAlerts": true,
"hasGdprConsent": true,
"acceptsMarketing": true,
"country": "ES",
"name": "Steve Jobs"
},
"tables": [
{
"name": "T101",
"floorPlanAreaId": 12,
"posId": "POS-T101",
"id": 101
}
],
"uuid": "50b5571be67b477baa9dead4b290c555",
"bookingAt": "2025-03-20T23:00:00+02:00",
"status": "CONFIRMED",
"isTimeLimited": true,
"customerSpecialRequests": "Table near the window",
"hasAllergies": true,
"allergiesDescription": "Peanuts, shellfish, lactose intolerance",
"specialOccasion": "BIRTHDAY",
"needsAccessibleSeating": true,
"hotelRoom": "Room 305",
"publicNotes": "Your reservation includes a birthday cake.",
"isReconfirmed": true,
"isReconfirmedByCustomer": false,
"cancelReason": "CHANGED_PLANS",
"bookingPartner": "GOOGLE",
"bookingExternalId": "book_123456",
"shiftType": {
"id": "LUNCH",
"name": "Lunch"
},
"floorPlanArea": {
"name": "Terrace",
"id": 101
},
"promo": {
"name": "Summer Discount 2025",
"id": 101
},
"product": {
"orderItemId": 101,
"orderUuid": "50b5571be67b477baa9dead4b290c555",
"currency": "EUR",
"experienceTickets": 1,
"id": 101,
"isGift": true,
"name": "Gift Card",
"quantity": 1,
"taxRate": 1050,
"type": "ITEM",
"unitPrice": 7500
},
"experience": {
"tickets": 1,
"discount": 10.5,
"experienceId": 123,
"name": "Premium Menu",
"pricePerTicket": 7500,
"currency": "EUR",
"id": 101
},
"cancellationPolicy": {
"status": "PENDING_SIGNATURE",
"signDeadlineAt": "2025-03-20T22:00:00+02:00",
"signedAt": "2025-03-20T21:35:10+02:00",
"signedFromIp": "203.0.113.10",
"endedAt": "2025-03-21T23:59:59+02:00",
"endedBy": "GUEST",
"chargeStatus": "SUCCEEDED",
"refundStatus": null,
"type": "GUARANTEE_AUTHORIZATION",
"amount": 2500,
"amountType": "PER_PAX",
"cancellationNoticeHours": 24,
"currency": "EUR",
"cancellationFeeAmount": 5000,
"chargedAmount": 5000,
"guaranteedPax": 2,
"id": 101,
"refundedAmount": 0
},
"addOns": [
{
"addOnId": 123,
"name": "Premium wine tasting",
"unitPrice": 1000,
"currency": "EUR",
"id": 101,
"quantity": 1
}
],
"accountId": "best-burger",
"highChairs": 1,
"paxChildren": 0,
"pax": 2,
"strollers": 1,
"turnMinutes": 90,
"createdAt": "2025-03-20T18:45:00+02:00",
"updatedAt": "2025-03-21T09:30:00+02:00"
}{
"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 Booking UUID
"50b5571be67b477baa9dead4b290c555"
Body
UpdateBookingRequest
Request payload for updating an existing Booking.
Request payload with the Booking Customer details.
Show child attributes
Show child attributes
The date of the Booking in ISO 8601 format YYYY-MM-DD
"2025-03-20"
The time of the Booking in ISO 8601 format HH:MM:SS
"22:30:00"
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 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 Experience requested
Show child attributes
Show child attributes
Free-text field for customer special requests. The Venue will try to accommodate them but cannot guarantee fulfillment
1024"Table near the window"
Indicates whether any of the guests have allergies (e.g., peanut, chocolate, nuts, etc.)
true
Free-text description of allergies
1024"Peanuts, shellfish, lactose intolerance"
The special occasion associated with the booking
WEDDING, BIRTHDAY, ROMANTIC, FRIENDS, FAMILY, BUSINESS, OTHER "BIRTHDAY"
Indicates whether the guest requires an accessible seating (e.g., suitable for wheelchairs or reduced mobility)
true
Hotel room number or identifier associated with the Booking
50"Room 305"
The redemption code requested for the reservation
6"ABC123"
The promotion code requested for the reservation
6 - 255"promo2x1"
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
UpdatePrivateBookingResponse
UpdatePublicBookingResponse
- UpdatePrivateBookingResponse
- UpdatePublicBookingResponse
The URL to redirect the customer after updating the booking
"https://example.com/widget/?view=reservation/confirmed&uuid=..."
Internal notes visible only to the venue staff
2048"Customer requested a table near the window."
Estimated waiting time in minutes quoted to the customer
x >= 515
Indicates whether the booking was created as a Walk-in
true
Indicates whether the booking has fixed table assignments that cannot be changed
false
Indicates whether the booking is highlighted
false
The booking creation channel
WIDGET, OFFLINE, API "API"
The partner system that created or manages the ticket (if applicable)
DEFAULT, REVO, HOSTELTACTIL, AGORA, WINEX, SIMPHONY, CUINER, BDP, GLOP, FRONT_REST, YANTAR, MADISA, LASTAPP, SQUARE, HIOPOS, API, WE_WELCOM The external identifier of the ticket in the POS or third-party system
64"POS-98234"
The total amount of the ticket in cents
x >= 012500
The datetime when the table was ready for the customer in ISO 8601 format
"2025-03-20T20:15:00+02:00"
The datetime when the customer arrived in ISO 8601 format
"2025-03-20T20:25:00+02:00"
The datetime when the customer was seated in ISO 8601 format
"2025-03-20T20:30:00+02:00"
The datetime when the booking ended in ISO 8601 format
"2025-03-20T22:15:00+02:00"
The IP address of the device or system that created the booking
"192.168.0.25"
Full Customer details, including private properties
Show child attributes
Show child attributes
The list of tables assigned to the booking
Show child attributes
Show child attributes
UUID of the Booking
"50b5571be67b477baa9dead4b290c555"
The Booking date and time in ISO 8601 format
"2025-03-20T23:00:00+02:00"
The Booking status
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"
Indicates whether the Booking has a time limit that must be notified and accepted by the customer
true
Free-text field for customer special requests. The Venue will try to accommodate them but cannot guarantee fulfillment
1024"Table near the window"
Indicates whether any of the guests have allergies (e.g., peanut, chocolate, nuts, etc.)
true
Free-text description of allergies
1024"Peanuts, shellfish, lactose intolerance"
The special occasion associated with the booking
WEDDING, BIRTHDAY, ROMANTIC, FRIENDS, FAMILY, BUSINESS, OTHER "BIRTHDAY"
Indicates whether the guest requires an accessible seating (e.g., suitable for wheelchairs or reduced mobility)
true
Hotel room number or identifier associated with the Booking
50"Room 305"
Public notes defined by the venue and visible to the customer
2048"Your reservation includes a birthday cake."
Indicates whether the booking was manually reconfirmed by the customer after the venue contacted them to request reconfirmation
true
Indicates whether the booking was automatically reconfirmed by the customer through Restoo’s automated reconfirmation service
false
The reason provided when canceling the booking (if applicable)
CALL_TO_CANCEL, UPDATE_BOOKING, UNEXPECTED_SITUATION, BOOKED_ANOTHER_PLACE, CHANGED_PLANS, OTHER, REVOKE_LEGAL_CONSENT "CHANGED_PLANS"
The partner through which the Booking was made (if any)
DEFAULT, GOOGLE, BOOKLINE, BOOKY_BOT, FLIP_EAT, FACEBOOK, MAYBEIN, LASTAPP, PRIMA "GOOGLE"
The Booking ID provided by the external partner (if applicable).
Required if bookingPartner is present
64"book_123456"
The Shift Type in which the Booking takes place
Show child attributes
Show child attributes
The Floor Plan Area details related to a Booking.
Show child attributes
Show child attributes
The Promotion details related to a Booking.
Show child attributes
Show child attributes
The Product details related to a Booking.
Show child attributes
Show child attributes
The Experience details related to a Booking.
Show child attributes
Show child attributes
The Cancellation Policy details associated with a Booking.
Represents the persisted and authoritative state of the Cancellation Policy for a Booking.
Show child attributes
Show child attributes
List of add-ons associated with the Booking (if any)
Show child attributes
Show child attributes
The unique Restoo Account identifier for the Tenant
"best-burger"
The number of high chairs
x >= 01
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
The number of strollers
x >= 01
The duration of the Booking in minutes
15 <= x <= 72090
The creation timestamp in ISO 8601 format
"2025-03-20T18:45:00+02:00"
The last update timestamp in ISO 8601 format
"2025-03-21T09:30:00+02:00"