| 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: []).
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 |
IGNORED_STALE |
revision ≤ dernière traitée : ignorée |
IGNORED_UNKNOWN |
annulation d'une réservation que Bridg_ ne connaît pas : ignorée (pas une erreur) |
202 Accepted — même référence:révision reçue pendant son traitement.
Error Response
400 Bad Request — { "error": "cmRef ou externalRef requis", "code": "VALIDATION_ERROR" } ;
aussi reservations[] requis, currency requise, Corps JSON invalide.
422 Unprocessable Entity — refus déterministe, ne pas réémettre sans corriger :
{ "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 | La référence du PMS. cmRef prime si les deux sont fournis. Enregistrée pms:<référence>. |
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_.