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:
hotelCodehotelNameboardCodepaymentTypeoccupanciesroomspricerateRulecancelPolicyid
Query Overview
When creating your search query, you have three different inputs to fill based on your specific needs:
- Criteria
- Settings
- Filter Search
query {
hotelX {
search
criteria: {}
settings: {}
filterSearch: {}
}
}
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 thehotelsfield.)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:
languagecurrencynationalitymarkets
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:
clientcontext(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:
groupauditTransactionssuppliers(Each one contains its own code, settings and accesses.)pluginstestMode(This flag allows only the accesses checked as test.)businessRulesclientTokens(Used to identify the origin of the request, this is only used with some plugins.)
-
Customize the
timeoutaccording to your needs, taking into consideration the maximum value in Search is 25,000ms. -
Set the
auditTransactionto "false" in Search for better performance.
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.
3. Filter Search
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.
For a deeper understanding, take a look at our articles on how cancellation policies work and review some practical cases and examples.
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.
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.
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 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. Different business rules to filter the returned options.
Possible values:optionsQuota(Int)
businessRulesType(BusinessRulesType)
CHEAPER_AMOUNT: The cheapest options is returned without exceeding the optionsQuota limit.ROOM_TYPE: Groups the option by room type without exceeding the optionsQuota limit.
suppliers(HotelXSupplierInput)
Array of suppliers. Each one contains its own code, settings and accesses. You can configure an special settings for any supplier. This level overwrites the avail settings level but not the
access settings level. Milliseconds before the connection is closed. Specifies if the exachanged transactions with the supplier have to be logged or not. Business rules 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. Different business rules to filter the returned options.
Possible values: Currency in ISO 4217 standard 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. 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. Information required to access the supplier s system. User name for the connection. Password for the connection urls * (UrlsInput) URL or endpoint for the connection. Specific URL for Availability method. Specific URL for Reservation method. Specific URL for Valuation method. Supplier URL used for multiple methods. 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. Source Markets allowed for the Access (use ISO3166_1_alfa_2). RateRules allowed for the access.
Possible values: You can configure an special settings for any access. This level overwrites the search and supplier settings levels. Milliseconds before the connection is closed. Specifies if the exachanged transactions with the supplier have to be logged or not. Business rules 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. Different business rules to filter the returned options.
Possible values: Currency in ISO 4217 standard Indicates if the book will be confirmed in 1 or 2 stepssettings(SettingsBaseInput)
timeout(Int)
auditTransactions(Boolean)
businessRules(BusinessRulesInput)
optionsQuota(Int)
businessRulesType(BusinessRulesType)
CHEAPER_AMOUNT: The cheapest options is returned without exceeding the optionsQuota limit.ROOM_TYPE: Groups the option by room type without exceeding the optionsQuota limit.currency(Currency)
commitRequired(Boolean)
accesses(HotelXAccessInput)
configuration(ConfigurationInput)
username(String)
password(String)
search(URI)
quote(URI)
book(URI)
generic(URI)
parameters(ParameterInput)
markets(String)
rateRules(RateRulesType)
NORMAL: NORMAL Used in the RateRulesFilterInput input for the search query to filter and retrieve only options without rate rules.PACKAGE: The product can't be sold separately from another product attached to it, such as a flight.OLDER55: OLDER55 can only be sold to people who are 55 and older.OLDER60: OLDER60 can only be sold to people who are 60 and older.OLDER65: OLDER65 can only be sold to people who are 65 and older.CANARY_RESIDENT: CANARY_RESIDENT is applicable to Canary Islands residents only.BALEARIC_RESIDENT: BALEARIC_RESIDENT is applicable to Balearic Islands residents only.LARGE_FAMILY: LARGE_FAMILY is applicable to large families and is determined by each supplier.HONEYMOON: HONEYMOON is applicable to those who just got married and is determined by each supplier.PUBLIC_SERVANT: PUBLIC_SERVANT is applicable to public servants only.UNEMPLOYED: UNEMPLOYED applies to individuals who are without work.NON_REFUNDABLE: NON_REFUNDABLE is applicable to non refundable options.MOBILE: MOBILE are special rates confirmed by mobile phone.WARRANTY: WARRANTY is applicable to options with cancellation warranty.ESSENTIAL_WORKER: ESSENTIAL_WORKER are special hotel rates for essential workers.NEGOTIATED: NEGOTIATED are special rates offered only to specific buyers.CUSTOM: CUSTOM defines other rates.settings(SettingsBaseInput)
timeout(Int)
auditTransactions(Boolean)
businessRules(BusinessRulesInput)
optionsQuota(Int)
businessRulesType(BusinessRulesType)
CHEAPER_AMOUNT: The cheapest options is returned without exceeding the optionsQuota limit.ROOM_TYPE: Groups the option by room type without exceeding the optionsQuota limit.currency(Currency)
commitRequired(Boolean)
plugins(PluginStepInput)
Array of plugins to execute. Indicates where the plugin will be executed. @deprecated(reason: "deprecated from 2025-08-25. This property is no longer recommended for use.")
Possible values: Indicates the plugin that will be executed. Type of the plugin to execute. @deprecated(reason: "deprecated from 2025-08-25. This property is no longer recommended for use.")
Possible values: name * (String) Name of the plugin to execute Activates or deactivates the plugin behaviour Parameters of the plugin key * (String) Contains the keyword/Id to identify a parameter.
This information is mandatory. value * (String) Contains the parameter values.
This information is mandatory.step(PluginStepType)
REQUEST: Plugins executed after the Buyer requests a message to Hotel-XREQUEST_ACCESS: Plugins executed before sending a request to the supplier using access, and after the Accesses have been calculatedRESPONSE_OPTION: Plugins executed after the supplier responds a message, applied to every option they returnRESPONSE_ACCESS: Plugins executed after all access options have been responded toRESPONSE: Plugins executed before Hotel-X responds the message to the BuyerpluginsType(PluginsInput)
type(PluginType)
PRE_STEP: PRE_STEP is the first plugin that will be executed, allowing a full range of operations:
splitting arrays, joining arrays, modifying object values, and adding or removing object instancesHOTEL_MAP: HOTEL_MAP allows to match Seller and Buyer hotel codes based on contextsBOARD_MAP: BOARD_MAP allows to match Seller and Buyer board codes based on contextsROOM_MAP: ROOM_MAP allows to match Seller and Buyer room codes based on contextsCURRENCY_CONVERSION: CURRENCY_CONVERSION allows to apply currency conversion over all the prices in one OptionMARKUP: MARKUP allows the application of markup over the priceAGGREGATION: AGGREGATION allows aggregating multiple supplier options.POST_STEP: POST_STEP is the last plugin that will be executed, allowing a full range of operations:
split arrays, join arrays, modify object values, add or remove object instancesCOMMISSION: COMMISSION plugin allows the user to calculate the commissionMARKETS_GROUP: MARKETS_GROUP plugin allows the user to group search result by markets (SO3166_1_alfa_2) with shared optionsAMENITY_MAP: AMENITY_MAP allows to match Seller and Buyer amenities codes based on contextsPROMOTION_MAP: PROMOTION_MAP allows to match Seller and Buyer promotion codes based on contextsenable(Boolean)
parameters(ParameterInput)
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.
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. These Access IDs will overwrite the default configuration. Only the IDs on this list will be used in the search query. These Access IDs will overwrite the default configuration. The IDs on this list will be excluded from the search query.includes(ID)
excludes(ID)
plugin(HotelXPluginFilterInput)
You can filter and specify which plugins need to be included or excluded. Plugins to be only executed The Step of the plugin to filter. @deprecated(reason: "deprecated from 2025-08-25. This property is no longer recommended for use.")
Possible values: The Type of the plugin to filter. @deprecated(reason: "deprecated from 2025-08-25. This property is no longer recommended for use.") name * (String) The Name of the plugin to filter Plugins to exclude The Step of the plugin to filter. @deprecated(reason: "deprecated from 2025-08-25. This property is no longer recommended for use.")
Possible values: The Type of the plugin to filter. @deprecated(reason: "deprecated from 2025-08-25. This property is no longer recommended for use.") name * (String) The Name of the plugin to filterincludes(HotelXFilterPluginTypeInput)
step(PluginStepType)
REQUEST: Plugins executed after the Buyer requests a message to Hotel-XREQUEST_ACCESS: Plugins executed before sending a request to the supplier using access, and after the Accesses have been calculatedRESPONSE_OPTION: Plugins executed after the supplier responds a message, applied to every option they returnRESPONSE_ACCESS: Plugins executed after all access options have been responded toRESPONSE: Plugins executed before Hotel-X responds the message to the Buyertype(String)
excludes(HotelXFilterPluginTypeInput)
step(PluginStepType)
REQUEST: Plugins executed after the Buyer requests a message to Hotel-XREQUEST_ACCESS: Plugins executed before sending a request to the supplier using access, and after the Accesses have been calculatedRESPONSE_OPTION: Plugins executed after the supplier responds a message, applied to every option they returnRESPONSE_ACCESS: Plugins executed after all access options have been responded toRESPONSE: Plugins executed before Hotel-X responds the message to the Buyertype(String)
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. if includes not nil: only options without rate rules and options with rate rules found in includes will be returned
Possible values: if excludes not nil: only options without rate rules and options with rate rules that haven t been sent in excludes will be returned
Possible values:includes(RateRulesType)
NORMAL: NORMAL Used in the RateRulesFilterInput input for the search query to filter and retrieve only options without rate rules.PACKAGE: The product can't be sold separately from another product attached to it, such as a flight.OLDER55: OLDER55 can only be sold to people who are 55 and older.OLDER60: OLDER60 can only be sold to people who are 60 and older.OLDER65: OLDER65 can only be sold to people who are 65 and older.CANARY_RESIDENT: CANARY_RESIDENT is applicable to Canary Islands residents only.BALEARIC_RESIDENT: BALEARIC_RESIDENT is applicable to Balearic Islands residents only.LARGE_FAMILY: LARGE_FAMILY is applicable to large families and is determined by each supplier.HONEYMOON: HONEYMOON is applicable to those who just got married and is determined by each supplier.PUBLIC_SERVANT: PUBLIC_SERVANT is applicable to public servants only.UNEMPLOYED: UNEMPLOYED applies to individuals who are without work.NON_REFUNDABLE: NON_REFUNDABLE is applicable to non refundable options.MOBILE: MOBILE are special rates confirmed by mobile phone.WARRANTY: WARRANTY is applicable to options with cancellation warranty.ESSENTIAL_WORKER: ESSENTIAL_WORKER are special hotel rates for essential workers.NEGOTIATED: NEGOTIATED are special rates offered only to specific buyers.CUSTOM: CUSTOM defines other rates.excludes(RateRulesType)
NORMAL: NORMAL Used in the RateRulesFilterInput input for the search query to filter and retrieve only options without rate rules.PACKAGE: The product can't be sold separately from another product attached to it, such as a flight.OLDER55: OLDER55 can only be sold to people who are 55 and older.OLDER60: OLDER60 can only be sold to people who are 60 and older.OLDER65: OLDER65 can only be sold to people who are 65 and older.CANARY_RESIDENT: CANARY_RESIDENT is applicable to Canary Islands residents only.BALEARIC_RESIDENT: BALEARIC_RESIDENT is applicable to Balearic Islands residents only.LARGE_FAMILY: LARGE_FAMILY is applicable to large families and is determined by each supplier.HONEYMOON: HONEYMOON is applicable to those who just got married and is determined by each supplier.PUBLIC_SERVANT: PUBLIC_SERVANT is applicable to public servants only.UNEMPLOYED: UNEMPLOYED applies to individuals who are without work.NON_REFUNDABLE: NON_REFUNDABLE is applicable to non refundable options.MOBILE: MOBILE are special rates confirmed by mobile phone.WARRANTY: WARRANTY is applicable to options with cancellation warranty.ESSENTIAL_WORKER: ESSENTIAL_WORKER are special hotel rates for essential workers.NEGOTIATED: NEGOTIATED are special rates offered only to specific buyers.CUSTOM: CUSTOM defines other rates.
status(StatusFilterInput)
Use this filter to determine which status (OK and RQ) will be included or excluded in the response. When is not nil: only options with status found in includes will be returned
Possible values: When is not nil: only options without status found in includes will be returned
Possible values:includes(StatusType)
OK: The status of the avail is availableRQ: The status of the avail is On requestexcludes(StatusType)
OK: The status of the avail is availableRQ: The status of the avail is On request
currencies(CurrenciesFilterInput)
This filter enables you to narrow down the options returned by the suppliers based on the desired currencies you want to include or exclude.includes(Currency)
excludes(Currency)
Returned Fields
HotelSearch (OBJECT)
Hotel results from the search response. Contains all the available options for the given criteria search
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 Difference between start and end in miliseconds validation * (Stat) Request validation time start * (DateTime) Start UTC end * (DateTime) End UTC Difference between start and end in miliseconds process * (Stat) Process time. Contains communication time, parse time and plugin time. start * (DateTime) Start UTC end * (DateTime) End UTC Difference between start and end in miliseconds configuration * (Stat) Build access time start * (DateTime) Start UTC end * (DateTime) End UTC Difference between start and end in miliseconds request * (Stat) Request time start * (DateTime) Start UTC end * (DateTime) End UTC Difference between start and end in miliseconds response * (Stat) Response time start * (DateTime) Start UTC end * (DateTime) End UTC Difference between start and end in miliseconds Plugin execution time name * (String) Plugin name total * (Stat) total plugin time start * (DateTime) Start UTC end * (DateTime) End UTC Difference between start and end in miliseconds Plugin execution time name * (String) Plugin name total * (Stat) total plugin time start * (DateTime) Start UTC end * (DateTime) End UTC Difference between start and end in miliseconds 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 * (Stat) Total access time start * (DateTime) Start UTC end * (DateTime) End UTC Difference between start and end in miliseconds Static configuration time start * (DateTime) Start UTC end * (DateTime) End UTC Difference between start and end in miliseconds hotels * (Int) Number of hotels zones * (Int) Number of zones cities * (Int) Number of cities Access request time name * (String) Plugin name total * (Stat) total plugin time start * (DateTime) Start UTC end * (DateTime) End UTC Difference between start and end in miliseconds Access response time name * (String) Plugin name total * (Stat) total plugin time start * (DateTime) Start UTC end * (DateTime) End UTC Difference between start and end in miliseconds transactions * (StatTransaction) Detail transaction time reference * (String) Extra information about transaction. total * (Stat) Total transaction time start * (DateTime) Start UTC end * (DateTime) End UTC Difference between start and end in miliseconds buildRequest * (Stat) Build request time start * (DateTime) Start UTC end * (DateTime) End UTC Difference between start and end in miliseconds workerCommunication * (Stat) Worker connection time start * (DateTime) Start UTC end * (DateTime) End UTC Difference between start and end in miliseconds parseResponse * (Stat) Parse response time start * (DateTime) Start UTC end * (DateTime) End UTC Difference between start and end in miliseconds Plugin execution time name * (String) Plugin name total * (Stat) total plugin time start * (DateTime) Start UTC end * (DateTime) End UTC Difference between start and end in milisecondsduration(Float)
duration(Float)
duration(Float)
duration(Float)
duration(Float)
duration(Float)
requestPlugin(StatPlugin)
duration(Float)
responsePlugin(StatPlugin)
duration(Float)
duration(Float)
staticConfiguration(Stat)
duration(Float)
requestAccess(StatPlugin)
duration(Float)
responseAccess(StatPlugin)
duration(Float)
duration(Float)
duration(Float)
duration(Float)
duration(Float)
plugins(StatPlugin)
duration(Float)
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. Specifies the pax name. Specifies the pax surname. Specifies the pax title.
Possible values: Language to be used in the request. Currency requested if supported by supplier Nationality of the guests (use ISO3166_1_alfa_2) market * (String) Targeted zone, country or point-ofsale-to be used in request.name(String)
surname(String)
title(PersonalTitleType)
MR: To refer to a man. Is not possible know if it is married or single.MRS: To refer to a married womanMISS: To refer to a single womanMS: To refer to a woman. Is not possible know if it is married or single.NOT_SPECIFIED: Deprecated 2025-08-08. PersonalTitleType is optional in inputs and outputs.language(Language)
currency(Currency)
nationality(Country)
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. Name of the hotel. boardCode * (String) Code of the board in the context selected. boardCodeSupplier * (String) Supplier's board code. paymentType * (PaymentType) Indicates the payment type of the option returned. Possible options: MERCHANT, DIRECT, CARD_BOOKING and CARD_CHECK_IN.
Possible values: status * (StatusType) The possible values in the response's status are Available (OK) or On Request (RQ).
Possible values: occupancies * (Occupancy) List of occupancies for the request id * (Int) Unique ID room in this option. paxes * (Pax) List of pax of this 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. Specifies the pax name. Specifies the pax surname. Specifies the pax title.
Possible values: 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 about the room. This field can be mapped. Description about the room in supplier's context. Identifies if the room is refundable or not. 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 Informs markup applied over supplier price. 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. Indicates the retail price that the supplier sells to the customer plus the markup. exchange * (Exchange) Informs about the currency of origin, and the rate applied over result.
This information is mandatory. currency * (Currency) Provide information about the currency of origin rate * (Float) Provides information about the rate applied over results rules * (Rule) Breakdown of the applied rules for a markup id * (String) rule identifier rule name type * (MarkupRuleType) type of the value
Possible values: value * (Float) value applied by this rule 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. 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 * (Price) Specifies the daily price. 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 Informs markup applied over supplier price. 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. Indicates the retail price that the supplier sells to the customer plus the markup. exchange * (Exchange) Informs about the currency of origin, and the rate applied over result.
This information is mandatory. currency * (Currency) Provide information about the currency of origin rate * (Float) Provides information about the rate applied over results rules * (Rule) Breakdown of the applied rules for a markup id * (String) rule identifier rule name type * (MarkupRuleType) type of the value
Possible values: value * (Float) value applied by this rule 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. List of beds. Specifies the bed type Indicates number of beds in a room Specifies if the bed is shared or not List of the daily breakdowns of the specific rate plan code * (String) Specifies the rate code. supplierCode * (String) Supplier s rate code. Specifies the rate name. Start date in which the rate becomes effective.
Format: YYYY-MM-DD Expire date of the rate.
Format: YYYY-MM-DD List of daily breakdowns for the promotions of the room. code * (String) Specifies the promotion code. Specifies the promotion name. supplierCode * (String) Specifies the supplier s promotion code. Promotion effective date.
Format: YYYY-MM-DD Promotion expire date.
Format: YYYY-MM-DD List of surcharges of the option returned. Indicates the surcharge code chargeType * (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: 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 * (Price) Indicates the surcharge price. 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 Informs markup applied over supplier price. 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. Indicates the retail price that the supplier sells to the customer plus the markup. exchange * (Exchange) Informs about the currency of origin, and the rate applied over result.
This information is mandatory. currency * (Currency) Provide information about the currency of origin rate * (Float) Provides information about the rate applied over results rules * (Rule) Breakdown of the applied rules for a markup id * (String) rule identifier rule name type * (MarkupRuleType) type of the value
Possible values: value * (Float) value applied by this rule 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. Specifies the surcharge description. List of features of this room code * (String) Feature code. 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 * (ApplicationAreaType) Indicates the type of Amenity.
Possible values: value * (String) Contains the value of amenity. texts * (String) Contains the descriptive of amenity. Specifies cancel policies of this room. refundable * (Boolean) Indicates if the option is refundable or non-refundable List of cancellation penalties 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 Travelgate (true) penaltyType * (CancelPenaltyType) Type of penalty; this can be Nights, Percent or Import
Possible values: currency * (Currency) Currency used in the cancellation policy value * (Float) Value of the cancellation policy Extra details and information about supplier's cancel policies to give a further insight. This information is not supported for all the suppliers. Additional information about the room. price * (Price) Specifies the prices (Gross and Net) of the option returned. 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 Informs markup applied over supplier price. 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. Indicates the retail price that the supplier sells to the customer plus the markup. exchange * (Exchange) Informs about the currency of origin, and the rate applied over result.
This information is mandatory. currency * (Currency) Provide information about the currency of origin rate * (Float) Provides information about the rate applied over results rules * (Rule) Breakdown of the applied rules for a markup id * (String) rule identifier rule name type * (MarkupRuleType) type of the value
Possible values: value * (Float) value applied by this rule 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. List of supplements of the option returned. code * (String) Specifies the supplement code. Specifies the supplement name. Specifies the supplement description. Indicates the supplement type. Possible types: Fee, Ski_pass, Lessons, Meals, Equipment, Ticket, Transfers, Gla, Activity or Other.
Possible values: chargeType * (ChargeType) 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
Possible values: 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 Specifies the duration type. Possible duration types: Range (specified dates) or Open. This field is mandatory for PDI.
Possible values: Indicates the quantity of field in the element "unit". Indicates the unit type. Possible unit types: Day or Hour.
Possible values: Indicates the effective date of the supplement.
Format: YYYY-MM-DD Indicates the expire date of the supplement.
Format: YYYY-MM-DD Contains information about the resort code * (String) Specifies the resort code. Specifies the resort name. Specifies the resort description. Indicates the supplement price. 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 Informs markup applied over supplier price. 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. Indicates the retail price that the supplier sells to the customer plus the markup. exchange * (Exchange) Informs about the currency of origin, and the rate applied over result.
This information is mandatory. currency * (Currency) Provide information about the currency of origin rate * (Float) Provides information about the rate applied over results rules * (Rule) Breakdown of the applied rules for a markup id * (String) rule identifier rule name type * (MarkupRuleType) type of the value
Possible values: value * (Float) value applied by this rule 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. List of surcharges of the option returned. Indicates the surcharge code chargeType * (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: 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 * (Price) Indicates the surcharge price. 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 Informs markup applied over supplier price. 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. Indicates the retail price that the supplier sells to the customer plus the markup. exchange * (Exchange) Informs about the currency of origin, and the rate applied over result.
This information is mandatory. currency * (Currency) Provide information about the currency of origin rate * (Float) Provides information about the rate applied over results rules * (Rule) Breakdown of the applied rules for a markup id * (String) rule identifier rule name type * (MarkupRuleType) type of the value
Possible values: value * (Float) value applied by this rule 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. Specifies the surcharge description. 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: Specifies cancel policies of the option returned. refundable * (Boolean) Indicates if the option is refundable or non-refundable List of cancellation penalties 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 Travelgate (true) penaltyType * (CancelPenaltyType) Type of penalty; this can be Nights, Percent or Import
Possible values: currency * (Currency) Currency used in the cancellation policy value * (Float) Value of the cancellation policy Extra details and information about supplier's cancel policies to give a further insight. This information is not supported for all the suppliers. Additional information about the option. Additional details provided by the different layers involved in the transaction. Extra information from the Distribution layer. key * (String) Contains keyword/ID to identify the AddOn. value * (JSON) Contains AddOn values. Extra information from the Supplier layer. key * (String) Contains keyword/ID to identify the AddOn. value * (JSON) Contains AddOn values. 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. Option-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 * (ApplicationAreaType) Indicates the type of Amenity.
Possible values: value * (String) Contains the value of amenity. texts * (String) Contains the descriptive of amenity. RateRules contains all the rules that will be applied to book the option. type * (RateRulesType) Rate rule type
Possible values: Rates applied to the option It identifies the rate in the request's context, if mapped; otherwise, it is equal to the supplierCode. Rate code in supplier context. Rate description. Restrictions applied to the rate. type * (HotelOptionRateRestrictionType) Restriction type
Possible values: code * (String) Restriction code Restriction description Key used to group options when an aggregation plugin is executed.
This key is used to group options that are similar and can be aggregated.
It should not be modified and should not be used externally, as it is an internal TGX system identifier.hotelName(String)
MERCHANT: Payment is managed by the supplier.DIRECT: Payment is made directly to the actual payee (e.g., the hotel), without involving an intermediary or third party. The payment will be completed at check-in.CARD_BOOKING: Payment is managed by the supplier. The payment is effectuated at the time of booking.CARD_CHECK_IN: Payment is managed by the supplier and is made at the hotel during check-in.OK: The status of the avail is availableRQ: The status of the avail is On requestname(String)
surname(String)
title(PersonalTitleType)
MR: To refer to a man. Is not possible know if it is married or single.MRS: To refer to a married womanMISS: To refer to a single womanMS: To refer to a woman. Is not possible know if it is married or single.NOT_SPECIFIED: Deprecated 2025-08-08. PersonalTitleType is optional in inputs and outputs.description(String)
descriptionSupplier(String)
refundable(Boolean)
units(Int)
markups(Markup)
channel(String)
gross(Float)
name(String)
PERCENT: Indicates the percentage applied by a rule.IMPORT: Indicates the exact amount applied by a rule.minimumSellingPrice(Float)
breakdown(PriceBreakdown)
markups(Markup)
channel(String)
gross(Float)
name(String)
PERCENT: Indicates the percentage applied by a rule.IMPORT: Indicates the exact amount applied by a rule.minimumSellingPrice(Float)
beds(Bed)
type(String)
count(Int)
shared(Boolean)
ratePlans(RatePlan)
name(String)
start(Date)
end(Date)
promotions(Promotion)
name(String)
start(Date)
end(Date)
surcharges(Surcharge)
code(String)
INCLUDE: The charge is included.EXCLUDE: The charge is excluded.markups(Markup)
channel(String)
gross(Float)
name(String)
PERCENT: Indicates the percentage applied by a rule.IMPORT: Indicates the exact amount applied by a rule.minimumSellingPrice(Float)
description(String)
features(Feature)
amenities(Amenity)
HOTEL: Apply at the hotel.ROOM: Apply in the hotel.SERVICE: Applies to a service.GENERAL: Applies in general.cancelPolicy(CancelPolicy)
cancelPenalties(CancelPenalty)
deadline(DateTime)
NIGHTS: Indicates the number of nights to be penalized.PERCENT: Indicates the percentage to pay based on the option price.IMPORT: Indicates the exact amount payable.description(String)
remarks(String)
markups(Markup)
channel(String)
gross(Float)
name(String)
PERCENT: Indicates the percentage applied by a rule.IMPORT: Indicates the exact amount applied by a rule.minimumSellingPrice(Float)
supplements(Supplement)
name(String)
description(String)
supplementType(SupplementType)
SKI_PASS: A ticket or pass authorizing the holder to ski in a certain place or resort.LESSONS: Lessons of any type that the costumer can take.MEALS: Supplement of a determined meal plan.EQUIPMENT: Extra equipment for a specific purpose.TICKET: Admission to some service.TRANSFERS: Transfers used by the costumer.GALA: Gala: A festive occasion, celebration or special entertainment.ACTIVITY: Activities that the costumer can do.OTHER: Other type of supplement.INCLUDE: The charge is included.EXCLUDE: The charge is excluded.durationType(DurationType)
RANGE: Date range is set.OPEN: Not restricted by date.quantity(Int)
unit(UnitTimeType)
DAY: DayHOUR: Hourstart(Date)
end(Date)
resort(Resort)
name(String)
description(String)
price(Price)
markups(Markup)
channel(String)
gross(Float)
name(String)
PERCENT: Indicates the percentage applied by a rule.IMPORT: Indicates the exact amount applied by a rule.minimumSellingPrice(Float)
surcharges(Surcharge)
code(String)
INCLUDE: The charge is included.EXCLUDE: The charge is excluded.markups(Markup)
channel(String)
gross(Float)
name(String)
PERCENT: Indicates the percentage applied by a rule.IMPORT: Indicates the exact amount applied by a rule.minimumSellingPrice(Float)
description(String)
rateRules(RateRulesType)
NORMAL: NORMAL Used in the RateRulesFilterInput input for the search query to filter and retrieve only options without rate rules.PACKAGE: The product can't be sold separately from another product attached to it, such as a flight.OLDER55: OLDER55 can only be sold to people who are 55 and older.OLDER60: OLDER60 can only be sold to people who are 60 and older.OLDER65: OLDER65 can only be sold to people who are 65 and older.CANARY_RESIDENT: CANARY_RESIDENT is applicable to Canary Islands residents only.BALEARIC_RESIDENT: BALEARIC_RESIDENT is applicable to Balearic Islands residents only.LARGE_FAMILY: LARGE_FAMILY is applicable to large families and is determined by each supplier.HONEYMOON: HONEYMOON is applicable to those who just got married and is determined by each supplier.PUBLIC_SERVANT: PUBLIC_SERVANT is applicable to public servants only.UNEMPLOYED: UNEMPLOYED applies to individuals who are without work.NON_REFUNDABLE: NON_REFUNDABLE is applicable to non refundable options.MOBILE: MOBILE are special rates confirmed by mobile phone.WARRANTY: WARRANTY is applicable to options with cancellation warranty.ESSENTIAL_WORKER: ESSENTIAL_WORKER are special hotel rates for essential workers.NEGOTIATED: NEGOTIATED are special rates offered only to specific buyers.CUSTOM: CUSTOM defines other rates.cancelPolicy(CancelPolicy)
cancelPenalties(CancelPenalty)
deadline(DateTime)
NIGHTS: Indicates the number of nights to be penalized.PERCENT: Indicates the percentage to pay based on the option price.IMPORT: Indicates the exact amount payable.description(String)
remarks(String)
addOns(AddOns)
distribution(AddOn)
supplier(AddOn)
amenities(Amenity)
HOTEL: Apply at the hotel.ROOM: Apply in the hotel.SERVICE: Applies to a service.GENERAL: Applies in general.rateRulesExtended(HotelOptionRateRule)
NORMAL: NORMAL Used in the RateRulesFilterInput input for the search query to filter and retrieve only options without rate rules.PACKAGE: The product can't be sold separately from another product attached to it, such as a flight.OLDER55: OLDER55 can only be sold to people who are 55 and older.OLDER60: OLDER60 can only be sold to people who are 60 and older.OLDER65: OLDER65 can only be sold to people who are 65 and older.CANARY_RESIDENT: CANARY_RESIDENT is applicable to Canary Islands residents only.BALEARIC_RESIDENT: BALEARIC_RESIDENT is applicable to Balearic Islands residents only.LARGE_FAMILY: LARGE_FAMILY is applicable to large families and is determined by each supplier.HONEYMOON: HONEYMOON is applicable to those who just got married and is determined by each supplier.PUBLIC_SERVANT: PUBLIC_SERVANT is applicable to public servants only.UNEMPLOYED: UNEMPLOYED applies to individuals who are without work.NON_REFUNDABLE: NON_REFUNDABLE is applicable to non refundable options.MOBILE: MOBILE are special rates confirmed by mobile phone.WARRANTY: WARRANTY is applicable to options with cancellation warranty.ESSENTIAL_WORKER: ESSENTIAL_WORKER are special hotel rates for essential workers.NEGOTIATED: NEGOTIATED are special rates offered only to specific buyers.CUSTOM: CUSTOM defines other rates.rates(HotelOptionRate)
code(String)
supplierCode(String)
description(String)
restrictions(HotelOptionRateRestriction)
COMPANYMARKETOTHERSdescription(String)
aggregationGroupKey(String)
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 Access code related to the warningaccessCode(String)
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) status * (String) access * (Access) code * (ID) 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 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 cursor * (String) pageInfo * (PageInfo) hasNextPage * (Boolean) hasPreviousPage * (Boolean) code * (ID) AM code: The following codes can be returned: description * (String) Error description level * (AdviseMessageLevel) Indicates the level of importance of the message.
Possible values: ERROR, WARN, INFO.
Possible values: Specify the external message. correlationID * (ID) Identifier to investigate the cause of the error. totalCount * (Int) connectionType * (ProviderConnectionType) Indicates connection type of Supplier
Possible values: serviceApi * (ID) ServiceAPI indicates the type of the connection api * (APIName) API name for service API
Possible values: Organization that owns the Supplier code * (ID) Organization unique code label * (String) Grouping of static content related to this Supplier. code * (ID) GroupContent unique code 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 Extended Context information List of advise messages. createdAt * (DateTime) Context creation date updatedAt * (DateTime) Context last update date List of advise messages. code * (ID) AM code: The following codes can be returned: description * (String) Error description level * (AdviseMessageLevel) Indicates the level of importance of the message.
Possible values: ERROR, WARN, INFO.
Possible values: Specify the external message. External code. message * (String) External message. correlationID * (ID) Identifier to investigate the cause of the error. createdAt * (DateTime) GroupContent creation date updatedAt * (DateTime) GroupContent last update date This is a calculated field that responds to groupContent > code This is a calculated field that responds to groupContent > groupContentData > context > code Indicates if this supplier normally have a shared default access, means that the content is managed in one only site and this is because improve de efficiency Accesses of this Supplier cursor * (String) pageInfo * (PageInfo) hasNextPage * (Boolean) hasPreviousPage * (Boolean) List of advise messages. code * (ID) AM code: The following codes can be returned: description * (String) Error description level * (AdviseMessageLevel) Indicates the level of importance of the message.
Possible values: ERROR, WARN, INFO.
Possible values: Specify the external message. External code. message * (String) External message. correlationID * (ID) Identifier to investigate the cause of the error. totalCount * (Int) Identifies the total count of items in the connection. audits * (EntityAuditConnection) Audits it shows the supplier's change history code * (ID) createdAt * (Time) updatedAt * (Time) cursor * (String) pageInfo * (PageInfo) hasNextPage * (Boolean) hasPreviousPage * (Boolean) code * (ID) AM code: The following codes can be returned: description * (String) Error description level * (AdviseMessageLevel) Indicates the level of importance of the message.
Possible values: ERROR, WARN, INFO.
Possible values: Specify the external message. External code. message * (String) External message. correlationID * (ID) Identifier to investigate the cause of the error. totalCount * (Int) Service Integration Data isPublic * (Boolean) List of advise messages. code * (ID) AM code: The following codes can be returned: description * (String) Error description level * (AdviseMessageLevel) Indicates the level of importance of the message.
Possible values: ERROR, WARN, INFO.
Possible values: Specify the external message. External code. message * (String) External message. correlationID * (ID) Identifier to investigate the cause of the error. createdAt * (DateTime) Supplier creation date updatedAt * (DateTime) Supplier last update date Supplier deleted date User code to connect to supplier Password for this Access. To retrieve this field, ADMIN permissions are required.
Otherwise, the value will be null. Specific URLs Specific URL for Availability method. Specific URL for Quote method. Specific URL for Book method. Supplier URL used for multiple methods. 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. Parent Access if Shared Access Access owner code * (ID) Organization unique code label * (String) updateDescriptiveInfo * (Int) Refresh time to update Despriptive Info descriptiveInfoLimit * (Int) Limit on DescriptiveInfo; 0 denotates no limit True if scheduler is active updateList * (Int) Refresh time to update other batch lists updateDateRange * (String) Range on update date Parent Master Access. null=>masterAccess, notNull=>slaveAccess Groups where access belongs code * (ID) id * (ID) code * (ID) type * (GroupType) isPublic * (Boolean) Only responses children.(non-hierarchically) Response all descendents groups nodes in this group (nom-hierarchically) Response all parents groups nodes for this group (nom-hierarchically) code * (ID) 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) Sibilings of the group Only responses members in this group pageInfo * (PageInfo) List of advise messages. totalCount * (Int) Identifies the total count of items in the connection. APIs assigned to this group. Products have APIs. pageInfo * (PageInfo) Responses all managed groups by this group. pageInfo * (PageInfo) Response all members in this group s childrens (hierarchically), pageInfo * (PageInfo) List of advise messages. totalCount * (Int) Identifies the total count of items in the connection. Access resources in a group pageInfo * (PageInfo) List of advise messages. totalCount * (Int) Identifies the total count of items in the connection. Supplier resources in a group Supplier edges of Supplier connection pageInfo * (PageInfo) Page info of the connection List of advise messages. totalCount * (Int) Identifies the total count of items in the connection. Clients resources in a group Client edges of client connection pageInfo * (PageInfo) Page info of the connection List of advise messages. totalCount * (Int) Identifies the total count of items in the connection. You can grant roles to members, which define the roles catalog for a group. pageInfo * (PageInfo) isBuyer * (Boolean) isSeller * (Boolean) List of advise messages. code * (ID) AM code: The following codes can be returned: description * (String) Error description level * (AdviseMessageLevel) Indicates the level of importance of the message.
Possible values: ERROR, WARN, INFO.
Possible values: Specify the external message. External code. message * (String) External message. correlationID * (ID) Identifier to investigate the cause of the error. createdAt * (DateTime) Date created updatedAt * (DateTime) Date updated cursor * (String) pageInfo * (PageInfo) hasNextPage * (Boolean) hasPreviousPage * (Boolean) List of advise messages. code * (ID) AM code: The following codes can be returned: description * (String) Error description level * (AdviseMessageLevel) Indicates the level of importance of the message.
Possible values: ERROR, WARN, INFO.
Possible values: Specify the external message. External code. message * (String) External message. correlationID * (ID) Identifier to investigate the cause of the error. totalCount * (Int) Identifies the total count of items in the connection. audits * (EntityAuditConnection) Audits it shows the accesses change history code * (ID) id * (ID) code * (ID) entityType * (EntityType) actionType * (ActionType) field * (String) current * (String) previous * (String) modifiedBy * (String) code * (ID) AM code: The following codes can be returned: description * (String) Error description level * (AdviseMessageLevel) Indicates the level of importance of the message.
Possible values: ERROR, WARN, INFO.
Possible values: Specify the external message. External code. message * (String) External message. correlationID * (ID) Identifier to investigate the cause of the error. createdAt * (Time) updatedAt * (Time) cursor * (String) pageInfo * (PageInfo) hasNextPage * (Boolean) hasPreviousPage * (Boolean) code * (ID) AM code: The following codes can be returned: description * (String) Error description level * (AdviseMessageLevel) Indicates the level of importance of the message.
Possible values: ERROR, WARN, INFO.
Possible values: Specify the external message. External code. message * (String) External message. correlationID * (ID) Identifier to investigate the cause of the error. totalCount * (Int) List of advise messages. code * (ID) AM code: The following codes can be returned: description * (String) Error description level * (AdviseMessageLevel) Indicates the level of importance of the message.
Possible values: ERROR, WARN, INFO.
Possible values: Specify the external message. External code. message * (String) External message. correlationID * (ID) Identifier to investigate the cause of the error. createdAt * (DateTime) Date created updatedAt * (DateTime) Date updated Access deleted date status * (String) duration * (Int)accessSpans(HotelXAccessSpan)
accessData(AccessData)
supplierData(SupplierData)
edges(EntityAuditEdge)
node(EntityAudit)
startCursor(String)
endCursor(String)
adviseMessage(AdviseMessage)
external(ExternalMessage)
PULLPUSHHYBRID
HOTELTRANSPORTATIONCARTRANSFERSACTIVITIESVIRTUALACCOUNTPAYMENTPACKAGEowner(EntityOwnerData)
groupContent(GroupContent)
groupContentData(GroupContentData)
contextData(ContextData)
adviseMessage(AdviseMessage)
adviseMessage(AdviseMessage)
WARN: Warning message.ERROR: Error message.INFO: Info message.external(ExternalMessage)
code(String)
supplierGroup(ID)
context(String)
sharedDefault(Access)
accesses(AccessConnection)
edges(AccessEdge)
node(Access)
startCursor(String)
endCursor(String)
adviseMessage(AdviseMessage)
WARN: Warning message.ERROR: Error message.INFO: Info message.external(ExternalMessage)
code(String)
edges(EntityAuditEdge)
node(EntityAudit)
entityAuditData(EntityAuditData)
adviseMessage(AdviseMessage)
deletedAt(Time)
startCursor(String)
endCursor(String)
adviseMessage(AdviseMessage)
WARN: Warning message.ERROR: Error message.INFO: Info message.external(ExternalMessage)
code(String)
serviceIntegrationData(ServiceIntegrationData)
type(ServiceIntegrationType)
SITHWORKERCONNECTORSoptionsQuota(Int)
giata(GiataSupplierConfiguration)
giataType(String)
giataCode(String)
adviseMessage(AdviseMessage)
WARN: Warning message.ERROR: Error message.INFO: Info message.external(ExternalMessage)
code(String)
deletedAt(DateTime)
user(String)
password(String)
urls(Urls)
search(URI)
quote(URI)
book(URI)
generic(URI)
parameters(Parameter)
shared(Access)
owner(EntityOwnerData)
isSchedulerActive(Boolean)
master(Access)
groups(GroupConnection)
edges(GroupEdge)
node(Group)
groupData(GroupData)
label(String)
folder(String)
ROOTORGGROUPTEAMFOLDERPRODUCTRESOURCESPECIFIC_RESOURCEinfo(String)
parent(Group)
children(GroupConnection)
descendents(GroupConnection)
parents(GroupConnection)
owner(Member)
memberData(MemberData)
adviseMessage(AdviseMessage)
productId(Int)
resourceId(Int)
siblings(GroupConnection)
members(MemberConnection)
edges(MemberEdge)
adviseMessage(AdviseMessage)
apis(APIConnection)
edges(APIEdge)
managedGroups(ManagedGroupConnection)
edges(ManagedGroupEdge)
allMembers(MemberConnection)
edges(MemberEdge)
adviseMessage(AdviseMessage)
accesses(AccessConnection)
edges(AccessEdge)
adviseMessage(AdviseMessage)
suppliers(SupplierConnection)
edges(SupplierEdge)
adviseMessage(AdviseMessage)
clients(ClientConnection)
edges(ClientEdge)
adviseMessage(AdviseMessage)
roles(RoleConnection)
edges(RoleEdge)
deleted_at(DateTime)
adviseMessage(AdviseMessage)
WARN: Warning message.ERROR: Error message.INFO: Info message.external(ExternalMessage)
code(String)
startCursor(String)
endCursor(String)
adviseMessage(AdviseMessage)
WARN: Warning message.ERROR: Error message.INFO: Info message.external(ExternalMessage)
code(String)
edges(EntityAuditEdge)
node(EntityAudit)
entityAuditData(EntityAuditData)
ACCESSSUPPLIERCLIENTPROVIDERMEMBERORGANIZATIONAPI_KEYUPDATEDELETECREATEARCHIVEUNARCHIVEACTIVATEDEACTIVATEGRANT_TO_GROUPSREVOKE_FROM_FROUPSAPPEND_PARAMETERSDELETE_PARAMETERSSET_FIELDREMOVE_FIELDACTIVATE_SPEEDDEACTIVATE_SPEEDSET_IS_PUBLICUPDATE_MEMBER_IN_ORGANIZATIONREMOVE_MEMBER_SERVICE_ROLEUPDATE_MEMBER_SERVICE_ROLEREFRESH_TOKENauditDetails(AuditDetails)
correlationID(String)
adviseMessage(AdviseMessage)
WARN: Warning message.ERROR: Error message.INFO: Info message.external(ExternalMessage)
code(String)
deletedAt(Time)
startCursor(String)
endCursor(String)
adviseMessage(AdviseMessage)
WARN: Warning message.ERROR: Error message.INFO: Info message.external(ExternalMessage)
code(String)
adviseMessage(AdviseMessage)
WARN: Warning message.ERROR: Error message.INFO: Info message.external(ExternalMessage)
code(String)
deletedAt(DateTime)
hotelsRequested(Int)
hotelsReturned(Int)
hotelsReturnedAfterRoomDescFilter(Int)
transactionSpans(HotelXTransactionSpan)
aggregationData(AggregationData)
Contains the information about the aggregation process executed. This information is only available through internal request and, by default, it is not returned requestedAccecess * (String) List of access codes requested in the particular search request. aggregationGroups * (AggregationGroup) List of aggregation groups processed in the particular search request.
Each group contains a list of processed options in the aggregation plugin. groupKey * (String) Key used to group options when an aggregation plugin is executed.
This key is used to group options that are similar and can be aggregated.
It should not be modified and should not be used externally, as it is an internal TGX system identifier. selected * (AggregationOption) List of AggregationOption objects that represent the options selected as winners for this group. hotelCode * (String) Code of the hotel in the context selected. boardCode * (String) Code of the board in the context selected. price * (Float) Specifies the Net prices of the option. accessCode * (String) Access code of this option. roomCodes * (String) Indicates the room codes of the option. Specifies rate rules of the option.
Possible values: discarded * (AggregationOption) List of AggregationOption objects that are considered discardable or least relevant for this group. hotelCode * (String) Code of the hotel in the context selected. boardCode * (String) Code of the board in the context selected. price * (Float) Specifies the Net prices of the option. accessCode * (String) Access code of this option. roomCodes * (String) Indicates the room codes of the option. Specifies rate rules of the option.
Possible values:rateRules(RateRulesType)
NORMAL: NORMAL Used in the RateRulesFilterInput input for the search query to filter and retrieve only options without rate rules.PACKAGE: The product can't be sold separately from another product attached to it, such as a flight.OLDER55: OLDER55 can only be sold to people who are 55 and older.OLDER60: OLDER60 can only be sold to people who are 60 and older.OLDER65: OLDER65 can only be sold to people who are 65 and older.CANARY_RESIDENT: CANARY_RESIDENT is applicable to Canary Islands residents only.BALEARIC_RESIDENT: BALEARIC_RESIDENT is applicable to Balearic Islands residents only.LARGE_FAMILY: LARGE_FAMILY is applicable to large families and is determined by each supplier.HONEYMOON: HONEYMOON is applicable to those who just got married and is determined by each supplier.PUBLIC_SERVANT: PUBLIC_SERVANT is applicable to public servants only.UNEMPLOYED: UNEMPLOYED applies to individuals who are without work.NON_REFUNDABLE: NON_REFUNDABLE is applicable to non refundable options.MOBILE: MOBILE are special rates confirmed by mobile phone.WARRANTY: WARRANTY is applicable to options with cancellation warranty.ESSENTIAL_WORKER: ESSENTIAL_WORKER are special hotel rates for essential workers.NEGOTIATED: NEGOTIATED are special rates offered only to specific buyers.CUSTOM: CUSTOM defines other rates.rateRules(RateRulesType)
NORMAL: NORMAL Used in the RateRulesFilterInput input for the search query to filter and retrieve only options without rate rules.PACKAGE: The product can't be sold separately from another product attached to it, such as a flight.OLDER55: OLDER55 can only be sold to people who are 55 and older.OLDER60: OLDER60 can only be sold to people who are 60 and older.OLDER65: OLDER65 can only be sold to people who are 65 and older.CANARY_RESIDENT: CANARY_RESIDENT is applicable to Canary Islands residents only.BALEARIC_RESIDENT: BALEARIC_RESIDENT is applicable to Balearic Islands residents only.LARGE_FAMILY: LARGE_FAMILY is applicable to large families and is determined by each supplier.HONEYMOON: HONEYMOON is applicable to those who just got married and is determined by each supplier.PUBLIC_SERVANT: PUBLIC_SERVANT is applicable to public servants only.UNEMPLOYED: UNEMPLOYED applies to individuals who are without work.NON_REFUNDABLE: NON_REFUNDABLE is applicable to non refundable options.MOBILE: MOBILE are special rates confirmed by mobile phone.WARRANTY: WARRANTY is applicable to options with cancellation warranty.ESSENTIAL_WORKER: ESSENTIAL_WORKER are special hotel rates for essential workers.NEGOTIATED: NEGOTIATED are special rates offered only to specific buyers.CUSTOM: CUSTOM defines other rates.
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?
Are there any limitations on the number of searches/minute?
Does nationality or market affect the price returned?
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.
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 Travelgate 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"
]
}
}
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.
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?
Can I filter the Hotel-X 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 300 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.