Aller au contenu

Calculer le delta tarifaire avant changement d'unité (lecture seule)

POST
/v1/reservations/{id}/unit-change-preview
curl --request POST \
--url https://example.com/v1/reservations/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/unit-change-preview \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <X-API-Key>' \
--data '{ "targetUnitId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "targetRatePlanId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0" }'
id
required
string format: uuid

Unité physique cible + rate plan cible. Le prix vivant sur le plan (pas sur le type d’unité), les deux sont requis pour calculer un delta non nul. Aucune écriture.

Media type application/json
object
targetUnitId
required

Unité physique cible (doit exister dans le scope tenant)

string format: uuid
targetRatePlanId
required

Rate plan à appliquer sur l’unité cible (comme à la réservation initiale)

string format: uuid
Example generated
{
"targetUnitId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"targetRatePlanId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0"
}

Delta tarifaire calculé (lecture seule)

Media type application/json
object
data
required
object
fromUnitTypeId
required
string format: uuid
toUnitTypeId
required
string format: uuid
fromFormat
required
string
Allowed values: room pitch mobile_home apartment
toFormat
required
string
Allowed values: room pitch mobile_home apartment
formatDiffers
required

True = formats différents → afficher un avertissement côté front (jamais bloquant)

boolean
residualNights
required

Nuits résiduelles sur lesquelles le delta est calculé

integer
deltaTtcCents
required

Delta TTC signé en centimes (string bigint-safe). >0 = supplément, <0 = crédit, =0 = identique

string
vatRateBasisPoints
required

Taux TVA accommodation en basis points (ex. 1000 = 10,00 %)

integer
currency
required
string
Allowed values: EUR GBP
Example
{
"data": {
"fromFormat": "room",
"toFormat": "room",
"currency": "EUR"
}
}

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 ou scope IDOR

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
}

Réservation ou unité cible introuvable

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
}

Statut incompatible (doit être Confirmed ou CheckedIn)

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
}