curl --request POST \
--url https://channels-service-alpha.fourvenues.com/bookings/request \
--header 'Content-Type: application/json' \
--header 'X-Api-Key: <api-key>' \
--data '
{
"event_id": "5f8d0f8b9d2b3b0017b6d8a0",
"zone_slug": "1736413718721",
"normalized_zone_name": "superior-vip",
"rate_slug": "rate-slug",
"table_id": "17123134123",
"normalized_table_name": "table-12",
"external_channel_id": "AVTN2K",
"referral_id": "5f8d0f8b9d2b3b0017b6d8a0",
"observations_client": "Please give me a good table.",
"marketing_consent": true,
"discount_code": "DISCOUNT20",
"is_payment_needed": true,
"send_resources": true,
"info": {
"full_name": "John Doe",
"email": "john.doe@example.com",
"phone": "+34666666666",
"birthdate": "1995-04-26",
"quantity": 5,
"billing": {
"customer_type": "individual",
"customer_name": "John Doe",
"document_type": "dni",
"document_number": "12345678Z",
"address": "123 Main St",
"city": "Barcelona",
"postal_code": "08001",
"country": "ES"
}
}
}
'import requests
url = "https://channels-service-alpha.fourvenues.com/bookings/request"
payload = {
"event_id": "5f8d0f8b9d2b3b0017b6d8a0",
"zone_slug": "1736413718721",
"normalized_zone_name": "superior-vip",
"rate_slug": "rate-slug",
"table_id": "17123134123",
"normalized_table_name": "table-12",
"external_channel_id": "AVTN2K",
"referral_id": "5f8d0f8b9d2b3b0017b6d8a0",
"observations_client": "Please give me a good table.",
"marketing_consent": True,
"discount_code": "DISCOUNT20",
"is_payment_needed": True,
"send_resources": True,
"info": {
"full_name": "John Doe",
"email": "john.doe@example.com",
"phone": "+34666666666",
"birthdate": "1995-04-26",
"quantity": 5,
"billing": {
"customer_type": "individual",
"customer_name": "John Doe",
"document_type": "dni",
"document_number": "12345678Z",
"address": "123 Main St",
"city": "Barcelona",
"postal_code": "08001",
"country": "ES"
}
}
}
headers = {
"X-Api-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-Api-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
event_id: '5f8d0f8b9d2b3b0017b6d8a0',
zone_slug: '1736413718721',
normalized_zone_name: 'superior-vip',
rate_slug: 'rate-slug',
table_id: '17123134123',
normalized_table_name: 'table-12',
external_channel_id: 'AVTN2K',
referral_id: '5f8d0f8b9d2b3b0017b6d8a0',
observations_client: 'Please give me a good table.',
marketing_consent: true,
discount_code: 'DISCOUNT20',
is_payment_needed: true,
send_resources: true,
info: {
full_name: 'John Doe',
email: 'john.doe@example.com',
phone: '+34666666666',
birthdate: '1995-04-26',
quantity: 5,
billing: {
customer_type: 'individual',
customer_name: 'John Doe',
document_type: 'dni',
document_number: '12345678Z',
address: '123 Main St',
city: 'Barcelona',
postal_code: '08001',
country: 'ES'
}
}
})
};
fetch('https://channels-service-alpha.fourvenues.com/bookings/request', 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://channels-service-alpha.fourvenues.com/bookings/request",
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([
'event_id' => '5f8d0f8b9d2b3b0017b6d8a0',
'zone_slug' => '1736413718721',
'normalized_zone_name' => 'superior-vip',
'rate_slug' => 'rate-slug',
'table_id' => '17123134123',
'normalized_table_name' => 'table-12',
'external_channel_id' => 'AVTN2K',
'referral_id' => '5f8d0f8b9d2b3b0017b6d8a0',
'observations_client' => 'Please give me a good table.',
'marketing_consent' => true,
'discount_code' => 'DISCOUNT20',
'is_payment_needed' => true,
'send_resources' => true,
'info' => [
'full_name' => 'John Doe',
'email' => 'john.doe@example.com',
'phone' => '+34666666666',
'birthdate' => '1995-04-26',
'quantity' => 5,
'billing' => [
'customer_type' => 'individual',
'customer_name' => 'John Doe',
'document_type' => 'dni',
'document_number' => '12345678Z',
'address' => '123 Main St',
'city' => 'Barcelona',
'postal_code' => '08001',
'country' => 'ES'
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-Api-Key: <api-key>"
],
]);
$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://channels-service-alpha.fourvenues.com/bookings/request"
payload := strings.NewReader("{\n \"event_id\": \"5f8d0f8b9d2b3b0017b6d8a0\",\n \"zone_slug\": \"1736413718721\",\n \"normalized_zone_name\": \"superior-vip\",\n \"rate_slug\": \"rate-slug\",\n \"table_id\": \"17123134123\",\n \"normalized_table_name\": \"table-12\",\n \"external_channel_id\": \"AVTN2K\",\n \"referral_id\": \"5f8d0f8b9d2b3b0017b6d8a0\",\n \"observations_client\": \"Please give me a good table.\",\n \"marketing_consent\": true,\n \"discount_code\": \"DISCOUNT20\",\n \"is_payment_needed\": true,\n \"send_resources\": true,\n \"info\": {\n \"full_name\": \"John Doe\",\n \"email\": \"john.doe@example.com\",\n \"phone\": \"+34666666666\",\n \"birthdate\": \"1995-04-26\",\n \"quantity\": 5,\n \"billing\": {\n \"customer_type\": \"individual\",\n \"customer_name\": \"John Doe\",\n \"document_type\": \"dni\",\n \"document_number\": \"12345678Z\",\n \"address\": \"123 Main St\",\n \"city\": \"Barcelona\",\n \"postal_code\": \"08001\",\n \"country\": \"ES\"\n }\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-Api-Key", "<api-key>")
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://channels-service-alpha.fourvenues.com/bookings/request")
.header("X-Api-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"event_id\": \"5f8d0f8b9d2b3b0017b6d8a0\",\n \"zone_slug\": \"1736413718721\",\n \"normalized_zone_name\": \"superior-vip\",\n \"rate_slug\": \"rate-slug\",\n \"table_id\": \"17123134123\",\n \"normalized_table_name\": \"table-12\",\n \"external_channel_id\": \"AVTN2K\",\n \"referral_id\": \"5f8d0f8b9d2b3b0017b6d8a0\",\n \"observations_client\": \"Please give me a good table.\",\n \"marketing_consent\": true,\n \"discount_code\": \"DISCOUNT20\",\n \"is_payment_needed\": true,\n \"send_resources\": true,\n \"info\": {\n \"full_name\": \"John Doe\",\n \"email\": \"john.doe@example.com\",\n \"phone\": \"+34666666666\",\n \"birthdate\": \"1995-04-26\",\n \"quantity\": 5,\n \"billing\": {\n \"customer_type\": \"individual\",\n \"customer_name\": \"John Doe\",\n \"document_type\": \"dni\",\n \"document_number\": \"12345678Z\",\n \"address\": \"123 Main St\",\n \"city\": \"Barcelona\",\n \"postal_code\": \"08001\",\n \"country\": \"ES\"\n }\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://channels-service-alpha.fourvenues.com/bookings/request")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-Api-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"event_id\": \"5f8d0f8b9d2b3b0017b6d8a0\",\n \"zone_slug\": \"1736413718721\",\n \"normalized_zone_name\": \"superior-vip\",\n \"rate_slug\": \"rate-slug\",\n \"table_id\": \"17123134123\",\n \"normalized_table_name\": \"table-12\",\n \"external_channel_id\": \"AVTN2K\",\n \"referral_id\": \"5f8d0f8b9d2b3b0017b6d8a0\",\n \"observations_client\": \"Please give me a good table.\",\n \"marketing_consent\": true,\n \"discount_code\": \"DISCOUNT20\",\n \"is_payment_needed\": true,\n \"send_resources\": true,\n \"info\": {\n \"full_name\": \"John Doe\",\n \"email\": \"john.doe@example.com\",\n \"phone\": \"+34666666666\",\n \"birthdate\": \"1995-04-26\",\n \"quantity\": 5,\n \"billing\": {\n \"customer_type\": \"individual\",\n \"customer_name\": \"John Doe\",\n \"document_type\": \"dni\",\n \"document_number\": \"12345678Z\",\n \"address\": \"123 Main St\",\n \"city\": \"Barcelona\",\n \"postal_code\": \"08001\",\n \"country\": \"ES\"\n }\n }\n}"
response = http.request(request)
puts response.read_body{
"data": {
"_id": "<string>",
"event_id": "<string>",
"organization_id": "<string>",
"channel_id": "<string>",
"referral_id": "<string>",
"status": "pending",
"zone_slug": "<string>",
"rate_slug": "<string>",
"quantity": 123,
"full_name": "<string>",
"email": "<string>",
"phone": "<string>",
"deposit": 123,
"fee_type": "percentage",
"fee_quantity": 123,
"qr_code": "<string>",
"activation_code": "<string>",
"payment_id": "<string>",
"table_id": "<string>",
"observations_referral": "<string>",
"observations_client": "<string>",
"marketing_consent": true,
"payment_url": "<string>",
"birthdate": "<string>",
"billing_info": {
"customer_type": "individual",
"customer_name": "<string>",
"document_type": "dni",
"document_number": "<string>",
"address": "<string>",
"city": "<string>",
"postal_code": "<string>",
"country": "<string>"
}
},
"success": true
}Request a booking
Request a booking
curl --request POST \
--url https://channels-service-alpha.fourvenues.com/bookings/request \
--header 'Content-Type: application/json' \
--header 'X-Api-Key: <api-key>' \
--data '
{
"event_id": "5f8d0f8b9d2b3b0017b6d8a0",
"zone_slug": "1736413718721",
"normalized_zone_name": "superior-vip",
"rate_slug": "rate-slug",
"table_id": "17123134123",
"normalized_table_name": "table-12",
"external_channel_id": "AVTN2K",
"referral_id": "5f8d0f8b9d2b3b0017b6d8a0",
"observations_client": "Please give me a good table.",
"marketing_consent": true,
"discount_code": "DISCOUNT20",
"is_payment_needed": true,
"send_resources": true,
"info": {
"full_name": "John Doe",
"email": "john.doe@example.com",
"phone": "+34666666666",
"birthdate": "1995-04-26",
"quantity": 5,
"billing": {
"customer_type": "individual",
"customer_name": "John Doe",
"document_type": "dni",
"document_number": "12345678Z",
"address": "123 Main St",
"city": "Barcelona",
"postal_code": "08001",
"country": "ES"
}
}
}
'import requests
url = "https://channels-service-alpha.fourvenues.com/bookings/request"
payload = {
"event_id": "5f8d0f8b9d2b3b0017b6d8a0",
"zone_slug": "1736413718721",
"normalized_zone_name": "superior-vip",
"rate_slug": "rate-slug",
"table_id": "17123134123",
"normalized_table_name": "table-12",
"external_channel_id": "AVTN2K",
"referral_id": "5f8d0f8b9d2b3b0017b6d8a0",
"observations_client": "Please give me a good table.",
"marketing_consent": True,
"discount_code": "DISCOUNT20",
"is_payment_needed": True,
"send_resources": True,
"info": {
"full_name": "John Doe",
"email": "john.doe@example.com",
"phone": "+34666666666",
"birthdate": "1995-04-26",
"quantity": 5,
"billing": {
"customer_type": "individual",
"customer_name": "John Doe",
"document_type": "dni",
"document_number": "12345678Z",
"address": "123 Main St",
"city": "Barcelona",
"postal_code": "08001",
"country": "ES"
}
}
}
headers = {
"X-Api-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-Api-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
event_id: '5f8d0f8b9d2b3b0017b6d8a0',
zone_slug: '1736413718721',
normalized_zone_name: 'superior-vip',
rate_slug: 'rate-slug',
table_id: '17123134123',
normalized_table_name: 'table-12',
external_channel_id: 'AVTN2K',
referral_id: '5f8d0f8b9d2b3b0017b6d8a0',
observations_client: 'Please give me a good table.',
marketing_consent: true,
discount_code: 'DISCOUNT20',
is_payment_needed: true,
send_resources: true,
info: {
full_name: 'John Doe',
email: 'john.doe@example.com',
phone: '+34666666666',
birthdate: '1995-04-26',
quantity: 5,
billing: {
customer_type: 'individual',
customer_name: 'John Doe',
document_type: 'dni',
document_number: '12345678Z',
address: '123 Main St',
city: 'Barcelona',
postal_code: '08001',
country: 'ES'
}
}
})
};
fetch('https://channels-service-alpha.fourvenues.com/bookings/request', 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://channels-service-alpha.fourvenues.com/bookings/request",
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([
'event_id' => '5f8d0f8b9d2b3b0017b6d8a0',
'zone_slug' => '1736413718721',
'normalized_zone_name' => 'superior-vip',
'rate_slug' => 'rate-slug',
'table_id' => '17123134123',
'normalized_table_name' => 'table-12',
'external_channel_id' => 'AVTN2K',
'referral_id' => '5f8d0f8b9d2b3b0017b6d8a0',
'observations_client' => 'Please give me a good table.',
'marketing_consent' => true,
'discount_code' => 'DISCOUNT20',
'is_payment_needed' => true,
'send_resources' => true,
'info' => [
'full_name' => 'John Doe',
'email' => 'john.doe@example.com',
'phone' => '+34666666666',
'birthdate' => '1995-04-26',
'quantity' => 5,
'billing' => [
'customer_type' => 'individual',
'customer_name' => 'John Doe',
'document_type' => 'dni',
'document_number' => '12345678Z',
'address' => '123 Main St',
'city' => 'Barcelona',
'postal_code' => '08001',
'country' => 'ES'
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-Api-Key: <api-key>"
],
]);
$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://channels-service-alpha.fourvenues.com/bookings/request"
payload := strings.NewReader("{\n \"event_id\": \"5f8d0f8b9d2b3b0017b6d8a0\",\n \"zone_slug\": \"1736413718721\",\n \"normalized_zone_name\": \"superior-vip\",\n \"rate_slug\": \"rate-slug\",\n \"table_id\": \"17123134123\",\n \"normalized_table_name\": \"table-12\",\n \"external_channel_id\": \"AVTN2K\",\n \"referral_id\": \"5f8d0f8b9d2b3b0017b6d8a0\",\n \"observations_client\": \"Please give me a good table.\",\n \"marketing_consent\": true,\n \"discount_code\": \"DISCOUNT20\",\n \"is_payment_needed\": true,\n \"send_resources\": true,\n \"info\": {\n \"full_name\": \"John Doe\",\n \"email\": \"john.doe@example.com\",\n \"phone\": \"+34666666666\",\n \"birthdate\": \"1995-04-26\",\n \"quantity\": 5,\n \"billing\": {\n \"customer_type\": \"individual\",\n \"customer_name\": \"John Doe\",\n \"document_type\": \"dni\",\n \"document_number\": \"12345678Z\",\n \"address\": \"123 Main St\",\n \"city\": \"Barcelona\",\n \"postal_code\": \"08001\",\n \"country\": \"ES\"\n }\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-Api-Key", "<api-key>")
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://channels-service-alpha.fourvenues.com/bookings/request")
.header("X-Api-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"event_id\": \"5f8d0f8b9d2b3b0017b6d8a0\",\n \"zone_slug\": \"1736413718721\",\n \"normalized_zone_name\": \"superior-vip\",\n \"rate_slug\": \"rate-slug\",\n \"table_id\": \"17123134123\",\n \"normalized_table_name\": \"table-12\",\n \"external_channel_id\": \"AVTN2K\",\n \"referral_id\": \"5f8d0f8b9d2b3b0017b6d8a0\",\n \"observations_client\": \"Please give me a good table.\",\n \"marketing_consent\": true,\n \"discount_code\": \"DISCOUNT20\",\n \"is_payment_needed\": true,\n \"send_resources\": true,\n \"info\": {\n \"full_name\": \"John Doe\",\n \"email\": \"john.doe@example.com\",\n \"phone\": \"+34666666666\",\n \"birthdate\": \"1995-04-26\",\n \"quantity\": 5,\n \"billing\": {\n \"customer_type\": \"individual\",\n \"customer_name\": \"John Doe\",\n \"document_type\": \"dni\",\n \"document_number\": \"12345678Z\",\n \"address\": \"123 Main St\",\n \"city\": \"Barcelona\",\n \"postal_code\": \"08001\",\n \"country\": \"ES\"\n }\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://channels-service-alpha.fourvenues.com/bookings/request")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-Api-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"event_id\": \"5f8d0f8b9d2b3b0017b6d8a0\",\n \"zone_slug\": \"1736413718721\",\n \"normalized_zone_name\": \"superior-vip\",\n \"rate_slug\": \"rate-slug\",\n \"table_id\": \"17123134123\",\n \"normalized_table_name\": \"table-12\",\n \"external_channel_id\": \"AVTN2K\",\n \"referral_id\": \"5f8d0f8b9d2b3b0017b6d8a0\",\n \"observations_client\": \"Please give me a good table.\",\n \"marketing_consent\": true,\n \"discount_code\": \"DISCOUNT20\",\n \"is_payment_needed\": true,\n \"send_resources\": true,\n \"info\": {\n \"full_name\": \"John Doe\",\n \"email\": \"john.doe@example.com\",\n \"phone\": \"+34666666666\",\n \"birthdate\": \"1995-04-26\",\n \"quantity\": 5,\n \"billing\": {\n \"customer_type\": \"individual\",\n \"customer_name\": \"John Doe\",\n \"document_type\": \"dni\",\n \"document_number\": \"12345678Z\",\n \"address\": \"123 Main St\",\n \"city\": \"Barcelona\",\n \"postal_code\": \"08001\",\n \"country\": \"ES\"\n }\n }\n}"
response = http.request(request)
puts response.read_body{
"data": {
"_id": "<string>",
"event_id": "<string>",
"organization_id": "<string>",
"channel_id": "<string>",
"referral_id": "<string>",
"status": "pending",
"zone_slug": "<string>",
"rate_slug": "<string>",
"quantity": 123,
"full_name": "<string>",
"email": "<string>",
"phone": "<string>",
"deposit": 123,
"fee_type": "percentage",
"fee_quantity": 123,
"qr_code": "<string>",
"activation_code": "<string>",
"payment_id": "<string>",
"table_id": "<string>",
"observations_referral": "<string>",
"observations_client": "<string>",
"marketing_consent": true,
"payment_url": "<string>",
"birthdate": "<string>",
"billing_info": {
"customer_type": "individual",
"customer_name": "<string>",
"document_type": "dni",
"document_number": "<string>",
"address": "<string>",
"city": "<string>",
"postal_code": "<string>",
"country": "<string>"
}
},
"success": true
}Authorizations
Body
Event ID
"5f8d0f8b9d2b3b0017b6d8a0"
Zone slug
"1736413718721"
Normalized name of the zone
"superior-vip"
Rate slug
"rate-slug"
Table ID. Only allowed if the zone has enabled the table selection option for customers.
"17123134123"
Normalized name of the table. Alternative to table_id (mutually exclusive).
"table-12"
External channel ID
"AVTN2K"
Referral ID (internal). Ignored when external_channel_id is provided.
"5f8d0f8b9d2b3b0017b6d8a0"
Observations of the client
"Please give me a good table."
If the customer has given marketing consent
true
Discount code
"DISCOUNT20"
If true, the booking waits for an external-gateway payment (status filled-by-client) instead of manual review. Defaults to false.
true
If false, the request notification is not sent to the customer. Defaults to true.
true
Info about the booking
Show child attributes
Show child attributes
Response
OK
The wire contract for a booking, AT THE LATEST VERSION.
This is the single source of truth: toBookingResponse is annotated to
return it (so the code cannot drift from it without a compile error), and the
OpenAPI spec + docs + breaking-change gate are all generated from it.
Dates are ISO-8601 strings — the real wire form res.json produces from the
underlying serialized values. Mongo ObjectIds are plain strings.
Keys produced conditionally by the serializer (spread guards) are optional.
Show child attributes
Show child attributes
true