Aller au contenu

Créer un plan tarifaire

POST
/v1/rate-plans
curl --request POST \
--url https://example.com/v1/rate-plans \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <X-API-Key>' \
--data '{ "establishmentId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "code": "BAR", "name": "example", "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 } } }'

Données du plan tarifaire. baseRateRule est une union discriminée sur le champ pricingUnit : - per_room : { pricingUnit, currency, flatNightlyCents } - per_person: { pricingUnit, currency, occupancy: { baseUnitNightlyCents, adultNightlyCents, … } } - derived : { pricingUnit, currency, derivedFromRatePlanId, derivedBasisPoints } Tous les montants sont en centimes entiers (jamais de float money).

Media type application/json
object
establishmentId
required
string format: uuid
code
required
string
<= 20 characters
Example
BAR
name
required
string
<= 200 characters
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
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

Plan créé

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

Corps invalide ou règle tarifaire 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
}