Skip to main content

Search

Search serves as the initial step in our booking flow, with the objective of verifying availability within the specified date range and for the requested number of guests, either for specific hotels or for hotels in the desired destination. It provides a comprehensive list of available options based on your search criteria. The returned fields include:

  • hotelCode
  • hotelName
  • boardCode
  • paymentType
  • occupancies
  • rooms
  • price
  • rateRule
  • cancelPolicy
  • id

Query Overview

When creating your search query, you have three different inputs to fill based on your specific needs:

  1. Criteria
  2. Settings
  3. Filter Search
query {
hotelX {
search
criteria: {}
settings: {}
filterSearch: {}
}
}
Remember
It's important to note that even if certain fields in the "criteria" or "settings" inputs are labeled as optional, we still need to use some value internally. This value will either come from your query/mutation request or your default settings. You have the ability to manage your default API settings by visiting the API Settings section on our website.

1. Criteria

The search query offers versatility in search options, with certain fields marked as mandatory (checkIn, checkOut, hotels etc.) and others as optional (language, currency, nationality etc.). This flexibility empowers you to create a personalized Search Query, tailoring the requested fields to your specific needs.

To specify your search criteria you need to use the input HotelCriteriaSearchInput in your query variables:

{
"criteriaSearch": {
"checkIn": "2024-10-28",
"checkOut": "2024-10-29",
"occupancies": [
{
"paxes": [
{
"age": 30
},
{
"age": 30
}
]
}
],
"hotels": [
"1",
"2"
],
"currency": "EUR",
"markets": ["ES"],
"language": "es",
"nationality": "ES"
}
}

