Phòng và giá

Hai endpoint cung cấp dữ liệu cho kết quả tìm kiếm của công cụ đặt phòng: danh sách phòng trả về các loại phòng có thể bán, gói ăn và giá cho ngày và số khách đã chọn; phòng trống trả về tình trạng phòng trống và giá theo từng ngày cho giao diện lịch.

Danh sách phòng và giá#

POST/external/online/roomType

Xác thực: Authorization: Bearer · Nội dung: application/x-www-form-urlencoded hoặc multipart/form-data

Trả về các loại phòng của khách sạn đang mở bán trực tuyến cho ngày và số khách đã chọn. Với mỗi loại phòng, hệ thống tính số phòng còn trống (roomCount), các hạn chế (thời gian lưu trú tối thiểu, đóng nhận phòng/trả phòng), gói ăn và các lựa chọn giá. Nếu có trẻ em đi cùng, hãy gửi tuổi của trẻ bằng childAges[]; giá cho trẻ em phụ thuộc vào độ tuổi.

Quy tắc kiểm tra: ngày nhận phòng từ hôm nay trở đi, ngày trả phòng sau ngày nhận phòng, tối đa 30 đêm, 1–40 người lớn, 0–10 trẻ em (0–16 tuổi).

Trường form

hotelIDintegerbắt buộc
ID khách sạn. Phải trùng với khách sạn của token.
startDatedatebắt buộc
Ngày nhận phòng, YYYY-MM-DD.
endDatedatebắt buộc
Ngày trả phòng, YYYY-MM-DD.
adultCountintegerbắt buộc
Số người lớn (1–40).
childCountintegermặc định: 0
Số trẻ em (0–10). Nếu không khớp với childAges, độ dài của danh sách tuổi được ưu tiên.
childAges[]integer[]
Tuổi của từng trẻ (0–16). Lặp lại như một trường form: childAges[]=7&childAges[]=12.
languagestringmặc định: tr
Ngôn ngữ của phản hồi (tên phòng, tên tiện nghi, thông báo lỗi).
buildingIDinteger
Chỉ liệt kê các phòng trong tòa nhà (khu) này.

Phản hồi

200 Danh sách loại phòng. Giá nằm dưới mỗi gói ăn trong đối tượng prices, với khóa dạng "<persons>-<1|0>": -1 là giá tiêu chuẩn (được hoàn tiền), -0 là giá không hoàn tiền ([NR]). Với giá theo phòng, khóa là 1-1 / 1-0.

items[].id / nameinteger / string
ID và tên loại phòng. Được gửi dưới dạng roomTypeID khi đặt phòng.
items[].capacityAdult / capacityChildren / capacityTotalinteger
Sức chứa người lớn, trẻ em và tổng.
items[].roomCountinteger
Số phòng có thể bán cho các ngày này. 0 nghĩa là không thể bán; lý do nằm trong roomRestrictionMessage.
items[].roomRestrictionMessagestring | null
Hạn chế bán.
closed_to_checkinclosed_to_checkoutpassive_salesminimum_staymaximum_stayclosed_to_arrivalprice_not_found
items[].nonRefundable / refundableboolean
Loại phòng có cung cấp giá không hoàn tiền và/hoặc giá được hoàn tiền hay không.
items[].images[]string[]
Đường dẫn hình ảnh, tương đối so với URL gốc của API.
items[].accommodationTypes[]object[]
Gói ăn. id trở thành ratePlanID khi đặt phòng. priceType: 0 giá theo người, 1 giá theo phòng.
…accommodationTypes[].prices{}object
Các lựa chọn giá. Mỗi lựa chọn gồm: total số đêm, price tổng tiền, currency, nonRefundable ("[NR]" nghĩa là không hoàn tiền), id ID lựa chọn, prices[] giá theo đêm (price, tarih dạng dd.mm.yyyy).
items[].roomFeatures[]object[]
Tiện nghi phòng: title, icon.
countinteger
Số loại phòng được trả về.
errorMessage / errorCodestring | integer | null
Có giá trị khi thất bại. Danh sách mã: Mã lỗi.

Phản hồi lỗi

  • 200 errorCode 10001 không tìm thấy khách sạn · 10002 thiếu tham số · 10003 khách sạn đóng bán trực tuyến · 10004 không có loại phòng nào mở bán · 10022 tham số ngày/số khách không hợp lệ · 20001–20004 không đủ phòng trống.
Yêu cầu
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"
Phản hồi · 200
{
    "success": true,
    "items": [
        {
            "id": 2,
            "name": "Phòng Tiêu chuẩn",
            "capacityAdult": 2,
            "capacityTotal": 3,
            "totalBed": 1,
            "totalBathroom": 1,
            "roomSize": 24,
            "currency": "TRY",
            "detail": "<p>Phòng tiêu chuẩn 24 m², hướng vườn.</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": "Bao gồm bữa sáng",
                    "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": "Điều hòa",
                    "icon": "fa-snowflake"
                },
                {
                    "title": "Wi-Fi miễn phí",
                    "icon": "fa-wifi"
                }
            ],
            "capacityChildren": 1
        }
    ],
    "count": 1,
    "errorMessage": null,
    "errorCode": null
}
Phản hồi · 200 (hết phòng)
{
    "success": false,
    "errorMessage": "Không đủ phòng trống cho người lớn.",
    "errorCode": 20001
}

Phòng trống theo lịch#

GET/external/room/type/hotel/availability

Xác thực: Authorization: Bearer

Trả về số phòng còn trống và giá cơ bản theo từng ngày cho mỗi loại phòng. Được thiết kế cho giao diện lịch và bản đồ nhiệt giá; để có giá chính xác và kiểm tra hạn chế, hãy dùng danh sách phòng.

Tham số truy vấn

hotelIDintegerbắt buộc
ID khách sạn.
startDatedatetimebắt buộc
Ngày bắt đầu, YYYY-MM-DD hoặc YYYY-MM-DDTHH:MM:SS.
endDatedatetimebắt buộc
Ngày kết thúc (bao gồm cả ngày này).

Phản hồi

200 Danh sách theo ngày cho từng loại phòng. availability -1 nghĩa là không có dữ liệu phòng trống cho ngày đó; price "-" nghĩa là chưa thiết lập giá.

Phản hồi lỗi

  • 200 hotel_id_is_not_found, start_date_is_not_found, end_date_is_not_found — thiếu tham số.
Yêu cầu
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"
Phản hồi · 200
{
    "success": true,
    "roomTypes": [
        {
            "name": "Phòng Tiêu chuẩn",
            "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"
}
Cập nhật lần cuối: 21 tháng 9, 2026Phát hiện lỗi? Hãy cho chúng tôi biết