Δωμάτια και τιμές
Δύο τελικά σημεία που τροφοδοτούν τα αποτελέσματα αναζήτησης της μηχανής κρατήσεων: η λίστα δωματίων, που επιστρέφει τους τύπους δωματίων που μπορούν να πωληθούν, τους τύπους διατροφής και τις τιμές για τις δεδομένες ημερομηνίες και αριθμό ατόμων, και η διαθεσιμότητα, που επιστρέφει διαθεσιμότητα και τιμές ανά ημέρα για προβολές ημερολογίου.
/external/online/roomTypeΛίστα δωματίων και τιμέςGET/external/room/type/hotel/availabilityΔιαθεσιμότητα ημερολογίουΛίστα δωματίων και τιμές#
/external/online/roomTypeΈλεγχος ταυτότητας: Authorization: Bearer · Σώμα: application/x-www-form-urlencoded ή multipart/form-data
Επιστρέφει τους τύπους δωματίων του ξενοδοχείου που είναι ανοιχτοί για online πώληση για τις δεδομένες ημερομηνίες και αριθμό ατόμων. Για κάθε τύπο δωματίου υπολογίζονται ο αριθμός διαθέσιμων δωματίων (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 το ξενοδοχείο είναι κλειστό για online πωλήσεις · 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": "Standard Δωμάτιο",
"capacityAdult": 2,
"capacityTotal": 3,
"totalBed": 1,
"totalBathroom": 1,
"roomSize": 24,
"currency": "TRY",
"detail": "<p>Standard δωμάτιο 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": "Standard Δωμάτιο",
"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"
}