Номери й ціни

Два ендпоінти, на яких побудовано результати пошуку в модулі бронювання: список номерів повертає доступні для продажу типи номерів, типи харчування й ціни на задані дати та кількість гостей, а наявність — наявність і тарифи по днях для календарних подань.

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

POST/external/online/roomType

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

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

Правила перевірки: заїзд — сьогодні або пізніше, виїзд — після заїзду, не більше 30 ночей, 1–40 дорослих, 0–10 дітей (віком 0–16 років).

Поля форми

hotelIDintegerобов’язковий
Ідентифікатор готелю. Має збігатися з готелем токена.
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
Ідентифікатор і назва типу номера. У бронюванні передається як 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 — ідентифікатор вибору, prices[] — ціни за ніч (price, tarih у форматі dd.mm.yyyy).
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обов’язковий
Ідентифікатор готелю.
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 р.Знайшли помилку? Повідомте нам