Quartos e tarifas

Dois endpoints que alimentam os resultados de busca do motor de reservas: a lista de quartos, que retorna os tipos de quarto disponíveis para venda, os regimes de alimentação e os preços para as datas e a ocupação informadas, e a disponibilidade, que retorna a disponibilidade e as tarifas dia a dia para visualizações em calendário.

Lista de quartos e tarifas#

POST/external/online/roomType

Autenticação: Authorization: Bearer · Corpo: application/x-www-form-urlencoded ou multipart/form-data

Retorna os tipos de quarto do hotel abertos para venda online nas datas e na ocupação informadas. Para cada tipo de quarto são calculados a quantidade disponível (roomCount), as restrições (estadia mínima, fechado para check-in/check-out), os regimes de alimentação e as opções de preço. Se houver crianças, envie as idades em childAges[]; o preço para crianças depende da idade.

Regras de validação: check-in hoje ou depois, check-out após o check-in, no máximo 30 noites, 1–40 adultos, 0–10 crianças (0–16 anos).

Campos de formulário

hotelIDintegerobrigatório
ID do hotel. Deve ser o mesmo hotel do token.
startDatedateobrigatório
Data de check-in, YYYY-MM-DD.
endDatedateobrigatório
Data de check-out, YYYY-MM-DD.
adultCountintegerobrigatório
Número de adultos (1–40).
childCountintegerpadrão: 0
Número de crianças (0–10). Se não coincidir com childAges, prevalece o tamanho da lista de idades.
childAges[]integer[]
Idade de cada criança (0–16). Repetido como campo de formulário: childAges[]=7&childAges[]=12.
languagestringpadrão: tr
Idioma da resposta (nomes dos quartos, títulos das comodidades, mensagens de erro).
buildingIDinteger
Lista apenas os quartos deste prédio (bloco).

Resposta

200 Lista de tipos de quarto. Os preços ficam em cada regime de alimentação, no objeto prices, com chaves no formato "<persons>-<1|0>": -1 é a tarifa padrão (reembolsável) e -0, a tarifa não reembolsável ([NR]). Com preço por quarto, as chaves são 1-1 / 1-0.

items[].id / nameinteger / string
ID e nome do tipo de quarto. Enviado como roomTypeID na reserva.
items[].capacityAdult / capacityChildren / capacityTotalinteger
Capacidade de adultos, de crianças e total.
items[].roomCountinteger
Quartos disponíveis para venda nessas datas. 0 significa que não pode ser vendido; o motivo está em roomRestrictionMessage.
items[].roomRestrictionMessagestring | null
Restrição de venda.
closed_to_checkinclosed_to_checkoutpassive_salesminimum_staymaximum_stayclosed_to_arrivalprice_not_found
items[].nonRefundable / refundableboolean
Indica se o tipo de quarto oferece tarifas não reembolsáveis e/ou reembolsáveis.
items[].images[]string[]
Caminhos das imagens, relativos à URL base da API.
items[].accommodationTypes[]object[]
Regimes de alimentação. O id vira ratePlanID na reserva. priceType: 0 preço por pessoa, 1 preço por quarto.
…accommodationTypes[].prices{}object
Opções de preço. Cada opção: total noites, price valor total, currency, nonRefundable ("[NR]" significa não reembolsável), id ID da seleção, prices[] tarifas por noite (price, tarih no formato dd.mm.aaaa).
items[].roomFeatures[]object[]
Comodidades do quarto: title, icon.
countinteger
Número de tipos de quarto retornados.
errorMessage / errorCodestring | integer | null
Preenchido em caso de falha. Lista de códigos: Códigos de erro.

Respostas de erro

  • 200 errorCode 10001 hotel não encontrado · 10002 parâmetro ausente · 10003 hotel fechado para vendas online · 10004 nenhum tipo de quarto aberto para venda · 10022 parâmetros de data/ocupação inválidos · 20001–20004 disponibilidade insuficiente.
Requisição
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"
Resposta · 200
{
    "success": true,
    "items": [
        {
            "id": 2,
            "name": "Quarto Standard",
            "capacityAdult": 2,
            "capacityTotal": 3,
            "totalBed": 1,
            "totalBathroom": 1,
            "roomSize": 24,
            "currency": "TRY",
            "detail": "<p>Quarto standard de 24 m² com vista para o jardim.</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": "Café da manhã incluído",
                    "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": "Ar-condicionado",
                    "icon": "fa-snowflake"
                },
                {
                    "title": "Wi-Fi grátis",
                    "icon": "fa-wifi"
                }
            ],
            "capacityChildren": 1
        }
    ],
    "count": 1,
    "errorMessage": null,
    "errorCode": null
}
Resposta · 200 (sem disponibilidade)
{
    "success": false,
    "errorMessage": "Não há disponibilidade suficiente para o número de adultos.",
    "errorCode": 20001
}

Disponibilidade no calendário#

GET/external/room/type/hotel/availability

Autenticação: Authorization: Bearer

Retorna, para cada tipo de quarto, a quantidade de quartos disponíveis e a tarifa base de cada dia. Pensado para visualizações de calendário e mapas de calor de tarifas; use a lista de quartos para obter preços exatos e verificar restrições.

Parâmetros de consulta

hotelIDintegerobrigatório
ID do hotel.
startDatedatetimeobrigatório
Início, YYYY-MM-DD ou YYYY-MM-DDTHH:MM:SS.
endDatedatetimeobrigatório
Fim (inclusive).

Resposta

200 Lista diária por tipo de quarto. availability -1 significa que não há dados de disponibilidade para aquele dia; price "-" significa que não há tarifa definida.

Respostas de erro

  • 200 hotel_id_is_not_found, start_date_is_not_found, end_date_is_not_found — parâmetro ausente.
Requisição
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"
Resposta · 200
{
    "success": true,
    "roomTypes": [
        {
            "name": "Quarto Standard",
            "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"
}
Última atualização: 21 de setembro de 2026Encontrou um erro? Avise-nos