Aller au contenu

Créer une réservation

POST
/v1/reservations
curl --request POST \
--url https://example.com/v1/reservations \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <X-API-Key>' \
--data '{ "establishmentId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "checkInDate": "2026-07-01", "checkOutDate": "2026-07-03", "unitTypeId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "ratePlanId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "guestProfileId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "channelType": "direct", "segment": "leisure", "headcountAdults": 1, "headcountChildren": 0, "childrenAges": [ 1 ], "bookerContactName": "Martin Dupont", "bookerContactEmail": "martin@example.com", "bookerPersonGuestId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "mealPlanId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "ancillaries": [ { "productId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "quantity": 1 } ], "expectedArrivalTime": "15:30", "expectedDepartureTime": "11:00", "specialRequests": "Chambre calme, lit bébé souhaité.", "corporateCode": "example" }'
Idempotency-Key
string
>= 8 characters <= 200 characters

Clé d’idempotence (optionnelle, 8-200 caractères). Réservée pour la déduplication client : si le même appel est rejoué (réseau flaky, double-clic) la clé permettra de retourner la même réponse sans créer de doublon. Infrastructure de déduplication à brancher (résiduel B).

Données de création de la réservation. businessDateAtCreation est résolu CÔTÉ SERVEUR (ADR-00D78) — ne pas envoyer.

Media type application/json
object
establishmentId
required
string format: uuid
checkInDate
required
string format: date
Example
2026-07-01
checkOutDate
required
string format: date
Example
2026-07-03
unitTypeId
required
string format: uuid
ratePlanId
required
string format: uuid
guestProfileId
required
string format: uuid
channelType
required
string
Example
direct
segment
required
string
Example
leisure
headcountAdults

Nombre d’adultes annoncés (défaut 1)

integer
default: 1 >= 1 <= 50
headcountChildren

Nombre d’enfants annoncés (défaut 0)

integer
0 <= 50
childrenAges

Âges des enfants (ADR-00D115 B4). Si fourni, le serveur SÉPARE les bébés (âge ≤ seuil accommodation, exclus de l’occupation) des enfants comptés et PRIME sur headcountChildren. Optionnel (additif).

Array<integer>
<= 50 items
bookerContactName
required
string
Example
Martin Dupont
bookerContactEmail
required
string format: email
Example
martin@example.com
bookerPersonGuestId
string format: uuid
nullable
mealPlanId

Plan de pension pré-sélectionné (T-struct-1, ADR-00D89). Optionnel.

string format: uuid
nullable
ancillaries

Prestations annexes du catalogue sélectionnées à la réservation (vague 1). Optionnel. Chiffrées au devis, facturées au folio au check-in.

Array<object>
object
productId
required

Identifiant du produit annexe (actif, même établissement).

string format: uuid
quantity
required
integer
>= 1
Example
1
expectedArrivalTime

Heure d’arrivée prévue (ETA, HH:MM). Optionnelle.

string
nullable /^\d{2}:\d{2}$/
Example
15:30
expectedDepartureTime

Heure de départ prévue (ETD, HH:MM). Optionnelle.

string
nullable /^\d{2}:\d{2}$/
Example
11:00
specialRequests

Demandes spéciales / notes libres. Max 1000 car.

string
nullable <= 1000 characters
Example
Chambre calme, lit bébé souhaité.
corporateCode

Code société du devis (ADR-00D116 A7). Additif, optionnel — persisté pour que le confirm re-évalue les fences avec le même contexte que le devis.

string
nullable >= 1 characters <= 64 characters

Réservation créée

Media type application/json
object
data
required
object
reservationId
required
string format: uuid
Example generated
{
"data": {
"reservationId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0"
}
}

Corps invalide

Media type application/json
object
code
required

Code machine de l’erreur

string
message
required

Message lisible

string
origin

Origine domaine de l’erreur (optionnel)

object
boundedContext
string
module
string
status
required
integer
traceId
required

Identifiant de corrélation pour le support

string
Example
{
"code": "RESERVATION_NOT_FOUND",
"message": "Réservation introuvable",
"status": 404
}

Non authentifié

Media type application/json
object
code
required

Code machine de l’erreur

string
message
required

Message lisible

string
origin

Origine domaine de l’erreur (optionnel)

object
boundedContext
string
module
string
status
required
integer
traceId
required

Identifiant de corrélation pour le support

string
Example
{
"code": "RESERVATION_NOT_FOUND",
"message": "Réservation introuvable",
"status": 404
}

Permission refusée

Media type application/json
object
code
required

Code machine de l’erreur

string
message
required

Message lisible

string
origin

Origine domaine de l’erreur (optionnel)

object
boundedContext
string
module
string
status
required
integer
traceId
required

Identifiant de corrélation pour le support

string
Example
{
"code": "RESERVATION_NOT_FOUND",
"message": "Réservation introuvable",
"status": 404
}