Aller au contenu

Poser / remplacer une fence d'éligibilité (upsert par type)

POST
/v1/rate-plans/{id}/fences
curl --request POST \
--url https://example.com/v1/rate-plans/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/fences \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <X-API-Key>' \
--data '{ "type": "min_lead_time", "thresholdDays": 14, "allowedValues": [ "desk", "booking_engine" ], "requiredCode": "example" }'

Fence = condition d’ACCÈS au tarif (revenue management, ADR-00D116 A5) : achat anticipé min/max (thresholdDays), canaux de vente (allowedValues — vocabulaire canonique desk/booking_engine/ota), segments clients (allowedValues) ou code société (requiredCode). Upsert PAR TYPE : un seul levier par type, même type → remplacement idempotent. Bump de version NF203.

id
required
string format: uuid

Identifiant du plan tarifaire

Union discriminée sur type : min_lead_time/max_lead_time → thresholdDays ; channel → allowedValues (canaux canoniques) ; segment → allowedValues ; corporate_code → requiredCode.

Media type application/json
object
type
required

Type de fence (clé naturelle de l’upsert).

string
Allowed values: min_lead_time max_lead_time channel segment corporate_code
thresholdDays

(min/max_lead_time uniquement) Achat anticipé en jours entre réservation et arrivée.

integer
<= 3650
Example
14
allowedValues

(channel/segment uniquement) Valeurs autorisées. Pour channel : vocabulaire CANONIQUE desk | booking_engine | ota (ADR-00D116 A2).

Array<string>
>= 1 items
Example
[
"desk",
"booking_engine"
]
requiredCode

(corporate_code uniquement) Code société exigé — jamais renvoyé dans les verdicts de devis (confidentialité).

string
>= 1 characters <= 64 characters

Fence appliquée

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

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
}

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
}