Γρήγορη εκκίνηση
Σε αυτή τη σελίδα θα λάβετε ένα token με τα διαπιστευτήρια συνεργάτη σας και θα στείλετε ένα ερώτημα δωματίων και τιμών. Χρειάζεστε ένα apiKey, ένα apiSecret και το αναγνωριστικό HMS του ξενοδοχείου (hotelID)· αν δεν τα έχετε ακόμη, επικοινωνήστε με την υποστήριξη.
1. Λήψη token#
Το τελικό σημείο σύνδεσης δέχεται πεδία φόρμας και δεν απαιτεί κεφαλίδα ελέγχου ταυτότητας:
curl "https://test.hms.gen.tr/external/public/login" \
-d "apiKey=$HMS_API_KEY" \
-d "apiSecret=$HMS_API_SECRET" \
-d "hotelCode=1000"{
"success": true,
"hotelCode": "1000",
"token": "eyJlbmREYXRlIjp7ImRhdGUiOiIyMDI2LTA5LTE1IDEwOjI0OjMxLjAwMDAwMCIs…",
"hotelSeoUrl": "demo-otel"
}Αποθηκεύστε το token· χρησιμοποιείται σε κάθε αίτημα για αυτό το ξενοδοχείο για 7 ημέρες.
export HMS_TOKEN="eyJlbmREYXRlIjp7ImRhdGUiOiIyMDI2LTA5LTE1IDEwOjI0OjMxLjAwMDAwMCIs…"2. Ερώτημα δωματίων και τιμών#
Αναζήτηση δύο διανυκτερεύσεων για δύο ενήλικες:
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 "language=en"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",
language: "en"
})
});
const data = await res.json();
if (!data.success) throw new Error(`${data.errorCode}: ${data.errorMessage}`);
for (const room of data.items) {
console.log(room.name, room.roomCount, "rooms");
}$ch = curl_init('https://test.hms.gen.tr/external/online/roomType');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . getenv('HMS_TOKEN')],
CURLOPT_POSTFIELDS => http_build_query([
'hotelID' => 1000,
'startDate' => '2026-08-18',
'endDate' => '2026-08-20',
'adultCount' => 2,
'language' => 'en',
]),
]);
$data = json_decode(curl_exec($ch), true);
if (empty($data['success'])) {
throw new RuntimeException($data['errorCode'] . ': ' . $data['errorMessage']);
}
foreach ($data['items'] as $room) {
echo $room['name'], ' · ', $room['roomCount'], " rooms\n";
}3. Ανάγνωση της απόκρισης#
Κάθε τύπος δωματίου περιέχει τους τύπους διατροφής του (accommodationTypes) και κάθε τύπος διατροφής τις επιλογές τιμής του (prices). Ένα περικομμένο παράδειγμα:
{
"success": true,
"items": [
{
"id": 2,
"name": "Standard Room",
"roomCount": 5,
"currency": "TRY",
"accommodationTypes": [
{
"id": 2,
"title": "Bed & Breakfast",
"priceType": 0,
"prices": {
"2-1": {
"total": 2,
"price": "1930.00",
"currency": "TRY",
"nonRefundable": "",
"id": "2/2"
},
"2-0": {
"total": 2,
"price": "1737.00",
"currency": "TRY",
"nonRefundable": "[NR]",
"id": "2-0/2"
}
}
}
]
}
],
"count": 1
}2-1: 2 άτομα, κανονική (επιστρέψιμη) τιμή.2-0: 2 άτομα, μη επιστρέψιμη τιμή (nonRefundable: "[NR]").- Το
priceείναι το σύνολο της διαμονής· τοtotalείναι ο αριθμός των διανυκτερεύσεων. Οι τιμές ανά διανυκτέρευση βρίσκονται στον πίνακαprices[]της πλήρους απόκρισης. - Στην κράτηση, το
idτου τύπου δωματίου αποστέλλεται ωςroomTypeIDκαι τοidτου τύπου διατροφής ωςratePlanID.
Τι ακολουθεί#
- Ροή κράτησης — από την επιλογή έως την αποστολή
BookingPushRQ - Ροή πληρωμής — πληρωμή στο ξενοδοχείο, τραπεζικό έμβασμα, πιστωτική κάρτα, online πληρωμή
- Κωδικοί σφαλμάτων — τιμές
errorCodeκαιmessage