ოთახები და ტარიფები
ორი ენდპოინტი, რომლებზეც დაჯავშნის სისტემის ძიების შედეგებია აგებული: ოთახების სია, რომელიც მოცემული თარიღებისა და სტუმრების რაოდენობისთვის აბრუნებს გასაყიდად ხელმისაწვდომ ოთახის ტიპებს, კვების ტიპებსა და ფასებს, და ხელმისაწვდომობა, რომელიც კალენდრის ხედებისთვის დღეების მიხედვით აბრუნებს ხელმისაწვდომობასა და ტარიფებს.
/external/online/roomTypeოთახების სია და ტარიფებიGET/external/room/type/hotel/availabilityკალენდრის ხელმისაწვდომობაოთახების სია და ტარიფები#
/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სავალდებულოchildCountintegerნაგულისხმევი: 0childAges ველს არ ემთხვევა, უპირატესობა ასაკების სიის სიგრძეს ენიჭება.childAges[]integer[]childAges[]=7&childAges[]=12.languagestringნაგულისხმევი: trbuildingIDintegerპასუხი
200 ოთახის ტიპების სია. ფასები თითოეული კვების ტიპის prices ობიექტშია, გასაღებებით "<persons>-<1|0>": -1 სტანდარტული (დაბრუნებადი) ტარიფია, -0 — დაუბრუნებადი ([NR]) ტარიფი. თუ ფასი ოთახზეა დაწესებული, გასაღებებია 1-1 / 1-0.
items[].id / nameinteger / stringroomTypeID.items[].capacityAdult / capacityChildren / capacityTotalintegeritems[].roomCountintegerroomRestrictionMessage ველში.items[].roomRestrictionMessagestring | nullclosed_to_checkinclosed_to_checkoutpassive_salesminimum_staymaximum_stayclosed_to_arrivalprice_not_founditems[].nonRefundable / refundablebooleanitems[].images[]string[]items[].accommodationTypes[]object[]id ჯავშანში ratePlanID ხდება. priceType: 0 — ფასი ადამიანზე, 1 — ფასი ოთახზე.…accommodationTypes[].prices{}objecttotal ღამეების რაოდენობა, price ჯამური თანხა, currency, nonRefundable ("[NR]" ნიშნავს დაუბრუნებადს), id არჩევანის ID, prices[] ღამის ტარიფები (price, tarih ფორმატით dd.mm.yyyy).items[].roomFeatures[]object[]title, icon.countintegererrorMessage / errorCodestring | integer | nullშეცდომის პასუხები
- 200
errorCode10001 სასტუმრო ვერ მოიძებნა · 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"const res = await fetch("https://test.hms.gen.tr/external/online/roomType", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.HMS_TOKEN}`
},
body: new URLSearchParams([
["hotelID", "1000"],
["startDate", "2026-08-18"],
["endDate", "2026-08-20"],
["adultCount", "2"],
["childCount", "1"],
["childAges[]", "7"],
["language", "tr"]
])
});
const data = await res.json();$ch = curl_init('https://test.hms.gen.tr/external/online/roomType');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('HMS_TOKEN'),
],
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => http_build_query([
'hotelID' => '1000',
'startDate' => '2026-08-18',
'endDate' => '2026-08-20',
'adultCount' => '2',
'childCount' => '1',
'childAges' => [
'7',
],
'language' => 'tr',
]),
]);
$data = json_decode(curl_exec($ch), true);{
"success": true,
"items": [
{
"id": 2,
"name": "სტანდარტული ოთახი",
"capacityAdult": 2,
"capacityTotal": 3,
"totalBed": 1,
"totalBathroom": 1,
"roomSize": 24,
"currency": "TRY",
"detail": "<p>სტანდარტული ოთახი ბაღის ხედით, 24 m².</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
}{
"success": false,
"errorMessage": "ზრდასრულებისთვის საკმარისი ხელმისაწვდომობა არ არის.",
"errorCode": 20001
}კალენდრის ხელმისაწვდომობა#
/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"const res = await fetch("https://test.hms.gen.tr/external/room/type/hotel/availability?hotelID=1000&startDate=2026-08-18&endDate=2026-08-21", {
headers: {
"Authorization": `Bearer ${process.env.HMS_TOKEN}`
}
});
const data = await res.json();$ch = curl_init('https://test.hms.gen.tr/external/room/type/hotel/availability?hotelID=1000&startDate=2026-08-18&endDate=2026-08-21');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('HMS_TOKEN'),
],
]);
$data = json_decode(curl_exec($ch), true);{
"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"
}