Rezervare
Camera, tipul de masă și tariful alese de oaspete sunt transmise către HMS într-o structură BookingPushRQ. Același endpoint gestionează anulările și modificările, prin trimiterea câmpului type cu valoarea Cancel sau Modify. Pentru procesul complet, consultați ghidul Fluxul de rezervare.
Transmiterea unei rezervări (BookingPushRQ)#
/external/online/channel/bookingAutentificare: Authorization: Bearer · Corp: application/json
Înregistrează una sau mai multe rezervări în HMS. ID este codul unic al rezervării, generat în sistemul dumneavoastră; trimiterea Modify cu același ID actualizează înregistrarea, iar Cancel o anulează. Când se vând mai multe camere cu același tip de cameră și tip de masă, fiecare cameră este un element RoomStays separat, cu NumberOfUnits 1, 2, 3…
Pentru tipul de plată card de credit (9), datele cardului se trimit în PaymentCard; pentru celelalte tipuri de plată omiteți acest câmp. Prelucrarea datelor de card vă aduce în sfera de aplicare a PCI DSS.
Corpul cererii
BookingPushRQ.Bookings[]object[]obligatoriuhotelIDstringobligatoriuIDstringobligatoriutypestringobligatoriuBookModifyCancelcreateDateTimedatetimecheckinDate / checkoutDatedateobligatoriuYYYY-MM-DD.RoomStays[]object[]obligatoriuroomTypeIDstringobligatoriuitems[].id din lista de camere.roomNamestringratePlanIDstringobligatoriuaccommodationTypes[].id din lista de camere.ratePlanNamestringtypestringBookModifyCancelNumberOfUnitsstringobligatoriucheckinDate / checkoutDatedateobligatoriuGuestCountobjectobligatoriuadult) și de copii (child).PerDayRatesobjectcurrency și PerDayRate[]: stayDate, baseRate, hotelServiceFees.TotalobjectobligatoriuamountAfterTaxes, amountOfTaxes, currency.PaymentCardobjectCardHolder{fullname, address, country, city}, cardNumber, expireDate (MMYY), cardCode, seriesCode (CVV).PrimaryGuests[]object[]obligatoriuname, surname, PhoneNumber, email, CountryCode.ChildGuests[]object[]age este obligatoriu; name, surname, year, date, detail sunt opționale.SpecialRequest[]object[]text. Se concatenează în observațiile rezervării.extras[]object[]name, note, person, piece, price, priceMode, priceTotal, stockID (id din lista de pachete).TotalobjectobligatoriuamountAfterTaxes, amountOfTaxes, extraTotal, currency.Răspuns
200 Obiect BookingPushRS. La succes: Success: true și ID-ul rezervării în HMS (HMS_ID); la eșec: un mesaj Error și BookingConfirmNumbers[].Error[].
Răspunsuri de eroare
- 200
Error: No available data could be found. (01, corp gol sau imposibil de parsat) · Hotel registration not found on HMS. (02, hotelul nu este conectat la canalul 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": "Cameră Standard",
"ratePlanID": "2",
"ratePlanName": "Mic dejun inclus",
"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": "Check-in târziu, în jurul orei 23:00."
}
],
"extras": [
{
"name": "Cină",
"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": "Cameră Standard",
"ratePlanID": "2",
"ratePlanName": "Mic dejun inclus",
"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": "Check-in târziu, în jurul orei 23:00."
}
],
"extras": [
{
"name": "Cină",
"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' => 'Cameră Standard',
'ratePlanID' => '2',
'ratePlanName' => 'Mic dejun inclus',
'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' => 'Check-in târziu, în jurul orei 23:00.',
],
],
'extras' => [
[
'name' => 'Cină',
'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."
}
]
}
]
}
}