Réservation

La chambre, le type de pension et le tarif choisis par le client sont transmis à HMS dans une structure BookingPushRQ. Le même endpoint gère les annulations et les modifications : il suffit d’envoyer type avec la valeur Cancel ou Modify. Le processus de bout en bout est décrit dans le guide Flux de réservation.

Transmettre une réservation (BookingPushRQ)#

POST/external/online/channel/booking

Authentification: Authorization: Bearer · Corps: application/json

Enregistre une ou plusieurs réservations dans HMS. ID est le code de réservation unique généré de votre côté ; envoyer Modify avec le même ID met à jour l’enregistrement, Cancel l’annule. Lorsque plusieurs chambres du même type de chambre et du même type de pension sont vendues, chaque chambre forme un élément RoomStays distinct, avec NumberOfUnits 1, 2, 3…

Pour le type de paiement carte de crédit (9), les données de carte sont envoyées sous PaymentCard ; omettez ce champ pour les autres types de paiement. Manipuler des données de carte vous place dans le périmètre PCI DSS.

Corps de la requête

BookingPushRQ.Bookings[]object[]obligatoire
Liste des réservations. Généralement un seul élément.
hotelIDstringobligatoire
Identifiant de l’hôtel.
IDstringobligatoire
Code de réservation unique dans votre système. Également enregistré comme numéro de voucher.
typestringobligatoire
Type d’opération.
BookModifyCancel
createDateTimedatetime
Date de création de la réservation (ISO 8601).
checkinDate / checkoutDatedateobligatoire
Dates d’arrivée et de départ, YYYY-MM-DD.
RoomStays[]object[]obligatoire
Chambres vendues.
roomTypeIDstringobligatoire
items[].id issu de la liste des chambres.
roomNamestring
Nom du type de chambre (à titre informatif).
ratePlanIDstringobligatoire
accommodationTypes[].id issu de la liste des chambres.
ratePlanNamestring
Nom du type de pension (à titre informatif).
typestring
Type d’opération pour la chambre.
BookModifyCancel
NumberOfUnitsstringobligatoire
Numéro d’ordre des chambres de même type de chambre et de pension : 1, 2, 3…
checkinDate / checkoutDatedateobligatoire
Dates d’arrivée et de départ de la chambre.
GuestCountobjectobligatoire
Nombre d’adultes (adult) et d’enfants (child).
PerDayRatesobject
currency et PerDayRate[] : stayDate, baseRate, hotelServiceFees.
Totalobjectobligatoire
Total de la chambre : amountAfterTaxes, amountOfTaxes, currency.
PaymentCardobject
Uniquement pour le type de paiement 9 (carte de crédit). CardHolder{fullname, address, country, city}, cardNumber, expireDate (MMYY), cardCode, seriesCode (CVV).
PrimaryGuests[]object[]obligatoire
Client(s) principal(aux) : name, surname, PhoneNumber, email, CountryCode.
ChildGuests[]object[]
Enfants. age est obligatoire ; name, surname, year, date et detail sont facultatifs.
SpecialRequest[]object[]
Notes du client et conditions d’annulation : text. Concaténées dans les remarques de la réservation.
extras[]object[]
Extras/forfaits vendus : name, note, person, piece, price, priceMode, priceTotal, stockID (id issu de la liste des forfaits).
Totalobjectobligatoire
Total général : amountAfterTaxes, amountOfTaxes, extraTotal, currency.

Réponse

200 Objet BookingPushRS. En cas de succès, Success: true et l’identifiant de réservation HMS (HMS_ID) ; en cas d’échec, un message Error et BookingConfirmNumbers[].Error[].

Réponses d’erreur

  • 200 Error : No available data could be found. (01, corps vide ou illisible) · Hotel registration not found on HMS. (02, hôtel non relié au canal en ligne) · Could not register. · Failed to parse information.
Requête
curl -X POST "https://test.hms.gen.tr/external/online/channel/booking" \
  -H "Authorization: Bearer $HMS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "BookingPushRQ": {
        "Bookings": [
            {
                "hotelID": "1000",
                "ID": "4811174883",
                "type": "Book",
                "createDateTime": "2026-08-01T08:32:11:293Z",
                "checkinDate": "2026-08-18",
                "checkoutDate": "2026-08-20",
                "RoomStays": [
                    {
                        "roomTypeID": "2",
                        "roomName": "Chambre standard",
                        "ratePlanID": "2",
                        "ratePlanName": "Petit-déjeuner inclus",
                        "type": "Book",
                        "NumberOfUnits": "1",
                        "checkinDate": "2026-08-18",
                        "checkoutDate": "2026-08-20",
                        "GuestCount": {
                            "adult": 2,
                            "child": 1
                        },
                        "PerDayRates": {
                            "currency": "TRY",
                            "PerDayRate": [
                                {
                                    "stayDate": "2026-08-18",
                                    "baseRate": "965.00",
                                    "hotelServiceFees": "0"
                                },
                                {
                                    "stayDate": "2026-08-19",
                                    "baseRate": "965.00",
                                    "hotelServiceFees": "0"
                                }
                            ]
                        },
                        "Total": {
                            "amountAfterTaxes": "1930.00",
                            "amountOfTaxes": "175.45",
                            "currency": "TRY"
                        }
                    }
                ],
                "PrimaryGuests": [
                    {
                        "name": "Ayşe",
                        "surname": "Demir",
                        "PhoneNumber": "+905551112233",
                        "email": "[email protected]",
                        "CountryCode": "TR"
                    }
                ],
                "ChildGuests": [
                    {
                        "age": 7
                    }
                ],
                "SpecialRequest": [
                    {
                        "text": "Arrivée tardive, vers 23 h."
                    }
                ],
                "extras": [
                    {
                        "name": "Dîner",
                        "note": "",
                        "person": 2,
                        "piece": 1,
                        "price": "400.00",
                        "priceMode": null,
                        "priceTotal": "400.00",
                        "stockID": 12
                    }
                ],
                "Total": {
                    "amountAfterTaxes": "2330.00",
                    "amountOfTaxes": "211.82",
                    "extraTotal": "400.00",
                    "currency": "TRY"
                }
            }
        ]
    }
}'
Réponse · 200
{
    "BookingPushRS": {
        "Success": true,
        "BookingConfirmNumbers": [
            {
                "confirmTime": 1755500000,
                "bookingID": 48213,
                "bookingType": "Book",
                "HMS_ID": 48213
            }
        ]
    }
}
Réponse · 200 (erreur)
{
    "BookingPushRS": {
        "Error": "Hotel registration not found on HMS.",
        "BookingConfirmNumbers": [
            {
                "bookingID": null,
                "bookingType": null,
                "confirmTime": 1755500000,
                "Error": [
                    {
                        "code": "02",
                        "text": "Hotel registration not found on HMS."
                    }
                ]
            }
        ]
    }
}
Dernière mise à jour: 21 septembre 2026Vous avez repéré une erreur ? Signalez-la-nous