Aller au contenu

Ré-éditer la structure tarifaire d'un plan (grille camping per_person / forfait / dérivé)

PUT
/v1/rate-plans/{id}/base-rate
curl --request PUT \
--url https://example.com/v1/rate-plans/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/base-rate \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <X-API-Key>' \
--data '{ "baseRateRule": { "pricingUnit": "per_room", "currency": "EUR", "flatNightlyCents": 12000, "derivedFromRatePlanId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "derivedBasisPoints": 8000, "occupancy": { "baseUnitNightlyCents": 1, "adultNightlyCents": 1, "childTiers": [ { "ageFrom": 1, "ageTo": 1, "nightlyCents": 1 } ], "infantFreeUpToAge": 1, "petNightlyCents": 1, "extraVehicleNightlyCents": 1, "includedVehicles": 1, "electricityMode": "included", "electricityFlatNightlyCents": 1 } } }'

Remplace COMPLÈTEMENT la baseRateRule d’un plan existant (union discriminée sur pricingUnit, identique au corps de création). Cas d’usage : ré-éditer la grille d’occupation camping (emplacement/adulte/tranches enfant/animaux/véhicules/électricité), corriger un tarif forfaitaire. La DEVISE du plan est IMMUABLE (un changement casserait les saisons déjà posées → 400 RATE_PLAN_CURRENCY_IMMUTABLE). Bump de version NF203 (append-only) : les réservations déjà confirmées gardent leur snapshot tarifaire figé, jamais reprisées. Tous montants en centimes entiers.

id
required
string format: uuid

Identifiant du plan tarifaire

Nouvelle structure tarifaire. baseRateRule = union discriminée sur pricingUnit (per_room / per_person / derived), identique à la création.

Media type application/json
object
baseRateRule
required

Union discriminée sur pricingUnit.

object
pricingUnit
required

Discriminant de la règle tarifaire.

string
Allowed values: per_room per_person derived
currency
required

Doit rester la devise actuelle du plan (immuable).

string
Allowed values: EUR GBP
flatNightlyCents

(per_room uniquement) Tarif nuit forfaitaire en centimes entiers.

integer
Example
12000
derivedFromRatePlanId

(derived uniquement) ID du plan tarifaire source.

string format: uuid
derivedBasisPoints

(derived uniquement) Pourcentage en points de base (ex: 8000 = 80 %).

integer
Example
8000
occupancy

(per_person uniquement) Grille de tarification à l’occupant.

object
baseUnitNightlyCents
required
integer
adultNightlyCents
required
integer
childTiers
required
Array<object>
<= 6 items
object
ageFrom
required
integer
<= 17
ageTo
required
integer
<= 17
nightlyCents
required
integer
infantFreeUpToAge
required
integer
<= 17
petNightlyCents
required
integer
extraVehicleNightlyCents
required
integer
includedVehicles
required
integer
<= 10
electricityMode
required
string
Allowed values: included metered flat_surcharge
electricityFlatNightlyCents
integer
nullable

Structure tarifaire remplacée

Media type application/json
object
data
required
object
version
required
integer
Example generated
{
"data": {
"version": 1
}
}

Corps invalide, règle tarifaire invalide ou changement de devise

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 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
}