Номера и цены

Два эндпоинта, на которых строятся результаты поиска в модуле бронирования: список номеров возвращает доступные для продажи типы номеров, типы питания и цены на заданные даты и количество гостей, а доступность — наличие мест и цены по дням для календаря.

Список номеров и цены#

POST/external/online/roomType

Аутентификация: Authorization: Bearer · Тело: application/x-www-form-urlencoded или multipart/form-data

Возвращает типы номеров отеля, открытые для онлайн-продажи на заданные даты и количество гостей. Для каждого типа номера рассчитываются количество свободных номеров (roomCount), ограничения (минимальный срок проживания, дни, закрытые для заезда или выезда), типы питания и варианты цены. Если с гостями едут дети, передайте их возраст в childAges[]: цена для детей зависит от возраста.

Правила проверки: заезд сегодня или позже, выезд после заезда, не более 30 ночей, 1–40 взрослых, 0–10 детей (0–16 лет).

Поля формы

hotelIDintegerобязательный
ID отеля. Должен совпадать с отелем токена.
startDatedateобязательный
Дата заезда, YYYY-MM-DD.
endDatedateобязательный
Дата выезда, YYYY-MM-DD.
adultCountintegerобязательный
Количество взрослых (1–40).
childCountintegerпо умолчанию: 0
Количество детей (0–10). Если оно расходится с childAges, приоритет у длины списка возрастов.
childAges[]integer[]
Возраст каждого ребёнка (0–16). Передаётся как повторяющееся поле формы: childAges[]=7&childAges[]=12.
languagestringпо умолчанию: tr
Язык ответа (названия номеров, заголовки характеристик, сообщения об ошибках).
buildingIDinteger
Возвращает только номера в этом корпусе (блоке).

Ответ

200 Список типов номеров. Цены находятся в объекте prices каждого типа питания, ключи имеют вид "<persons>-<1|0>": -1 — стандартный (возвратный) тариф, -0 — невозвратный ([NR]). При цене за номер ключи — 1-1 / 1-0.

items[].id / nameinteger / string
ID и название типа номера. В бронировании передаётся как roomTypeID.
items[].capacityAdult / capacityChildren / capacityTotalinteger
Вместимость: взрослые, дети и всего.
items[].roomCountinteger
Количество номеров, доступных для продажи на эти даты. 0 — продажа невозможна, причина указана в roomRestrictionMessage.
items[].roomRestrictionMessagestring | null
Ограничение продаж.
closed_to_checkinclosed_to_checkoutpassive_salesminimum_staymaximum_stayclosed_to_arrivalprice_not_found
items[].nonRefundable / refundableboolean
Есть ли у типа номера невозвратный и/или возвратный тариф.
items[].images[]string[]
Пути к изображениям относительно базового URL API.
items[].accommodationTypes[]object[]
Типы питания. id передаётся в бронировании как ratePlanID. priceType: 0 — цена за человека, 1 — за номер.
…accommodationTypes[].prices{}object
Варианты цены. Каждый вариант: total — число ночей, price — общая сумма, currency, nonRefundable ("[NR]" — невозвратный тариф), id — ID варианта, prices[] — цены за ночь (price, tarih в формате дд.мм.гггг).
items[].roomFeatures[]object[]
Характеристики номера: title, icon.
countinteger
Количество возвращённых типов номеров.
errorMessage / errorCodestring | integer | null
Заполняется при ошибке. Список кодов: Коды ошибок.

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

  • 200 errorCode 10001 — отель не найден · 10002 — не передан параметр · 10003 — отель закрыт для онлайн-продаж · 10004 — нет типов номеров, открытых для продажи · 10022 — неверные даты или количество гостей · 20001–20004 — недостаточно свободных мест.
Запрос
curl "https://test.hms.gen.tr/external/online/roomType" \
  -H "Authorization: Bearer $HMS_TOKEN" \
  -d "hotelID=1000" \
  -d "startDate=2026-08-18" \
  -d "endDate=2026-08-20" \
  -d "adultCount=2" \
  -d "childCount=1" \
  -d "childAges[]=7" \
  -d "language=tr"
