Trois messages : RESERVATION (dans les deux sens), RESULT (dans les deux sens) et
MESSAGEREQUEST (PMS → Bridg_). Tous circulent sur l'URL unique …/messages
(API Reference XML).
RESERVATION entrante (PMS → Bridg_)
Une réservation créée, modifiée ou annulée dans le PMS. Bridg_ la crée ou la met à jour dans le
tableau de bord avec la source PMS, et la décompte de la disponibilité si sa date de création
(originalBookingDate) est postérieure au dernier RTAV de la nuit ; sans cette date, rien n'est
décompté avant le RTAV suivant. Schéma reservation.fidelio.* (4.0 et 5.0 acceptés ; le préfixe de namespace n'est
pas contrôlé).
Request
{base}/api/pms/v1/connections/{connectionId}/messages?key={secret}Content-Type: text/xml; charset=UTF-8
<?xml version="1.0" encoding="UTF-8"?>
<?Label ATLALG|RESERVATION|2841300|NEW?>
<Reservation xmlns="reservation.fidelio.5.0" mfReservationAction="ADD">
<HotelReference>
<hotelCode>ATLALG</hotelCode>
</HotelReference>
<reservationID>1543212</reservationID>
<ResProfiles>
<ResProfile>
<Profile xmlns="profile.fidelio.5.0" profileType="GUEST">
<IndividualName>
<nameFirst>Samir</nameFirst>
<nameSur>Benali</nameSur>
</IndividualName>
</Profile>
</ResProfile>
</ResProfiles>
<RoomStays>
<RoomStay reservationStatusType="RESERVED">
<roomStayRPH>1</roomStayRPH>
<roomInventoryCode>DLX</roomInventoryCode>
<TimeSpan timeUnitType="DAY">
<startTime>2026-10-10T00:00:00.000</startTime>
<numberOfTimeUnits>3</numberOfTimeUnits>
</TimeSpan>
<GuestCounts>
<GuestCount><ageQualifyingCode>ADULT</ageQualifyingCode><mfCount>2</mfCount></GuestCount>
<GuestCount><ageQualifyingCode>CHILD</ageQualifyingCode><mfCount>0</mfCount></GuestCount>
</GuestCounts>
<RatePlans>
<RatePlan>
<ratePlanCode>BAR1</ratePlanCode>
<Rates>
<Rate rateBasisTimeUnitType="DAY">
<Amount currencyCode="DZD"><valueNum>12000</valueNum></Amount>
<rateBasisUnits>1</rateBasisUnits>
<TimeSpan timeUnitType="DAY">
<startTime>2026-10-10T00:00:00.000</startTime>
<numberOfTimeUnits>2</numberOfTimeUnits>
</TimeSpan>
</Rate>
<Rate rateBasisTimeUnitType="DAY">
<Amount currencyCode="DZD"><valueNum>15000</valueNum></Amount>
<rateBasisUnits>1</rateBasisUnits>
<TimeSpan timeUnitType="DAY">
<startTime>2026-10-12T00:00:00.000</startTime>
<numberOfTimeUnits>1</numberOfTimeUnits>
</TimeSpan>
</Rate>
</Rates>
</RatePlan>
</RatePlans>
</RoomStay>
</RoomStays>
</Reservation>Fields
| Élément / attribut | Requis | Traduction |
|---|---|---|
Label/transactionId |
oui | révision de la réservation (doit croître d'un message à l'autre pour une même réservation) et clé de déduplication |
Reservation/@mfReservationAction |
oui | ADD, CHANGE : état complet ; CANCEL et DELETE : toutes les lignes annulées (une réservation supprimée dans le PMS ne doit pas revenir dans les arrivées) |
reservationID |
oui | numéro de confirmation OPERA → pmsReference, clé de la réservation côté Bridg (externalId = pms:<reservationID>) et affiché sur la fiche |
confirmationID |
non | notre numéro de réservation quand OPERA renvoie une réservation que Bridg a émise : elle est alors reconnue et rattachée (numéro et état PMS posés sur la réservation Bridg), jamais recréée ; son contenu n'est pas appliqué. BK-…-2 (une partie d'une réservation de plusieurs types) est rattaché à sa partie, si la réservation BK-… la connaît : la réservation Bridg porte les numéros et les chambres de toutes (200604, 200615), et son statut est celui de l'ensemble — en séjour dès qu'une chambre l'est, partie quand toutes le sont |
RoomStay/@reservationStatusType |
non | CANCELED (ou toute valeur contenant CANCEL) annule la ligne ; la valeur brute est conservée en pmsStatus et pilote le séjour côté Bridg : RESERVED → confirmée (un check-in annulé efface l'arrivée réelle), INHOUSE → check-in fait, CHECKEDOUT → check-out fait, NOSHOW → no-show, REQUESTED/WAITLISTED → en attente. Pour une réservation émise par Bridg et renvoyée par OPERA, seuls arrivée, départ, no-show et retour en réservée sont suivis : une annulation côté PMS reste affichée mais n'annule pas la réservation Bridg |
RoomStay/roomID |
non | chambre attribuée → pmsRoomNumber. C'est un état, pas un diff : absent, la chambre est considérée désattribuée et effacée côté Bridg |
RoomStay/TimeSpan/numberOfTimeUnits = 0 |
— | nuits restantes, pas durée du séjour : c'est la forme d'un message de départ (au check-out, tous les TimeSpan tombent à 0 alors que la réservation portait ses nuits à l'arrivée). Sur une réservation déjà connue, un tel message ne met à jour que l'état du séjour (statut, chambre, horodatages) : dates, nuits, montants et lignes restent ceux qui ont été vendus |
originalBookingDate |
recommandé | date et heure de création dans le PMS (heure locale de l'établissement) : créée après le dernier RTAV de la nuit, la réservation est décomptée de la disponibilité dès réception ; absente, elle ne l'est qu'au RTAV suivant. Conservée aussi dans pmsMeta |
marketSegmentCode, mfsourceCode, GuaranteeInfo/mfGuaranteeType, PaymentInstruction/mfPaymentMethod, reservationOriginatorCode, ResGuest/arrivalTime, departureTime |
non | conservés tels quels dans pmsMeta (codes marché et source, garantie, mode de paiement, origine, heures annoncées) ; l'heure d'arrivée alimente aussi l'heure d'arrivée prévue à la création |
ResComments/ResComment/comment |
non | notes de réservation saisies au PMS (hors type SYSTEM) → notes réception, à la création seulement |
RoomStay/roomStayRPH |
recommandé | lineCode (les chambres 2 à N d'un séjour multi-chambres : <lineCode>-2, -3…) |
mfImage/numRooms |
non | nombre de chambres du séjour — OPERA porte N chambres identiques en UN RoomStay (« The RoomStay object will always be one (1) », spec Oracle). Le séjour devient N chambres côté Bridg : prix par nuit et occupants s'entendent par chambre, total = prix × chambres × nuits, et N chambres sont décomptées de la disponibilité. Absent, nul ou illisible : 1 |
RoomStay/roomInventoryCode |
oui | unitTypeCode (mapping UNIT_TYPE) |
RoomStay/TimeSpan |
oui | séjour de la ligne (from, to) |
GuestCounts/GuestCount |
non | ageQualifyingCode ADULT → adultes ; toute autre valeur → enfants ; mfCount = 0 ignoré |
RatePlan/ratePlanCode |
non | ratePlanCode (mapping RATE_PLAN) ; non bloquant s'il n'est pas mappé |
Rate/Amount/valueNum |
oui (ligne active) | montant par nuit ; Rate/TimeSpan dit sur quelles nuits — plusieurs <Rate> = tarifs journaliers variables |
Rate/Amount/@currencyCode |
non | devise ; à défaut DZD |
Profile/IndividualName |
non | nameSur → nom, nameFirst → prénom (le premier IndividualName trouvé) |
Success Response
200 OK
{ "accepted": true, "reference": "1543212", "action": "CREATED", "bookingId": "cm…", "bookingNumber": "BRG-2026-001240" }action : CREATED, UPDATED, CANCELLED, IGNORED_STALE (révision ≤ dernière traitée),
IGNORED_UNKNOWN (annulation d'une réservation inconnue), IGNORED_CODE (toutes ses chambres sont sur
des types que l'établissement a choisi d'ignorer : rien n'est créé ni modifié dans Bridg_ ; une
réservation en partie sur un type ignoré est créée avec ses seules autres chambres). Un RESULT
SUCCESS est mis en file.
Error Response
200 OK + RESULT FAILED en file (refus déterministe) :
Code dans resultMessage |
Cause |
|---|---|
UNMAPPED_UNIT_TYPE |
roomInventoryCode non mappé |
NO_LINES |
aucune ligne active exploitable |
MISSING_REFERENCE |
ni reservationID ni confirmationID |
MISSING_AMOUNT |
<Rate> sans Amount/valueNum sur une ligne active |
DUPLICATE_NIGHT |
une nuit tarifée deux fois (deux <Rate> ou <RatePlan> qui se recouvrent) |
INVALID_NUM_ROOMS |
mfImage/numRooms non entier ou supérieur à 500 |
AMBIGUOUS_ROOM_COUNT |
mfImage/numRooms > 1 sur un message à plusieurs RoomStay (hors spec : à quel séjour s'applique-t-il ?) |
500 — échec transitoire, réémettre.
Note
- Modification = remplacement : Bridg_ remplace toutes les lignes par celles du message.
- Annulation :
mfReservationAction="CANCEL"ou toutes les lignes enCANCELED. Annuler une réservation inconnue de Bridg_ n'est pas une erreur (IGNORED_UNKNOWN). - Idempotence : la clé est
reservationID:r<transactionId>. Rejouer le même message renvoie le résultat mémorisé. - Le paiement est enregistré
ON_SITE(à régler sur place).
RESERVATION sortante (Bridg_ → PMS)
Servie par GET …/messages pour toute réservation OTA ou directe créée, modifiée ou annulée
dans Bridg_. Namespaces émis : reservation.fidelio.4.0 et profile.fidelio.4.0 (compatibles
avec les schémas 5.0).
Message servi
HTTP/1.1 200 OK Content-Type: text/xml; charset=UTF-8 title: ATLALG|RESERVATION|42|NEW
<?xml version="1.0" encoding="UTF-8"?>
<?Label ATLALG|RESERVATION|42|NEW?>
<Reservation xmlns="reservation.fidelio.4.0" mfReservationAction="ADD">
<HotelReference>
<hotelCode>ATLALG</hotelCode>
</HotelReference>
<confirmationID>BRG-2026-001234</confirmationID>
<StayDateRange timeUnitType="DAY">
<startTime>2026-10-10T00:00:00.000</startTime>
<numberOfTimeUnits>3</numberOfTimeUnits>
</StayDateRange>
<GuestCounts>
<GuestCount>
<ageQualifyingCode>ADULT</ageQualifyingCode>
<mfCount>2</mfCount>
</GuestCount>
</GuestCounts>
<ResComments>
<ResComment>
<resCommentRPH>0</resCommentRPH>
<guestViewable>0</guestViewable>
<comment>Reservation Bridg BRG-2026-001234 - Source : Booking.com (ref 4321567890) - Prise le 16/09/2026 10:30 UTC
Client : Samir Benali - samir@example.com - +213 555 00 00 00
Sejour : du 10/10/2026 au 13/10/2026 (3 nuits) - 2 adultes
Chambre : DLX, tarif BAR1, 12000 DZD/nuit
Total : 36000 DZD - Paiement : prepaye (encaisse par le canal)
Demandes client : Lit bebe / Arrivee prevue : 22:00</comment>
<mfcommentType>RESERVATION</mfcommentType>
<mfcommentDate>2026-09-16T10:31:00.000</mfcommentDate>
</ResComment>
</ResComments>
<ResGuests>
<ResGuest>
<resGuestRPH>0</resGuestRPH>
<profileRPHs>0</profileRPHs>
<InHouseTimeSpan timeUnitType="DAY">
<startTime>2026-10-10T00:00:00.000</startTime>
<numberOfTimeUnits>3</numberOfTimeUnits>
</InHouseTimeSpan>
</ResGuest>
</ResGuests>
<ResProfiles>
<ResProfile>
<Profile xmlns="profile.fidelio.4.0" profileType="GUEST">
<IndividualName>
<nameFirst>Samir</nameFirst>
<nameSur>Benali</nameSur>
</IndividualName>
<ElectronicAddresses>
<ElectronicAddress electronicAddressType="EMAIL">
<eAddress>samir@example.com</eAddress>
<mfPrimaryYN>Y</mfPrimaryYN>
</ElectronicAddress>
</ElectronicAddresses>
<PostalAddresses>
<PostalAddress addressType="HOME">
<countryCode>DZ</countryCode>
<mfPrimaryYN>Y</mfPrimaryYN>
</PostalAddress>
</PostalAddresses>
<PhoneNumbers>
<PhoneNumber phoneNumberType="MOBILE">
<phoneNumber>+213 555 00 00 00</phoneNumber>
<mfPrimaryYN>Y</mfPrimaryYN>
</PhoneNumber>
</PhoneNumbers>
</Profile>
<resProfileRPH>0</resProfileRPH>
</ResProfile>
</ResProfiles>
<RoomStays>
<RoomStay mfReservationAction="ADD" reservationStatusType="RESERVED">
<roomStayRPH>01</roomStayRPH>
<roomInventoryCode>DLX</roomInventoryCode>
<TimeSpan timeUnitType="DAY">
<startTime>2026-10-10T00:00:00.000</startTime>
<numberOfTimeUnits>3</numberOfTimeUnits>
</TimeSpan>
<GuestCounts>
<GuestCount>
<ageQualifyingCode>ADULT</ageQualifyingCode>
<mfCount>2</mfCount>
</GuestCount>
</GuestCounts>
<RatePlans>
<RatePlan>
<ratePlanRPH>0</ratePlanRPH>
<ratePlanCode>BAR1</ratePlanCode>
<TimeSpan timeUnitType="DAY">
<startTime>2026-10-10T00:00:00.000</startTime>
<numberOfTimeUnits>3</numberOfTimeUnits>
</TimeSpan>
<Rates>
<Rate rateBasisTimeUnitType="DAY">
<rateRPH>0</rateRPH>
<Amount currencyCode="DZD">
<valueNum>12000</valueNum>
</Amount>
<rateBasisUnits>1</rateBasisUnits>
<TimeSpan timeUnitType="DAY">
<startTime>2026-10-10T00:00:00.000</startTime>
<numberOfTimeUnits>3</numberOfTimeUnits>
</TimeSpan>
</Rate>
</Rates>
</RatePlan>
</RatePlans>
<resGuestRPHs>0</resGuestRPHs>
<resCommentRPHs>0</resCommentRPHs>
<mfsourceCode>BOOKING_COM</mfsourceCode>
</RoomStay>
</RoomStays>
<resCommentRPHs>0</resCommentRPHs>
<resProfileRPHs>0</resProfileRPHs>
</Reservation>Fields
| Élément / attribut | Valeur |
|---|---|
Label/transactionId, en-tête title |
entier 1..999999999, unique par message servi ; à renvoyer dans le RESULT |
ResGuests/ResGuest + RoomStay/resGuestRPHs |
chaîne d'identification du client principal (resGuestRPHs → ResGuest → profileRPHs → ResProfile/Profile) — exigée par le traducteur d'OXI, qui refuse sinon (« Can't identify the primary ResGuest ») |
Reservation/@mfReservationAction |
ADD à la création ; EDIT à la modification (état complet, OPERA retrouve la réservation par confirmationID) ; CANCEL quand toutes les lignes sont annulées — l'annulation est la réservation complète, lignes en CANCELED, le dialecte n'a pas de message d'annulation autonome |
confirmationID |
numéro de réservation Bridg_ (cmRef), stable à travers les révisions — le « numéro de confirmation du système externe » de la spec Oracle, clé de recherche d'OXI pour toute modification/annulation. Pour une réservation de plusieurs types de chambre, une réservation OPERA par type : BK-… pour la première partie, BK-…-2, BK-…-3 pour les suivantes — voir mfImage/numRooms. Jamais le .2 des legs d'OXI, qu'OPERA pourrait lire comme une partie de BK-…. Jamais dans reservationID : c'est le numéro de confirmation OPERA (un entier attribué par OPERA), et une référence alphanumérique y fait échouer le traducteur (ORA-06502) |
reservationID |
numéro de confirmation OPERA, dès qu'il est connu : renvoyé par le RESULT d'acceptation (ResultIds/ResultId/pmsId), mémorisé sur la réservation Bridg (pmsReference) et joint à toute modification ou annulation — second critère de recherche d'OXI après confirmationID. Réservation en plusieurs parties : chaque message porte le numéro de sa partie, jamais celui d'une autre |
StayDateRange, GuestCounts (racine) |
fenêtre totale du séjour et occupants de la réservation — « Required field for OPERA » ; c'est ce GuestCounts-là qu'OPERA lit, celui du RoomStay est ignoré |
ResGuest/InHouseTimeSpan |
séjour du client principal (« Required field in OPERA ») — égal à StayDateRange pour un client unique |
Profile/@profileType |
GUEST |
Profile/ElectronicAddresses, PostalAddresses, PhoneNumbers |
e-mail (EMAIL), pays (countryCode ISO alpha-2, adresse HOME) et téléphone (MOBILE) du client, chacun omis s'il est inconnu — dans cet ordre (séquence XSD du profil) |
ResComments/ResComment |
note de réservation pour l'hôtel (type RESERVATION, guestViewable=0), rattachée par resCommentRPHs au séjour et à la racine : référence Bridg_, canal et référence chez le canal, date de prise, client et contacts, séjour et occupation, type de chambre / tarif / prix par nuit pour chaque chambre, total et mode de paiement, demandes du client. Texte ASCII (sans accents) pour survivre à une base OPERA non UTF-8 ; 2 000 caractères max |
RoomStay/mfsourceCode |
code source = canal Bridg_ (BOOKING_COM, EXPEDIA, AIRBNB, HOTELS_COM, AGODA, DIRECT, PHONE, WALK_IN…). OXI le convertit via sa table Source Codes (valeur externe → code source OPERA) ; sans conversion, il valide contre les codes OPERA puis retombe sur le défaut de l'interface. À renseigner chez l'hôtel pour ventiler ses sources |
RoomStay/@mfReservationAction, @reservationStatusType |
ADD / RESERVED, ou CANCEL / CANCELED par ligne |
roomStayRPH, ratePlanRPH, rateRPH |
reference placeholders (entiers) ; roomStayRPH = lineCode (01, 02…) |
mfImage/numRooms |
plusieurs chambres identiques (même type, même tarif, mêmes dates) : UN seul RoomStay, prix par nuit et occupants d'une chambre, et leur nombre ici — la forme de la spec Oracle. Un léger écart de centimes entre chambres (total converti réparti) part en prix moyen ; des occupants répartis inégalement (5 adultes en 2 chambres) sont comptés par excès dans le séjour, exactement dans la note. Porté aussi sur toute modification (EDIT), même à 1, pour qu'une réservation ramenée à une chambre le dise. Des types différents dans une même réservation (ou des tarifs différents) partent en une réservation OPERA par type — un message chacun, sous BK-…, BK-…-2…, avec ses seules chambres, ses occupants et son montant ; la note de chaque partie nomme les autres et rappelle le total de la réservation complète. Une modification qui retire un type annule sa réservation OPERA ; un type ajouté en crée une, sous une référence jamais utilisée. Une réservation d'un seul type part comme avant, en un message BK-… |
RatePlan/TimeSpan |
fenêtre du plan tarifaire (= séjour de la ligne) |
roomInventoryCode, ratePlanCode |
codes PMS (mappings) |
RoomStay/TimeSpan |
séjour |
GuestCounts |
ADULT, CHILD |
Rates/Rate |
un <Rate> par palier de prix : montant par nuit + nuits couvertes (tarifs variables rendus nativement) |
Amount/@currencyCode |
devise de la réservation |
Profile/IndividualName |
nom et prénom du réservant |
Non porté aujourd'hui : extras, ventilation des taxes (gross = net), jeton de paiement,
code marché (OPERA le dérive du code tarif, ou applique le défaut de l'interface OXI).
Verdict attendu du PMS
Après traitement, le PMS envoie un RESULT sur POST …/messages, corrélé sur le transactionId
du message servi :
<?xml version="1.0" encoding="UTF-8"?>
<?Label ATLALG|RESULT|42|SUCCESS?>
<RESULT xmlns="result.fidelio.4.0" success="SUCCESS" timeStamp="2026-09-11T10:40:00.000">
<resortId>ATLALG</resortId>
<resultMessage>Reservation created</resultMessage>
<ResultIds>
<ResultId resultMsgType="RESERVATION">
<crsId>BRG-2026-001234</crsId>
<pmsId>1543299</pmsId>
</ResultId>
</ResultIds>
</RESULT>Réponse de Bridg_ : 200 OK
{ "accepted": true, "transactionId": 42, "outcome": "CONFIRMED" }outcome |
Signification |
|---|---|
CONFIRMED |
ligne close (DONE). Un succès avec réserve (WARNING, SUCCESSINFO) est aussi un CONFIRMED : le resultMessage est conservé sur la ligne et affiché dans l'écran Interface PMS, pour que l'opérateur voie ce que le PMS a substitué (tarif par défaut, chambre retirée…) |
REQUEUED |
RESULT en échec transitoire : la réservation sera resservie plus tard avec un nouveau transactionId (backoff 30 s → 30 min) |
FAILED |
dead-letter, visible dans l'écran Interface PMS, rejouable à la main : soit après 8 échecs transitoires, soit immédiatement sur un refus déterministe |
UNKNOWN |
transactionId inconnu (déjà clos, ou resservi sous un autre identifiant) |
Un refus est déterministe quand resservir le même message donnerait le même verdict :
validation OPERA (Invalid …, … is not set, … not found, mandatory, Can't …), erreur
Oracle (ORA-xxxxx). Il part en dead-letter sans rejeu — inutile d'user huit tentatives et de
remplir le Message Status du PMS pendant une heure pour un problème de configuration. Les motifs
transitoires (record locked, timeout, try again, busy, temporarily unavailable) et le
verdict REQUEUE sont rejoués. Un motif non reconnu reste au rejeu borné.
Sans RESULT sous 30 minutes, la réservation est resservie avec un nouveau transactionId :
dédupliquez sur reservationID.
RESULT — accusé de traitement
Schéma result.fidelio.4.0. Même forme dans les deux sens.
<?xml version="1.0" encoding="UTF-8"?>
<?Label ATLALG|RESULT|2841179|FAILED?>
<RESULT xmlns="result.fidelio.4.0" success="FAIL" timeStamp="2026-09-11T10:39:18.896">
<resortId>ATLALG</resortId>
<resultMessage>1 item(s) rejeté(s) : #0 UNMAPPED_UNIT_TYPE — Type d'unité "SUP" non mappé sur cette connexion</resultMessage>
</RESULT>| Champ | Description |
|---|---|
Label/transactionId |
le transactionId du message d'origine (pas un identifiant propre) |
Label/status |
SUCCESS ou FAILED ; certains OXI posent NEW sur un accusé de succès |
RESULT/@success |
SUCCESS, SUCCESSINFO, WARNING = appliqué ; FAIL, REQUEUE = non appliqué |
resortId |
code de l'établissement |
resultMessage |
texte libre ; Bridg_ y met le détail par item (#index CODE — message) |
ResultIds/ResultId/@resultMsgType |
type du message d'origine quand il existe dans l'énumération (RATE, RESERVATION, RATEAVAIL pour RAVL…) ; omis sinon |
ResultIds/ResultId/pmsId, ReservationReference[@type=PMSID]/@referenceNumber |
numéro OPERA de la réservation. Le numéro de leg que certaines versions suffixent (1543463.1) est retiré : la référence nue est mémorisée, puis renvoyée en reservationID, qui n'accepte qu'un entier |
Lecture d'un RESULT reçu du PMS : c'est l'attribut @success du corps qui fait foi, puisque
c'est lui que le schéma définit. Le status de l'enveloppe ne tranche qu'en l'absence de cet
attribut. Les exemples officiels d'Oracle posent d'ailleurs <?Label …|RESULT|…|NEW?> sur un corps
success="SUCCESS" : exiger SUCCESS dans l'enveloppe ferait lire ces accusés comme des échecs,
donc réémettre la réservation et la dupliquer dans le PMS.
Les RESULT émis par Bridg_ sont servis par GET dans l'ordre, avant ou après les
réservations selon leur date de mise en file, et sont clos à la remise (ils n'attendent rien en
retour).
MESSAGEREQUEST — redemander une réservation
Le PMS peut redemander une réservation qu'il a perdue ou jamais reçue. Bridg_ la remet en file
avec son état courant puis met un RESULT en file. Seul le type RESERVATION est servi ; les
autres reçoivent un RESULT FAILED explicite.
Request
<?xml version="1.0" encoding="UTF-8"?>
<?Label ATLALG|MESSAGEREQUEST|2841400|NEW?>
<MessageRequest xmlns="messagerequest.fidelio.3.0" responseDetail="DETAIL">
<messageType>RESERVATION</messageType>
<keyId>BRG-2026-001234</keyId>
<HotelReference>
<hotelCode>ATLALG</hotelCode>
</HotelReference>
</MessageRequest>| Champ | Description |
|---|---|
messageType |
RESERVATION |
keyId |
le reservationID Bridg_ (numéro de réservation) |
Success Response
200 OK — { "accepted": true, "requeued": "BRG-2026-001234" }, puis dans la file : la
RESERVATION (nouveau transactionId) et un RESULT SUCCESS corrélé à 2841400.
Error Response
200 OK + RESULT FAILED en file : type autre que RESERVATION, réservation inconnue de
l'établissement, ou réservation créée dans le PMS (jamais réémise, anti-boucle).