Κράτηση
Το δωμάτιο, ο τύπος διατροφής και η τιμή που επέλεξε ο επισκέπτης αποστέλλονται στο HMS σε δομή BookingPushRQ. Το ίδιο τελικό σημείο χειρίζεται ακυρώσεις και τροποποιήσεις, με τιμή Cancel ή Modify στο πεδίο type. Για την πλήρη διαδικασία, δείτε τον οδηγό Ροή κράτησης.
Αποστολή κράτησης (BookingPushRQ)#
/external/online/channel/bookingΈλεγχος ταυτότητας: Authorization: Bearer · Σώμα: application/json
Καταχωρεί μία ή περισσότερες κρατήσεις στο HMS. Το ID είναι ο μοναδικός κωδικός κράτησης που δημιουργείτε στο δικό σας σύστημα· η αποστολή Modify με το ίδιο ID ενημερώνει την εγγραφή, ενώ το Cancel την ακυρώνει. Όταν πωλούνται πολλά δωμάτια του ίδιου τύπου δωματίου και τύπου διατροφής, κάθε δωμάτιο είναι ξεχωριστό στοιχείο RoomStays με NumberOfUnits 1, 2, 3…
Για τύπο πληρωμής πιστωτική κάρτα (9) τα στοιχεία της κάρτας αποστέλλονται στο PaymentCard· για τους άλλους τύπους πληρωμής παραλείψτε το πεδίο. Ο χειρισμός δεδομένων καρτών σάς εντάσσει στο πεδίο εφαρμογής του PCI DSS.
Σώμα αιτήματος
BookingPushRQ.Bookings[]object[]υποχρεωτικόhotelIDstringυποχρεωτικόIDstringυποχρεωτικόtypestringυποχρεωτικόBookModifyCancelcreateDateTimedatetimecheckinDate / checkoutDatedateυποχρεωτικόYYYY-MM-DD.RoomStays[]object[]υποχρεωτικόroomTypeIDstringυποχρεωτικόitems[].id από τη λίστα δωματίων.roomNamestringratePlanIDstringυποχρεωτικόaccommodationTypes[].id από τη λίστα δωματίων.ratePlanNamestringtypestringBookModifyCancelNumberOfUnitsstringυποχρεωτικόcheckinDate / checkoutDatedateυποχρεωτικόGuestCountobjectυποχρεωτικόadult και child.PerDayRatesobjectcurrency και PerDayRate[]: stayDate, baseRate, hotelServiceFees.TotalobjectυποχρεωτικόamountAfterTaxes, amountOfTaxes, currency.PaymentCardobjectCardHolder{fullname, address, country, city}, cardNumber, expireDate (MMYY), cardCode, seriesCode (CVV).PrimaryGuests[]object[]υποχρεωτικόname, surname, PhoneNumber, email, CountryCode.ChildGuests[]object[]age είναι υποχρεωτικό· τα name, surname, year, date, detail είναι προαιρετικά.SpecialRequest[]object[]text. Συνενώνονται στις παρατηρήσεις της κράτησης.extras[]object[]name, note, person, piece, price, priceMode, priceTotal, stockID (id από τη λίστα πακέτων).TotalobjectυποχρεωτικόamountAfterTaxes, amountOfTaxes, extraTotal, currency.Απόκριση
200 Αντικείμενο BookingPushRS. Σε επιτυχία Success: true και το αναγνωριστικό κράτησης στο HMS (HMS_ID)· σε αποτυχία ένα μήνυμα Error και BookingConfirmNumbers[].Error[].
Αποκρίσεις σφαλμάτων
- 200
Error: No available data could be found. (01, κενό σώμα ή σώμα που δεν αναλύεται) · Hotel registration not found on HMS. (02, το ξενοδοχείο δεν είναι συνδεδεμένο με το online κανάλι) · Could not register. · Failed to parse information.
curl -X POST "https://test.hms.gen.tr/external/online/channel/booking" \
-H "Authorization: Bearer $HMS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"BookingPushRQ": {
"Bookings": [
{
"hotelID": "1000",
"ID": "4811174883",
"type": "Book",
"createDateTime": "2026-08-01T08:32:11:293Z",
"checkinDate": "2026-08-18",
"checkoutDate": "2026-08-20",
"RoomStays": [
{
"roomTypeID": "2",
"roomName": "Standard Δωμάτιο",
"ratePlanID": "2",
"ratePlanName": "Με πρωινό",
"type": "Book",
"NumberOfUnits": "1",
"checkinDate": "2026-08-18",
"checkoutDate": "2026-08-20",
"GuestCount": {
"adult": 2,
"child": 1
},
"PerDayRates": {
"currency": "TRY",
"PerDayRate": [
{
"stayDate": "2026-08-18",
"baseRate": "965.00",
"hotelServiceFees": "0"
},
{
"stayDate": "2026-08-19",
"baseRate": "965.00",
"hotelServiceFees": "0"
}
]
},
"Total": {
"amountAfterTaxes": "1930.00",
"amountOfTaxes": "175.45",
"currency": "TRY"
}
}
],
"PrimaryGuests": [
{
"name": "Ayşe",
"surname": "Demir",
"PhoneNumber": "+905551112233",
"email": "[email protected]",
"CountryCode": "TR"
}
],
"ChildGuests": [
{
"age": 7
}
],
"SpecialRequest": [
{
"text": "Αργή άφιξη, γύρω στις 23:00."
}
],
"extras": [
{
"name": "Δείπνο",
"note": "",
"person": 2,
"piece": 1,
"price": "400.00",
"priceMode": null,
"priceTotal": "400.00",
"stockID": 12
}
],
"Total": {
"amountAfterTaxes": "2330.00",
"amountOfTaxes": "211.82",
"extraTotal": "400.00",
"currency": "TRY"
}
}
]
}
}'const res = await fetch("https://test.hms.gen.tr/external/online/channel/booking", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.HMS_TOKEN}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"BookingPushRQ": {
"Bookings": [
{
"hotelID": "1000",
"ID": "4811174883",
"type": "Book",
"createDateTime": "2026-08-01T08:32:11:293Z",
"checkinDate": "2026-08-18",
"checkoutDate": "2026-08-20",
"RoomStays": [
{
"roomTypeID": "2",
"roomName": "Standard Δωμάτιο",
"ratePlanID": "2",
"ratePlanName": "Με πρωινό",
"type": "Book",
"NumberOfUnits": "1",
"checkinDate": "2026-08-18",
"checkoutDate": "2026-08-20",
"GuestCount": {
"adult": 2,
"child": 1
},
"PerDayRates": {
"currency": "TRY",
"PerDayRate": [
{
"stayDate": "2026-08-18",
"baseRate": "965.00",
"hotelServiceFees": "0"
},
{
"stayDate": "2026-08-19",
"baseRate": "965.00",
"hotelServiceFees": "0"
}
]
},
"Total": {
"amountAfterTaxes": "1930.00",
"amountOfTaxes": "175.45",
"currency": "TRY"
}
}
],
"PrimaryGuests": [
{
"name": "Ayşe",
"surname": "Demir",
"PhoneNumber": "+905551112233",
"email": "[email protected]",
"CountryCode": "TR"
}
],
"ChildGuests": [
{
"age": 7
}
],
"SpecialRequest": [
{
"text": "Αργή άφιξη, γύρω στις 23:00."
}
],
"extras": [
{
"name": "Δείπνο",
"note": "",
"person": 2,
"piece": 1,
"price": "400.00",
"priceMode": null,
"priceTotal": "400.00",
"stockID": 12
}
],
"Total": {
"amountAfterTaxes": "2330.00",
"amountOfTaxes": "211.82",
"extraTotal": "400.00",
"currency": "TRY"
}
}
]
}
})
});
const data = await res.json();$ch = curl_init('https://test.hms.gen.tr/external/online/channel/booking');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('HMS_TOKEN'),
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode([
'BookingPushRQ' => [
'Bookings' => [
[
'hotelID' => '1000',
'ID' => '4811174883',
'type' => 'Book',
'createDateTime' => '2026-08-01T08:32:11:293Z',
'checkinDate' => '2026-08-18',
'checkoutDate' => '2026-08-20',
'RoomStays' => [
[
'roomTypeID' => '2',
'roomName' => 'Standard Δωμάτιο',
'ratePlanID' => '2',
'ratePlanName' => 'Με πρωινό',
'type' => 'Book',
'NumberOfUnits' => '1',
'checkinDate' => '2026-08-18',
'checkoutDate' => '2026-08-20',
'GuestCount' => [
'adult' => 2,
'child' => 1,
],
'PerDayRates' => [
'currency' => 'TRY',
'PerDayRate' => [
[
'stayDate' => '2026-08-18',
'baseRate' => '965.00',
'hotelServiceFees' => '0',
],
[
'stayDate' => '2026-08-19',
'baseRate' => '965.00',
'hotelServiceFees' => '0',
],
],
],
'Total' => [
'amountAfterTaxes' => '1930.00',
'amountOfTaxes' => '175.45',
'currency' => 'TRY',
],
],
],
'PrimaryGuests' => [
[
'name' => 'Ayşe',
'surname' => 'Demir',
'PhoneNumber' => '+905551112233',
'email' => '[email protected]',
'CountryCode' => 'TR',
],
],
'ChildGuests' => [
[
'age' => 7,
],
],
'SpecialRequest' => [
[
'text' => 'Αργή άφιξη, γύρω στις 23:00.',
],
],
'extras' => [
[
'name' => 'Δείπνο',
'note' => '',
'person' => 2,
'piece' => 1,
'price' => '400.00',
'priceMode' => null,
'priceTotal' => '400.00',
'stockID' => 12,
],
],
'Total' => [
'amountAfterTaxes' => '2330.00',
'amountOfTaxes' => '211.82',
'extraTotal' => '400.00',
'currency' => 'TRY',
],
],
],
],
]),
]);
$data = json_decode(curl_exec($ch), true);{
"BookingPushRS": {
"Success": true,
"BookingConfirmNumbers": [
{
"confirmTime": 1755500000,
"bookingID": 48213,
"bookingType": "Book",
"HMS_ID": 48213
}
]
}
}{
"BookingPushRS": {
"Error": "Hotel registration not found on HMS.",
"BookingConfirmNumbers": [
{
"bookingID": null,
"bookingType": null,
"confirmTime": 1755500000,
"Error": [
{
"code": "02",
"text": "Hotel registration not found on HMS."
}
]
}
]
}
}