Ответ · 200
{
    "success": true,
    "items": [
        {
            "id": 2,
            "name": "Стандартный номер",
            "capacityAdult": 2,
            "capacityTotal": 3,
            "totalBed": 1,
            "totalBathroom": 1,
            "roomSize": 24,
            "currency": "TRY",
            "detail": "<p>Стандартный номер 24 м² с видом на сад.</p>",
            "roomCount": 5,
            "roomRestrictionMessage": null,
            "nonRefundable": false,
            "refundable": true,
            "images": [
                "images/1000/odatipi/standart-1.jpg",
                "images/1000/odatipi/standart-2.jpg"
            ],
            "accommodationTypes": [
                {
                    "id": 2,
                    "title": "Завтрак включён",
                    "priceType": 0,
                    "roomRestriction": 1,
                    "roomRestrictionMessage": null,
                    "roomRestrictionValue": null,
                    "prices": {
                        "2-1": {
                            "total": 2,
                            "title": 2,
                            "nonRefundable": "",
                            "price": "1930.00",
                            "currency": "TRY",
                            "id": "2/2",
                            "prices": [
                                {
                                    "price": "965.00",
                                    "tarih": "18.08.2026"
                                },
                                {
                                    "price": "965.00",
                                    "tarih": "19.08.2026"
                                }
                            ]
                        },
                        "2-0": {
                            "total": 2,
                            "title": 2,
                            "nonRefundable": "[NR]",
                            "price": "1737.00",
                            "currency": "TRY",
                            "id": "2-0/2",
                            "prices": [
                                {
                                    "price": "868.50",
                                    "tarih": "18.08.2026"
                                },
                                {
                                    "price": "868.50",
                                    "tarih": "19.08.2026"
                                }
                            ]
                        }
                    }
                }
            ],
            "roomFeatures": [
                {
                    "title": "Кондиционер",
                    "icon": "fa-snowflake"
                },
                {
                    "title": "Бесплатный Wi-Fi",
                    "icon": "fa-wifi"
                }
            ],
            "capacityChildren": 1
        }
    ],
    "count": 1,
    "errorMessage": null,
    "errorCode": null
}
Ответ · 200 (нет свободных номеров)
{
    "success": false,
    "errorMessage": "Недостаточно мест для взрослых.",
    "errorCode": 20001
}

Доступность по календарю#

GET/external/room/type/hotel/availability

Аутентификация: Authorization: Bearer

Возвращает по дням количество свободных номеров и базовую цену для каждого типа номера. Предназначен для календаря и тепловой карты цен; точные цены и ограничения проверяйте по списку номеров.

Параметры строки запроса

hotelIDintegerобязательный
ID отеля.
startDatedatetimeобязательный
Начало, YYYY-MM-DD или YYYY-MM-DDTHH:MM:SS.
endDatedatetimeобязательный
Конец (включительно).

Ответ

200 Список по дням для каждого типа номера. availability -1 — нет данных о доступности на этот день; price "-" — цена не задана.

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

  • 200 hotel_id_is_not_found, start_date_is_not_found, end_date_is_not_found — не передан параметр.
Запрос
curl "https://test.hms.gen.tr/external/room/type/hotel/availability?hotelID=1000&startDate=2026-08-18&endDate=2026-08-21" \
  -H "Authorization: Bearer $HMS_TOKEN"
Ответ · 200
{
    "success": true,
    "roomTypes": [
        {
            "name": "Стандартный номер",
            "id": 2,
            "rate": 2,
            "availability": [
                {
                    "id": 20260818,
                    "start": "2026-08-18 12:00:00",
                    "end": "2026-08-19 12:00:00",
                    "availability": 5,
                    "price": "965.00"
                },
                {
                    "id": 20260819,
                    "start": "2026-08-19 12:00:00",
                    "end": "2026-08-20 12:00:00",
                    "availability": 3,
                    "price": "965.00"
                },
                {
                    "id": 20260820,
                    "start": "2026-08-20 12:00:00",
                    "end": "2026-08-21 12:00:00",
                    "availability": 0,
                    "price": "1,100.00"
                },
                {
                    "id": 20260821,
                    "start": "2026-08-21 12:00:00",
                    "end": "2026-08-22 12:00:00",
                    "availability": -1,
                    "price": "-"
                }
            ]
        }
    ],
    "currency": "TRY"
}
Последнее обновление:: 21 сентября 2026 г.Нашли ошибку? Напишите нам