الغرف والأسعار
نقطتا نهاية تغذّيان نتائج البحث في محرك الحجز: قائمة الغرف، وتعيد أنواع الغرف القابلة للبيع وأنواع الإقامة والأسعار للتواريخ وعدد النزلاء المحددين، والتوافر، وتعيد التوافر والأسعار يومًا بيوم لعروض التقويم.
/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 معرّف الاختيار، و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 م² مطلة على الحديقة.</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 قائمة يومية لكل نوع غرفة. القيمة -1 في availability تعني عدم وجود بيانات توافر لذلك اليوم؛ والقيمة "-" في 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"
}