ห้องพักและราคา

เอนด์พอยต์สองตัวที่อยู่เบื้องหลังผลการค้นหาของระบบจองห้องพัก ได้แก่ รายการห้องพัก ซึ่งส่งคืนประเภทห้องพักที่เปิดขาย แผนอาหาร และราคาสำหรับวันที่และจำนวนผู้เข้าพักที่ระบุ และ ห้องว่าง ซึ่งส่งคืนจำนวนห้องว่างและราคารายวันสำหรับมุมมองปฏิทิน

รายการห้องพักและราคา#

POST/external/online/roomType

การยืนยันตัวตน: Authorization: Bearer · เนื้อหา: application/x-www-form-urlencoded หรือ multipart/form-data

ส่งคืนประเภทห้องพักของโรงแรมที่เปิดขายออนไลน์สำหรับวันที่และจำนวนผู้เข้าพักที่ระบุ โดยคำนวณจำนวนห้องที่ขายได้ (roomCount) ข้อจำกัด (จำนวนคืนขั้นต่ำ วันที่ปิดรับเช็กอิน/เช็กเอาต์) แผนอาหาร และตัวเลือกราคาของแต่ละประเภทห้องพัก หากมีเด็กเข้าพักด้วย ให้ส่งอายุของเด็กใน childAges[] เนื่องจากราคาสำหรับเด็กขึ้นอยู่กับอายุ

กฎการตรวจสอบ: วันเช็กอินต้องเป็นวันนี้หรือหลังจากนั้น วันเช็กเอาต์ต้องอยู่หลังวันเช็กอิน สูงสุด 30 คืน ผู้ใหญ่ 1–40 คน เด็ก 0–10 คน (อายุ 0–16 ปี)

ฟิลด์แบบฟอร์ม

hotelIDintegerจำเป็น
ID ของโรงแรม ต้องตรงกับโรงแรมของโทเค็น
startDatedateจำเป็น
วันเช็กอิน YYYY-MM-DD
endDatedateจำเป็น
วันเช็กเอาต์ YYYY-MM-DD
adultCountintegerจำเป็น
จำนวนผู้ใหญ่ (1–40)
childCountintegerค่าเริ่มต้น: 0
จำนวนเด็ก (0–10) หากไม่ตรงกับ childAges ระบบจะยึดตามความยาวของรายการอายุ
childAges[]integer[]
อายุของเด็กแต่ละคน (0–16) ส่งซ้ำเป็นฟิลด์แบบฟอร์ม: childAges[]=7&childAges[]=12
languagestringค่าเริ่มต้น: tr
ภาษาของการตอบกลับ (ชื่อห้อง ชื่อสิ่งอำนวยความสะดวก ข้อความแสดงข้อผิดพลาด)
buildingIDinteger
แสดงเฉพาะห้องพักในอาคาร (บล็อก) นี้

การตอบกลับ

200 รายการประเภทห้องพัก ราคาอยู่ใต้แผนอาหารแต่ละรายการในออบเจ็กต์ prices โดยมีคีย์ในรูปแบบ "<persons>-<1|0>": -1 คือราคามาตรฐาน (คืนเงินได้) และ -0 คือราคาแบบไม่คืนเงิน ([NR]) หากคิดราคาต่อห้อง คีย์จะเป็น 1-1 / 1-0

