التوثيق · واجهة PMS

Messages ARI

RTAV (disponibilité), RATE (prix), RAVL et RESTRICTION (restrictions) : structure, champs, règles.

Staginghttps://staging.bridgchannel.appv1.0 · 2026-09-11<?Label BRIDG|DOC|1.0|NEW?>

هذا التوثيق التقني متاح باللغة الفرنسية فقط.

Quatre types de message portent l'ARI du PMS vers Bridg_. Tous sont envoyés sur POST …/messages (API Reference XML) et acquittés par un RESULT en file. Chaque message est traduit en items indépendants (voir ARI item).

Type Nature Granularité
RTAV disponibilité type de chambre × nuit
RATE prix plan tarifaire × type(s) de chambre × plage
RAVL restrictions plan tarifaire × plage
RESTRICTION restrictions plan tarifaire × type de chambre × plage

RTAV — disponibilité

Schéma rtav.fidelio.4.0. C'est le message de disponibilité (paramètre OXI Change_To_Inventory_Generates = RTAV). INVENTORY ne porte que hors-service et limites de vente et n'est pas traduit.

Request

XML
<?xml version="1.0" encoding="UTF-8"?>
<?Label ATLALG|RTAV|2841178|NEW?>
<RtavMessage xmlns="rtav.fidelio.4.0">
  <HotelReference hotelCode="ATLALG"/>
  <DailyInventories>
    <DailyInventory datum="2026-10-10" physicalRooms="60" outOfOrder="2">
      <RoomTypeInventories>
        <RoomTypeInventory roomType="DLX" physicalRooms="20" outOfOrder="1" available="12" roomTypeOverbook="2">
          <Definite count="7" resvCount="7"/>
        </RoomTypeInventory>
        <RoomTypeInventory roomType="SUP" physicalRooms="40" outOfOrder="1" available="25"/>
      </RoomTypeInventories>
    </DailyInventory>
    <DailyInventory datum="2026-10-11">
      <RoomTypeInventories>
        <RoomTypeInventory roomType="DLX" physicalRooms="20" outOfOrder="0">
          <Definite count="5"/>
        </RoomTypeInventory>
      </RoomTypeInventories>
    </DailyInventory>
  </DailyInventories>
</RtavMessage>

Fields

Élément / attribut Requis Traduction
DailyInventory/@datum oui la nuit (AAAA-MM-JJ). Un message sans DailyInventories est valide (rien à synchroniser).
RoomTypeInventory/@roomType oui unitTypeCode (mapping UNIT_TYPE)
@available recommandé availabilityfait foi s'il est présent (borné à 0)
@physicalRooms, @outOfOrder, Definite/@count si @available absent availability = physicalRooms − outOfOrder − Definite/@count. Definite/@count est l'agrégat (blocs + réservations) ; Tentative n'est jamais déduit.
@roomTypeOverbook non overbookingAllowance (marge de survente, stockée à part)
@allowance ignoré (limite de vente, pas une marge)
@generic="true" pseudo-type agrégat : ignoré
RoomClassInventories ignorés (agrégats par classe)

Returns

  • RESULT SUCCESS quand tous les types sont mappés.
  • RESULT FAILED UNMAPPED_UNIT_TYPE pour les types non mappés (les autres sont appliqués).
  • Un compteur négatif (physicalRooms, outOfOrder, Definite/@count) est un message corrompu : NEGATIVE_COUNT, rien n'est appliqué.

RATE — prix

Schéma rate.fidelio.6.0. L'attribut rateMessageType distingue la définition du plan (HEADER) des prix (DETAIL, HEADERWITHDETAIL).

Request

XML
<?xml version="1.0" encoding="UTF-8"?>
<?Label ATLALG|RATE|2841190|NEW?>
<RateHeader xmlns="rate.fidelio.6.0" rateStatus="ACTIVE" rateMessageType="DETAIL">
  <hotelCode>ATLALG</hotelCode>
  <rateCode>BAR1</rateCode>
  <RateDetails>
    <RateDetail>
      <rateCode>BAR1</rateCode>
      <startDate>2026-10-10</startDate>
      <endDate>2026-10-12</endDate>
      <roomTypeList>DLX</roomTypeList>
      <roomTypeList>SUP</roomTypeList>
      <rate1>10000</rate1>
      <rate2>12000</rate2>
      <rate3>14000</rate3>
      <RateDaysOfWeek>
        <monday>1</monday><tuesday>1</tuesday><wednesday>1</wednesday><thursday>1</thursday>
        <friday>1</friday><saturday>1</saturday><sunday>1</sunday>
      </RateDaysOfWeek>
    </RateDetail>
  </RateDetails>
