Kamar dan tarif

Dua endpoint yang menyediakan data untuk hasil pencarian booking engine: daftar kamar, yang mengembalikan tipe kamar yang dapat dijual, meal plan, dan harga untuk tanggal dan jumlah tamu yang diberikan, serta ketersediaan, yang mengembalikan ketersediaan dan tarif per hari untuk tampilan kalender.

Daftar kamar dan tarif#

POST/external/online/roomType

Autentikasi: Authorization: Bearer · Body: application/x-www-form-urlencoded atau multipart/form-data

Mengembalikan tipe kamar hotel yang dibuka untuk penjualan online pada tanggal dan jumlah tamu yang diberikan. Untuk setiap tipe kamar, sistem menghitung jumlah kamar tersedia (roomCount), batasan (minimum lama menginap, tertutup untuk check-in/check-out), meal plan, dan opsi harga. Jika ada anak-anak, kirim usia mereka dengan childAges[]; harga anak bergantung pada usia.

Aturan validasi: check-in hari ini atau setelahnya, check-out setelah check-in, maksimal 30 malam, 1–40 dewasa, 0–10 anak (usia 0–16).

Field form

hotelIDintegerwajib
ID hotel. Harus sama dengan hotel pada token.
startDatedatewajib
Tanggal check-in, YYYY-MM-DD.
endDatedatewajib
Tanggal check-out, YYYY-MM-DD.
adultCountintegerwajib
Jumlah dewasa (1–40).
childCountintegerdefault: 0
Jumlah anak (0–10). Jika tidak sesuai dengan childAges, panjang daftar usia yang digunakan.
childAges[]integer[]
Usia setiap anak (0–16). Diulang sebagai field form: childAges[]=7&childAges[]=12.
languagestringdefault: tr
Bahasa respons (nama kamar, judul fitur, pesan error).
buildingIDinteger
Hanya menampilkan kamar di gedung (blok) ini.

Respons

200 Daftar tipe kamar. Harga berada di bawah setiap meal plan dalam objek prices, dengan kunci "<persons>-<1|0>": -1 adalah tarif standar (dapat di-refund), -0 tarif tidak dapat di-refund ([NR]). Pada harga per kamar, kuncinya adalah 1-1 / 1-0.

items[].id / nameinteger / string
ID dan nama tipe kamar. Dikirim sebagai roomTypeID dalam reservasi.
items[].capacityAdult / capacityChildren / capacityTotalinteger
Kapasitas dewasa, anak, dan total.
items[].roomCountinteger
Jumlah kamar yang dapat dijual untuk tanggal ini. 0 berarti tidak dapat dijual; alasannya ada di roomRestrictionMessage.
items[].roomRestrictionMessagestring | null
Batasan penjualan.
closed_to_checkinclosed_to_checkoutpassive_salesminimum_staymaximum_stayclosed_to_arrivalprice_not_found
items[].nonRefundable / refundableboolean
Apakah tipe kamar menawarkan tarif tidak dapat di-refund dan/atau dapat di-refund.
items[].images[]string[]
Path gambar, relatif terhadap URL dasar API.
items[].accommodationTypes[]object[]
Meal plan. id menjadi ratePlanID dalam reservasi. priceType: 0 harga per orang, 1 harga per kamar.
…accommodationTypes[].prices{}object
Opsi harga. Setiap opsi: total jumlah malam, price jumlah total, currency, nonRefundable ("[NR]" berarti tidak dapat di-refund), id ID pilihan, prices[] tarif per malam (price, tarih dalam format dd.mm.yyyy).
items[].roomFeatures[]object[]
Fitur kamar: title, icon.
countinteger
Jumlah tipe kamar yang dikembalikan.
errorMessage / errorCodestring | integer | null
Diisi jika gagal. Daftar kode: Kode error.

Respons error

  • 200 errorCode 10001 hotel tidak ditemukan · 10002 parameter tidak ada · 10003 hotel ditutup untuk penjualan online · 10004 tidak ada tipe kamar yang dibuka untuk dijual · 10022 parameter tanggal/jumlah tamu tidak valid · 20001–20004 ketersediaan tidak mencukupi.
Permintaan
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"
Respons · 200
{
    "success": true,
    "items": [
        {
            "id": 2,
            "name": "Kamar Standar",
            "capacityAdult": 2,
            "capacityTotal": 3,
            "totalBed": 1,
            "totalBathroom": 1,
            "roomSize": 24,
            "currency": "TRY",
            "detail": "<p>Kamar standar 24 m² dengan pemandangan taman.</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": "Termasuk Sarapan",
                    "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": "AC",
                    "icon": "fa-snowflake"
                },
                {
                    "title": "Wi-Fi Gratis",
                    "icon": "fa-wifi"
                }
            ],
            "capacityChildren": 1
        }
    ],
    "count": 1,
    "errorMessage": null,
    "errorCode": null
}
Respons · 200 (tidak ada ketersediaan)
{
    "success": false,
    "errorMessage": "Ketersediaan untuk dewasa tidak mencukupi.",
    "errorCode": 20001
}

Ketersediaan kalender#

GET/external/room/type/hotel/availability

Autentikasi: Authorization: Bearer

Mengembalikan jumlah kamar tersedia dan tarif dasar per hari untuk setiap tipe kamar. Dirancang untuk tampilan kalender dan heat map tarif; gunakan daftar kamar untuk harga pasti dan pemeriksaan batasan.

Parameter kueri

hotelIDintegerwajib
ID hotel.
startDatedatetimewajib
Awal, YYYY-MM-DD atau YYYY-MM-DDTHH:MM:SS.
endDatedatetimewajib
Akhir (inklusif).

Respons

200 Daftar harian per tipe kamar. availability -1 berarti tidak ada data ketersediaan untuk hari itu; price "-" berarti tarif belum ditentukan.

Respons error

  • 200 hotel_id_is_not_found, start_date_is_not_found, end_date_is_not_found — parameter tidak ada.
Permintaan
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"
Respons · 200
{
    "success": true,
    "roomTypes": [
        {
            "name": "Kamar Standar",
            "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"
}
Terakhir diperbarui: 21 September 2026Menemukan kesalahan? Beri tahu kami