items[].id / nameinteger / string
ID และชื่อของประเภทห้องพัก ส่งเป็น roomTypeID ในการจอง
items[].capacityAdult / capacityChildren / capacityTotalinteger
ความจุผู้ใหญ่ เด็ก และความจุรวม
items[].roomCountinteger
จำนวนห้องที่ขายได้ในช่วงวันที่นี้ 0 หมายถึงขายไม่ได้ โดยเหตุผลอยู่ใน roomRestrictionMessage
items[].roomRestrictionMessagestring | null
ข้อจำกัดการขาย
closed_to_checkinclosed_to_checkoutpassive_salesminimum_staymaximum_stayclosed_to_arrivalprice_not_found
items[].nonRefundable / refundableboolean
ประเภทห้องพักนี้มีราคาแบบไม่คืนเงินและ/หรือแบบคืนเงินได้หรือไม่
items[].images[]string[]
พาธของรูปภาพ อ้างอิงจาก URL หลักของ API
items[].accommodationTypes[]object[]
แผนอาหาร id จะใช้เป็น ratePlanID ในการจอง priceType: 0 คิดราคาต่อคน, 1 คิดราคาต่อห้อง
…accommodationTypes[].prices{}object
ตัวเลือกราคา แต่ละตัวเลือกประกอบด้วย total จำนวนคืน, price ยอดรวม, currency, nonRefundable ("[NR]" หมายถึงไม่คืนเงิน), id ID ของตัวเลือก และ prices[] ราคารายคืน (price, tarih ในรูปแบบ dd.mm.yyyy)
items[].roomFeatures[]object[]
สิ่งอำนวยความสะดวกของห้อง: title, icon
countinteger
จำนวนประเภทห้องพักที่ส่งคืน
errorMessage / errorCodestring | integer | null
มีค่าเมื่อไม่สำเร็จ รายการรหัส: รหัสข้อผิดพลาด

การตอบกลับเมื่อเกิดข้อผิดพลาด

  • 200 errorCode 10001 ไม่พบโรงแรม · 10002 ขาดพารามิเตอร์ · 10003 โรงแรมปิดการขายออนไลน์ · 10004 ไม่มีประเภทห้องพักที่เปิดขาย · 10022 พารามิเตอร์วันที่/จำนวนผู้เข้าพักไม่ถูกต้อง · 20001–20004 ห้องว่างไม่เพียงพอ
คำขอ
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"
การตอบกลับ · 200
{
    "success": true,
    "items": [
        {
            "id": 2,
            "name": "ห้องสแตนดาร์ด",
            "capacityAdult": 2,
            "capacityTotal": 3,
            "totalBed": 1,
            "totalBathroom": 1,
            "roomSize": 24,
            "currency": "TRY",
            "detail": "<p>ห้องสแตนดาร์ดขนาด 24 ตร.ม. วิวสวน</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": "รวมอาหารเช้า",
                    "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": "เครื่องปรับอากาศ",
                    "icon": "fa-snowflake"
                },
                {
                    "title": "Wi-Fi ฟรี",
                    "icon": "fa-wifi"
                }
            ],
            "capacityChildren": 1
        }
    ],
    "count": 1,
    "errorMessage": null,
    "errorCode": null
}
การตอบกลับ · 200 (ไม่มีห้องว่าง)
{
    "success": false,
    "errorMessage": "ห้องว่างสำหรับผู้ใหญ่ไม่เพียงพอ",
    "errorCode": 20001
}

ห้องว่างตามปฏิทิน#

GET/external/room/type/hotel/availability

การยืนยันตัวตน: Authorization: Bearer

ส่งคืนจำนวนห้องว่างและราคาพื้นฐานรายวันของแต่ละประเภทห้องพัก ออกแบบมาสำหรับมุมมองปฏิทินและแผนภาพความร้อนของราคา (heat map) หากต้องการราคาที่แน่นอนและการตรวจสอบข้อจำกัด ให้ใช้รายการห้องพัก

พารามิเตอร์คิวรี

hotelIDintegerจำเป็น
ID ของโรงแรม
startDatedatetimeจำเป็น
วันเริ่มต้น YYYY-MM-DD หรือ YYYY-MM-DDTHH:MM:SS
endDatedatetimeจำเป็น
วันสิ้นสุด (นับรวม)

การตอบกลับ

200 รายการรายวันตามประเภทห้องพัก availability เป็น -1 หมายถึงไม่มีข้อมูลห้องว่างของวันนั้น และ price เป็น "-" หมายถึงยังไม่ได้กำหนดราคา

การตอบกลับเมื่อเกิดข้อผิดพลาด

  • 200 hotel_id_is_not_found, start_date_is_not_found, end_date_is_not_found — ขาดพารามิเตอร์
คำขอ
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"
การตอบกลับ · 200
{
    "success": true,
    "roomTypes": [
        {
            "name": "ห้องสแตนดาร์ด",
            "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"
}