Бронирование

Номер, тип питания и тариф, выбранные гостем, передаются в HMS в структуре BookingPushRQ. Тот же эндпоинт обрабатывает отмены и изменения: для этого в поле type передаётся Cancel или Modify. Весь процесс описан в руководстве Процесс бронирования.

Передать бронирование (BookingPushRQ)#

POST/external/online/channel/booking

Аутентификация: Authorization: Bearer · Тело: application/json

Сохраняет одно или несколько бронирований в HMS. ID — уникальный код бронирования, созданный на вашей стороне; Modify с тем же ID обновляет запись, Cancel — отменяет её. Если продано несколько номеров одного типа с одним и тем же типом питания, каждый номер — отдельный элемент RoomStays с NumberOfUnits 1, 2, 3…

Для типа оплаты кредитная карта (9) данные карты передаются в PaymentCard; для остальных типов это поле не передавайте. Работа с данными карт подпадает под требования PCI DSS.

Тело запроса

BookingPushRQ.Bookings[]object[]обязательный
Список бронирований. Обычно один элемент.
hotelIDstringобязательный
ID отеля.
IDstringобязательный
Уникальный код бронирования в вашей системе. Также сохраняется как номер ваучера.
typestringобязательный
Тип операции.
BookModifyCancel
createDateTimedatetime
Время создания бронирования (ISO 8601).
checkinDate / checkoutDatedateобязательный
Даты заезда и выезда, YYYY-MM-DD.
RoomStays[]object[]обязательный
Проданные номера.
roomTypeIDstringобязательный
items[].id из списка номеров.
roomNamestring
Название типа номера (для справки).
ratePlanIDstringобязательный
accommodationTypes[].id из списка номеров.
ratePlanNamestring
Название типа питания (для справки).
typestring
Тип операции для номера.
BookModifyCancel
NumberOfUnitsstringобязательный
Порядковый номер среди номеров одного типа с одинаковым питанием: 1, 2, 3…
checkinDate / checkoutDatedateобязательный
Даты заезда и выезда для номера.
GuestCountobjectобязательный
Количество adult и child.
PerDayRatesobject
currency и PerDayRate[]: stayDate, baseRate, hotelServiceFees.
Totalobjectобязательный
Итог по номеру: amountAfterTaxes, amountOfTaxes, currency.
PaymentCardobject
Только для типа оплаты 9 (кредитная карта). CardHolder{fullname, address, country, city}, cardNumber, expireDate (MMYY), cardCode, seriesCode (CVV).
PrimaryGuests[]object[]обязательный
Основной гость (гости): name, surname, PhoneNumber, email, CountryCode.
ChildGuests[]object[]
Дети. age обязателен; name, surname, year, date, detail — необязательны.
SpecialRequest[]object[]
Пожелания гостя и условия отмены: text. Добавляются в примечания к бронированию.
extras[]object[]
Проданные дополнительные услуги и пакеты: name, note, person, piece, price, priceMode, priceTotal, stockID (id из списка пакетов).
Totalobjectобязательный
Общий итог: amountAfterTaxes, amountOfTaxes, extraTotal, currency.

Ответ

200 Объект BookingPushRS. При успехе — Success: true и ID бронирования в HMS (HMS_ID); при ошибке — текст Error и BookingConfirmNumbers[].Error[].

Ответы с ошибками

  • 200 Error: No available data could be found. (01, тело пустое или не разобрано) · Hotel registration not found on HMS. (02, отель не подключён к онлайн-каналу) · Could not register. · Failed to parse information.
Запрос
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": "Стандартный номер",
                        "ratePlanID": "2",
                        "ratePlanName": "Завтрак включён",
                        "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": "Поздний заезд, около 23:00."
                    }
                ],
                "extras": [
                    {
                        "name": "Ужин",
                        "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"
                }
            }
        ]
    }
}'
Ответ · 200
{
    "BookingPushRS": {
        "Success": true,
        "BookingConfirmNumbers": [
            {
                "confirmTime": 1755500000,
                "bookingID": 48213,
                "bookingType": "Book",
                "HMS_ID": 48213
            }
        ]
    }
}
Ответ · 200 (ошибка)
{
    "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."
                    }
                ]
            }
        ]
    }
}
Последнее обновление:: 21 сентября 2026 г.Нашли ошибку? Напишите нам