Busca de Disponibilidade — Long Stay
Endpoint
POST https://innerapi-scissors.niara.tech/booking/longstay/{landingPageLocator}/hotels/availability
landingPageLocator identifica a landing page/storefront da integração (ex.: meuLandingPageLocator).
Headers
| Header | Obrigatório | Descrição |
|---|---|---|
Authorization | Sim | Token JWT de autenticação, enviado sem o prefixo Bearer. Veja Autenticação para saber como obter o token. |
Parâmetros de Requisição
| Parâmetro | Tipo | Obrigatoriedade | Descrição | Exemplo |
|---|---|---|---|---|
isLongStay | boolean | Sim | Identifica a busca como Long Stay, habilitando o retorno de tarifas e do pacote. | true |
engineRuleVersion | "1" | Sim | Versão do motor de regras usada no cálculo das tarifas. | "1" |
purchaseSessionId | string | Sim | Identificador da sessão de compra/carrinho atual. | "beFpF7FL65mtXMGArO0I3" |
criteria.time.startDate | string (YYYY-MM-DD) | Sim | Data de início da estadia (check-in). | "2026-07-23" |
criteria.time.endDate | string (YYYY-MM-DD) | Sim | Data de término da estadia (check-out). | "2026-08-24" |
criteria.occupancy.adults | number | Sim | Quantidade de adultos. No fluxo Long Stay é fixado em 1. | 1 |
criteria.occupancy.quantity | number | Sim | Quantidade de unidades buscadas. No fluxo Long Stay é fixado em 1. | 1 |
criteria.destinations | object | Sim | Define o que está sendo buscado. O formato do objeto varia conforme o tipo de busca — veja Busca por Cidade/Região ou Busca por Hotel/Condomínio Específico ou Busca por Todos os Destinos. | { "propertyId": "3074" } ou { "hotelIds": ["HOTEL_OMNI_123456"] } ou { "contentType": "all", "propertyId": "ALL" } |
isThirdPartyReservation | boolean | Não | Indica se a reserva será feita para um terceiro (não o comprador autenticado). | false |
criteria.destinationName | string | Não | Nome do destino em texto livre, usado para exibição/preenchimento. | "São Paulo (City)" |
criteria.searchId | string | Não | Identificador da busca gerado pelo chamador, usado para correlacionar resultados. | "a1b2c3d4" |
criteria.promoCode | string | Não | Código promocional aplicado à busca. | "VERAO10" |
criteria.roomTypeId | string | Não | Filtra por um tipo de quarto específico. | "rt-001" |
criteria.ratePlanId | string | number | Não | Filtra por um plano de tarifa específico. | "rp-01" |
criteria.roomRateIds | string[] | Não | Filtra por tarifas específicas já conhecidas. | ["rr-9001"] |
criteria.availRatesOnly | boolean | Não | Retorna apenas tarifas disponíveis. | true |
O objeto criteria.destinations (que define o que está sendo buscado) tem um formato diferente para cada tipo de busca — veja as páginas específicas:
Retorno do Endpoint (Response — 200 OK)
{
"searchId": "{searchId}",
"engineRuleVersion": "1",
"recommendedStep": 0,
"hotels": [
{
"roomRates": [
{
"paymentOptions": [
{
"id": "{id}",
"enabled": true,
"paymentValue": 8370,
"actualTotalValue": 16740,
"paymentCurrency": "BRL",
"exchangeRates": [{ "currencyFrom": "BRL", "currencyTo": "BRL", "exchangeRate": 1 }],
"oncc_conditions": [
{
"maxInst": 1,
"cardBrands": ["MASTERCARD", "VISA"],
"minInstValue": 1,
"maxInstRule": 1,
"minBookingAmountInst": null,
"instRateEnabled": null,
"instRates": null
}
],
"originalCurrency": "BRL",
"recurringPayments": [
{ "value": 8370, "currency": "BRL", "date": "2026-07-15T03:00:00+00:00" },
{ "value": 8370, "currency": "BRL", "date": "2026-08-15T03:00:00+00:00" }
]
}
],
"engineRuleId": "{engineRuleId}",
"id": "{id}",
"idOnSource": "{idOnSource}",
"cancelPolicy": {
"nonRefundable": false,
"inPenalty": false,
"penaltyDate": "2026-07-13T12:00:00-03:00",
"priceComposition": {
"penalty": { "value": 55, "currency": "BRL", "percentage": null },
"total": { "value": 55, "currency": "BRL", "percentage": null }
},
},
"ratePlan": {
"type": "COMM",
"public": true,
"package": false,
"name": "Berrini 1 dorm",
"id": "{id}",
"inclusions": [
{ "id": "{id}", "name": "Geladeira Duplex LongStay", "description": "Geladeira Duplex LongStay" }
]
},
"roomType": { "name": "Apartamento 1 Dormitório - 40m² - Test Lonstay", "units": 194, "id": "{id}" },
"time": {
"startDate": "2026-07-15",
"endDate": "2026-09-15",
"reservationDate": "2026-07-08",
"penaltyDate": "2026-07-14",
"antecedence": 7,
"duration": 62
},
"available": true,
"depositPolicy": {
"amount": { "total": { "value": 30, "currency": "BRL" }, "type": "PERCENT" },
"isRequired": true
},
"descriptions": {
"cancelPolicy": [
{
"name": "Cancelamento 48 horas",
"description": "Cancelamento grátis até 48 horas antes da data do check in"
}
],
"generalPolicies": [
{ "name": "Política Geral TESTE", "description": "Descrição da política geral do hotel." }
],
"meal": [{ "name": null, "description": null }],
"payment": [{ "name": "Garantia - 1 Noite", "description": "Garantia - 1 Noite" }],
"roomType": [
{
"name": "Apartamento 1 Dormitório - 40m² - Test Lonstay",
"description": "Descrição do quarto Apartamento 1 Dormitório - 40m² - Test Lonstay."
}
],
"ratePlan": [
{ "name": "Berrini 1 dorm", "description": "Tarifário para o Berrini (Bee2Bee) 1 dorm." }
]
},
"meal": {
"breakfast": false,
"lunch": false,
"dinner": false,
"allInclusive": false,
"name": null,
"id": null
},
"promotion": null,
"priceSortValue": 16740,
"priceSortCurrency": "BRL",
"isDirectFromProperty": true,
"offers": [
{
"name": "Pacote 10% 2+ meses",
"discount": 10,
"freeNights": null,
"nightsRequired": 60,
"discountType": "STAY_DISCOUNT"
}
],
"checkoutStrategy": "PAYMENT_THEN_BOOKING",
"modificationAllowed": null,
"nights": [
{
"date": "2026-07-15",
"units": 200,
"restrictions": {
"requiredNightCount": null,
"minNightCount": 29,
"maxNightCount": null,
"minChildAge": null,
"maxChildAge": null,
"minTimeBetweenBookingAndCheckin": null,
"minAdultCount": 1,
"maxAdultCount": 3,
"minChildCount": 1,
"maxChildCount": 2,
"childrenAllowed": true,
"closedOnArrival": false,
"closedOnDeparture": false,
"closedSale": false
}
},
{
"date": "2026-07-16",
"units": 200,
"restrictions": {
"requiredNightCount": null,
"minNightCount": 29,
"maxNightCount": null,
"minChildAge": null,
"maxChildAge": null,
"minTimeBetweenBookingAndCheckin": null,
"minAdultCount": 1,
"maxAdultCount": 3,
"minChildCount": 1,
"maxChildCount": 2,
"childrenAllowed": true,
"closedOnArrival": false,
"closedOnDeparture": false,
"closedSale": false
}
},
"// ... 59 noites omitidas — uma por dia da estadia, mesmo formato acima (varia apenas date/units/restrictions) ...",
{
"date": "2026-09-14",
"units": 196,
"restrictions": {
"requiredNightCount": null,
"minNightCount": 29,
"maxNightCount": null,
"minChildAge": null,
"maxChildAge": null,
"minTimeBetweenBookingAndCheckin": null,
"minAdultCount": 1,
"maxAdultCount": 3,
"minChildCount": 1,
"maxChildCount": 2,
"childrenAllowed": true,
"closedOnArrival": false,
"closedOnDeparture": false,
"closedSale": false
}
}
],
"addons": [
{
"id": "{id}",
"addonId": "{addonId}",
"engineRuleId": "{engineRuleId}",
"priceComposition": {
"total": { "value": 4000, "currency": "BRL" },
"recurringPayment": { "value": 2000, "currency": "BRL" },
"originalPrice": { "value": 4000, "currency": "BRL" }
},
"paymentOptionsDetails": [
{
"id": "{id}",
"priceComposition": {
"total": { "value": 4000, "currency": "BRL" },
"recurringPayment": { "value": 2000, "currency": "BRL" },
"originalPrice": { "value": 4000, "currency": "BRL" }
},
"paymentOptionsTypes": ["INT_LATER", "INT_ON_CC"]
}
],
"paymentOptions": [
{
"id": "{id}",
"alias": "Cartão de Crédito",
"type": "ON_CC",
"internalType": "INT_ON_CC",
"description": "Cartão de Crédito",
"card": true,
"enabled": true,
"paymentValue": 2000,
"actualTotalValue": 4000,
"paymentCurrency": "BRL",
"oncc_conditions": [
{
"maxInst": 1,
"cardBrands": ["MASTERCARD", "VISA"],
"minInstValue": 1,
"maxInstRule": 1,
"minBookingAmountInst": null,
"instRateEnabled": null,
"instRates": null
}
],
"originalCurrency": "BRL",
"recurringPayments": [
{ "value": 2000, "currency": "BRL", "date": "2026-07-15T00:00:00+00:00" },
{ "value": 2000, "currency": "BRL", "date": "2026-08-15T00:00:00+00:00" }
]
}
],
"name": "Pacote",
"variantId": "{variantId}",
}
],
"priceComposition": {
"commission": { "value": 0, "currency": "BRL", "percentage": null },
"taxes": { "value": 0, "currency": "BRL", "percentage": null },
"discounts": { "value": -1860, "currency": "BRL" },
"nights": [
{ "value": 270, "currency": "BRL", "date": "2026-07-15", "units": 200 },
{ "value": 270, "currency": "BRL", "date": "2026-07-16", "units": 200 },
"// ... 59 noites omitidas, mesmo formato acima ...",
{ "value": 270, "currency": "BRL", "date": "2026-09-14", "units": 196 }
],
"recurringPayments": [],
"productPrice": { "value": 16740, "currency": "BRL" },
"total": { "value": 16740, "currency": "BRL", "percentage": null },
"totalReceivable": { "value": 16740, "currency": "BRL" },
"discountBreakdown": [
{
"currency": "BRL",
"value": 1860,
"description": "Pacote 10% 2+ meses",
"originType": "OFFER",
"code": null,
"displayName": null
}
],
"penalty": { "value": 55, "currency": "BRL" },
"recurringPayment": { "value": 8370, "currency": "BRL" }
},
"paymentOptionsDetails": [
{
"id": "{id}",
"priceComposition": {
"net": { "value": 16740, "currency": "BRL" },
"commission": { "value": 0, "currency": "BRL", "percentage": null },
"taxes": { "value": 0, "currency": "BRL", "percentage": null },
"discounts": { "value": -1860, "currency": "BRL" },
"nights": [
{ "value": 270, "currency": "BRL", "date": "2026-07-15", "units": 200 },
{ "value": 270, "currency": "BRL", "date": "2026-07-16", "units": 200 },
"// ... 59 noites omitidas, mesmo formato acima ...",
{ "value": 270, "currency": "BRL", "date": "2026-09-14", "units": 196 }
],
"recurringPayments": [],
"productPrice": { "value": 16740, "currency": "BRL" },
"total": { "value": 16740, "currency": "BRL", "percentage": null },
"totalReceivable": { "value": 16740, "currency": "BRL" },
"discountBreakdown": [
{
"currency": "BRL",
"value": 1860,
"description": "Pacote 10% 2+ meses",
"originType": "OFFER",
"code": null,
"displayName": null
}
],
"penalty": { "value": 55, "currency": "BRL" },
"recurringPayment": { "value": 8370, "currency": "BRL" }
},
"paymentOptionsTypes": ["INT_ON_CC", "INT_LATER"]
}
],
}
],
"notAvailableRoomRates": [],
"hotel": {
"id": "{id}",
"soupIds": ["{soupId}"],
"name": "DEMO - BEE2BEE (NIARA)",
"cityId": "{cityId}",
"citySoupIds": ["{citySoupId}"],
"countryId": "{countryId}",
"countrySoupIds": ["{countrySoupId}"],
"chainId": "{chainId}",
"chainSoupIds": ["{chainSoupId}"],
"position": { "latitude": -23.5469225, "longitude": -46.6458856 },
"chainName": "DEMO HOTEIS BRASIL",
"address": "Av. Endereço cadastrado para teste",
"award": 5,
"cityName": "Sao Paulo",
"stateName": "Sao Paulo",
"countryName": "Brasil",
"extra": { "thumbnail": "https://media.omnibees.com/Images/10027/Property/1215639.jpg" },
"meta": null,
"propertyId": "{propertyId}",
"detailsUrl": null
},
}
],
"messages": null,
"entitiesData": {
"favoriteHotelsRules": {},
"properties": {
"{propertyId}": {
"neighborhood": "República",
"city": "Sao Paulo",
"iataCityCode": "SAO",
"countryCode": "BR",
"gdsChainCode": null,
"giatId": "{giatId}",
"address": "Av. Endereço cadastrado para teste, Sao Paulo, Sao Paulo, Brasil",
"location": { "latitude": -23.5469225, "longitude": -46.6458856 },
"rating": 5
}
},
"regions": {},
"addons": {
"{addonId}": {
"name": "Pacote",
"type": "ROOM_SERVICES_BUNDLE",
"id": "{id}",
"mandatoryPurchase": true,
"images": [{ "name": "Pacote", "url": "" }],
"description": ["Pacote - Descrição"],
"descriptionBlocks": null,
"priceByVariant": [],
"priceByRoomType": [{ "roomId": "{roomId}" }, { "roomId": "{roomId}" }],
"unit": "PER_RESERVATION",
"billingType": "BILLING_TYPE_PER_MONTH",
"pricingType": "ROOM",
"schedule": null,
"schehuleType": null,
"extraFieldDefinitions": [],
"shouldIncludeAddonInRate": false,
"linkedRoomRates": null,
"excludedRoomRates": null,
"propertyId": "{propertyId}",
"propertyName": "DEMO - BEE2BEE",
"occupancies": null,
"filterWhenChildrenInCriteria": null,
"maxPurchasePerRoom": null
}
},
"paymentOptions": {
"{id}__ON_CC__INT_ON_CC": {
"alias": "Cartão de Crédito",
"description": "Cartão de Crédito",
"type": "ON_CC",
"internalType": "INT_ON_CC",
"card": true,
"partialPaymentCheckoutEnabled": null,
"partialPaymentCheckoutTermsText": null
}
}
},
"engineRuleId": "{engineRuleId}",
"totalCount": 1
}
Onde está o pacote na resposta
hotels[].roomRates[].addons[]: instância do addon aplicada àquela tarifa específica. Contém oaddonIdque referencia o dicionárioentitiesData.addons, além de precificação e regras específicas daquela tarifa.entitiesData.addons: dicionárioaddonId → Addon, com os dados descritivos e de configuração do pacote.
Campos de entitiesData.addons[addonId]
| Campo | Tipo | Descrição |
|---|---|---|
id | string | ID do addon. É a mesma chave do dicionário e o valor usado em addonId nas instâncias de roomRates[].addons[]. |
name | string | Nome comercial do pacote ("Pacote"). |
description | string[] | Linhas de descrição do pacote. |
type | string (enum) | Categoria do addon. Para o pacote é "ROOM_SERVICES_BUNDLE". |
billingType | string (enum) | Periodicidade de cobrança do pacote — tipicamente "BILLING_TYPE_PER_MONTH" no Long Stay. |
pricingType | string (enum) | Como o preço do addon é determinado. "ROOM" indica que varia por tipo de quarto (ver priceByRoomType). |
unit | string (enum) | Unidade de cobrança, ex.: "PER_RESERVATION". |
shouldIncludeAddonInRate | boolean | Se true, o valor do addon já está embutido no total da tarifa. Se false (caso do pacote hoje), o addon tem cobrança própria, refletida em roomRates[].addons[].priceComposition.total. |
mandatoryPurchase | boolean | Se a compra do pacote é obrigatória junto com a reserva do quarto. |
priceByRoomType | array | Referências de preço por tipo de quarto (roomId), usadas quando pricingType é "ROOM". |
priceByVariant | array | Equivalente a priceByRoomType, mas por variante do addon. |
images | array | Imagens do pacote (name, url). |
propertyId / propertyName | string | Propriedade à qual o addon está vinculado. |
linkedRoomRates / excludedRoomRates | string[] | null | Restringe o addon a tarifas específicas ou o exclui delas. |
filterWhenChildrenInCriteria | string | null | Regra de exibição do addon conforme presença de crianças na busca. |
maxPurchasePerRoom | number | null | Limite de compra por quarto. |
occupancies | array | null | Ocupações aplicáveis ao addon. |
extraFieldDefinitions | array | Definições de campos extras a preencher na compra do addon. |
schedule / schehuleType | object | null | Regras de agendamento do addon. |
Campos de roomRates[].addons[]
| Campo | Tipo | Descrição |
|---|---|---|
id | string | ID da instância do addon aplicada a esta tarifa (não confundir com addonId). |
addonId | string | Referencia a chave em entitiesData.addons. |
variantId | string | Identifica a variante de preço aplicada (ex.: corresponde ao roomId em priceByRoomType quando pricingType é "ROOM"). |
name | string | Nome do addon (redundante com entitiesData.addons[addonId].name). |
engineRuleId | string | ID da regra do motor de tarifação usada para calcular este addon. |
priceComposition.total | object { value: number, currency: string } | Preço total do addon para esta tarifa. Só é diferente de zero quando shouldIncludeAddonInRate (em entitiesData.addons) é false. |
priceComposition.recurringPayment | object { value: number, currency: string } | Valor recorrente (mensal) cobrado pelo addon. |
priceComposition.originalPrice | object { value: number, currency: string } | Preço original do addon, antes de descontos/ajustes. |
paymentOptions | array — ver Campos de PaymentOption | Formas de pagamento disponíveis para o addon. |
paymentOptionsDetails | array { id: string, priceComposition: object, paymentOptionsTypes: string[] } | Detalhamento de preço do addon por tipo de forma de pagamento (priceComposition no mesmo formato do campo priceComposition do addon, acima). |
Estrutura Completa da Resposta
As tabelas abaixo destrincham as propriedades presentes no exemplo de resposta acima. Campos aninhados em objetos complexos têm sua própria subseção, referenciada na coluna "Tipo" da tabela do objeto pai.
Campos da Resposta (nível raiz)
| Campo | Tipo | Descrição |
|---|---|---|
searchId | string | Identificador da busca, gerado pela Niara. Corresponde ao tipo GetHotelAvailResponse.searchId. |
recommendedStep | number | Paginação recomendada pelo backend. |
hotels | array — ver Campos de hotels[] | Lista de resultados (um item por combinação hotel/credencial). |
messages | array | null | Mensagens de nível de busca (tipo GetHotelAvailResponse.messages, formato: array de objetos com severity igual a "INFO", "ERROR" ou "WARNING", e message: string). null quando não há mensagens. |
entitiesData | object — ver Campos de entitiesData | Dicionários de apoio (addons, propriedades, formas de pagamento, etc.) referenciados pelos itens de hotels[]. |
totalCount | number | Quantidade total de hotéis encontrados. |
Campos de hotels[]
| Campo | Tipo | Descrição |
|---|---|---|
roomRates | array — ver Campos de hotels[].roomRates[] | Tarifas disponíveis para este hotel/credencial. |
notAvailableRoomRates | array | Tarifas encontradas mas indisponíveis para reserva. Mesma estrutura de roomRates[] (tipo OriginalNotAvailableRoomRate), com o campo available sempre fixado em false. |
hotel | object — ver Campos de hotels[].hotel | Dados do hotel/propriedade. |
Campos de hotels[].hotel
| Campo | Tipo | Descrição |
|---|---|---|
id | string | ID do hotel. |
name | string | Nome do hotel/propriedade. |
cityId | string | ID da cidade. |
countryId | string | ID do país. |
position | object { latitude: number, longitude: number } | Coordenadas geográficas do hotel. |
address | string | Endereço do hotel. |
award | number | Categoria/classificação do hotel (estrelas). |
cityName | string | Nome da cidade. |
stateName | string | Nome do estado. |
countryName | string | Nome do país. |
extra.thumbnail | string | URL da imagem de capa do hotel. |
meta | object { boost: number | null, favoriteHotelsRuleId: string | null } | null | Metadados opcionais de ranqueamento. null quando o hotel não tem regra de destaque/boost aplicada. |
propertyId | string | ID da propriedade (usado em criteria.destinations.propertyId e em entitiesData.properties). |
detailsUrl | string | null | URL para detalhes adicionais do hotel, quando aplicável. |
Campos de hotels[].roomRates[]
| Campo | Tipo | Descrição |
|---|---|---|
id | string | ID da tarifa. |
idOnSource | string | ID da tarifa na origem/fornecedor. |
available | boolean | Se a tarifa está disponível para reserva. |
roomType | object — ver Campos de roomRates[].roomType | Tipo de quarto/apartamento. |
ratePlan | object — ver Campos de roomRates[].ratePlan | Plano de tarifa. |
priceComposition | object — ver Campos de roomRates[].priceComposition | Composição de preço da tarifa. |
cancelPolicy | object — ver Campos de roomRates[].cancelPolicy | Política de cancelamento. |
depositPolicy | object — ver Campos de roomRates[].depositPolicy | Regra de depósito/sinal exigido na reserva. |
meal | object — ver Campos de roomRates[].meal | Regime de alimentação incluso. |
descriptions | object — ver Campos de roomRates[].descriptions | Textos descritivos por categoria. |
promotion | object { code: string, description: string, total: number, currency: string } | null | Promoção aplicada à tarifa. null quando não há promoção aplicada. |
offers | array — ver Campos de roomRates[].offers[] | Ofertas/descontos aplicáveis. |
isDirectFromProperty | boolean | Se a tarifa vem direto da propriedade (sem intermediação de OTA/canal). |
nights | array — ver Campos de roomRates[].nights[] | Disponibilidade e restrições de cada noite da estadia. |
addons | array — ver Campos de roomRates[].addons[] | Addons vinculados a esta tarifa (ex.: pacote). |
paymentOptions | array — ver Campos de PaymentOption | Formas de pagamento disponíveis para a tarifa. |
paymentOptionsDetails | array { id: string, priceComposition: object, paymentOptionsTypes: string[] } | Detalhamento de preço da tarifa por forma de pagamento — um item por forma de pagamento, com a composição de preço específica (priceComposition, mesma estrutura de Campos de roomRates[].priceComposition) e os tipos de pagamento cobertos (paymentOptionsTypes, ex.: ["INT_ON_CC", "INT_LATER"]). |
Campos de roomRates[].roomType
| Campo | Tipo | Descrição |
|---|---|---|
id | string | ID do tipo de quarto/apartamento. |
name | string | Nome do tipo de quarto/apartamento. |
units | number | Quantidade de unidades daquele tipo de quarto. |
Campos de roomRates[].ratePlan
| Campo | Tipo | Descrição |
|---|---|---|
id | string | number | ID do plano de tarifa. |
name | string | Nome do plano de tarifa. |
type | "COMM" | "NET" | Tipo de remuneração da tarifa. |
public | boolean | Se o plano de tarifa é público. |
package | boolean | Se a tarifa está em formato de pacote. |
inclusions | array { id: string, name: string, description: string | null } | Itens inclusos no plano de tarifa (ex.: mobília, utensílios). |
Campos de roomRates[].priceComposition
| Campo | Tipo | Descrição |
|---|---|---|
commission | object { value: number, currency: string, percentage: number | null } | Comissão sobre a tarifa. |
taxes | object { value: number, currency: string, percentage: number | null } | Valor de taxas da tarifa. |
discounts | object { value: number, currency: string } | Valor total de descontos aplicados. |
nights | array { value: number, currency: string, date: string | null, units: number | null } | Preço por noite da estadia. |
discountBreakdown | array { currency: string | null, value: number | null, description: string | null, code: string | null, displayName: string | null, originType: "COUPON" | "PROMOCODE" | "OFFER" | "MANUAL_DISCOUNT" | "MANUAL_DISCOUNT_MARKUP" | "MANUAL_DISCOUNT_COMMISSION" | "PREVIEW_PAYMENT_DISCOUNT" | null } | Detalhamento dos descontos aplicados (ex.: origem "OFFER" para a oferta de desconto por estadia longa). |
recurringPayments | array { value: number, currency: string, date: string, discountValue: number | null } | null | Lista de pagamentos recorrentes futuros programados para esta tarifa (datas e valores). |
productPrice | object { value: number, currency: string } | Valor do produto (tarifa) usado como base de cálculo do preço total, sem taxas e fees. |
totalReceivable | object { value: number, currency: string } | Valor total recebível. |
penalty | object { value: number, currency: string } | Valor da multa de cancelamento, espelhado aqui a partir de cancelPolicy.priceComposition.penalty para facilitar a exibição do valor sem precisar acessar cancelPolicy. |
recurringPayment | object { value: number, currency: string } | Valor agregado do pagamento recorrente (mensal) desta tarifa — no Long Stay, já incorpora o valor recorrente de addons embutidos, como o pacote. |
Campos de roomRates[].cancelPolicy
| Campo | Tipo | Descrição |
|---|---|---|
nonRefundable | boolean | Se a tarifa é não reembolsável. |
inPenalty | boolean | Se a tarifa já está dentro do período de multa. |
penaltyDate | string | Data a partir da qual passa a incidir multa de cancelamento. |
priceComposition.penalty | object { value: number, currency: string, percentage: number | null } | Valor da multa, convertido para a moeda de venda. |
priceComposition.total | object { value: number, currency: string, percentage: number | null } | Valor total da multa no cancelamento (com markup). |
Campos de roomRates[].depositPolicy
| Campo | Tipo | Descrição |
|---|---|---|
amount.total.value | number | Valor do depósito/sinal exigido. |
amount.total.currency | string | Moeda do valor do depósito/sinal. |
amount.type | "PERCENT" | Forma de cálculo do valor do depósito (percentual sobre o total da tarifa). |
isRequired | boolean | Se o depósito/sinal é obrigatório para esta tarifa. |
Campos de roomRates[].descriptions
| Campo | Tipo | Descrição |
|---|---|---|
cancelPolicy | array { name: string | null, description: string | null } | Texto descritivo da política de cancelamento. |
generalPolicies | array { name: string | null, description: string | null } | Texto descritivo das políticas gerais do hotel. |
meal | array { name: string | null, description: string | null } | Texto descritivo do regime de alimentação. Retorna name/description como null quando não há texto descritivo de alimentação cadastrado. |
payment | array { name: string | null, description: string | null } | Texto descritivo das condições de pagamento/garantia. |
roomType | array { name: string | null, description: string | null } | Texto descritivo do tipo de quarto. |
ratePlan | array { name: string | null, description: string | null } | Texto descritivo do plano de tarifa. |
Campos de roomRates[].meal
| Campo | Tipo | Descrição |
|---|---|---|
breakfast | boolean | Se o café da manhã está incluso. |
lunch | boolean | Se o almoço está incluso. |
dinner | boolean | Se o jantar está incluso. |
name | string | null | Nome do regime de alimentação, quando definido. |
allInclusive | boolean | Se o regime é all-inclusive. |
id | number | null | ID do regime de alimentação, quando definido. null quando o regime não tem refeições inclusas. |
Campos de roomRates[].offers[]
| Campo | Tipo | Descrição |
|---|---|---|
name | string | Nome da oferta/desconto. |
discount | number | Percentual ou valor do desconto. |
freeNights | number | null | Quantidade de noites grátis, quando o desconto for desse tipo. |
discountType | "DISCOUNT" | "FREE_NIGHT" | "LAST_MINUTE" | "STAY_DISCOUNT" | Tipo de desconto. Ex.: "STAY_DISCOUNT" para desconto por estadia longa. |
nightsRequired | number | Quantidade mínima de noites exigida para que a oferta seja aplicada (ex.: 60 noites para o desconto "10% 2+ meses"). |
Campos de roomRates[].nights[]
| Campo | Tipo | Descrição |
|---|---|---|
date | string (YYYY-MM-DD) | Data da noite. |
units | number | Unidades/estoque disponível naquela noite. |
restrictions | object — ver abaixo | Restrições de reserva aplicáveis àquela noite. |
Campos de roomRates[].nights[].restrictions
| Campo | Tipo | Descrição |
|---|---|---|
requiredNightCount | number | null | Quantidade exata de noites exigida, quando aplicável. |
minNightCount | number | null | Quantidade mínima de noites (no Long Stay, tipicamente 29+). |
maxNightCount | number | null | Quantidade máxima de noites permitida. |
minChildAge | number | null | Idade mínima de criança aceita. |
maxChildAge | number | null | Idade máxima de criança aceita. |
minTimeBetweenBookingAndCheckin | number | null | Antecedência mínima entre reserva e check-in. |
minAdultCount | number | Quantidade mínima de adultos. |
maxAdultCount | number | Quantidade máxima de adultos. |
minChildCount | number | Quantidade mínima de crianças. |
maxChildCount | number | Quantidade máxima de crianças. |
childrenAllowed | boolean | Se crianças são permitidas. |
closedOnArrival | boolean | Se a data está fechada para check-in (chegada) nesta noite. |
closedOnDeparture | boolean | Se a data está fechada para check-out (partida) nesta noite. |
closedSale | boolean | Se a venda está fechada para esta noite. |
Campos de PaymentOption
Usado em roomRates[].paymentOptions[] e em roomRates[].addons[].paymentOptions[].
| Campo | Tipo | Descrição |
|---|---|---|
id | string | ID da forma de pagamento. |
alias | string | Nome de exibição da forma de pagamento (quando presente neste nível — no exemplo de roomRates[].paymentOptions[] este campo não aparece). |
enabled | boolean | Se a forma de pagamento está habilitada. |
paymentValue | number | Valor da parcela/pagamento nesta forma de pagamento. |
actualTotalValue | number | Valor total a pagar nesta forma de pagamento. |
paymentCurrency | string | Moeda do pagamento. |
oncc_conditions | array { maxInst: number, cardBrands: string[], minInstValue: number | null, maxInstRule: number | null, minBookingAmountInst: number | null, instRateEnabled: boolean, instRates: array | null } | Condições de parcelamento no cartão de crédito. |
recurringPayments | array { value: number, currency: string, date: string } | null | Parcelas recorrentes (cobranças futuras), quando aplicável. |
originalCurrency | string | Moeda original do valor antes de eventual conversão cambial (relacionado a exchangeRates). |
Campos de entitiesData
| Campo | Tipo | Descrição |
|---|---|---|
favoriteHotelsRules | object {string, { recommendedBadge: string, recommendedText: string }} | Regras de destaque de hotéis favoritos. recommendedBadge é a imagem de favorito (tamanho sugerido 80x80px); recommendedText é o texto de favorito, não exibido quando existe imagem de favorito. |
properties | object — ver Campos de entitiesData.properties[propertyId] | Dados complementares por propriedade. |
regions | object {string, { id: string, name: string, coordinates: { lat: string, lon: string } }} | Dados complementares por região, indexados pelo ID da região. |
addons | object — ver Campos de entitiesData.addons[addonId] | Dicionário de addons |
paymentOptions | object — ver Campos de entitiesData.paymentOptions[chave] | Dados complementares de formas de pagamento. |
Campos de entitiesData.properties[propertyId]
| Campo | Tipo | Descrição |
|---|---|---|
neighborhood | string | Bairro da propriedade. |
city | string | Cidade da propriedade. |
location | object { latitude: number, longitude: number } | Coordenadas geográficas da propriedade. |
rating | number | Classificação/estrelas da propriedade. |
countryCode | string | Código do país da propriedade. |
address | string | Endereço completo da propriedade. |
Campos de entitiesData.paymentOptions[chave]
| Campo | Tipo | Descrição |
|---|---|---|
alias | string | Nome de exibição da forma de pagamento. |
description | string | Texto explicativo exibido ao comprador. |
type | string | Tipo de pagamento (ex.: "ON_CC"). |
internalType | string | Tipo interno de pagamento (ex.: "INT_ON_CC"). |
card | boolean | Se a forma de pagamento exige cartão. |
partialPaymentCheckoutEnabled | boolean | null | Se o pagamento parcial está habilitado para esta forma de pagamento. |
partialPaymentCheckoutTermsText | string | null | Texto dos termos exibido no checkout de pagamento parcial. |