curl --request GET \
--url https://api-dev.myrestoo.net/v3/bookings/{bookingUuid}/cancel \
--header 'Authorization: Bearer <token>' \
--header 'Restoo-Account-Id: <restoo-account-id>' \
--header 'Restoo-Partner-Id: <restoo-partner-id>'import requests
url = "https://api-dev.myrestoo.net/v3/bookings/{bookingUuid}/cancel"
headers = {
"Restoo-Partner-Id": "<restoo-partner-id>",
"Restoo-Account-Id": "<restoo-account-id>",
"Authorization": "Bearer <token>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {
'Restoo-Partner-Id': '<restoo-partner-id>',
'Restoo-Account-Id': '<restoo-account-id>',
Authorization: 'Bearer <token>'
}
};
fetch('https://api-dev.myrestoo.net/v3/bookings/{bookingUuid}/cancel', 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}/cancel",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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"
"net/http"
"io"
)
func main() {
url := "https://api-dev.myrestoo.net/v3/bookings/{bookingUuid}/cancel"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Restoo-Partner-Id", "<restoo-partner-id>")
req.Header.Add("Restoo-Account-Id", "<restoo-account-id>")
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api-dev.myrestoo.net/v3/bookings/{bookingUuid}/cancel")
.header("Restoo-Partner-Id", "<restoo-partner-id>")
.header("Restoo-Account-Id", "<restoo-account-id>")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-dev.myrestoo.net/v3/bookings/{bookingUuid}/cancel")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Restoo-Partner-Id"] = '<restoo-partner-id>'
request["Restoo-Account-Id"] = '<restoo-account-id>'
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"booking": {
"customer": {
"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"
},
"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
},
"cancellationPolicyQuote": {
"status": "PENALTY_CANCEL",
"cancellationDeadlineAt": "2025-03-20T22:00:00+02:00",
"isPenalizable": true,
"quotedAt": "2025-03-20T23:00:00+02:00",
"type": "GUARANTEE_AUTHORIZATION",
"amount": 2500,
"amountType": "PER_PAX",
"cancellationNoticeHours": 24,
"currency": "EUR",
"cancellationFeeAmount": 5000,
"chargedAmount": 5000,
"refundedAmount": 0
}
}{
"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 Cancel Booking Details
Returns the information required to inform the customer about the financial consequences (if any) of canceling a Booking at this moment.
curl --request GET \
--url https://api-dev.myrestoo.net/v3/bookings/{bookingUuid}/cancel \
--header 'Authorization: Bearer <token>' \
--header 'Restoo-Account-Id: <restoo-account-id>' \
--header 'Restoo-Partner-Id: <restoo-partner-id>'import requests
url = "https://api-dev.myrestoo.net/v3/bookings/{bookingUuid}/cancel"
headers = {
"Restoo-Partner-Id": "<restoo-partner-id>",
"Restoo-Account-Id": "<restoo-account-id>",
"Authorization": "Bearer <token>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {
'Restoo-Partner-Id': '<restoo-partner-id>',
'Restoo-Account-Id': '<restoo-account-id>',
Authorization: 'Bearer <token>'
}
};
fetch('https://api-dev.myrestoo.net/v3/bookings/{bookingUuid}/cancel', 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}/cancel",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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"
"net/http"
"io"
)
func main() {
url := "https://api-dev.myrestoo.net/v3/bookings/{bookingUuid}/cancel"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Restoo-Partner-Id", "<restoo-partner-id>")
req.Header.Add("Restoo-Account-Id", "<restoo-account-id>")
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api-dev.myrestoo.net/v3/bookings/{bookingUuid}/cancel")
.header("Restoo-Partner-Id", "<restoo-partner-id>")
.header("Restoo-Account-Id", "<restoo-account-id>")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-dev.myrestoo.net/v3/bookings/{bookingUuid}/cancel")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Restoo-Partner-Id"] = '<restoo-partner-id>'
request["Restoo-Account-Id"] = '<restoo-account-id>'
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"booking": {
"customer": {
"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"
},
"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
},
"cancellationPolicyQuote": {
"status": "PENALTY_CANCEL",
"cancellationDeadlineAt": "2025-03-20T22:00:00+02:00",
"isPenalizable": true,
"quotedAt": "2025-03-20T23:00:00+02:00",
"type": "GUARANTEE_AUTHORIZATION",
"amount": 2500,
"amountType": "PER_PAX",
"cancellationNoticeHours": 24,
"currency": "EUR",
"cancellationFeeAmount": 5000,
"chargedAmount": 5000,
"refundedAmount": 0
}
}{
"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"
Response
CancelBookingQuoteResponse
Response containing all information required to inform the customer about the financial consequences (if any) of canceling a Booking at this moment.
The Booking details.
Show child attributes
Show child attributes
Cancellation Policy quote to finalize a Booking.
Represents a point-in-time simulation of the Cancellation Policy outcome (penalties, deadlines, and resulting status), evaluated using the request inputs at the moment the quote is generated.
This object does NOT represent persisted policy data nor the final state applied to the Booking.
Show child attributes
Show child attributes