Rezervasyon
Misafirin seçtiği oda, konaklama tipi ve fiyat, BookingPushRQ yapısıyla HMS’e aktarılır. Aynı uç nokta, type alanı Cancel veya Modify gönderilerek iptal ve değişiklik için de kullanılır. Uçtan uca akış için Rezervasyon akışı rehberine bakın.
Rezervasyon aktar (BookingPushRQ)#
/external/online/channel/bookingKimlik doğrulama: Authorization: Bearer · Gövde: application/json
Bir veya daha fazla rezervasyonu HMS’e kaydeder. ID alanı sizin tarafınızda üretilen benzersiz rezervasyon kodudur; aynı ID ile Modify gönderildiğinde mevcut kayıt güncellenir, Cancel gönderildiğinde iptal edilir. Aynı oda tipi ve konaklama tipinden birden fazla oda satıldığında her oda ayrı bir RoomStays öğesi olur ve NumberOfUnits 1, 2, 3… şeklinde artar.
Ödeme tipi kredi kartı (9) ise kart bilgisi PaymentCard altında gönderilir; diğer ödeme tiplerinde bu alan gönderilmez. Kart verisi taşıdığınız için PCI DSS gereksinimlerini karşılamanız gerekir.
İstek gövdesi
BookingPushRQ.Bookings[]object[]zorunluhotelIDstringzorunluIDstringzorunlutypestringzorunluBookModifyCancelcreateDateTimedatetimecheckinDate / checkoutDatedatezorunluYYYY-MM-DD.RoomStays[]object[]zorunluroomTypeIDstringzorunluitems[].id.roomNamestringratePlanIDstringzorunluaccommodationTypes[].id.ratePlanNamestringtypestringBookModifyCancelNumberOfUnitsstringzorunlucheckinDate / checkoutDatedatezorunluGuestCountobjectzorunluadult ve child sayıları.PerDayRatesobjectcurrency ve PerDayRate[]: stayDate, baseRate, hotelServiceFees.TotalobjectzorunluamountAfterTaxes, amountOfTaxes, currency.PaymentCardobjectCardHolder{fullname, address, country, city}, cardNumber, expireDate (AAYY), cardCode, seriesCode (CVV).PrimaryGuests[]object[]zorunluname, surname, PhoneNumber, email, CountryCode.ChildGuests[]object[]age zorunlu; name, surname, year, date, detail isteğe bağlı.SpecialRequest[]object[]text. Rezervasyon açıklamasına birleştirilir.extras[]object[]name, note, person, piece, price, priceMode, priceTotal, stockID (paket listesindeki id).TotalobjectzorunluamountAfterTaxes, amountOfTaxes, extraTotal, currency.Yanıt
200 BookingPushRS nesnesi. Başarıda Success: true ve HMS rezervasyon kimliği (HMS_ID); hatada Error metni ve BookingConfirmNumbers[].Error[].
Hata yanıtları
- 200
Error: No available data could be found. (01, gövde boş/ayrıştırılamadı) · Hotel registration not found on HMS. (02, otel online kanala bağlı değil) · 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": "Standart Oda",
"ratePlanID": "2",
"ratePlanName": "Kahvaltı Dahil",
"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": "Geç giriş, 23:00 civarı."
}
],
"extras": [
{
"name": "Akşam Yemeği",
"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": "Standart Oda",
"ratePlanID": "2",
"ratePlanName": "Kahvaltı Dahil",
"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": "Geç giriş, 23:00 civarı."
}
],
"extras": [
{
"name": "Akşam Yemeği",
"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' => 'Standart Oda',
'ratePlanID' => '2',
'ratePlanName' => 'Kahvaltı Dahil',
'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' => 'Geç giriş, 23:00 civarı.',
],
],
'extras' => [
[
'name' => 'Akşam Yemeği',
'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."
}
]
}
]
}
}