The Best Practices are a set of essential guidelines that we strongly recommend for our integrators to implement as to ensure a proper use of the Juniper API. Through this section, you will be able to find detailed information as per why are each one of these practices recommended and/or required along detailed information related to its implementation.
Along with ensuring an optimal use of the Juniper API, implementing these practices will ensure that our integrators will achieve:
Important note:
It is important to understand that, depending on your configuration, these best practices will be presented to you as either a recommendation or a requirement.
Currently, if you're a previously integrated customer, they will be presented as a recommendation which will not restrict and/or impact the booking flow in any way (do note tho that, in the near future, they will required) while, if you are a new integrator and/or customer, they will be required for your certification.
In this section we will supply you with detailed information on how to comply all of the available Best Practices within the Juniper API.
Best Practice | Description |
---|---|
TimeOut | It indicates if the time out option has not been specified within the availability request. |
The TimeOut best practice lets you define the maximum response time on which your Juniper supplier will supply you with a response. Is is important to understand that this strictly refers to the Juniper supplier response time and that, as a result, it may not reflect the final response time (which will include transfer times). This is an useful option as it will allow you to customize the response time as to match it with that of your system.
This best practice may be complied by including the approipate time out option on your availability requests. Currently this may be implemented on both the JP Hotel API and the OTA Hotel API, kindly refer to the following examples:
<soapenv:Envelope xmlns = "http://www.juniper.es/webservice/2007/" xmlns:soapenv = "http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header/>
<soapenv:Body>
<HotelAvail>
<HotelAvailRQ Language = "en" Version = "1.1">
<Login Email = "noreply@ejuniper.com" Password = "password"/>
<Paxes>...</Paxes>
<HotelRequest>...</HotelRequest>
<AdvancedOptions>
<TimeOut>8000</TimeOut>
</AdvancedOptions>
</HotelAvailRQ>
</HotelAvail>
</soapenv:Body>
</soapenv:Envelope>
<soap:Envelope xmlns:soap = "http://www.w3.org/2003/05/soap-envelope" xmlns = "http://www.opentravel.org/OTA/2003/05">
<soap:Body>
<OTA_HotelAvailService xmlns = "http://www.opentravel.org/OTA/2003/05">
<OTA_HotelAvailRQ PrimaryLangID = "en">
<POS>
<Source AgentDutyCode = "noreply@ejuniper.com">
<RequestorID MessagePassword = "password"/>
</Source>
</POS>
<AvailRequestSegments>
<AvailRequestSegment>
<StayDateRange Start = "2020-09-15" End = "2020-09-19"/>
<RoomStayCandidates>...</RoomStayCandidates>
<HotelSearchCriteria>
<Criterion>
<HotelRef HotelCode = "JP046300"/>
<TPA_Extensions>
<SearchTimeOut>8000</SearchTimeOut>
</TPA_Extensions>
</Criterion>
</HotelSearchCriteria>
</AvailRequestSegment>
</AvailRequestSegments>
</OTA_HotelAvailRQ>
</OTA_HotelAvailService>
</soap:Body>
</soap:Envelope>
Do not hesitate to refer to their respective specifications for further information in this regard.
Best Practice | Description |
---|---|
HotelCodes | It indicates the number of maximum hotels allowed within the availability request. |
DestinationZone | It indicates if a destination code availability request is being performed on the availability request. |
PaxCountry | It indicates if the nationality of the holder is missing within the applicalbe requests. |
The HotelCodes best practice ensures that our integrators do not exceed the maximum allowed number of hotel codes within their availability requests as to ensure an optiomal performance and an optimal response time.
This best practice may be complied by not exceeding the maximum number of hotels defined on the configuration of your supplier. Currently, this may be implemented on both the JP Hotel API and the OTA Hotel API while the default practice is to not allow for more than 500 hotels.
No example is needed as if you're doing multi hotel availability request then you already know how the same is implemented, the only adjustment needed is on the number of hotels that may be sent at most on a single availability request.
Similarly to the HotelCodes best practice, this best practice (namely DestinationZone and JPDCode) will ask you to perform hotel code-based availabilities, to optimize your connection and to ensure the best performance possible on your availabilities. This is because destination-based availabilities are very inefficient in comparison to hotel code-based ones.
In addition, by implementing these you will:
To recap, this best practice may be complied by not performing destination-based availability and, in its place, to perform hotel code-based ones. Currently this may be implemented on both the JP Hotel API and the OTA Hotel API, kindly refer to the following examples:
<soapenv:Envelope xmlns = "http://www.juniper.es/webservice/2007/" xmlns:soapenv = "http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header/>
<soapenv:Body>
<HotelAvail>
<HotelAvailRQ Language = "en" Version = "1.1">
<Login Email = "noreply@ejuniper.com" Password = "password"/>
<Paxes>...</Paxes>
<HotelRequest>
<SearchSegmentsHotels>
<SearchSegmentHotels Start = "2020-09-15" End = "2020-09-19"/>
<HotelCodes>
<HotelCode>JP046300</HotelCode>
<HotelCode>JP547825</HotelCode>
</HotelCodes>
<CountryOfResidence>ES</CountryOfResidence>
</SearchSegmentsHotels>
<RelPaxesDist>...</RelPaxesDist>
</HotelRequest>
<AdvancedOptions>...</AdvancedOptions>
</HotelAvailRQ>
</HotelAvail>
</soapenv:Body>
</soapenv:Envelope>
<soap:Envelope xmlns:soap = "http://www.w3.org/2003/05/soap-envelope" xmlns = "http://www.opentravel.org/OTA/2003/05">
<soap:Header/>
<soap:Body>
<OTA_HotelAvailService>
<OTA_HotelAvailRQ PrimaryLangID = "en">
<POS>
<Source AgentDutyCode = "noreply@ejuniper.com">
<RequestorID MessagePassword = "password"/>
</Source>
</POS>
<AvailRequestSegments>
<AvailRequestSegment>
<StayDateRange Start = "2020-09-15" End = "2020-09-19"/>
<RoomStayCandidates>...</RoomStayCandidates>
<HotelSearchCriteria>
<Criterion>
<HotelRef HotelCode = "JP046300"/>
<TPA_Extensions>...</TPA_Extensions>
</Criterion>
<Criterion>
<HotelRef HotelCode = "JP547825"/>
</Criterion>
</HotelSearchCriteria>
</AvailRequestSegment>
</AvailRequestSegments>
</OTA_HotelAvailRQ>
</OTA_HotelAvailService>
</soap:Body>
</soap:Envelope>
The PaxCountry best practice ensures for our integrators to inlclude the nationality of the holder within all of the applicable requests as to ensure both that the proper rates are supplied to you and that the selected rates are still applied to the requested nationality.
This best practice may be complied by including the nationality of the holder on all of the applicable requests. Currently this may be implemented on both the JP Hotel API and the OTA Hotel API, kindly refer to the following examples:
For this practice, you must first set CountryOfResidence on your HotelAvail request:
<soapenv:Envelope xmlns:soapenv = "http://schemas.xmlsoap.org/soap/envelope/" xmlns = "http://www.juniper.es/webservice/2007/">
<soapenv:Header/>
<soapenv:Body>
<HotelAvail>
<HotelAvailRQ Version = "1.1" Language = "en">
<Login Email = "user@mydomain.com" Password = "pass"/>
<Paxes>...</Paxes>
<HotelRequest>
<SearchSegmentsHotels>
<SearchSegmentHotels Start = "2019-11-20" End = "2019-11-22"/>
<CountryOfResidence>ES</CountryOfResidence>
<HotelCodes>...</HotelCodes>
</SearchSegmentsHotels>
<RelPaxesDist>...</RelPaxesDist>
</HotelRequest>
<AdvancedOptions>...</AdvancedOptions>
</HotelAvailRQ>
</HotelAvail>
</soapenv:Body>
</soapenv:Envelope>
And then, once you reach the HotelBooking step, include the same nationality that you asked for on your availability request on the Nationality node from the holder, for example:
<soapenv:Envelope xmlns:soapenv = "http://schemas.xmlsoap.org/soap/envelope/" xmlns = "http://www.juniper.es/webservice/2007/">
<soapenv:Body>
<HotelBooking>
<HotelBookingRQ Version = "1.1" Language = "en">
<Login Email = "user@mydomain.com" Password = "pass"/>
<Paxes>
<Pax IdPax = "1">
<Name>Holder Name</Name>
<Surname>Holder Surname</Surname>
<Age>30</Age>
<Nationality>ES</Nationality>
</Pax>
<Pax IdPax = "2">
<Name>Second Passenger Name</Name>
<Surname>Second Passenger Surname</Surname>
<Age>30</Age>
</Pax>
</Paxes>
<Holder>
<RelPax IdPax = "1"/>
</Holder>
<Elements>
<HotelElement>...</HotelElement>
</Elements>
</HotelBookingRQ>
</HotelBooking>
</soapenv:Body>
</soapenv:Envelope>
<soap:Envelope xmlns:soap = "http://www.w3.org/2003/05/soap-envelope" xmlns = "http://www.opentravel.org/OTA/2003/05">
<soap:Body>
<OTA_HotelAvailService xmlns = "http://www.opentravel.org/OTA/2003/05">
<OTA_HotelAvailRQ PrimaryLangID = "en">
<POS>
<Source AgentDutyCode = "noreply@ejuniper.com">
<RequestorID MessagePassword = "password"/>
</Source>
</POS>
<AvailRequestSegments>
<AvailRequestSegment>
<StayDateRange Start = "2020-09-15" End = "2020-09-19"/>
<RoomStayCandidates>...</RoomStayCandidates>
<HotelSearchCriteria>
<Criterion>
<HotelRef HotelCode = "JP046300"/>
<TPA_Extensions>
<PaxCountry>ES</PaxCountry>
</TPA_Extensions>
</Criterion>
</HotelSearchCriteria>
</AvailRequestSegment>
</AvailRequestSegments>
</OTA_HotelAvailRQ>
</OTA_HotelAvailService>
</soap:Body>
</soap:Envelope>
Last but not least, do not hesitate to refer to the appripiate API specs for all of the required information and/or considerations in this regard (for example, on the OTA Hotel API, when included on the availability request, it will also be needed to se the same option along the same value on the rest of the booking flow requests).