Aller au contenu

Devis tarifaire sans créer de réservation

POST
/v1/reservations/quote
curl --request POST \
--url https://example.com/v1/reservations/quote \
--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", "ratePlanId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "unitTypeId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "mealPlanId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "ancillaries": [ { "productId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "quantity": 1 } ], "bookingDate": "2026-06-07", "channel": "desk", "segment": "leisure", "corporateCode": "example", "occupancy": { "adults": 2, "childrenAges": [], "pets": 0, "vehicles": 0, "electricity": false } }'

Calcule le prix pour un séjour donné (un plan précis ou tous les plans éligibles de l’établissement). Aucune mutation.

Paramètres du devis

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
ratePlanId

Préciser pour un devis sur un plan unique

string format: uuid
nullable
unitTypeId
string format: uuid
nullable
mealPlanId

Plan de pension optionnel : chiffre la pension dans la ventilation additive du devis (ADR-00D88).

string format: uuid
nullable
ancillaries

Prestations annexes optionnelles (vague 1) : chiffre les prestations dans la ventilation additive du devis (identité devis = facture au check-in).

Array<object>
object
productId
required
string format: uuid
quantity
required
integer
>= 1
bookingDate
required

Date de la demande (pour les fences lead_time)

string format: date
Example
2026-06-07
channel

DÉPRÉCIÉ-IGNORÉ (ADR-00D116 A2) : le canal de vente est posé CÔTÉ SERVEUR par la surface (ici desk). Champ conservé pour compat, jamais lu.

string
nullable
Example
desk
segment
string
nullable
Example
leisure
corporateCode

Code société / tarif négocié (débloque les fences corporate_code)

string
nullable <= 64 characters
occupancy
object
adults
integer
>= 1
Example
2
childrenAges
Array<integer>
Example
[]
pets
integer
Example
0
vehicles
integer
Example
0
electricity
boolean
Example
false

Devis tarifaire (un ou plusieurs plans)

Media type application/json
object
data
required
Array<object>
object
ratePlanId
required
string format: uuid
ratePlanName
required

Nom commercial du plan tarifaire

string
ratePlanCode
required

Code interne du plan tarifaire

string
ratePlanVersion
required
integer
eligible
required
boolean
blockedBy

Raison d’inéligibilité (restriction, fence, inactive, unit_type, sell_period)

string
nullable
blockedByDetail

ADDITIF (ADR-00D116 A3) : détail structuré du blocage — le front traduit, le serveur ne produit aucune phrase. params typés PAR code : min_los/max_los → {nights, dateFrom, dateTo} ; cta/ctd/stop_sell → {dateFrom, dateTo} ; min_lead_time/max_lead_time → {days} ; sell_period → {sellFrom?, sellTo?} ; unit_type → {allowedUnitTypeIds} ; channel → {allowedChannels} ; segment → {allowedSegments} ; arrival_dow/departure_dow → {dateFrom, dateTo, allowedDays} ; corporate_code → {} (JAMAIS le code requis — confidentialité) ; inactive → {}. null si éligible.

object
code
required

Code du blocage (identique à blockedBy).

string
params
required

Paramètres structurés du blocage, typés par code.

object
key
additional properties
any
nights
required
integer
>= 1
total

Total TTC (null si non éligible)

object
amountCents
required

Montant en centimes (bigint sérialisé en string)

string
currency
required
string
Allowed values: EUR GBP
depositScheme

Barème d’acompte du plan (ADR-00D114). null = pas de barème. Le montant est calculé côté client depuis total (HALF-UP bigint).

object
basisPoints
required

Part du total séjour en basis points (3000 = 30 %).

integer
>= 1 <= 10000
dueDaysBeforeArrival
required
integer
captureOnNoShow
required
boolean
accommodationTotalCents

Ventilation pension (ADR-00D88) : total hébergement seul en centimes (= total). null si non éligible.

string
nullable
mealPlanTotalCents

Ventilation pension : total pension du séjour en centimes. Présent ssi mealPlanId fourni et plan facturé par nuitée. EXACTEMENT ce que le Night Audit facturera.

string
mealPlanLabel

Ventilation pension : libellé commercial de la pension. Présent ssi mealPlanId fourni.

string
ancillariesTotalCents

Ventilation prestations (vague 1) : total TTC des prestations annexes en centimes. Présent ssi ancillaries fourni. EXACTEMENT ce que le check-in facturera.

string
ancillaries

Ventilation prestations (vague 1) : détail par ligne des prestations chiffrées. Présent ssi ancillaries fourni.

Array<object>
object
productId
required
string format: uuid
label
required
string
quantity
required
integer
>= 1
unitPriceCents
required

Prix unitaire TTC en centimes (bigint string)

string
totalCents
required

Total ligne TTC = unitPrice × quantité en centimes (bigint string)

string
totalCents

Total TTC ventilé = hébergement + pension + prestations annexes en centimes. null si non éligible.

string
nullable
Example
{
"data": [
{
"total": {
"amountCents": "12000",
"currency": "EUR"
}
}
]
}

Paramètres invalides

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
}

Plan tarifaire introuvable (si ratePlanId précisé)

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
}