| Endpoint | Sens | Rôle |
|---|---|---|
POST …/reservations |
PMS → Bridg_ | réservation créée, modifiée ou annulée dans le PMS |
Les réservations Bridg_ → PMS (OTA et moteur direct) passent par l'API du PMS : voir Webhooks. L'objet réservation est décrit dans l'API Reference commune.
Create or update a PMS reservation
Une réservation prise 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 elle porte bookedAt — voir
Disponibilité ci-dessous.
Request
{base}/api/pms/v1/connections/{connectionId}/reservationsAuthorization: Bearer {clientToken}
X-Bridg-Signature: sha256={hmac}
Content-Type: application/json{
"externalRef": "PMS-778812",
"cmRef": "",
"channel": "PMS",
"revision": 1,
"bookedAt": "2026-10-01T15:05:12+01:00",
"currency": "DZD",
"totalAmount": { "gross": 39000, "net": 39000 },
"paymentType": "ON_SITE",
"booker": { "lastName": "Benali", "firstName": "Samir", "email": "samir.benali@example.com", "phone": "+213550000000" },
"reservations": [
{
"lineCode": "01",
"state": "CONFIRMED",
"unitTypeCode": "DLX",
"ratePlanCode": "BAR1",
"from": "2026-10-10",
"to": "2026-10-13",
"occupancy": [ { "bucket": "ADULT", "count": 2 } ],
"nights": [
{ "date": "2026-10-10", "gross": 12000, "net": 12000 },
{ "date": "2026-10-11", "gross": 12000, "net": 12000 },
{ "date": "2026-10-12", "gross": 15000, "net": 15000 }
]
}
]
}Annulation : même message avec revision incrémentée et toutes les lignes en CANCELLED (ou
reservations: []).
Le séjour : statut, chambre, heures réelles
Ajoutez au message où en est le séjour. Les champs sont facultatifs ; un PMS qui ne les envoie pas garde le comportement d'avant.
{
"externalRef": "PMS-778812",
"pmsReference": "PMS-778812",
"revision": 4,
"pmsStatus": "CHECKEDOUT",
"pmsRoomNumber": "204",
"actualCheckInAt": "2026-10-10T14:32:10+01:00",
"actualCheckOutAt": "2026-10-13T11:05:42+01:00",
"…": "le reste de la réservation, inchangé"
}pmsStatus |
Effet dans Bridg_ |
|---|---|
RESERVED |
réservée ; un check-in annulé efface l'heure d'arrivée |
INHOUSE |
arrivée faite, datée par actualCheckInAt |
CHECKEDOUT |
départ fait, daté par actualCheckOutAt |
NOSHOW |
client non venu |
CANCELED |
annulée (pour une réservation née chez vous) |
Envoyez le message à chaque arrivée, départ, no-show et changement de chambre, avec une revision
supérieure. Sans heure réelle, Bridg_ date la transition à la réception du message. Une mise à jour
sans pmsStatus ne change pas le statut connu.
Réservation émise par Bridg_ : renvoyer cmRef + cmRevision
Une réservation que Bridg_ vous a envoyée (OTA, moteur) vit ensuite chez vous : arrivée,
prolongation, changement de chambre, départ. Renvoyez-la sur la même route avec notre numéro
(cmRef, reçu dans bookings/add) et la dernière révision Bridg_ que vous avez appliquée
(cmRevision).
{
"cmRef": "BRG-2026-001240",
"cmRevision": 2,
"pmsReference": "R-2026-00413",
"externalRef": "4471223311",
"channel": "BOOKING_COM",
"revision": 3,
"currency": "DZD",
"totalAmount": { "gross": 36000, "net": 36000 },
"paymentType": "PREPAID",
"booker": { "lastName": "Martin" },
"pmsStatus": "INHOUSE",
"pmsRoomNumber": "312",
"actualCheckInAt": "2026-10-20T13:05:00+01:00",
"reservations": [
{ "lineCode": "01", "state": "CONFIRMED", "unitTypeCode": "DLX", "ratePlanCode": "BAR1",
"from": "2026-10-20", "to": "2026-10-24", "occupancy": [ { "bucket": "ADULT", "count": 2 } ], "nights": [] }
]
}Bridg_ ne crée rien : il rattache le message à sa réservation (action: "LINKED") et suit :
- le statut, la chambre et les heures réelles ;
- les dates (prolongation, départ anticipé), si
cmRevisionest à jour — supérieure ou égale à la dernière révision que Bridg_ vous a émise. En retard, vous n'avez pas encore vu notre dernière modification : vos dates sont ignorées, le reste est appliqué ; - jamais le prix vendu par l'agence ;
- jamais l'annulation : un
CANCELEDest affiché sur la réservation, à trancher par l'opérateur.
pmsReference peut être égal à cmRef si vous avez repris notre numéro. Un cmRef + cmRevision
que Bridg_ ne connaît pas est ignoré (IGNORED_UNKNOWN) : il n'est jamais créé comme une réservation
de votre comptoir.
Success Response
200 OK
{ "accepted": true, "reference": "PMS-778812", "action": "CREATED", "bookingId": "cm…", "bookingNumber": "BRG-2026-001240" }action |
Signification |
|---|---|
CREATED |
réservation créée dans Bridg_ |
UPDATED |
lignes remplacées par celles du message |
CANCELLED |
passée en annulée |
LINKED |
réservation émise par Bridg_ : rattachée, séjour suivi (voir ci-dessus) |
IGNORED_STALE |
revision ≤ dernière traitée : ignorée — vaut aussi pour une réservation émise par Bridg_ que vous renvoyez avec cmRef + cmRevision |
IGNORED_UNKNOWN |
annulation d'une réservation que Bridg_ ne connaît pas, ou cmRef + cmRevision inconnus : ignorée (pas une erreur) |
IGNORED_CODE |
toutes ses chambres sont sur des types que l'établissement a choisi d'ignorer : acquittée, rien écrit |
Quand le message n'a pas tout fait, la réponse porte aussi note, en clair : cmRef inconnu de
l'établissement, révision plus ancienne que la dernière traitée, ou dates d'un LINKED ignorées parce que
cmRevision est en retard sur la dernière émission de Bridg_. La même phrase s'affiche dans le journal
« Reçus du PMS » de Bridg_.
{ "accepted": true, "reference": "BK-MV2K3Q-9F1A", "action": "LINKED", "bookingNumber": "BK-MV2K3Q-9F1A",
"note": "dates du PMS ignorées : il a appliqué la révision 2, Bridg a émis la 3 — il recevra la dernière et renverra la suite" }202 Accepted — même référence:révision reçue pendant son traitement. La même révision renvoyée
après un refus est retraitée (nouveau verdict).
Error Response
400 Bad Request — { "error": "cmRef ou externalRef requis", "code": "VALIDATION_ERROR" } ;
aussi reservations[] requis, currency requise, revision requise (entier ≥ 1, incrémenté à chaque
envoi de la réservation : c'est la clé de déduplication), Corps JSON invalide.
422 Unprocessable Entity — refus déterministe, ne pas réémettre sans corriger. Une fois corrigé
(correspondance faite côté Bridg_), réémettez : la même révision est retraitée, une révision supérieure
aussi.
{ "error": "Type d'unité \"SUP\" non mappé sur cette connexion", "code": "UNMAPPED_UNIT_TYPE" }Autres codes : NO_LINES (aucune ligne active exploitable), MISSING_REFERENCE.
500 — échec transitoire, réémettre.
Fields
Voir Réservation (booking). Particularités du sens entrant :
| Champ | Requis | Remarque |
|---|---|---|
externalRef ou cmRef |
l'un des deux | Réservation née chez vous : votre référence, enregistrée pms:<référence> (pmsReference prime, puis cmRef). Réservation émise par Bridg_ : cmRef = notre numéro, avec cmRevision. |
pmsReference |
recommandé | Votre numéro de réservation. |
pmsStatus |
recommandé | RESERVED, INHOUSE, CHECKEDOUT, NOSHOW, CANCELED. |
pmsRoomNumber |
non | Chambre(s), séparées par , . Absent = aucune chambre attribuée. |
actualCheckInAt, actualCheckOutAt |
non | Heures réelles, ISO 8601 avec fuseau (sans fuseau : heure de l'établissement). |
cmRevision |
réservation émise par Bridg_ | Dernière révision Bridg_ appliquée chez vous. |
revision |
recommandé | Défaut 0 (pas de contrôle de révision). Croissant pour une même référence. |
bookedAt |
recommandé | Date et heure de création de la réservation dans le PMS, ISO 8601 avec fuseau. Sans fuseau, lue comme l'heure locale de l'établissement. Elle ne change pas d'une révision à l'autre. Sans elle, la réservation ne décompte pas la disponibilité (voir ci-dessous). |
currency |
oui | |
reservations[] |
oui | Peut être vide pour une annulation. |
reservations[].ratePlanCode |
non | Non bloquant s'il n'est pas mappé. |
paymentType |
non | PREPAID → réservation marquée payée ; sinon en attente de paiement. |
customer |
non | Prime sur booker pour le nom et le contact du client. |
Disponibilité
Votre message ARI fait foi : chaque instantané de disponibilité remplace le chiffre de Bridg_
pour les nuits qu'il couvre. Entre deux instantanés, Bridg_ décompte lui-même les réservations
reçues — celles des OTA comme les vôtres — à condition de savoir si votre dernier instantané les
comptait déjà. C'est bookedAt qui le dit :
- créée après le dernier instantané de la nuit → décomptée dès réception (une modification déplace le décompte, une annulation le rend) ;
- créée avant → déjà comprise dans l'instantané, rien n'est fait ;
- sans
bookedAt→ Bridg_ ne peut pas trancher et ne décompte rien : la chambre reste en vente sur les OTA jusqu'à votre prochain message ARI.
Envoyez donc bookedAt, et poussez la disponibilité des nuits touchées après chaque réservation :
l'un couvre l'autre, sans double décompte.
Note
- Idempotence : clé
<référence>:r<revision>. Rejouer le même message renvoie le résultat mémorisé. - Modification = remplacement de toutes les lignes.
- Deux lignes du même type de chambre sont regroupées en quantité 2 côté Bridg_.