curl --request GET \
--url https://api-dev.myrestoo.net/v3/customers/{customerUuid} \
--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/customers/{customerUuid}"
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/customers/{customerUuid}', 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/customers/{customerUuid}",
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/customers/{customerUuid}"
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/customers/{customerUuid}")
.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/customers/{customerUuid}")
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{
"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"
}{
"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 Customer by UUID
Retrieves a single customer by their UUID.
curl --request GET \
--url https://api-dev.myrestoo.net/v3/customers/{customerUuid} \
--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/customers/{customerUuid}"
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/customers/{customerUuid}', 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/customers/{customerUuid}",
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/customers/{customerUuid}"
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/customers/{customerUuid}")
.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/customers/{customerUuid}")
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{
"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"
}{
"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 customer UUID
"50b5571be67b477baa9dead4b290c555"
Response
PrivateCustomerResponse
PublicCustomerResponse
- PrivateCustomerResponse
- PublicCustomerResponse
Private Customer details.
Internal notes about the customer, visible only to venue staff
2048"Customer prefers a table near the terrace."
Average frequency of visits, expressed as the number of days between visits
x >= 030
Average order amount per guest (in cents)
x >= 04500
The customer's reputation score based on their booking behavior. Calculated by Restoo from attendance, cancellation, and no-show history.
Interpretation:
- Negative values: poor reputation.
- 0: no sufficient history (neutral).
- Positive values: good reputation
0.85
Total number of bookings made by the customer
x >= 025
Total number of completed visits by the customer
x >= 018
Total number of cancellations made by the customer
x >= 03
Total number of no-shows by the customer
x >= 02
The date and time of the customer's first visit in ISO 8601 format
"2023-05-10T20:00:00+02:00"
The date and time of the customer's most recent visit in ISO 8601 format
"2025-03-15T21:30:00+02:00"
The date and time of the customer's first cancellation in ISO 8601 format
"2024-09-12T19:00:00+02:00"
The date and time of the customer's next scheduled visit in ISO 8601 format
"2025-04-05T22:00:00+02:00"
List of customer tags
Show child attributes
Show child attributes
The Customer UUID
"50b5571be67b477baa9dead4b290c555"
The Customer's email address
"steve.jobs@restoo.me"
The Customer's phone number in E.164 format
"+34600111222"
Date of birth of the Customer in ISO 8601 format (YYYY-MM-DD)
"1979-03-20"
The Customer's postal code
12"28045"
Indicates whether the Customer is marked as VIP
true
Indicates whether the Customer is associated with a business
false
The preferred language of the Customer, represented as an ISO 639-1 code
es, ca, it, en, de, fr, pt, eu "en"
Indicates whether the customer agrees to receive important alerts related to their bookings (e.g., cancellations due to weather or unexpected incidents)
true
Indicates whether the Customer has given GDPR consent
true
Indicates whether the Customer has consented to receive marketing communications
true
The country represented as a two-letter ISO 3166-1 alpha-2 code
AF, AX, AL, DZ, AS, AD, AO, AI, AQ, AG, AR, AM, AW, AU, AT, AZ, BS, BH, BD, BB, BY, BE, BZ, BJ, BM, BT, BO, BQ, BA, BW, BV, BR, IO, BN, BG, BF, BI, CV, KH, CM, CA, KY, CF, TD, CL, CN, CX, CC, CO, KM, CG, CD, CK, CR, CI, HR, CU, CW, CY, CZ, DK, DJ, DM, DO, EC, EG, SV, GQ, ER, EE, SZ, ET, FK, FO, FJ, FI, FR, GF, PF, TF, GA, GM, GE, DE, GH, GI, GR, GL, GD, GP, GU, GT, GG, GN, GW, GY, HT, HM, VA, HN, HK, HU, IS, IN, ID, IR, IQ, IE, IM, IL, IT, JM, JP, JE, JO, KZ, KE, KI, KP, KR, XK, KW, KG, LA, LV, LB, LS, LR, LY, LI, LT, LU, MO, MG, MW, MY, MV, ML, MT, MH, MQ, MR, MU, YT, MX, FM, MD, MC, MN, ME, MS, MA, MZ, MM, NA, NR, NP, NL, NC, NZ, NI, NE, NG, NU, NF, MK, MP, NO, OM, PK, PW, PS, PA, PG, PY, PE, PH, PN, PL, PT, PR, QA, RE, RO, RU, RW, BL, SH, KN, LC, MF, PM, VC, WS, SM, ST, SA, SN, RS, SC, SL, SG, SX, SK, SI, SB, SO, ZA, GS, SS, ES, LK, SD, SR, SJ, SE, CH, SY, TW, TJ, TZ, TH, TL, TG, TK, TO, TT, TN, TR, TM, TC, TV, UG, UA, AE, GB, UM, US, UY, UZ, VU, VE, VN, VG, VI, WF, EH, YE, ZM, ZW "ES"
The full name of the Customer
3 - 255"Steve Jobs"