Kamers en tarieven
Twee endpoints die de zoekresultaten van de boekingsmodule voeden: de kamerlijst, die verkoopbare kamertypen, verzorgingstypen en prijzen teruggeeft voor de opgegeven datums en bezetting, en beschikbaarheid, die per dag de beschikbaarheid en tarieven teruggeeft voor kalenderweergaven.
/external/online/roomTypeKamerlijst en tarievenGET/external/room/type/hotel/availabilityBeschikbaarheidskalenderKamerlijst en tarieven#
/external/online/roomTypeAuthenticatie: Authorization: Bearer · Body: application/x-www-form-urlencoded of multipart/form-data
Geeft de kamertypen van het hotel terug die online te boeken zijn voor de opgegeven datums en bezetting. Per kamertype worden het aantal beschikbare kamers (roomCount), beperkingen (minimaal verblijf, gesloten voor inchecken/uitchecken), verzorgingstypen en prijsopties berekend. Reizen er kinderen mee, stuur dan hun leeftijden mee in childAges[]; kinderprijzen hangen af van de leeftijd.
Validatieregels: incheckdatum vandaag of later, uitcheckdatum na de incheckdatum, maximaal 30 nachten, 1–40 volwassenen, 0–10 kinderen (0–16 jaar).
Formuliervelden
hotelIDintegerverplichtstartDatedateverplichtYYYY-MM-DD.endDatedateverplichtYYYY-MM-DD.adultCountintegerverplichtchildCountintegerstandaard: 0childAges, dan geldt de lengte van de leeftijdenlijst.childAges[]integer[]childAges[]=7&childAges[]=12.languagestringstandaard: trbuildingIDintegerAntwoord
200 Lijst met kamertypen. Prijzen staan per verzorgingstype in het object prices, met sleutels van de vorm "<persons>-<1|0>": -1 is het standaardtarief (restitueerbaar), -0 het niet-restitueerbare tarief ([NR]). Bij prijzen per kamer zijn de sleutels 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 wordt ratePlanID in de boeking. priceType: 0 prijs per persoon, 1 prijs per kamer.…accommodationTypes[].prices{}objecttotal aantal nachten, price totaalbedrag, currency, nonRefundable ("[NR]" betekent niet-restitueerbaar), id selectie-ID, prices[] prijzen per nacht (price, tarih als dd.mm.jjjj).items[].roomFeatures[]object[]title, icon.countintegererrorMessage / errorCodestring | integer | nullFoutantwoorden
- 200
errorCode10001 hotel niet gevonden · 10002 ontbrekende parameter · 10003 hotel gesloten voor online verkoop · 10004 geen kamertype beschikbaar voor verkoop · 10022 ongeldige parameters voor datum/bezetting · 20001–20004 onvoldoende beschikbaarheid.
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": "Standaardkamer",
"capacityAdult": 2,
"capacityTotal": 3,
"totalBed": 1,
"totalBathroom": 1,
"roomSize": 24,
"currency": "TRY",
"detail": "<p>Standaardkamer van 24 m² met uitzicht op de tuin.</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": "Logies en ontbijt",
"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": "Airconditioning",
"icon": "fa-snowflake"
},
{
"title": "Gratis wifi",
"icon": "fa-wifi"
}
],
"capacityChildren": 1
}
],
"count": 1,
"errorMessage": null,
"errorCode": null
}{
"success": false,
"errorMessage": "Onvoldoende beschikbaarheid voor volwassenen.",
"errorCode": 20001
}Beschikbaarheidskalender#
/external/room/type/hotel/availabilityAuthenticatie: Authorization: Bearer
Geeft per dag en per kamertype het aantal beschikbare kamers en het basistarief terug. Bedoeld voor kalenderweergaven en tarief-heatmaps; gebruik de kamerlijst voor exacte prijzen en het controleren van beperkingen.
Queryparameters
hotelIDintegerverplichtstartDatedatetimeverplichtYYYY-MM-DD of YYYY-MM-DDTHH:MM:SS.endDatedatetimeverplichtAntwoord
200 Dagelijkse lijst per kamertype. availability -1 betekent dat er voor die dag geen beschikbaarheidsgegevens zijn; price "-" betekent dat er geen tarief is ingesteld.
Foutantwoorden
- 200
hotel_id_is_not_found,start_date_is_not_found,end_date_is_not_found— ontbrekende parameter.
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": "Standaardkamer",
"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"
}