</RateHeader>

Fields

Élément / attribut Requis Traduction
RateHeader/@rateMessageType oui DETAIL ou HEADERWITHDETAIL : prix appliqués. HEADER : catalogue, acquitté SUCCESS sans effet.
RateHeader/@rateStatus oui INACTIVE : acquitté sans effet (les prix d'un tarif inactif ne sont pas appliqués).
RateDetail/rateCode (ou RateHeader/rateCode) oui ratePlanCode (mapping RATE_PLAN)
startDate, endDate oui plage ; endDate inclusive par défaut (réglage rateEndDateInclusive de la connexion — à vérifier en recette)
roomTypeList (répétable) oui un unitTypeCode par élément (une liste séparée par virgules/espaces dans un seul élément est tolérée)
rate1rate5 au moins rate2 prix pour 1 à 5 occupants → byOccupancy. Une valeur ≤ 0 est ignorée. rate2 est obligatoire (prix de référence).
RateDaysOfWeek non masque jour-de-semaine
RateDetail/@mfInactiveDate détail désactivé : ignoré
devise aucune dans le schéma : les prix sont dans la devise de l'établissement Bridg_

Le montant reçu est enregistré tel quel comme prix TTC ou HT selon le paramétrage du tarif Bridg_ (taxIncluded) — le message RATE ne porte pas l'information.

Returns

  • RESULT SUCCESS ; FAILED UNMAPPED_RATE_PLAN / UNMAPPED_UNIT_TYPE par item ; FAILED PRICE_DROP_REJECTED si une baisse de plus de 50 % est détectée sur une date.
  • Refusés explicitement (RESULT FAILED, rien d'appliqué) : tarifs par durée de séjour (rateTiered="true", tierMinLos/tierMaxLosUNSUPPORTED_TIERED_RATE), prix week-end (weekendRate1..5UNSUPPORTED_WEEKEND_RATE), rateMessageType inconnu (UNSUPPORTED_RATE_MESSAGE).

RAVL — restrictions par tarif

Schéma ravl.fidelio.2.0. Restriction par code tarifaire, sans type de chambre — c'est la granularité native de Bridg_ et le chemin recommandé pour les restrictions.

Request

XML
<?xml version="1.0" encoding="UTF-8"?>
<?Label ATLALG|RAVL|2841200|NEW?>
<Ravl xmlns="ravl.fidelio.2.0" rateCriteria="RATECODE">
  <HotelReference>
    <hotelCode>ATLALG</hotelCode>
  </HotelReference>
  <rateCode>BAR1</rateCode>
  <days>3</days>
  <DaysOfWeek>
    <monday>1</monday><tuesday>1</tuesday><wednesday>1</wednesday><thursday>1</thursday>
    <friday>1</friday><saturday>1</saturday><sunday>1</sunday>
  </DaysOfWeek>
  <RavlDetails>
    <RavlDetail>
      <TimeSpan timeUnitType="DAY">
        <startTime>2026-12-24T00:00:00.000</startTime>
        <numberOfTimeUnits>8</numberOfTimeUnits>
      </TimeSpan>
      <currentRestrictionCode>S_MINLOS</currentRestrictionCode>
    </RavlDetail>
    <RavlDetail>
      <TimeSpan timeUnitType="DAY">
        <startTime>2026-12-31T00:00:00.000</startTime>
        <numberOfTimeUnits>1</numberOfTimeUnits>
      </TimeSpan>
      <currentRestrictionCode>A_CLOSE</currentRestrictionCode>
    </RavlDetail>
  </RavlDetails>
</Ravl>

Fields

Élément / attribut Requis Traduction
Ravl/@rateCriteria non (RATECODE) seul RATECODE est traduit ; RATECLASS / RATECATEGORYUNSUPPORTED_RATE_CATEGORY
Ravl/@blockCriteria non BLOCKCODEUNSUPPORTED_BLOCK_RESTRICTION
Ravl/rateCode oui ratePlanCode. Absent = restriction à l'échelle de l'hôtel → UNSUPPORTED_SCOPE
Ravl/days pour les LOS valeur de minLos / maxLos (0 = pas de valeur)
Ravl/DaysOfWeek non masque appliqué à chaque RavlDetail
RavlDetail/TimeSpan oui plage ; numberOfTimeUnits absent = 1 nuit ; timeUnitTypeDAYUNSUPPORTED_TIME_UNIT
RavlDetail/currentRestrictionCode oui code de restriction (table ci-dessous)
RavlDetail/@mfInactiveDate détail désactivé : ignoré

Codes de restriction

Code OXI Traduction Remarque
S_OPEN, OPEN closed: false rouvre le tarif (stop-sell levé)
S_CLOSE, CLOSED closed: true stop-sell
A_OPEN / A_CLOSE closedToArrival: false / true
D_OPEN / D_CLOSE closedToDeparture: false / true
S_MINLOS, A_MINLOS closed: false, minLos: <days> une LOS « à l'arrivée » est traitée comme une LOS de séjour
S_MAXLOS, A_MAXLOS closed: false, maxLos: <days> idem
ADVBOOK_MIN, ADVBOOK_MAX, autres UNSUPPORTED_RESTRICTION : message refusé plutôt qu'appliqué à moitié

Seuls les champs portés par le code sont écrits : un S_MINLOS ne touche ni CTA ni CTD.

RESTRICTION — restrictions par tarif × type

Schéma restriction.opera.4.0. Plusieurs plages, chacune avec son masque de jours et ses cibles.

Request

XML
<?xml version="1.0" encoding="UTF-8"?>
<?Label ATLALG|RESTRICTION|2841210|NEW?>
<Restriction xmlns="restriction.opera.4.0" actionType="CHANGE" blockCriteria="NA">
  <HotelReference>
    <hotelCode>ATLALG</hotelCode>
  </HotelReference>
  <RangeDetails>
    <RangeDetail>
      <TimeSpan timeUnitType="DAY">
        <startTime>2026-11-01T00:00:00.000</startTime>
        <numberOfTimeUnits>30</numberOfTimeUnits>
      </TimeSpan>
      <DaysOfWeek>
        <monday>0</monday><tuesday>0</tuesday><wednesday>0</wednesday><thursday>0</thursday>
        <friday>1</friday><saturday>1</saturday><sunday>0</sunday>
      </DaysOfWeek>
      <RestrictionDetails>
        <RestrictionDetail restrictionType="S_MINLOS" rateCriteria="RATECODE" roomCriteria="ROOMTYPE">
          <roomType>DLX</roomType>
          <rateCode>BAR1</rateCode>
          <los>2</los>
        </RestrictionDetail>
      </RestrictionDetails>
    </RangeDetail>
  </RangeDetails>
</Restriction>

Fields

Élément / attribut Requis Traduction
Restriction/@actionType oui CHANGE et SYNC sont traités de la même façon (écrasement par tarif × type × date)
Restriction/@blockCriteria oui NA ; BLOCKCODEUNSUPPORTED_BLOCK_RESTRICTION
RangeDetail/TimeSpan oui plage
RangeDetail/DaysOfWeek non masque jour-de-semaine (le masque ci-dessus produit une plage par week-end vendredi–samedi)
RestrictionDetail/@restrictionType oui code de restriction (table RAVL)
RestrictionDetail/@roomCriteria non ROOMTYPE ; ROOMCLASSUNSUPPORTED_ROOM_CLASS
RestrictionDetail/@rateCriteria non RATECATEGORYUNSUPPORTED_RATE_CATEGORY
RestrictionDetail/roomType oui unitTypeCode. Absent = portée hôtel → UNSUPPORTED_SCOPE
rateCode (détail, plage ou racine) oui pour Bridg_ ratePlanCode — une restriction sans tarif est refusée par item (VALIDATION_ERROR)
los (days toléré) pour les LOS valeur de minLos / maxLos

Returns

  • RESULT SUCCESS, ou FAILED avec le détail par item (UNMAPPED_RATE_PLAN, UNMAPPED_UNIT_TYPE).
  • Le message entier est refusé (RESULT FAILED, rien d'appliqué) sur : classe de chambre, catégorie de tarif, portée hôtel, bloc, code de restriction inconnu.

Rappel : RAVR n'est pas traduit

RAVR (restriction par type de chambre sans tarif) est refusé avec RESTRICTION_GRANULARITY_MISMATCH : Bridg_ stocke les restrictions par tarif. Paramétrez le PMS pour émettre RAVL (par code tarifaire) ou RESTRICTION (tarif × type).