Mandatory criteria:

  • checkIn (yyyy-mm-dd)
  • checkOut (yyyy-mm-dd)
  • hotels (We recommend a maximum of 200 hotel codes per request.)
  • destinations (Only if you use the Search by destination plugin and you don't use the hotels field.)
  • occupancies (For multi-room bookings, this array will contain multiple elements, each representing a room, and you'll need to provide occupancy details for each requested room.)

Optional criteria:

  • language
  • currency
  • nationality
  • markets

2. Settings

Settings are the common configurations used to construct requests to the supplier/s. You need to specify some in your query or mutation, while others are optional. If you skip the optional ones, we'll use default settings to keep your requests consistent and smooth.

To specify your settings you need to use the HotelSettingsInput input in your query variables:

{
"settings" : {
"client" : "client_demo",
"context" : "HOTELTEST",
"testMode" : true,
"auditTransactions" : false,
"timeout" : 5000
}
}

Mandatory Settings:

  • client
  • context (You have the flexibility to choose between using the supplier's context or your own, depending on which hotel codes you want to use in the query input. If you choose to search for different suppliers using the same query, you must use your own context code and mapping functionality.)
  • timeout (Timeout in milliseconds for all supplier connections. Won't close Buyer connection if exceeded.)

Optional Settings:

  • group
  • auditTransactions
  • suppliers (Each one contains its own code, settings and accesses.)
  • plugins
  • testMode (This flag allows only the accesses checked as test.)
  • businessRules
  • clientTokens (Used to identify the origin of the request, this is only used with some plugins.)
Key Recommendations
  • Customize the timeout according to your needs, taking into consideration the maximum value in Search is 25,000ms.

  • Set the auditTransaction to "false" in Search for better performance.

Using your own context and mapping functionality

To request hotel availability using your own hotel codes, utilize the Hotel-X mapping feature. You can achieve this by uploading your mapping files to your FTP account. This approach enables you to make requests with your unique context codes and receive results from all your Sellers with your custom hotel codes.

Filters allow you to precisely tailor the response according to your preferences.

To specify your filters you need to use the input HotelXFilterSearchInput in your query variables. The available filters inside this input are:

  • rateRules: This filter enables you to narrow down the options returned by the suppliers based on the desired rate rules you want to include or exclude.

  • status: Use this filter to determine which status (OK and RQ) will be included or excluded in the response.

  • access: By using the access filter, our system will exclusively include or exclude options from the selected accesses. If you choose not to set any access at all, requests will be made to all available accesses.

All these filters are optional. Example to request only search results from access "2" and options "PACKAGE"

{
"filterSearch" : {
"access" : {
"includes" : [
"2"
]
},
"rateRules" : {
"includes" : [
"PACKAGE"
]
}
}
}

You would need to apply the same approach for filtering by specific rate rule (rateRule) and status (status).

Response Considerations

In the response to your search query, you'll receive all the available options that match your criteria. Each option provides various details, such as room type, price, and cancellation policies.

Here are some key points to keep in mind:

Cancel Policies: Refundable Field

In the room structure response, there is a refundable field. If this field is set to false, it means the room has a 100% cancellation cost, making it non-refundable. If the field returns a null value, it indicates that the Seller doesn't provide this information at this stage and you will obtain this information in the quote step.

Remember

Some Sellers may not include cancellation policies in their availability data. You can learn more about each Seller's specific details in their metadata.

Query Inputs

HotelCriteriaSearchInput (INPUT_OBJECT)
Search criteria offers versatility in search options, with certain fields marked as mandatory (checkIn, checkOut, hotels etc.) and others as optional (language, currency, nationality etc.). This flexibility empowers you to create a personalized Search Query, tailoring the requested fields to your specific needs.

checkIn  *  (Date)
Check-in date for booking. Format: YYYY-MM-DD

checkOut  *  (Date)
Check-out for booking. Format: YYYY-MM-DD

hotels  *  (String)
Hotel Codes.

destinations  *  (String)
Destination codes.

occupancies  *  (RoomInput)
For multi-room bookings, this array will contain multiple elements (rooms). For each room you have to specify its own occupancy.

paxes  *  (PaxInput)
Array of paxes ages. The number of items in the array will indicate the pax occupancy.

age  *  (Int)
Age of the pax on the check-in day.

language (Language)
Language to be used in the request. If not set, the value saved in your Hotel-X API default settings will be used.

currency (Currency)
Currency requested if supported by supplier. If not set, the value saved in your Hotel-X API default settings will be used.

nationality (Country)
Nationality of the guest (use ISO3166_1_alfa_2). If not set, the value saved in your Hotel-X API default settings will be used.

markets  *  (String)
Targeted zones, countries or point-of-sale to be used in request (use ISO3166_1_alfa_2). If not set, the value saved in your Hotel-X API default settings will be used.

HotelSettingsInput (INPUT_OBJECT)
Settings are the common configurations used to construct requests to the supplier/s. By default, we apply the same configuration to all Hotel-X clients in our back system.

context (String)
Indicates the context of the I/O codes (hotel, board, room and rates)

client (ID)
Client name set in TGX, present only if the authorization header is of the JWT type. It is used to modify the user initially set in the preload.

timeout (Int)
Specifies the time limit, in milliseconds, for connecting with suppliers. If multiple suppliers are involved, this timeout applies to all of them. If a supplier exceeds this time limit, the connection to that supplier will be cut. However, Travelgate will keep the connection with the client even if this timeout is exceeded. If not set, the value saved in your Hotel-X API default settings will be used.

operationTimeout (Int)
Defines the maximum time, in milliseconds, before an operation is cancelled by our system. Once this time is reached, the operation will be aborted and an error will be returned. This timeout is for the Hotel-X layer and should be set to a higher value than the timeout for suppliers. For example, you could specify timeout as 20000ms and operationTimeout as 22000ms. This means that we will send a timeout of 20000ms to the suppliers and will close the connection at 22000ms if the operationTimeout is exceeded. Optional. @deprecated(reason: "deprecated from 2024-11-11.")

auditTransactions (Boolean)
Returns all the transactions exchanged with the supplier.

businessRules (BusinessRulesInput)
Business rules

optionsQuota (Int)
The maximum number of options returned per board in the search query. If not set, the value saved in your Hotel-X API default settings will be used.

businessRulesType (Enum of BusinessRulesType)
Different business rules to filter the returned options.
Possible values:
CHEAPER_AMOUNT
ROOM_TYPE

suppliers  *  (HotelXSupplierInput)
Array of suppliers. Each one contains its own code, settings and accesses.

settings (SettingsBaseInput)
You can configure an special settings for any supplier. This level overwrites the avail settings level but not the access settings level.

timeout (Int)
Milliseconds before the connection is closed.

auditTransactions (Boolean)
Specifies if the exachanged transactions with the supplier have to be logged or not.

currency (Currency)
Currency in ISO 4217 standard

commitRequired (Boolean)
Indicates if the book will be confirmed in 1 or 2 steps

code  *  (String)
Code that represents a supplier in our system. This information is mandatory.

accesses  *  (HotelXAccessInput)
Array of accesses that can overwrite an existing access information or include a new access for this avail.

accessId  *  (ID)
The accessID used to identify the existing access in our Back Office in order to overwrite it. Acts as an identifier in this search. It can either exist or not.

configuration (ConfigurationInput)
Information required to access the supplier s system.

username (String)
User name for the connection.

password (String)
Password for the connection

urls  *  (UrlsInput)
URL or endpoint for the connection.

search (URI)
Specific URL for Availability method.

quote (URI)
Specific URL for Reservation method.

book (URI)
Specific URL for Valuation method.

generic (URI)
Supplier URL used for multiple methods.

parameters  *  (ParameterInput)
List of parameters with additional required information.

key  *  (String)
Contains the keyword/Id to identify a parameter. This information is mandatory.

value  *  (String)
Contains the parameter values. This information is mandatory.

markets  *  (String)
Source Markets allowed for the Access (use ISO3166_1_alfa_2).

rateRules  *  (Enum of RateRulesType)
RateRules allowed for the access.
Possible values:
NORMAL
PACKAGE
OLDER55
OLDER60
OLDER65
CANARY_RESIDENT
BALEARIC_RESIDENT
LARGE_FAMILY
HONEYMOON
PUBLIC_SERVANT
UNEMPLOYED
NON_REFUNDABLE
MOBILE
WARRANTY
ESSENTIAL_WORKER
NEGOTIATED
CUSTOM

plugins  *  (PluginStepInput)
Array of plugins to execute.

step  *  (Enum of PluginStepType)
Indicates where the plugin will be executed.
Possible values:
REQUEST
REQUEST_ACCESS
RESPONSE_OPTION
RESPONSE_ACCESS
RESPONSE

pluginsType  *  (PluginsInput)
Indicates the plugin that will be executed.

type  *  (Enum of PluginType)
Type of the plugin to execute
Possible values:
PRE_STEP
HOTEL_MAP
BOARD_MAP
ROOM_MAP
CURRENCY_CONVERSION
MARKUP
AGGREGATION
POST_STEP
COMMISSION
MARKETS_GROUP
AMENITY_MAP
PROMOTION_MAP

name  *  (String)
Name of the plugin to execute

parameters  *  (undefined)
Parameters of the plugin

testMode (Boolean)
This flag is only allowed to be used for the access checked as 'TEST.' By default, it is set to 'LIVE.'

clientTokens  *  (String)
Used to identify the origin of the request. This is solely used in plugins.

commitRequired (Boolean)
Indicates if the book will be confirmed in 1 or 2 steps. It only should be used in Book.

HotelXFilterSearchInput (INPUT_OBJECT)
Filters allow you to precisely tailor the response according to your preferences.

access (AccessFilterInput)
By using the access filter, our system will exclusively include or exclude options from the selected accesses. If you opt not to set any access at all, requests will be made to all available accesses.

includes  *  (ID)
These Access IDs will overwrite the default configuration. Only the IDs on this list will be used in the search query.

excludes  *  (ID)
These Access IDs will overwrite the default configuration. The IDs on this list will be excluded from the search query.

plugin (HotelXPluginFilterInput)
You can filter and specify which plugins need to be included or excluded.

includes  *  (HotelXFilterPluginTypeInput)
Plugins to be only executed

step  *  (Enum of PluginStepType)
The Step of the plugin to filter
Possible values:
REQUEST
REQUEST_ACCESS
RESPONSE_OPTION
RESPONSE_ACCESS
RESPONSE

type  *  (String)
The Type of the plugin to filter

name  *  (String)
The Name of the plugin to filter

excludes  *  (undefined)
Plugins to exclude

rateRules (RateRulesFilterInput)
This filter enables you to narrow down the options returned by the suppliers based on the desired rate rules you want to include or exclude.

includes  *  (Enum of RateRulesType)
if includes not nil: only options without rate rules and options with rate rules found in includes will be returned
Possible values:
NORMAL
PACKAGE
OLDER55
OLDER60
OLDER65
CANARY_RESIDENT
BALEARIC_RESIDENT
LARGE_FAMILY
HONEYMOON
PUBLIC_SERVANT
UNEMPLOYED
NON_REFUNDABLE
MOBILE
WARRANTY
ESSENTIAL_WORKER
NEGOTIATED
CUSTOM

excludes  *  (undefined)
if excludes not nil: only options without rate rules and options with rate rules that haven t been sent in excludes will be returned

status (StatusFilterInput)
Use this filter to determine which status (OK and RQ) will be included or excluded in the response.

includes  *  (Enum of StatusType)
When is not nil: only options with status found in includes will be returned
Possible values:
OK
RQ

excludes  *  (undefined)
When is not nil: only options without status found in includes will be returned

Returned Fields

HotelSearch (OBJECT)
Hotel results from the search response. Contains all the available options for the given criteria search

context (String)
Indicates the context of the response.

stats (StatsRequest)
Application stats in string format

total  *  (Stat)
Total transaction time

start  *  (DateTime)
Start UTC

end  *  (DateTime)
End UTC

duration (Float)
Difference between start and end in miliseconds

validation  *  (undefined)
Request validation time

process  *  (undefined)
Process time. Contains communication time, parse time and plugin time.

configuration  *  (undefined)
Build access time

request  *  (undefined)
Request time

response  *  (undefined)
Response time

requestPlugin (StatPlugin)
Plugin execution time

name  *  (String)
Plugin name

total  *  (undefined)
total plugin time

hotels  *  (Int)
Number of hotels

zones  *  (Int)
Number of zones

cities  *  (Int)
Number of cities

dockerID  *  (String)
Docker Id

Accesses  *  (StatAccess)
Detail access time

name  *  (String)
Access name

total  *  (undefined)
Total access time

hotels  *  (Int)
Number of hotels

zones  *  (Int)
Number of zones

cities  *  (Int)
Number of cities

transactions  *  (StatTransaction)
Detail transaction time

reference  *  (String)
Extra information about transaction.

total  *  (undefined)
Total transaction time

buildRequest  *  (undefined)
Build request time

workerCommunication  *  (undefined)
Worker connection time

parseResponse  *  (undefined)
Parse response time

plugins  *  (undefined)
Plugin execution time

auditData (AuditData)
All the sent and received transactions in the supplier's native format.

transactions  *  (Transactions)
List of the transactions data.

request  *  (String)
Transaction Request.

response  *  (String)
Transaction Response.

timeStamp  *  (DateTime)
Time when the request has been processed.

timeStamp  *  (DateTime)
Timestamp.

processTime  *  (Float)
Process time of the transaction data in milliseconds (ms).

requestCriteria (CriteriaSearch)
Request Criteria contains destination, travel dates and the number of pax in each room.

checkIn  *  (Date)
Check-in date for booking Format: YYYY-MM-DD

checkOut  *  (Date)
Check-out, booking date Format: YYYY-MM-DD

hotels  *  (String)
Contains the list of hotel IDs

occupancies  *  (RoomCriteria)
For multi-room bookings, this array will contain multiple elements (rooms). For each room you have to specify its own occupancy.

paxes  *  (Pax)
Array of pax ages. The number of items in the array will indicate the pax occupancy.

age  *  (Int)
Passenger age on the day of check-in, which can vary for adults, infants, or babies depending on each supplier's particular age range.

name (String)
Specifies the pax name.

surname (String)
Specifies the pax surname.

title (Enum of PersonalTitleType)
Specifies the pax title.
Possible values:
MR
MRS
MISS
MS
NOT_SPECIFIED

language (Language)
Language to be used in the request.

currency (Currency)
Currency requested if supported by supplier

nationality (Country)
Nationality of the guests (use ISO3166_1_alfa_2)

market  *  (String)
Targeted zone, country or point-ofsale-to be used in request.

options  *  (HotelOptionSearch)
List of options returned according to the request.

supplierCode  *  (String)
Supplier that offers this option.

accessCode  *  (String)
Access code of this option.

markets  *  (String)
Markets of this option (use ISO3166_1_alfa_2).

hotelCode  *  (String)
Code of the hotel in the context selected.

hotelCodeSupplier  *  (String)
Supplier's hotel code.

hotelName (String)
Name of the hotel.

boardCode  *  (String)
Code of the board in the context selected.

boardCodeSupplier  *  (String)
Supplier's board code.

paymentType  *  (Enum of PaymentType)
Indicates the payment type of the option returned. Possible options: MERCHANT, DIRECT, CARD_BOOKING and CARD_CHECK_IN.
Possible values:
MERCHANT
DIRECT
CARD_BOOKING
CARD_CHECK_IN

status  *  (Enum of StatusType)
The possible values in the response's status are Available (OK) or On Request (RQ).
Possible values:
OK
RQ

occupancies  *  (Occupancy)
List of occupancies for the request

id  *  (Int)
Unique ID room in this option.

paxes  *  (undefined)
List of pax of this occupancy.

rooms  *  (Room)
List of rooms of the option returned.

occupancyRefId  *  (Int)
ID reference to the occupancy

legacyRoomId  *  (String)
Identifies the legacy room ID

code  *  (String)
Indicates the room code

supplierCode  *  (String)
Supplier s room code.

description (String)
Description about the room. This field can be mapped.

descriptionSupplier (String)
Description about the room in supplier's context.

refundable (Boolean)
Identifies if the room is refundable or not.

units (Int)
Number of rooms available with the same type.

roomPrice  *  (RoomPrice)
Specifies the room price.

price  *  (Price)
Total price for all days.

currency  *  (Currency)
Currency code indicating which currency should be paid.

binding  *  (Boolean)
It indicates whether the gross price must be honored, meaning the customer cannot sell the room/option at a price lower than the supplier's established rate.

net  *  (Float)
It indicates the net price that the customer must pay to the supplier. The net price is calculated by substrating the included surcharges from the gross price. (For calculation purposes only)

gross  *  (Float)
Indicates the retail price that the supplier sells to the customer.

exchange  *  (Exchange)
Provides currency information and the applicable rate for the results returned by the Supplier

currency  *  (Currency)
Provide information about the currency of origin

rate  *  (Float)
Provides information about the rate applied over results

markups  *  (Markup)
Informs markup applied over supplier price.

channel (String)
channel of markup application.

currency  *  (Currency)
Currency code indicating which currency should be paid. This information is mandatory.

binding  *  (Boolean)
It indicates if the price indicated in the gross must be respected. In case minimumSellingPrice is not empty, the binding indicates instead that the minimumSellingPrice must be respected. That is, the customer can not sell the room / option at a price lower than that established by the supplier. This information is mandatory.

net  *  (Float)
Indicates the net price that the customer must pay to the supplier plus the markup. This information is mandatory.

gross (Float)
Indicates the retail price that the supplier sells to the customer plus the markup.

exchange  *  (undefined)
Informs about the currency of origin, and the rate applied over result. This information is mandatory.

rules  *  (Rule)
Breakdown of the applied rules for a markup

id  *  (String)
rule identifier

name (String)
rule name

type  *  (Enum of MarkupRuleType)
type of the value
Possible values:
PERCENT
IMPORT

value  *  (Float)
value applied by this rule

minimumSellingPrice (Float)
Indicates the minimum selling price it can be sold (determined by the Seller). Is is specified (not null), that field takes preference to Gross and Binding.

breakdown  *  (PriceBreakdown)
Daily break downs price.

start  *  (Date)
Start date in which the price becomes effective. Format: YYYY-MM-DD

end  *  (Date)
Expire date of price. Format: YYYY-MM-DD

price  *  (undefined)
Specifies the daily price.

beds  *  (Bed)
List of beds.

type (String)
Specifies the bed type

count (Int)
Indicates number of beds in a room

shared (Boolean)
Specifies if the bed is shared or not

ratePlans  *  (RatePlan)
List of the daily breakdowns of the specific rate plan

code  *  (String)
Specifies the rate code.

supplierCode  *  (String)
Supplier s rate code.

name (String)
Specifies the rate name.

start (Date)
Start date in which the rate becomes effective. Format: YYYY-MM-DD

end (Date)
Expire date of the rate. Format: YYYY-MM-DD

promotions  *  (Promotion)
List of daily breakdowns for the promotions of the room.

code  *  (String)
Specifies the promotion code.

name (String)
Specifies the promotion name.

supplierCode  *  (String)
Specifies the supplier s promotion code.

start (Date)
Promotion effective date. Format: YYYY-MM-DD

end (Date)
Promotion expire date. Format: YYYY-MM-DD

surcharges  *  (Surcharge)
List of surcharges of the option returned.

code (String)
Indicates the surcharge code

chargeType  *  (Enum of ChargeType)
Indicates the charge type. We need to know whether the supplements have to be paid when the consumer gets to the hotel or beforehand. Possible charge types: INCLUDE or EXCLUDE. when INCLUDE : this surcharge is mandatory and included in the option s price when EXCLUDE : this surcharge is not included in the option s price
Possible values:
INCLUDE
EXCLUDE

mandatory  *  (Boolean)
Indicates if the surcharge is mandatory or not. If mandatory, this surcharge will be applied to this option. If the chargeType is EXCLUDE the customer will have to pay it directly at the hotel.

price  *  (undefined)
Indicates the surcharge price.

description (String)
Specifies the surcharge description.

features  *  (Feature)
List of features of this room

code  *  (String)
Feature code.

amenities  *  (Amenity)
Room level amenities provide information about features intended to enhance comfort and enjoyment. Examples include swimming pools, shopping centers, etc.

code  *  (String)
Code

amenityCodeSupplier  *  (String)
Code in supplier context

type  *  (Enum of ApplicationAreaType)
Indicates the type of Amenity.
Possible values:
HOTEL
ROOM
SERVICE
GENERAL

value  *  (String)
Contains the value of amenity.

texts  *  (String)
Contains the descriptive of amenity.

cancelPolicy (CancelPolicy)
Specifies cancel policies of this room.

refundable  *  (Boolean)
Indicates if the option is refundable or non-refundable

cancelPenalties  *  (CancelPenalty)
List of cancellation penalties

deadline (DateTime)
Cancellation fees will be applicable between this date and check-in date

isCalculatedDeadline  *  (Boolean)
Specifies if the deadline has been taken from the seller’s response (false) or has been calculated by TravelgateX (true)

penaltyType  *  (Enum of CancelPenaltyType)
Type of penalty; this can be Nights, Percent or Import
Possible values:
NIGHTS
PERCENT
IMPORT

currency  *  (Currency)
Currency used in the cancellation policy

value  *  (Float)
Value of the cancellation policy

description (String)
Extra details and information about supplier's cancel policies to give a further insight. This information is not supported for all the suppliers.

remarks (String)
Additional information about the room.

price  *  (undefined)
Specifies the prices (Gross and Net) of the option returned.

supplements  *  (Supplement)
List of supplements of the option returned.

code  *  (String)
Specifies the supplement code.

name (String)
Specifies the supplement name.

description (String)
Specifies the supplement description.

supplementType (Enum of SupplementType)
Indicates the supplement type. Possible types: Fee, Ski_pass, Lessons, Meals, Equipment, Ticket, Transfers, Gla, Activity or Other.
Possible values:
SKI_PASS
LESSONS
MEALS
EQUIPMENT
TICKET
TRANSFERS
GALA
ACTIVITY
OTHER

chargeType  *  (undefined)
Indicates the charge types. We need to know whether the supplements have to be paid when the consumer gets to the hotel or beforehand. Possible charge types: INCLUDE or EXCLUDE. when INCLUDE : this supplement is mandatory and included in the option s price when EXCLUDE : this supplement is not included in the option s price

mandatory  *  (Boolean)
Indicates if the supplement is mandatory or not. If mandatory, this supplement will be applied to this option. If the chargeType is EXCLUDE the customer will have to pay it directly at the hotel

durationType (Enum of DurationType)
Specifies the duration type. Possible duration types: Range (specified dates) or Open. This field is mandatory for PDI.
Possible values:
RANGE
OPEN

quantity (Int)
Indicates the quantity of field in the element "unit".

unit (Enum of UnitTimeType)
Indicates the unit type. Possible unit types: Day or Hour.
Possible values:
DAY
HOUR

start (Date)
Indicates the effective date of the supplement. Format: YYYY-MM-DD

end (Date)
Indicates the expire date of the supplement. Format: YYYY-MM-DD

resort (Resort)
Contains information about the resort

code  *  (String)
Specifies the resort code.

name (String)
Specifies the resort name.

description (String)
Specifies the resort description.

surcharges  *  (undefined)
List of surcharges of the option returned.

rateRules  *  (Enum of RateRulesType)
Specifies rate rules of the option returned. Note: If the option does not have any rate rule, then the option is NORMAL rate.
Possible values:
NORMAL
PACKAGE
OLDER55
OLDER60
OLDER65
CANARY_RESIDENT
BALEARIC_RESIDENT
LARGE_FAMILY
HONEYMOON
PUBLIC_SERVANT
UNEMPLOYED
NON_REFUNDABLE
MOBILE
WARRANTY
ESSENTIAL_WORKER
NEGOTIATED
CUSTOM

remarks (String)
Additional information about the option.

addOns (AddOns)
Additional information about the option.

distribution  *  (AddOn)
Extra information from the Distribution layer.

key  *  (String)
Contains keyword/ID to identify the AddOn.

value  *  (JSON)
Contains AddOn values.

supplier  *  (undefined)
Extra information from the Supplier layer.

id  *  (String)
OptionRefID is a unique identifier assigned to each option. It should not be modified and should not be used externally, as it is an internal TGX system identifier.

amenities  *  (undefined)
Option-level amenities provide information about features intended to enhance comfort and enjoyment. Examples include swimming pools, shopping centers, etc.

rateRulesExtended  *  (HotelOptionRateRule)
RateRules contains all the rules that will be applied to book the option.

type  *  (undefined)
Rate rule type

rates  *  (HotelOptionRate)
Rates applied to the option

code (String)
It identifies the rate in the request's context, if mapped; otherwise, it is equal to the supplierCode.

supplierCode (String)
Rate code in supplier context.

description (String)
Rate description.

restrictions  *  (HotelOptionRateRestriction)
Restrictions applied to the rate.

type  *  (Enum of HotelOptionRateRestrictionType)
Restriction type
Possible values:
COMPANY
MARKET
OTHERS

code  *  (String)
Restriction code

description (String)
Restriction description

errors  *  (Error)
List of errors that abort services.

code  *  (String)
Error code.

type  *  (String)
Error type.

description  *  (String)
Error description.

warnings  *  (Warning)
Potentially harmful situations or errors that won't force the service to abort. To identify if it is blocked one, you can check our documentation regards this matter.

code  *  (String)
Warning code

type  *  (String)
Warning type

description  *  (String)
Warning description

tracing (HotelXTracing)
Other information it may need to analize transactions. This information is only available through internal request and, by default, it is not returned

operationSpan  *  (HotelXOperationSpan)

status  *  (String)

accessSpans  *  (HotelXAccessSpan)

status  *  (String)

access  *  (Access)

code  *  (ID)

accessData (AccessData)

id  *  (ID)
Unique ID identifier

code  *  (ID)
Unique AccessConfiguration identifier

name  *  (String)
Access descriptive name

isActive  *  (Boolean)
Indicates if Access is active

isTest  *  (Boolean)
Indicates if Access can be used for testing or not

isShared  *  (Boolean)
Indicates if Access is Shared

isOpenAccess  *  (Boolean)
Indicates if Access is open to all partners.

supplier  *  (Supplier)
Supplier for this Access

code  *  (ID)
Supplier unique code

supplierData (SupplierData)
Extended Supplier information

id  *  (ID)
Supplier unique ID. Format: integer.

code  *  (ID)
Supplier unique code

name  *  (String)
Supplier name

isActive  *  (Boolean)
Indicates whether a Supplier is active. This is a calculated field, a specific supplier can be activated or deactivated, but if its provider is deactivated, the value will be = false

provider  *  (ProviderData)
Instance to which this supllier is connected

id  *  (ID)
Provider unique ID. Format: integer.

code  *  (ID)
Provider unique code

name  *  (String)
Provider name

isActive  *  (Boolean)
Indicates whether a Provider is active. If the Provider is deactivated, all its Suppliers will be deactivated

audits  *  (EntityAuditConnection)
Audits it shows the provider's change history

edges (EntityAuditEdge)

node (EntityAudit)

code  *  (ID)

entityAuditData (EntityAuditData)

id  *  (ID)

code  *  (ID)

entityType  *  (Enum of EntityType)

Possible values:
ACCESS
SUPPLIER
CLIENT
PROVIDER
MEMBER
API_KEY

actionType  *  (Enum of ActionType)

Possible values:
UPDATE
DELETE
CREATE
ARCHIVE
UNARCHIVE
ACTIVATE
DEACTIVATE
GRANT_TO_GROUPS
REVOKE_FROM_FROUPS
APPEND_PARAMETERS
DELETE_PARAMETERS
APPEND_MARKETS
DELETE_MARKETS
APPEND_RATERULES
DELETE_RATERULES
SET_FIELD
REMOVE_FIELD
ACTIVATE_SPEED
DEACTIVATE_SPEED
SET_IS_PUBLIC
REMOVE_MEMBER_SERVICE_ROLE
UPDATE_MEMBER_SERVICE_ROLE
REFRESH_TOKEN

auditDetails (AuditDetails)

field  *  (String)

current  *  (String)

previous  *  (String)

modifiedBy  *  (String)

correlationID (String)

adviseMessage  *  (AdviseMessage)

code  *  (ID)
AM code: The following codes can be returned:

description  *  (String)
Error description

level  *  (Enum of AdviseMessageLevel)
Indicates the level of importance of the message. Possible values: ERROR, WARN, INFO.
Possible values:
WARN
ERROR
INFO

external (ExternalMessage)
Specify the external message.

code (String)
External code.

message  *  (String)
External message.

correlationID  *  (ID)
Identifier to investigate the cause of the error.

createdAt  *  (Time)

updatedAt  *  (Time)

deletedAt (Time)

cursor  *  (String)

pageInfo  *  (PageInfo)

hasNextPage  *  (Boolean)

hasPreviousPage  *  (Boolean)

startCursor (String)

endCursor (String)

adviseMessage  *  (undefined)

totalCount  *  (Int)

connectionType  *  (Enum of ProviderConnectionType)
Indicates connection type of Supplier
Possible values:
PULL
PUSH

serviceApi  *  (Int)
ServiceAPI indicates the type of the connection

  1. hotel
  2. transportation
  3. car
  4. transfers
  5. activities
  6. virtualaccount
  7. payment
  8. package

api  *  (Enum of APIName)
API name for service API
Possible values:
HOTEL
TRANSPORTATION
CAR
TRANSFERS
ACTIVITIES
VIRTUALACCOUNT
PAYMENT
PACKAGE

owner (Organization)
Organization that owns the Supplier

code  *  (ID)

organizationData (OrganizationData)

id  *  (ID)

code  *  (ID)

label (String)

type  *  (Enum of GroupType)

Possible values:
ROOT
ORG
GROUP
TEAM
FOLDER
PRODUCT
RESOURCE
SPECIFIC_RESOURCE

info (String)

crmID (String)

crmData (CompanyCrmData)

crmID  *  (String)

connectionType  *  (Enum of ConnectionType)

Possible values:
HOTEL_X_BUYER_ONLY
HOTEL_LEGACY_BUYER_ONLY
CHANNEL_X_BUYER_ONLY
HOTEL_PULL_LEGACY_SELLER_ONLY
HOTEL_PULL_SELLER_GENERIC
HOTEL_PUSH_LEGACY_SELLER_ONLY
HOTEL_PUSH_SELLER_GENERIC
DMC_X
FLIGHTS_LEGACY_SELLER_ONLY
PAYMENT_LEGACY_SELLER_ONLY
B2B_VIRTUAL_AGENCY_TOOL_BUYER_ONLY
TRANSPORTATION_FLIGHT_LEGACY_BUYER_ONLY
FLIGHT_X_BUYER_ONLY
DIRECT_X
DISTRIBUTE
INVENTORY
ACTIVITIES_LEGACY
CARS_LEGACY
TRANSFERS_LEGACY
VIRTUAL_ACCOUNT_LEGACY

contract  *  (Enum of Contract)

Possible values:
CONTRACT_TCP
CONTRACT_AFFILIATE
CONTRACT_RESELLER
ANNEX_POWER_BUYER
ANNEX_PREMIUM_SELLER
ANNEX_SELECTIVE_PREMIUM_SELLER
ANNEX_STANDARD_SELLER
ANNEX_STANDARD_BUYER
ANNEX_PREFERRED_SELLER

techPlatformName (String)

isPublic (Boolean)

children (GroupConnection)
Only responses folders.(non-hierarchically)

edges (GroupEdge)

node (Group)

code  *  (ID)

groupData (GroupData)

id  *  (ID)

code  *  (ID)

label (String)

folder (String)

type  *  (undefined)

info (String)

isPublic  *  (Boolean)

owner (Member)

code  *  (ID)

memberData (MemberData)

id  *  (ID)

code  *  (ID)

label (String)

isActive  *  (Boolean)
Can members does queries in the platform?

firstName (String)

lastName (String)

crmData (CrmData)
CRM specific data

crmID (String)

contactImportance (String)

companyRole (String)

roles (RoleConnection)
which roles the member has in?

edges (RoleEdge)

node (Role)

code  *  (ID)

roleData (RoleData)

id  *  (ID)

code  *  (ID)

type  *  (Enum of RoleType)

Possible values:
VIEWER
EDITOR
ADMIN
EXECUTOR
SPECIFIC

isEditable  *  (Boolean)

label (String)

isCreate  *  (Boolean)
Has resource Create permission?

isRead  *  (Boolean)
Has resource Create permission?

isUpdate  *  (Boolean)
Has resource Update permission?

isDelete  *  (Boolean)
Has resource Delete permission?

isEnable  *  (Boolean)
Is role enabled or not?

isExecutable  *  (Boolean)
Has resource Executable permission?

isSpecial  *  (Boolean)
Has any other non-basic permission/s?

special (String)
Special permission

resources (ResourceConnection)
Resources used

edges (ResourceEdge)

node (Resource)

code  *  (ID)

resourceData (ResourceData)

id  *  (ID)

code  *  (ID)

isEditable  *  (Boolean)

label (String)

apis (APIConnection)
which API have asigned this resource?

edges (APIEdge)

node (API)

code  *  (ID)

adviseMessage  *  (undefined)

apiData (APIData)

id  *  (ID)

code  *  (ID)

label (String)

errorCatalog  *  (ErrorCatalog)

code  *  (ID)

description  *  (String)

type  *  (String)

level  *  (String)

operations (OperationConnection)

edges (OperationEdge)

node (Operation)

code  *  (ID)

adviseMessage  *  (undefined)

operationData (OperationData)

id  *  (ID)

code  *  (ID)

label (String)

types  *  (Enum of OperationType)

Possible values:
SEARCH
QUOTE
BOOKING
CANCEL
SCHEDULER
CREATE
READ
UPDATE
DELETE
EXECUTE
OTHER

createdAt  *  (Time)

updatedAt  *  (Time)

cursor  *  (String)

pageInfo  *  (undefined)

adviseMessage  *  (undefined)

totalCount  *  (Int)

createdAt  *  (Time)

updatedAt  *  (Time)

cursor  *  (String)

pageInfo  *  (undefined)

adviseMessage  *  (undefined)
List of advise messages.

createdAt  *  (DateTime)
Date created

updatedAt  *  (DateTime)
Date updated

cursor  *  (String)

pageInfo  *  (undefined)

adviseMessage  *  (undefined)
List of advise messages.

createdAt  *  (DateTime)
Date created

updatedAt  *  (DateTime)
Date updated

cursor  *  (String)

pageInfo  *  (undefined)

macroPermissions (MacroPermissionsConnection)

edges (MacroPermissionEdge)

node (MacroPermission)

code  *  (ID)

macroPermissionData (MacroPermissionData)

id  *  (ID)

code  *  (ID)

productID  *  (ID)

group  *  (ID)

label (String)

permissions (Permission)

role  *  (undefined)

resource  *  (undefined)

api  *  (undefined)

adviseMessage  *  (undefined)

createdAt  *  (DateTime)

updatedAt  *  (DateTime)

cursor  *  (String)

pageInfo  *  (undefined)

organizationMemberRoles  *  (OrganizationMemberRole)

organization  *  (undefined)

role  *  (Enum of RoleMemberType)

Possible values:
ADMIN
GUEST
EDITOR
VIEWER

phone (String)

adviseMessage  *  (undefined)
List of advise messages.

createdAt  *  (DateTime)
Date created

updatedAt  *  (DateTime)
Date updated

deletedAt  *  (DateTime)
Date deleted. This value is used to include archived members.

isEditable  *  (Boolean)

productId (Int)

resourceId (Int)

members (MemberConnection)
Only responses members in this group

edges (MemberEdge)

cursor  *  (String)

pageInfo  *  (undefined)

adviseMessage  *  (undefined)
List of advise messages.

totalCount  *  (Int)
Identifies the total count of items in the connection.

managedGroups (ManagedGroupConnection)
Responses all managed groups by this group.

edges (ManagedGroupEdge)

node (ManagedGroup)

code  *  (ID)

managedGroupData (ManagedGroupData)

code  *  (ID)

group  *  (undefined)

api  *  (undefined)

resource  *  (undefined)

role  *  (undefined)

adviseMessage  *  (undefined)
List of advise messages.

createdAt  *  (DateTime)
Date created

updatedAt  *  (DateTime)
Date updated

cursor  *  (String)

pageInfo  *  (undefined)

accesses (AccessConnection)
Access resources in a group

edges (AccessEdge)

cursor  *  (String)

pageInfo  *  (undefined)

adviseMessage  *  (undefined)
List of advise messages.

totalCount  *  (Int)
Identifies the total count of items in the connection.

suppliers (SupplierConnection)
Supplier resources in a group

edges (SupplierEdge)
Supplier edges of Supplier connection

cursor  *  (String)
Cursor to the next item

pageInfo  *  (undefined)
Page info of the connection

adviseMessage  *  (undefined)
List of advise messages.

totalCount  *  (Int)
Identifies the total count of items in the connection.

clients (ClientConnection)
Clients resources in a group

edges (ClientEdge)
Client edges of client connection

node (Client)
Client item

code  *  (ID)
Client unique code, format: "cli000"

clientData (ClientData)
Extended Client information

id  *  (ID)
ID unique identifier of a Client. Format: integer.

code  *  (ID)
Client unique code. Format: "cliX" where X = ID

name  *  (ID)
Client unique name

password (String)
Client's passowrd

legacyPassword (String)

isActive  *  (Boolean)
Indicates whether a Client is active or inactive

audits  *  (undefined)
Audits it shows the client's change history

adviseMessage  *  (undefined)
List of advise messages.

createdAt  *  (DateTime)
Client creation date

updatedAt  *  (DateTime)
Client last update date

deletedAt (DateTime)
Client deleted date

cursor  *  (String)
Cursor to the next item

pageInfo  *  (undefined)
Page info of the connection

adviseMessage  *  (undefined)
List of advise messages.

totalCount  *  (Int)
Identifies the total count of items in the connection.

isBuyer  *  (Boolean)

isSeller  *  (Boolean)

deleted_at (DateTime)

adviseMessage  *  (undefined)
List of advise messages.

createdAt  *  (DateTime)
Date created

updatedAt  *  (DateTime)
Date updated

cursor  *  (String)

pageInfo  *  (undefined)

adviseMessage  *  (undefined)
List of advise messages.

totalCount  *  (Int)
Identifies the total count of items in the connection.

owner  *  (undefined)

contacts  *  (OrganizationContact)
Differents contacts in a organization.

type  *  (Enum of OrganizationContactType)

Possible values:
ADMIN
BILLING
SALES
TECHNICAL
OTHER

user  *  (undefined)

isEditable  *  (Boolean)

products (ProductConnection)
Products asign to a organization

edges (ProductEdge)

node (Product)

code  *  (ID)

productData  *  (ProductData)

id  *  (ID)

code  *  (ID)

label (String)

adviseMessageCatalog  *  (undefined)

adviseMessage  *  (undefined)
List of advise messages.

createdAt  *  (DateTime)
Date created

updatedAt  *  (DateTime)
Date updated

cursor  *  (String)

pageInfo  *  (undefined)

domains  *  (Domain)

code  *  (ID)

domainData (DomainData)

id  *  (ID)

name  *  (DomainName)

organization  *  (undefined)

adviseMessage  *  (undefined)

createdAt  *  (DateTime)

updatedAt  *  (DateTime)

template (String)

primaryPartner  *  (Partner)

code  *  (ID)

partnerData (PartnerData)

code  *  (ID)
cusXYZ..

name  *  (String)

isActive (Boolean)

friendlyName (String)

organizations (OrganizationConnection)

edges (OrganizationEdge)

cursor  *  (String)

pageInfo  *  (undefined)

adviseMessage  *  (undefined)
List of advise messages.

totalCount  *  (Int)
Identifies the total count of items in the connection.

agents  *  (CustomerAgent)
Differents agents from TravelgateX

type  *  (Enum of CustomerAgentType)

Possible values:
KAM
TECH_KAM
CUSTOMER_CARE
OTHER

user  *  (undefined)
user@xmltravelgate.com o user@travelgatex.com

adviseMessage  *  (undefined)
List of advise messages.

createdAt  *  (DateTime)
Date created

updatedAt  *  (DateTime)
Date updated

allPartners  *  (PartnerConnection)

edges (PartnerEdge)

cursor  *  (String)

pageInfo  *  (undefined)

adviseMessage  *  (undefined)
List of advise messages.

totalCount  *  (Int)
Identifies the total count of items in the connection.

isBuyer  *  (Boolean)

isSeller  *  (Boolean)

deleted_at (DateTime)

adviseMessage  *  (undefined)
List of advise messages.

createdAt  *  (DateTime)
Date created

updatedAt  *  (DateTime)
Date updated

groupContent (GroupContent)
Grouping of static content related to this Supplier.

code  *  (ID)
GroupContent unique code

groupContentData (GroupContentData)
Extended GroupContent information

id  *  (ID)
GroupContent unique ID. Format: integer.

code  *  (ID)
GroupContent unique code

context  *  (Context)
GroupContent related Context

code  *  (ID)
Context unique code

contextData (ContextData)
Extended Context information

id  *  (ID)
Context unique ID. Format: integer.

code  *  (ID)
Context unique code

adviseMessage  *  (undefined)
List of advise messages.

createdAt  *  (DateTime)
Context creation date

updatedAt  *  (DateTime)
Context last update date

adviseMessage  *  (undefined)
List of advise messages.

createdAt  *  (DateTime)
GroupContent creation date

updatedAt  *  (DateTime)
GroupContent last update date

supplierGroup (ID)
This is a calculated field that responds to groupContent > code

context (String)
This is a calculated field that responds to groupContent > groupContentData > context > code

system  *  (System)

code  *  (ID)

systemData (SystemData)

code  *  (ID)
ID identifier of a System

name  *  (ID)
System complete name

isActive  *  (Boolean)
Indicates whether a System is active or inactive

suppliers  *  (undefined)
Obtain all suppliers for a filter.

error  *  (undefined)
Errors that abort services

createdAt  *  (DateTime)
Date created

updatedAt  *  (DateTime)
Date updated

audits  *  (undefined)
Audits it shows the supplier's change history

serviceIntegrationData (ServiceIntegrationData)
Service Integration Data

type (Enum of ServiceIntegrationType)

Possible values:
SITH
WORKER
CONNECTORS

group (String)

isPublic  *  (Boolean)

giata (GiataSupplierConfiguration)

giataType (String)

giataCode (String)

adviseMessage  *  (undefined)
List of advise messages.

createdAt  *  (DateTime)
Supplier creation date

updatedAt  *  (DateTime)
Supplier last update date

deletedAt (DateTime)
Supplier deleted date

user (String)
User code to connect to supplier

password (String)
Password for this Access. To retrieve this field, ADMIN permissions are required. Otherwise, the value will be null.

urls (Urls)
Specific URLs

search (URI)
Specific URL for Availability method.

quote (URI)
Specific URL for Quote method.

book (URI)
Specific URL for Book method.

generic (URI)
Supplier URL used for multiple methods.

parameters (Parameter)
List of parameters for additional information

key  *  (ID)
Contains the keyword/Id to identify a parameter. This information is mandatory.

value  *  (String)
Contains the parameter values. This information is mandatory.

markets  *  (String)
Markets allowed for the Access

rateRules  *  (undefined)
Business rule types for the Access

updateDescriptiveInfo  *  (Int)
Refresh time to update Despriptive Info

descriptiveInfoLimit  *  (Int)
Limit on DescriptiveInfo; 0 denotates no limit

isSchedulerActive (Boolean)
True if scheduler is active

updateList  *  (Int)
Refresh time to update other batch lists

updateDateRange  *  (String)
Range on update date

audits  *  (undefined)
Audits it shows the accesses change history

adviseMessage  *  (undefined)
List of advise messages.

createdAt  *  (DateTime)
Date created

updatedAt  *  (DateTime)
Date updated

deletedAt (DateTime)
Access deleted date

hotelsRequested (Int)

hotelsReturned (Int)

hotelsReturnedAfterRoomDescFilter (Int)

transactionSpans  *  (HotelXTransactionSpan)

status  *  (String)

duration  *  (Int)

Examples

Search query [1 hotel, 2 rooms: 3 adults 1 child]

Search query [2 hotels, 1 room: 2 adults]

As you can see in these responses, you have multiple options with different rates, meal plans, and room types. Additionally, you receive a warning for those options we couldn't return, as the supplier does not provide the commission through the API.

Frequently Asked Questions

How many hotel codes per request can I request in Search?
We recommend a maximum of 200 hotels: our Hotel-X solution will split them in batches in order to request all of them to each Seller.
Are there any limitations on the number of searches/minute?
Not from Travelgate side, we don't have any limitations on the RPM ("Requests per Minute") in any of our methods. However, some Sellers may have some limitations so we suggest you contact directly with them in order to discuss this information.
Does nationality or market affect the price returned?
Yes, nationality and market might affect the rates received in Search response. This depends on the Seller so if you consider that you should get (or not) different rates depending on the nationality or market, please contact them directly.
How can I search in single or multi mode?

Hotel-X offers two modes for searching: single mode and multi mode. Both modes provide flexibility depending on how you want to query Sellers and their accesses.

Singlemode search

Single mode is the default way to search in Hotel-X. It’s designed for querying Sellers individually.

Hotel-X Shopping Flow

You can include multiple accesses from the same Seller in a single search, as long as they share the same context. Example: If a Seller has different access points for the same hotel inventory, you can query them together.

When running your Search, you should add the Seller's access code you would like to query. Remember that they should have the same context code (in other words, they share the same hotel codes). For example, if I want to make a request for access "2" of the supplier TravelgateX Test with the context "HOTELTEST", I would specify it as follows. (If I had more than one access or credential configured for the same supplier, I could include them as well, as long as they share the same context.)

"settings": {
"client": "client_demo",
"context": "HOTELTEST",
"testMode": true,
"timeout": 25000
},
"filterSearch": {
"access": {
"includes": [
"2"
]
}
}
Multimode search

The multimode query allows our Partners to search multiple Sellers or accesses with different contexts at the same time in just one request. To search in multimode, start by uploading your hotel mapping files to your FTP. Once the files are processed, you'll have the ability to search multiple Sellers simultaneously by using your own context and hotel codes.

Hotel-X Shopping Flow

You can query different Sellers or different accesses from the same Seller (even if they have different contexts). This is useful if you need results from diverse configurations in one go.

For example, if you map your hotel and board codes to two different suppliers with different contexts, you can include both in the same request. You’ll specify your context code, and in the access section, you can include the accesses from different suppliers. Hotel-X will use your mapping files to send the correct request to each supplier with the appropriate codes, so you can make the request using your own codes.

You can choose to:

1. Specifying the access codes in the filter node in your variables: the query will only be sent to the accesses specified.

"settings": {
"client": "client_demo",
"context": "BUYER_CONTEXT",
"testMode": true,
"timeout": 25000
},
"filterSearch": {
"access": {
"includes": ["2", "5647"]
}
}

2. Not specifying any accesses: The query will be sent to all the accesses connected to your account (only the ones belonging to the Sellers where the mapping files has been uploaded). This query will also check the value of the "testMode" tag in order to request only the test or production accesses, accordingly.

"settings": {
"client": "client_demo",
"context": "BUYER_CONTEXT",
"testMode": true,
"timeout": 25000
}
Why there are so many fields with null value in the Search response?
The number of "null" values returned is determined by the information provided by Sellers. For example, if you include certain fields in your Search Query but the Seller does not have that information available on their side, the value will be returned in our response as "null".
Can I filter the Hotel-X Search results by payment type?
Unfortunately, Hotel-X API does not currently offer the capability to filter search results by payment type.
How can I limit and filter options through optionsQuota and Business Rules?
  • optionsQuota, how to limit the number of options in search response: Thanks to the optionsQuota tag in Hotel-X Pull Buyers API, you are able to control and limit the number of options per board returned in the search response in those cases the Seller allows business rules (you will be able to check this information through our Metadata Query). Note that we have established a system-level limit so that if the OptionsQuota set on your side is higher than the limit established, we will use the one with the lowest value.

    If you don't set any optionsQuota in your search query, we'll use 50 as default value.


  • businessRulesType, how to filter options through Business Rules: These are the 2 types of businessRules that may be applied.

    • CHEAPER_AMOUNT: The cheapest options are returned without exceeding the optionsQuota limit.
    • ROOM_TYPE: It groups the options by room type without exceeding the optionsQuota limit.

    Please note that options are filtered using a limited combination of rooms types. First, we group same room types so you receive options with the same type/classification. For example: Standard-Standard-Standard-Standard, Junior-Junior-Junior-Junior…. Then, we combine the cheapest rooms with the remaining rooms, always checking for duplicates and without execeeding the optionsQuota limit. If a Buyer sets a BusinessRules value, then it will be applied when the number of options returned exceeds the optionsQuota. If the client does not set any BusinessRules values, then the CheaperAmount BusinessRule is applied by default.

What is the lifespan of the Search id?
Search ids do not expire, however, we strongly recommend to transition from Search to Quote as quickly as possible, this will ensure a smoother and more efficient booking process.
What is the occupancyrefID in Search response?
The OccupancyRefID serves as the unique identifier for each room. When you request a single room, the OccupancyRefID will always be "1". However, if you request two rooms, each option will specify the information that belongs to each room (either Room "1" or Room "2").
What does the "units" field indicate in the "rooms" node of the Search response?
The "units" field refers to the number of available rooms of the same type in the hotel. Please note that whether this information is returned or not depends on the Seller.
How can we differentiate a child from an infant? What is the age range of each of them?
The age range for children and infants may vary depending on the Seller's restrictions. To find out the specific age range restrictions for each of your Sellers, you can refer to our Metadata Method or directly contact the Seller.
Can I receive daily prices in Hotel-X Search response?
Yes, you can receive Daily Prices in Search Response (if the Seller returns this information) through the "roomPrice" > "priceBreakdown" fields.
Can I split the rooms returned within an Option and book them separately?
We introduced the option node to ensure that all rooms within a specific option can be booked. If you need to book separate rooms, please send two separate Search requests, one for each room.