In order to understand the JP WebService work flow, we've prepated a flow chart that outlines and simplies all of the steps that need to be taken through the booking process. We will refer to this flow chart as we advance further on our explanation.
As you may have observed, this booking process is divided in four differentiated steps. We will proceed to describe each of these steps in detail:
This is the step that embraces all of the transfer static data transactions. In the availability process there will be fields like the destination code that you will need to fulfill, all of this information is to be obtained through the use of these transactions.
It will be neccesary for you to retrieve the available destination codes through the ZoneList request (sending the TRF @ProductType) and, depending on the products of your Juniper supplier (as this is only available for the direct products), it may also be possible for you to retrieve other static data information through the following transactions:
It is the availability request. The mandatory information to search for availability is:
It will return all available transfers for the search criteria. This request returns basic information regarding each transfer product, such as the name and a small description. To obtain full info and other data you should use the transaction TransferBookingRules
Once the search is made and before completing the booking you should validate the selected option. We may do it in two ways:
TransferCheckAvail: it allows validating the availability and the transfer policy price. This
transaction is optional.
TransferBookingRules: this transaction is mandatory and it allows you to validate the availability and the prices, and also returns important information, such as, the cancellation policies if any, the mandatory data of the booking request (TransferRequiredFields) and the code you should use in order to make a booking (BookingCode). Also, it returns more detailed information about the transfer, such as, the full data, help desk telephone numbers, etc (this information will depend on the transfer supplier).
You may only book with the returned code TransferBookingRules transaction, (BookingCode) therefore it is indispensable to go through this transaction.
If the booking has correctly been made you will obtain a code or booking code identifying the booking in a unique way. You may review and cancel the booking with this same code.
Moving on, once the booking has been created, successfully confirmed and you've been able to retrieve its @Locator, there are two additional actions that you may take in this regard:
Kindly refer to the ReadBooking section for more information.
Kindly refer to the CancelBooking section for more information.
Having detailed all of the Transfer integration process, here we supply you with a series of resources which, along the use of test environment XML credentials, will let you experience the Transfer integration process first hand.
On this section you will be able to find SoapUI test suites that may help you perform the development of your integration.
Juniper WebService Transfer PULL Welcome Pack. This test suite contains all of the transactions that will be neccesary in order to perform an integration against the Juniper system.
On this section we have a Postman example that embraces all of the Transfer integration process.
On this section we have a series of code samples that will let you understand how to implement and use one of the transactions from our API.
The object that shows the optional information about the selected hotel of a transfer, we will refer to this object from here on as: {HotelService}
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
HotelService | Y | - | Optional information about the selected hotel of the transfer |
./HotelService/@Code | Y | String | Code of the selected hotel, you may only select a directly contracted hotel, only numerical digits. If you specify this value, you can ignore the "Name" property as the system will set it up automatically. |
./HotelService/@Name | Y | String | Selected hotel name. |
./HotelService/ @Block | Y | String | Hotel address number |
./HotelService/ @Room | Y | - | Information about the selected room of the hotel. |
./Room/@Code | Y | String | Code of the room of the hotel: DPX; TRP, DL…. |
./Room/@Name | Y | String | Name of the room of the hotel: Double, Triple, Junior Suite… |
./Room/@Number | Y | String | Number of the room of the hotel: 225, 101, 45B… |
./HotelService/ @Board | Y | String | Board code of the hotel |
./HotelService/@CheckoutDate | Y | String | Checkout date of the hotel |
Object that lists all of the optional elements that may be applied to the combination. We refer to this object as: {OptionalElements}
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
Comments | Y | - | List of comments. |
./Comments/Comment | N | String | Comment text. |
./Comment/@Type | Y | String | Comment type. Possible values: • TRF: Comments from the provider. Keep in mind that, through this node, the provider could supply you with vital information like the unavailability of a specific service or the need to pay an additional tax on arrival. |
List of methods available for the retrieval of static data information from the system like, for example, destination codes and transfer information. Take into account that this information will be different between the test and production environments.
Important note:
The maximum frequency allowed for downloading the static data (if you use them), is two weeks. This is a mandatory condition aimed to keep the static data always updated.
Aside from the transactions detailed below, there are other transactions from the Common API that will be applicable to this integration:
With this message, you will be able to retrieve all of the available transfer static data.
These values will allow you to filter the availability.
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
@Version | N | String | Web Service version |
@Language | N | String | Language in which the response will be returned. Please, contact Juniper for available languages. |
{Login} | N | - | Customer login to access the Web Service |
<soapenv:Envelope xmlns:soapenv = "http://schemas.xmlsoap.org/soap/envelope/" xmlns = "http://www.juniper.es/webservice/2007/">
<soapenv:Header/>
<soapenv:Body>
<TransferCatalogueData>
<TransferCatalogueDataRQ Version = "1.1" Language = "en">
<Login Email = "user@mydomain.com" Password = "pass"/>
</TransferCatalogueDataRQ>
</TransferCatalogueData>
</soapenv:Body>
</soapenv:Envelope>
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
@Url | N | String | URL endpoint |
@TimeStamp | N | DateTime | Response date and time. Format: yyyy-MM-ddThh:mm:ss (UTC) |
@IntCode | N | String | Internal control code |
{Errors} | Y | - | Applicable errors. |
{Warnings} | Y | - | Applicable warnings. |
@CatalogueDataRS | N | - | Results. |
./CatalogueDataRS/@TransferStaticData | N | - | Static information. |
./TransferStaticData/@TransferTypeList | Y | - | List of transfers types |
./TransferTypeList/@ServiceType | N | - | Service type |
./ServiceType/@Code | N | Integer | Service type code. |
./ServiceType/@ParentCode | Y | Integer | Parent code of the service type |
./ServiceType/@Name | N | String | Name of the service type. |
<soap:Envelope xmlns:soap = "http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd = "http://www.w3.org/2001/XMLSchema">
<soap:Body>
<TransferCatalogueDataResponse xmlns = "http://www.juniper.es/webservice/2007/">
<CatalogueDataRS Url = "http://xml-uat.bookingengine.es" TimeStamp = "2021-09-08T11:48:16.823019+02:00" IntCode = "5QJlCDtvNUF9B+bNNGlH02rVy4NmxHf7GbNgbnxb0Xg=">
<TransferStaticData>
<TransferTypeList>
<ServiceType Code = "19">
<Name>Transfers</Name>
</ServiceType>
<ServiceType Code = "21" ParentCode = "19">
<Name>Private</Name>
</ServiceType>
<ServiceType Code = "22" ParentCode = "19">
<Name>Regular</Name>
</ServiceType>
</TransferTypeList>
</TransferStaticData>
</CatalogueDataRS>
</TransferCatalogueDataResponse>
</soap:Body>
</soap:Envelope>
With this message, you can retrieve a paginated list that amounts up to all of your own transfer portfolio.
It is important to keep in mind that you have to compare the Page attribute from the request with the TotalPage attribute from the response (increasing the page one by one until you reach the TotalPage) in order to retrieve the whole portfolio. In this process, the RecordPerPage attribute should not be modified.
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
@Version | N | - | Web Service version |
@Language | N | String | Language in which the response will be returned. Please, contact Juniper for available languages. |
@Page | Y | Integer | Page requested |
@RecordsPerPage | Y | Integer | Records to be shown per page |
{Login} | N | - | Customer login to access the Web Service |
<soapenv:Envelope xmlns:soapenv = "http://schemas.xmlsoap.org/soap/envelope/" xmlns = "http://www.juniper.es/webservice/2007/">
<soapenv:Header/>
<soapenv:Body>
<TransferPortfolio>
<TransferPortfolioRQ Version = "1.1" Language = "en" Page = "1" RecordsPerPage = "100">
<Login Password = "Password" Email = "username@mydomain.com"/>
</TransferPortfolioRQ>
</TransferPortfolio>
</soapenv:Body>
</soapenv:Envelope>
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
@Url | N | String | URL endpoint |
@TimeStamp | N | DateTime | Response date and time. Format: yyyy-MM-ddThh:mm:ss (UTC) |
@IntCode | N | String | Internal control code |
{Errors} | Y | - | Applicable errors. |
{Warnings} | Y | - | Applicable warnings. |
ServicePortfolio | N | - | - |
./ServicePortfolio/@Page | N | Integer | Page number returned in the response |
./ServicePortfolio/@RecordsPerPage | N | Integer | Number of services shown in the response |
./ServicePortfolio/@TotalPages | N | Integer | Total pages of the full service portfolio |
./ServicePortfolio/@TotalRecords | N | String | Total number of services for the full service portfolio. |
./ServicePortfolio/Service | N | - | - |
./Service/@Code | N | String | Service code |
./Service/@IntCode | Y | String | Service internal code. |
./Service/@ProductGroup | Y | Integer | Product group identificator. This is internal information that is only available through a specific permission. |
./Service/@ProductType | Y | String | Product group type. This is internal information that is only available through a specific permission. |
./Service/@ProductTypeBreakdown | Y | String | Product group type breakdown. This is internal information that is only available through a specific permission. |
./Service/@ServiceTypeCode | Y | Integer | Internal service type code. |
./Service/Name | N | String | Service name |
./Service/Options | N | - | - |
./Options/@ServiceOption | N | String | Service Option |
./ServiceOption/@Code | N | String | Service Option Code |
./ServiceOption/@Order | N | String | Service option order |
./ServiceOption/@NumberOfDays | Y | String | Service option number of days |
./ServiceOption/Name | N | String | Service Option Name |
./Service/Options | N | String | - |
./Options/ServiceOption | N | String | |
./ServiceOption/@Code | N | String | |
./ServiceOption/@Order | N | String | |
./ServiceOption/@NumberOfDays | Y | ||
./ServiceOption/Name | N | String | |
./Service/Zones | N | - | - |
./Zones/Zone | N | String | Zone |
./Zone/@Code | N | String | Zone Code |
./Service/Origins | N | String | - |
./Origins/Origin | N | - | Origin |
./Origins/@Code | N | String | Origin Code |
./Service/Destinations | N | - | - |
./Destinations/Destination | N | String | Destination |
./Destination/@Code | N | String | Destination Code |
./Service/ServiceType | Y | - | Service type. This is internal information that is only available through a specific permission. |
./ServiceType/@Code | N | String | Service type identificator |
./Service/Contracts | Y | - | Contracts of the service. This is internal information that is only available through a specific permission. |
./Contracts/Contract | N | - | Contract |
./Contract/@Type | N | String | Contract type. Possible values: - C: Cost contract - S: Sales contract |
./Contract/@Code | N | String | Contract identificator |
./Contract/@AllowZeroCost | N | Boolean | Indicates if the contract allow cost = 0 |
./Contract/Name | Y | String | Contract name |
./Contract/Supplier | N | - | Contract supplier |
./Supplier/@Code | N | String | Contract supplier identificator |
<soap:Envelope xmlns:soap = "http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd = "http://www.w3.org/2001/XMLSchema">
<soap:Body>
<TransferPortfolioResponse xmlns = "http://www.juniper.es/webservice/2007/">
<TransferPortfolioRS Url = "http://xml-uat.bookingengine.es/" TimeStamp = "2019-12-04T10:24:39.9465367+02:00" IntCode = "953vCRC6vo95Y9QGs+eMAYAj3QGSwnzStRcS84NhgNc=">
<ServicePortfolio Page = "1" RecordsPerPage = "88" TotalPages = "1" TotalRecords = "88">
<Service Code = "BGBzIIpLvgQjLt8y6AtYJw==" IntCode = "21" ServiceTypeCode = "122">
<Name>Tansfer Airport Center London</Name>
<Options>
<ServiceOption Code = "218">
<Name>Center to London</Name>
</ServiceOption>
<ServiceOption Code = "219">
<Name>London to Center</Name>
</ServiceOption>
</Options>
</Service>
<Service Code = "ZXCZq2f/CjGvI8FFjXZ/wg==" IntCode = "22">
<Name>Transfer Stansted London</Name>
<Options>
<ServiceOption Code = "188">
<Name>Option 1</Name>
</ServiceOption>
<ServiceOption Code = "159">
<Name>Option 2</Name>
</ServiceOption>
</Options>
<Zones>
<Zone Code = "17852"/>
<Zone Code = "36161"/>
<Zone Code = "83161"/>
<Zone Code = "16181"/>
</Zones>
<Origins>
<Origin Code = "17852"/>
<Origin Code = "36161"/>
</Origins>
<Destinations>
<Destination Code = "17852"/>
<Destination Code = "36161"/>
</Destinations>
</Service>
</ServicePortfolio>
</TransferPortfolioRS>
</TransferPortfolioResponse>
</soap:Body>
</soap:Envelope>
With this message, you can retrieve detailed information of up to 25 transfers.
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
@Version | N | String | Web Service version |
@Language | N | String | Language in which the response will be returned. Please,contact Juniper for available languages. |
{Login} | N | - | Customer login to access the Web Service |
TransferContentList | N | - | List of transfers, you may send up to 25 on a single request |
./TransferContentList/@Transfer | N | - | Transfer |
./Transfer/@Code | N | String | Code that identifies the transfer that we will be requesting additional information for, this may be retrieved from either the the TransferAvail and TransferPortfolio transactions. |
<soapenv:Envelope xmlns:soapenv = "http://schemas.xmlsoap.org/soap/envelope/" xmlns="http://www.juniper.es/webservice/2007/">
<soapenv:Header/>
<soapenv:Body>
<TransferContent>
<TransferContentRQ Version = "1.1" Language = "en">
<Login Password="Password" Email="username@mydomain.com"/>
<TransferContentList>
<Transfer Code="HmI+0kDMRhu0c9ysAbhvxQ=="/>
<Transfer Code="w919t5yai/LXJJVDvQKzeg=="/>
</TransferContentList>
</TransferContentRQ>
</TransferContent>
</soapenv:Body>
</soapenv:Envelope>
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
@Url | N | String | URL endpoint |
@TimeStamp | N | DateTime | Response date and time. Format: yyyy-MM-ddThh:mm:ss (UTC) |
@IntCode | N | String | Internal control code |
{Errors} | Y | - | Applicable errors. |
{Warnings} | Y | - | Applicable warnings. |
TransferContent | N | - | Transfer content |
./TransferContent/@Code | N | String | Code that identifies the transfer. |
./Code/TransferContentInfo | N | - | Transfer content info |
./TransferContentInfo/TransferName | N | String | Transfer name |
./TransferContentInfo/Descriptions | Y | - | Transfer descriptions |
./Descriptions/Description | N | Transfer description | |
./Description/@Type | N | String | Transfer description type. Possible values: • SHT - Short description • LNG - Long description |
./TransferContentInfo/Images | Y | Transfer images | |
./Images/Image | Y | - | Transfer image |
./Image/@Type | Y | - | Transfer image type. Possible values: • PAN - Panoramic |
./Image/FileName | N | String | Image name |
./TransferContent/TransferTypeInfo | N | - | |
./TransferTypeInfo/@Code | N | String | Internal service type code |
./TransferTypeInfo/Name | N | String | Service name |
./TransferContent/TransferZones | Y | - | Transfer zones |
./TransferZones/Origins | N | - | Transfer origins |
./Origins/Origin | N | - | Transfer origin |
./Origin/@Code | N | String | Zone code |
./Origin/@JPDCode | N | String | Shared zone identificatory between all Juniper clients. |
./Origin/Name | Y | String | Zone name |
./Destinations/Destination | N | - | Transfer destinations |
./Destination/@Code | N | String | Zone code |
./Destination/@JPDCode | N | String | Shared zone identificatory between all Juniper clients. |
./Destination/Name | N | String | Zone name |
./TransferContent/TransferOptions | Y | - | Transfer options |
./TransferOptions/TransferOption | Y | - | Transfer option |
./TransferOption/@MinimumPax | Y | Integer | Minimum number of passengers allowed within the transfer option. This is optional information that may be unavailable depending on the transfer type. |
./TransferOption/@MaximumPax | Y | Integer | Maximum number of passengers allowed within the transfer option. This is optional information that may be unavailable depending on the transfer type. |
./TransferOption/Name | N | String | Transfer option name |
./Name/@StartTime | N | String | Transfer start time. Format: hh:mm |
./TransferOption/Descriptions | N | - | Transfer descriptions |
./Descriptions/Description | N | - | Transfer description |
./Description/@Type | N | String | |
./TransferOption/Origins | Y | - | Transfer description |
./Origins/Origin | N | - | Transfer description type. Possible values: • SHT - Short description • LNG - Long description |
./Origin/@Code | N | String | Zone code |
./Origin/@JPDCode | N | String | Shared zone identificatory between all Juniper clients. |
./Origin/Name | N | String | Zone name |
./TransferOptions/Destinations | N | - | Transfer option destinations |
./Destinations/Destination | N | - | Transfer option destination |
./Destination/@Code | Y | String | Zone code |
./Destination/@JPDCode | N | String | Shared zone identificatory between all Juniper clients |
./Destination/Name | N | String | Zone name |
./TransferOption/MeetingPointList | N | - | Transfer option meeting point list |
./MeetingPointList/MeetingPoint | N | - | Meeting point |
./MeetingPoint/@Code | Y | Integer | Meeting point code |
./MeetingPoint/@Time | Y | String | Meeting point time |
./MeetingPoint/@DestinationCode | Y | String | Meeting point destination code |
./MeetingPoint/@Latitude | N | String | Meeting point latitude |
./MeetingPoint/@Longitude | N | String | Meeting point longitude |
./MeetingPoint/Name | N | String | Meeting point name |
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<TransferContentResponse>
<ContentRS Url="http://xml-uat.bookingengine.es" TimeStamp="2019-12-05T11:59:06.6911713+01:00" IntCode="dyPTSrKuEYclahby39DdPWcXhpCBieTnktmWoFHehRg=">
<Contents>
<TransferContent Code="HmI+0kDMRhu0c9ysAbhvxQ==">
<TransferContentInfo>
<TransferName>PMI Airport to center</TransferName>
<Descriptions>
<Description Type="SHT">Description of the transfer from Palma Airport to the city center</Description>
<Description Type = "LNG">Description of the transfer from Palma Airport to the city center</Description>
</Descriptions>
<Images>
<Image>
<FileName>https://juniperuat.bookingengine.es/images/upload_p//Transfers/cache_46940620.png</FileName>
</Image>
</Images>
</TransferContentInfo>
<TransferTypeInfo Code = "21">
<Name>Transfers</Name>
</TransferTypeInfo>
<TransferZones>
<Origins>
<Origin Code = "15011" JPDCode = "JPD054557">
<Name>Palma de Mallorca</Name>
</Origin>
<Origin Code = "40233" JPDCode = "JPD045580">
<Name>Palma de Mallorca Airport</Name>
</Origin>
</Origins>
<Destinations>
<Destination Code = "15011" JPDCode = "JPD054557">
<Name>Palma de Mallorca</Name>
</Destination>
<Destination Code = "42452" JPDCode = "JPD079089">
<Name>Palma of Majorca Centre</Name>
</Destination>
</Destinations>
</TransferZones>
<TransferOptions>
<TransferOption StartTime = "08:00">
<Name>Taxi</Name>
<Descriptions/>
</TransferOption>
<TransferOption StartTime = "10:00">
<Name>Small Car</Name>
<Descriptions>
<Description Type = "SHT">Small Car</Description>
</Descriptions>
</TransferOption>
</TransferOptions>
</TransferContent>
<TransferContent Code = "w919t5yai/LXJJVDvQKzeg==">
<TransferContentInfo>
<TransferName>Transfer to Universal Studios</TransferName>
<Descriptions>
<Description Type = "SHT">Transfers from the hotel</Description>
<Description Type = "LNG">Transfers from the hotel. Jeep Cherokee 4 x 4</Description>
</Descriptions>
<Images>
<Image>
<FileName>https://juniper-uat.bookingengine.es/images/upload_p//UniversalStudios/download.jpg</FileName>
</Image>
</Images>
</TransferContentInfo>
<TransferZones>
<Origins>
<Origin Code = "239" JPDCode = "JPD034929">
<Name>Anaheim</Name>
</Origin>
<Origin Code = "264" JPDCode = "JPD034954">
<Name>Arcata</Name>
</Origin>
<Origin Code = "288" JPDCode = "JPD034979">
<Name>Auburn</Name>
</Origin>
</Origins>
<Destinations>
<Destination Code = "1097" JPDCode = "JPD035809">
<Name>Los Angeles</Name>
</Destination>
<Destination Code = "2110" JPDCode = "JPD036944">
<Name>California</Name>
</Destination>
<Destination Code = "10726" JPDCode = "JPD049853">
<Name>Los Angeles Downtown</Name>
</Destination>
<Destination Code = "39469" JPDCode = "JPD044807">
<Name>Los Angeles International Airport</Name>
</Destination>
</Destinations>
</TransferZones>
<TransferOptions>
<TransferOption>
<Name>Transfer to Universal Studios</Name>
<Descriptions>
<Description Type = "SHT">Transfers from the hotel. Jeep Cherokee 4 x 4</Description>
</Descriptions>
</TransferOption>
</TransferOptions>
</TransferContent>
</Contents>
</ContentRS>
</TransferContentResponse>
</soap:Body>
</soap:Envelope>
This request allows you to search availability for transfer products.
In order to get a correct response, the following parameters will be mandatory:
The use of coordinates is not available by default, and may require for an additional permission to be activated. Contact with Juniper if you would like further information.
In addition to one-way transfers, you will also be able to search for in-out transfers, by including the (SearchSegmenTransfers) @Route property along with the InOut value on your request. When requested, each of the individual results from the response will include two routes:
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
@Version | N | String | Web Service version |
@Language | N | String | Language in which the response will be returned. Please, contact Juniper for available languages. Note: some suppliers only support one language. If your language is not supported, default language is returned. |
{Login} | N | - | Customer login to access the Web Service |
{Paxes} | N | - | Indicates the passenger information. Array of passangers. Fields necessary for this transaction: • @IdPax (Required) • Age (Optional for adults) |
TransferRequest | N | - | |
./TransferRequest/SearchSegmentsTransfers | N | - | Search properties |
./SearchSegmentsTransfers/SearchSegmenTransfers | N | - | Basic search properties |
./SearchSegmenTransfers/@Start | N | Date | Start date range Format: yyyy-MM-dd |
./SearchSegmenTransfers/@Hour | Y | DateTime | Start hour. Format: hh:mm:ss |
./SearchSegmenTransfers/@HourType | Y | String | Transfer start hour type. If not specified, the system will use the default hour type (PickUp). Possible values: • PickUp • Flight |
./SearchSegmenTransfers/@End | N | Date | End date range Format: yyyy-MM-dd In InOut transfers indicates the return date |
./SearchSegmenTransfers/@HourEnd | Y | DateTime | End hour. Only for InOut transfers. Format: hh:mm:ss |
./SearchSegmenTransfers/@OriginZone | Y | Integer | Origin destination code. |
./SearchSegmenTransfers/@OriginLatitude | Y | Double | Origin latitude coordinate. Will require for a permission to be activated. |
./SearchSegmenTransfers/@OriginLongitude | Y | Double | Origin longitude coordinate. Will require for a permission to be activated. |
./SearchSegmenTransfers/@DestinationZone | Y | Integer | Destination area. |
./SearchSegmenTransfers/@DestinationLatitude | Y | Double | Destination latitude coordinate. Will require for a permission to be activated. |
./SearchSegmenTransfers/@DestinationLongitude | Y | Double | Destination longitude coordinate. Will require for a permission to be activated. |
./SearchSegmenTransfers/@Type | Y | Integer | Transfer type id. Retrieved from the TransferCatalogueData request. |
./SearchSegmenTransfers/@Route | N | String | Only for InOut transfers. Possible values: • InOut |
./SearchSegmenTransfers/@IdCliRef | Y | Integer | Referred agency id. For use of guide-type credentials, that wish to specify the agency that they're making the booking for. |
./SearchSegmenTransfers/Suppliers | Y | - | List of supplier codes that you may wish to filter availability for. Please contact Juniper for further information. |
./Suppliers/Supplier | N | String | Supplier code |
./SearchSegmentsTransfers/CountryOfResidence | Y | String | Nationality of the holder of the booking. Please note that the nationality of the holder will have to be consistent between all of the steps of the booking flow and that, consequently, you will have to set the nationality of the holder along the same value on the TransferBooking request. This code follows the ISO-3166-1 standard. |
./TransferRequest/RelPaxesDist | - | Passengers’ distribution you wish to request. | |
./RelPaxesDist/RelPaxDist | N | - | Distribution list |
./RelPaxDist/RelPaxes | N | - | Passengers list of this distribution |
./RelPaxes/RelPax | N | - | Passenger |
./RelPax/@RelPax | N | Integer | Passenger Identifier. It should match with a [Pax@IdPax] |
AdvancedOptions | N | - | Optional information |
./AdvancedOptions/ShowBreakdownPrice | Y | Boolean | If the value is true, it will show the full price object with all the information about the prices. If not specified, false is assumed by default. |
./AdvancedOptions/ShowCancellationPolicies | Y | Boolean | If the value is true, it will show the combination cancellation policies, if available (it is important to note that not all transfers will have the cancellation policies available on this step and that, even if enabled, you will have to control the possibility on not receiving them in this step) Please, contact Juniper in order to know if this option is available on your supplier. |
./AdvancedOptions/ShowCompleteInfo | N | Boolean | If the value is true, it will show additional descriptions. If not specified, false is assumed by default. |
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns="http://www.juniper.es/webservice/2007/">
<soapenv:Header/>
<soapenv:Body>
<TransferAvail>
<TransferAvailRQ Version="1.1" Language="es">
<Login Password="pass" Email="user@mydomain.com"/>
<Paxes>
<Pax IdPax="1">
<Age>30</Age>
</Pax>
</Paxes>
<TransferRequest>
<SearchSegmentsTransfers>
<SearchSegmenTransfers Start="2019-12-22" End="2019-12-22" OriginZone="40233" DestinationZone="15011"/>
</SearchSegmentsTransfers>
<RelPaxesDist>
<RelPaxDist>
<RelPaxes>
<RelPax IdPax="1"/>
</RelPaxes>
</RelPaxDist>
</RelPaxesDist>
</TransferRequest>
</TransferAvailRQ>
</TransferAvail>
</soapenv:Body>
</soapenv:Envelope>
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns="http://www.juniper.es/webservice/2007/">
<soapenv:Header/>
<soapenv:Body>
<TransferAvail>
<TransferAvailRQ Version="1.1" Language="en">
<Login Password="pass" Email="user@mydomain.com"/>
<Paxes>
<Pax IdPax="1">
<Age>30</Age>
</Pax>
</Paxes>
<TransferRequest>
<SearchSegmentsTransfers>
<SearchSegmenTransfers Start="2019-12-12" Hour="10:00:00" End="2019-11-14" HourEnd="12:00:00" OriginZone="40233" DestinationZone="15011" Route="InOut" >
<Suppliers>
<Supplier>SGN</Supplier>
</Suppliers>
</SearchSegmenTransfers>
</SearchSegmentsTransfers>
<RelPaxesDist>
<RelPaxDist>
<RelPaxes>
<RelPax IdPax="1"/>
</RelPaxes>
</RelPaxDist>
</RelPaxesDist>
</TransferRequest>
</TransferAvailRQ>
</TransferAvail>
</soapenv:Body>
</soapenv:Envelope>
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
@Url | N | String | URL endpoint |
@TimeStamp | N | DateTime | Response date and time. Format: yyyy-MM-ddThh:mm:ss (UTC) |
@IntCode | N | String | Internal control code |
{Errors} | Y | - | Applicable errors. |
{Warnings} | Y | - | Applicable warnings. |
Results | N | - | List of transfers results |
./Results/TransferResult | N | - | Element containing the transfer information |
./TransferResult/@Start | N | Date | Start date range, Format: yyyy-MM-dd |
./TransferResult/@End | Y | Date | End date range, Format: yyyy-MM-dd |
./TransferResult/@Code | N | String | Transfer code |
./TransferResult/@Status | N | String | Availability status. Possible values: - OK: Available - RQ: On Request |
./TransferResult/@RatePlanCode | N | String | g (Only for InOut transfers) Code that identifies the transfer. |
./TransferResult/TransferInfo | N | Transfer basic information | |
./TransferInfo/Name | N | String | Transfer name (Only for InOut transfers) Trasfer In name + TransferOut name |
./TransferInfo/{Images} | Y | String | Images URL |
./TransferInfo/Description | Y | String | Transfer description (Only for InOut transfers) Transfer In description + Transfer Out description |
./TransferInfo/CancellationPolicies | Y | - | List of cancellation policies. |
./CancellationPolicies/{CancellationPolicy} | N | - | Cancellation policies. Note that this information is only available on directly contracted transfers through the use of the ShowCancellationPolicies option. |
./TransferInfo/AdditionalDescriptions | Y | - | List of additional descriptions. |
./AdditionalDescriptions/Description | N | - | Additional service description. |
./Description/@Type | N | String | Type of description. Possible values: • LNG: Available • SHT: Short • OTH: Other |
./Description/Title | N | String | Description title. |
./Description/Value | N | String | Description value. |
./TransferResult/TransferOptions | N | - | Transfer options container |
./TransferOptions/TransferOption | N | - | Transfer option. Contains basic information like names of the zones, name of the option, prices... |
./TransferOption/@Duration | N | Duration | Length of the segment in minutes. Format: P0DT7H50M0S (PDaysDTHoursHMinutesMSecondsS) |
./TransferOption/@Route | Y | String | Only for InOut transfers. Indicates the direction of the transfer. Possible values: • In • Out |
./TransferOption/@FlightMargin | Y | Duration | Optional and informative value that showcases the margin that has been applied to the transfer in order to allow for a proper arrival to the airport (for example, on @HourType flight availability requests). Format: P0DT3H0M0S (PDaysDTHoursHMinutesMSecondsS) |
./TransferOption/Name | N | String | Transfer option name. |
./TransferOption/Description | N | String | Transfer option description. |
./TransferOption/{Images} | Y | String | Transfer option images. |
./TransferOption/OriginName | N | String | Transfer option origin name |
./TransferOption/DestinationName | N | String | Transfer option destination name |
./TransferOption/Dates | N | - | Transfer option dates container |
./Dates/Date | N | - | Transfer option date. Contains the date and prices for that date of the option. |
./Date/@Start | N | Date | Start date range, Format: yyyy-MM-dd |
./Date/@RatePlanCode | N | String | Code that identifies the transfer option. Only for In transfers. |
./Dates/{Prices} | N | - | Prices |
./TransferOption/Luggage | Y | - | Luggage related information. |
./Luggage/@Capacity | N | Integer | Maximum number of bags that may be taken along with the transfer. |
./TransferResult/Origin | N | - | List of origins where the transfer deals |
./Origin/@Code | N | Integer | Basic information about a origin |
./Origin/@Type | N | String | Origin/destination type. Possible values: • ALO: Hotel • ARP: Airport • PRT: Port • EST: Train/bus stations • OTR: Other (streets, squares, etc...) |
./Origin/@Route | Y | String | (Only for InOut transfers) Indicates if it is an In or an Out Origin |
./Origin/Name | N | String | Zone name |
./Origin/Hotels | Y | - | Hotels that may be found within the origin. Mainly used on TransferAvailByHotel responses in order to represent the hotel you used to search availability for. |
./Hotels/Hotel | N | - | Specific hotel. |
./Hotel/@JPCode | N | String | JPCode of the hotel. |
./Hotel/Name | N | String | Name of the hotel. |
./TransferResult/Destinations | N | - | List of destinations where the transfer deals. |
./Destinations/Destination | N | - | Basic information about a destination. |
./Destination/@Code | N | Integer | Zone identifier. |
./Destination/@Type | N | String | Origin/destination type. Possible values: • ALO: Hotel • ARP: Airport • PRT: Port • EST: Train/bus stations • OTR: Other (streets, squares, etc...) |
./Destination/@Route | N | String | g (Only for InOut transfers) Indicates if it is an In or inOut Destination |
./Destination/Name | N | String | Zone name |
./Destination/Hotels | Y | - | Hotels that may be found within the destination. Mainly used on TransferAvailByHotel responses in order to represent the hotel you used to search availability for. |
./Hotels/Hotel | N | - | Specific hotel. |
./Hotel/@JPCode | N | String | JPCode of the hotel. |
./Hotel/Name | N | String | Name of the hotel. |
Returns a list of transfers, for earch transfer a code (named RatePlanCode) will be returned. The code will be necesary in order to continue with the booking flow.
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<TransferAvailResponse
xmlns="http://www.juniper.es/webservice/2007/">
<TransferAvailResult Url="http://xml-uat.bookingengine.es/" TimeStamp="2019-12-18T13:39:46.8947930+02:00" IntCode="pCzds/7edy8wT16OLA7vNYMtQj56mKZp10ke5hlKWRk=">
<Results>
<TransferResult>
<Transfer Start="2019-12-18" End="2019-12-18" Code="qZFWAak+fHxtnJYsV6cyfA==" Status="OK">
<TransferInfo>
<Name>Transfer Arrival</Name>
<Description>Transfer Arrival from terminal to hotel</Description>
<Images>
<Image>/transfer.jpg</Image>
</Images>
</TransferInfo>
<TransferOptions>
<TransferOption Start="2019-12-27T00:00:00" End="2019-09-27T00:00:00" Duration="P0DT00H00M0S">
<Name>Entrada individual Port Aventura</Name>
<Description>Entrada individual Port Aventura</Description>
<Images>
<Image>https://juniper-uat.bookingengine.es/images/upload_p//Transfers/taxi-pmi.jpg</Image>
</Images>
<OriginName>Aeropuerto Son Sant Joan</OriginName>
<DestinationName>Palma de Mallorca</DestinationName>
<Dates>
<Date Start="2019-12-27T00:00:00" RatePlanCode="UWrgci0DqsDwlKGJ02dos8tjDmYoeQRwSR3.................bO3RPtMatDZP2v3RMl6R1fE+iOoIimVs=">
<Prices>
<Price Type="S" Currency="USD">
<TotalFixAmounts Gross="25" Nett="23.75">
<Service Amount="25"/>
</TotalFixAmounts>
</Price>
</Prices>
</Date>
</Dates>
</TransferOption>
<TransferOption Start="2019-12-27T00:00:00" End="2019-12-27T00:00:00" Duration="P0DT00H00M0S">
<Name>Entrada individual Port Aventura</Name>
<Description>Entrada individual Port Aventura</Description>
<Images>
<Image>https://juniper-uat.bookingengine.es/images/upload_p//Transfers/taxi-pmi.jpg</Image>
</Images>
<OriginName>Aeropuerto Son Sant Joan</OriginName>
<DestinationName>Palma de Mallorca</DestinationName>
<Dates>
<Date Start="2019-12-27T00:00:00" RatePlanCode="UWrgci0DqsDwlKGJ02dos8tjDmYoeQRwSR3p.................0isobO3RPtMatDZP2v3RMl6R1fE+iOoIimVs=">
<Prices>
<Price Type="S" Currency="USD">
<TotalFixAmounts Gross="25" Nett="23.75">
<Service Amount="25"/>
</TotalFixAmounts>
</Price>
</Prices>
</Date>
</Dates>
</TransferOption>
</TransferOptions>
<Origins>
<Origin Code="46121" Type="ARP">
<Name>Son Sant Joan Airport</Name>
</Origin>
<Origin Code="54813" Type="ALO">
<Name>Palma de Mallorca</Name>
</Origin>
</Origins>
<Destinations>
<Destination Code="54813" Type="ALO">
<Name>Palma de Mallorca</Name>
</Destination>
<Destination Code="46121" Type="ARP">
<Name>Son Sant Joan Airport</Name>
</Destination>
</Destinations>
</Transfer>
</TransferResult>
</Results>
</TransferAvailResult>
</TransferAvailResponse>
</soap:Body>
</soap:Envelope>
There are some differences between an In and an InOut response:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<TransferAvailResponse xmlns="http://www.juniper.es/webservice/2007/">
<AvailabilityRS Url="http://xml-uat.bookingengine.es/" TimeStamp="2019-12-06T11:21:33.9549351+02:00" IntCode="nI00VUwliSurNiMIHqHBIXoRY7RoaP1JKmlFSFa/NV0=">
<Results>
<TransferResult Start="2019-12-12" End="2019-12-14" Code="djDfiSDIFjdlH+dfdjfIESJDFjf=" Status="OK" RatePlanCode="FNCohMzQ/ZYCuMMXO................................npJ6NycUKaRCYHEsd8QzFGWBWlpRNF8zWcw==">
<TransferInfo>
<Name>Transfer In, Transfer Out</Name>
<Description>Transfer In and Out description</Description>
<Images>
<Image>/transferIn.jpg</Image>
<Image>/transferOut.jpg</Image>
</Images>
</TransferInfo>
<TransferOptions>
<TransferOption Duration="P0DT00H30M0S" Route="In">
<Name>Transfer In, Option 1</Name>
<Images>
<Image>/transferIn.jpg</Image>
</Images>
<OriginName>Madrid-Barajas Aeropuerto</OriginName>
<DestinationName>Madrid</DestinationName>
<Dates>
<Date Start="2019-12-12T10:00:00"/>
</Dates>
</TransferOption>
<TransferOption Duration="P0DT00H00M0S" Route="Out">
<Name>Transfer Out, Option 3</Name>
<Description>Descripcion</Description>
<Images>
<Image>/transferOut.jpg</Image>
</Images>
<OriginName>Madrid</OriginName>
<DestinationName>Madrid-Barajas Aeropuerto</DestinationName>
<Dates>
<Date Start="2019-12-14T12:00:00"/>
</Dates>
</TransferOption>
</TransferOptions>
<Prices>
<Price Type="S" Currency="EUR">
<TotalFixAmounts Recommended="0" Gross="187.5" Nett="166.88">
<Service Amount="187.5"/>
<Commissions Included="true" Amount="20.62"/>
</TotalFixAmounts>
</Price>
</Prices>
<Origins>
<Origin Code="37457" Type="ARP" Route="In">
<Name>Madrid-Barajas Aeropuerto</Name>
</Origin>
<Origin Code="41050" Type="ALO" Route="Out">
<Name>Madrid</Name>
</Origin>
</Origins>
<Destinations>
<Destination Code="41050" Type="ALO" Route="In">
<Name>Madrid</Name>
</Destination>
<Destination Code="37457" Type="ARP" Route="Out">
<Name>Madrid-Barajas Aeropuerto</Name>
</Destination>
</Destinations>
</TransferResult>
</Results>
</AvailabilityRS>
</TransferAvailResponse>
</soap:Body>
</soap:Envelope>
Request to search a transfer product for a specific hotel. The following information is mandatory:
In addition, you can search an In-Out transfer by sending the following information:
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
@Version | N | String | Web Service version |
@Language | N | String | Language in which the response will be returned. Please, contact Juniper for available languages. Note: some suppliers only support one language. If your language is not supported, default language is returned. |
{Login} | N | - | Customer login to access the Web Service |
{Paxes} | N | - | Indicates the passenger information. Array of passangers. Fields necessary for this transaction: • @IdPax (Required) • Age (Optional for adults) |
TransferRequestByHotel | N | - | |
./TransferRequestByHotel/SearchSegmentsTransfers | N | - | Search properties |
./SearchSegmentsTransfers/SearchSegmenTransfers | N | - | Basic search properties |
./SearchSegmenTransfers/@HotelCode | N | String | Hotel code that will be searched, in this regard, it will be necesary to only specify either the OriginZone or the DestionationZone and specify the zone type of the remaining zone as ALO. |
./SearchSegmenTransfers/@Start | N | Date | Start date range Format: yyyy-MM-dd |
./SearchSegmenTransfers/@Hour | Y | DateTime | Start hour. Format: hh:mm:ss |
./SearchSegmenTransfers/@HourType | Y | String | Transfer start hour type. If not specified, the system will use the default hour type (PickUp). Possible values: - PickUp - Flight |
./SearchSegmenTransfers/@End | N | Date | End date range Format: yyyy-MM-dd In InOut transfers indicates the return date. |
./SearchSegmenTransfers/@HourEnd | Y | DateTime | End hour. Only for InOut transfers. Format: hh:mm:ss |
./SearchSegmenTransfers/@OriginZone | N | Integer | Origin area. |
./SearchSegmenTransfers/@DestinationZone | N | Integer | Destination area. |
./SearchSegmenTransfers/@Route | Y | String | Only for InOut transfers. Possible values: - InOut |
./SearchSegmenTransfers/Suppliers | Y | - | List of supplier codes that you may wish to filter availabilityfor. Please contact Juniper for further information. |
./Suppliers/Supplier | N | String | Supplier code |
./SearchSegmenTransfers/RelPaxesDist | - | Passengers’ distribution you wish to request | |
./RelPaxesDist/RelPaxDist | - | Distribution list. | |
./RelPaxDist/RelPaxes | - | Passengers list of this distribution | |
./RelPaxes/RelPax | - | Passenger | |
./RelPax/@IdPax | Integer | ||
./SearchSegmenTransfers/AdvancedOptions | - | Optional information | |
./AdvancedOptions/ShowBreakdownPrice | Y | Boolean | If the value is True, it will show the full price object with all the information about the prices. If not specified, False is assumed by default. |
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns="http://www.juniper.es/webservice/2007/">
<soapenv:Header/>
<soapenv:Body>
<TransferAvailByHotel>
<TransferAvailRQByHotel Version="1.1" Language="es">
<Login Password="pass" Email="user@mydomain.com"/>
<Paxes>
<Pax IdPax="1">
<Age>30</Age>
</Pax>
</Paxes>
<TransferRequestByHotel>
<SearchSegmentsTransfers>
<SearchSegmenTransfers HotelCode="9M4MpuPuDvoaPzJgh" Start="2019-12-22" End="2019-12-22" OriginZone="46121"/>
</SearchSegmentsTransfers>
<RelPaxesDist>
<RelPaxDist>
<RelPaxes>
<RelPax IdPax="1"/>
</RelPaxes>
</RelPaxDist>
</RelPaxesDist>
</TransferRequestByHotel>
</TransferAvailRQByHotel>
</TransferAvailByHotel>
</soapenv:Body>
</soapenv:Envelope>
The response will be the same as the on in the TransferAvail.
This is an optional request and lets us check the transfer availability before sending a TransferBookingRules request. Therefore, in order to send this request we need a RatePlanCode obtained from the availability response.
Additionaly, please keep in mind that this transaction cannot be used along InOut transfers due to NOT IMPLEMENTED related reasons.
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
@Version | N | String | Web Service version |
@Language | N | String | Language in which the response will be returned. Please, contact Juniper for available languages. Note: some suppliers only support one language. If your language is not supported, default language is returned. |
{Login} | N | - | Customer login to access the Web Service |
TransferCheckAvailRequest | N | - | Search properties container. |
./TransferCheckAvailRequest/TransferOption | N | - | - Search properties. |
./TransferCheckAvailRequest/@RatePlanCode | N | String | Code that identifies the transfer option. |
AdvancedOptions | Y | - | Optional information |
./AdvancedOptions/ShowBreakdownPrice | Y | Boolean | If the value is True, it will show the full price object with all the information about the prices. If not specified, False is assumed by default. |
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns="http://www.juniper.es/webservice/2007/">
<soap:Header/>
<soap:Body>
<TransferCheckAvail>
<TransferCheckAvailRQ Version="1.1" Language="es">
<Login Email="user@mydomain.com" Password="pass"/>
<TransferCheckAvailRequest>
<TransferOption RatePlanCode="0GsSNw+ZsevVqdIeOvpdT2SmbTl.........................dx9XoNl83CK4ClKRkxlp7J+k/BL4nA==" />
</TransferCheckAvailRequest>
</TransferCheckAvailRQ>
</TransferCheckAvail>
</soap:Body>
</soap:Envelope>
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
@Url | N | String | URL endpoint |
@TimeStamp | N | DateTime | Response date and time. Format: yyyy-MM-ddThh:mm:ss (UTC) |
@IntCode | N | String | Internal control code |
{Errors} | Y | - | Applicable errors. |
{Warnings} | Y | - | Applicable warnings. |
Results | N | - | List of transfers results |
./Results/TransferResult | N | - | Element containing the transfer information |
./TransferResult/@Start | N | Date | Start date range Format: yyyy-MM-dd |
./TransferResult/@End | Y | Date | End date range Format: yyyy-MM-dd |
./TransferResult/@Code | N | String | Transfer code |
./TransferResult/@Status | N | String | Transfer status: - OK: Available - RQ: On Request |
./TransferResult/@RatePlanCode | N | String | Code that identifies the transfer. Only for InOut transfers. |
./TransferResult/TransferInfo | - | ||
./TransferInfo/Name | N | String | Transfer name If InOut transfer: Transfer In Name + Transfer Out Name |
./TransferInfo/{Images} | N | String | Images URL |
./TransferInfo/Description | Y | String | Transfer description If InOut transfer: Transfer In Description + Transfer Out Description |
./TransferResult/TransferOptions | N | - | Transfer options container |
./TransferResult/TransferOption | N | - | Transfer option. Contains basic information like names of the zones, name of the option, prices... |
./TransferResult/@Duration | N | Duration | Length of the segment in minutes Format: P0DT7H50M0S (PDaysDTHoursHMinutesMSecondsS) |
./TransferResult/@Route | Y | String | Indicates if it is an In or an Out transfer. Only for InOut transfers |
./TransferResult/Name | N | String | Transfer option name. |
./TransferResult/Description | N | String | Transfer option description |
./TransferResult/OriginName | N | String | Transfer option origin name |
./TransferResult/DestinationName | N | String | Transfer option destination name. |
./TransferResult/{Images} | Y | String | Transfer option images |
./TransferResult/Dates | N | - | Transfer option dates container |
./TransferResult/Date | N | - | Transfer option date. Contains the date and prices for that date of the option. |
./TransferResult/@Start | N | Date | Start date range Format: yyyy-MM-dd |
./TransferResult/@RatePlanCode | N | String | Code that identifies the transfer option. Only for In transfers. |
./TransferResult/{Prices} | N | - | Prices |
./TransferResult/Origins | N | - | List of origins where the transfer deals. |
./Origins/Origin | N | - | Basic information about a origin |
./Origin/@Code | N | Integer | Zone identifier |
./Origin/@Type | N | String | Origin/destination type. Possible values: • ALO: Hotel • ARP: Airport • PRT: Port • EST: Train/bus stations • OTR: Other (streets, squares, etc...) |
./Origin/@Route | Y | String | Indicates if it is an In or an Out Origin. Only for InOut transfers |
./Origin/Name | N | String | Zone name |
./TransferResult/Destinations | N | - | List of destinations where the transfer deals |
./Destinations/Destination | N | - | Basic information about a destination. |
./Destination/@Code | N | Integer | Zone identifier |
./Destination/@Type | N | String | Origin/destination type. Possible values: • ALO: Hotel • ARP: Airport • PRT: Port • EST: Train/bus stations • OTR: Other (streets, squares, etc...) |
./Destination/@Route | Y | String | Indicates if it is an In or an Out Destination. Only for InOut transfers |
./Destination/Name | N | String | Zone name |
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<TransferCheckAvailResponse xmlns="http://www.juniper.es/webservice/2007/">
<TransferCheckAvailRS Url="http://xml-uat.bookingengine.es" TimeStamp="2019-12-18T13:39:46.8947930+02:00" IntCode="pCzds/7edy8wT16OLA7vNYMtQj56mKZp10ke5hlKWRk=">
<Warnings>
<Warning Code="warnPriceChanged">Price changed. Use the new RatePlanCode or BookingCode</Warning>
</Warnings>
<Results>
<TransferResult>
<Transfer Start="2019-12-18" End="2019-12-18" Code="qZFWAak+fHxtnJYsV6cyfA==" Status="OK">
<TransferInfo>
<Name>Transfer Arrival</Name>
<Description>Transfer Arrival from terminal to hotel</Description>
<Images>
<Image>https://juniper-uat.bookingengine.es/images/upload_p//Transfers/cache_46940620.png</Image>
</Images>
</TransferInfo>
<TransferOptions>
<TransferOption Duration="P0DT00H00M0S">
<Name>Aeropuerto2 (2 days)</Name>
<Description>Aeropuerto2 (2 days)</Description>
<Images>
<Image>https://juniper-uat.bookingengine.es/images/upload_p//Transfers/Jellyfish.jpg</Image>
</Images>
<OriginName>Aeropuerto Son Sant Joan</OriginName>
<DestinationName>Palma de Mallorca</DestinationName>
<Dates>
<Date Start="2019-12-28T00:00:00" RatePlanCode="xDv6Y3B4O701W0XfXmugpmB/0r5WxSgh9dffmsqbFL.....................MgwJMTvPb9Z7TUjIjvt5EqdVY">
<Prices>
<Price Type="S" Currency="USD">
<TotalFixAmounts Gross="422" Nett="404.56">
<Service Amount="422"/>
<ServiceTaxes Included="true" Amount="73.24"/>
</TotalFixAmounts>
<Breakdown>
<Concepts>
<Concept Type="BAS" Name="Base">
<Items>
<Item Amount="408" Date="2019-12-28" Quantity="1" Days="1" TtaCode="0"/>
<Item Amount="7" Date="2019-12-28" Quantity="2" Days="1" PaxType="ADU" TtaCode="0"/>
</Items>
</Concept>
</Concepts>
<Taxes>
<Tax Name="21% IVA" Value="21" IsFix="false" ByNight="false" Commissionable="false" Included="true">
<TtaCodes/>
<Total Base="348.76" Amount="73.24"/>
</Tax>
</Taxes>
<Commissions>
<Commission Value="5" IsFix="false" TaxAAmount="0">
<Total Base="422" Amount="17.44"/>
</Commission>
</Commissions>
</Breakdown>
</Price>
</Prices>
</Date>
</Dates>
</TransferOption>
</TransferOptions>
<Origins>
<Origin Code="46121" Type="ARP">
<Name>Son Sant Joan Airport</Name>
</Origin>
<Origin Code="54813" Type="ALO">
<Name>Palma de Mallorca</Name>
</Origin>
</Origins>
<Destinations>
<Destination Code="54813" Type="ALO">
<Name>Palma de Mallorca</Name>
</Destination>
<Destination Code="46121" Type="ARP">
<Name>Son Sant Joan Airport</Name>
</Destination>
</Destinations>
</Transfer>
</TransferResult>
</Results>
</TransferCheckAvailRS>
</TransferCheckAvailResponse>
</soap:Body>
</soap:Envelope>
This transaction is based on the “RatePlanCode”. It validates the transfer starting from the specified RatePlanCode, and returns a new code called “BookingCode” with which it is possible to book the transfer or finish its configuration with other TransferBookingRules transactions.
Besides the BookingCode needed to confirm the booking, this transaction will return:
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
@Version | N | String | Web Service version |
@Language | N | String | Language in which the response will be returned. Please, contact Juniper for available languages. Note: some suppliers only support one language. If your language is not supported, default language is returned. |
{Login} | N | - | Customer login to access the Web Service |
TransferBookingRulesRequest | N | - | Search properties. |
./TransferBookingRulesRequest/TransferRuleOption | N | - | |
./TransferRuleOption/@RatePlanCode | N | String | Code that identifies the transfer option |
AdvancedOptions | Y | - | Optional information |
./AdvancedOptions/PromoCode | Y | String | Promotional code that you would like to apply to the combination. • If found and applied, the promotion will not be included within the HotelResult price and, instead, be returned through its own AdjustmentElement. • If unsuccessful, the response will include a warnPromoNotApply warning. |
./PromoCode/@BinCode | Y | String | BinCode for which you would like to search for an applicable promotion. May be sent along with a PromoCode, case on which the system will look for the best possible promotion available within the two. |
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns="http://www.juniper.es/webservice/2007/">
<soap:Header/>
<soap:Body>
<TransferBookingRules>
<TransferBookingRulesRQ Version="1.1" Language="es">
<Login Email="user@mydomain.com" Password="pass"/>
<TransferBookingRuleRequest>
<TransferRuleOption RatePlanCode="l25oJUAe0+Lky8A8Tqm.......................24CAa/k8+PMKWtofe5fpGeL/f" />
</TransferBookingRuleRequest>
</TransferBookingRulesRQ>
</TransferBookingRules>
</soap:Body>
</soap:Envelope>
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
@Url | N | String | URL endpoint |
@TimeStamp | N | DateTime | Response date and time. Format: yyyy-MM-ddThh:mm:ss (UTC) |
@IntCode | N | String | Internal control code |
{Errors} | Y | - | Applicable errors. |
{Warnings} | Y | - | Applicable warnings. |
Results | N | - | List of transfers results |
./Results/TransferResult | N | - | Element containing the transfer information |
./TransferResult/@Start | N | Date | Start date range Format: yyyy-MM-dd |
./TransferResult/@End | Y | Date | End date range Format: yyyy-MM-dd |
./TransferResult/@Code | N | String | Transfer code. |
./TransferResult/@Status | N | String | Transfer status. Possibles values: • OK: Available • RQ: On request |
./TransferResult/BookingCode | N | String | Encrypted code that identifies the transfer with its option. |
./BookingCode/@ExpirationDate | N | DateTime | Shows the expiration date of the generated BookingCode. Format: yyyy-MM-ddThh:mm:ss (UTC) |
./TransferResult/{TransferRequiredFields} | N | - | Required fields for the booking process. Only the nodes and attributes that are returned in this structure will be mandatory, the rest of the information will be considered as optional. The structure matches with a TransferBooking request, refer to the mentioned for a list of all of the possible required fields |
./TransferResult/{CancellationPolicy} | Y | - | List of cancellation policies |
./TransferResult/{CancellationPolicyCost} | Y | - | List of cancellation policies. Resticted information, contract with Juniper for more information. |
./TransferResult/PriceInformation | N | - | Price information. |
./PriceInformation/TransferInfo | N | - | Basic transfer information |
./TransferInfo/Name | N | String | Transfer name |
./TransferInfo/{Images} | Y | String | Images URL |
./TransferInfo/Description | Y | String | Transfer description |
./PriceInformation/TransferOptions | N | - | Transfer options container. |
./TransferOptions/TransferOption | N | - | Transfer option. Contains basic information like names of the zones, name of the option, prices... |
./TransferOption/@Duration | N | Duration | Length of the segment in minutes Format: P0DT7H50M0S (PDaysDTHoursHMinutesMSecondsS) |
./TransferOption/@Route | Y | String | (Only for InOut transfers) Indicates if it is an In or InOut transfer. |
./TransferOption/Name | N | String | Transfer option name |
./TransferOption/Description | N | String | Transfer option description |
./TransferOption/{Images} | Y | String | Transfer option images |
./TransferOption/OriginName | N | String | Transfer option origin name |
./TransferOption/DestinationName | N | String | Transfer option destination name |
./TransferOption/Dates | N | String | Transfer option dates container. |
./Dates/Date | N | - | Transfer option date. Contains the date and prices for that date of the option. |
./Date/@Start | N | Date | Start date range Format: yyyy-MM-dd |
./Date/@RatePlanCode | N | String | Encoded data with Service combination |
./PriceInformation/{Prices} | N | - | Prices |
./PriceInformation/BillingOrganization | Y | String | Billing organization name. This information is restricted and will not be available by default. |
./BillingOrganization/@Code | Y | String | Billing organization code. |
./TransferResult/OptionalElements | Y | - | Optional elements of the transfer. |
./TransferResult/Origins | N | - | List of origins where the transfer deals. |
./Origins/Origin | N | - | Basic information about a origin. |
./Origin/@Code | N | Integer | Zone identifier |
./Origin/@Type | N | String | Origin/destination type. Possible values: • ALO: Hotel • ARP: Airport • PRT: Port • EST: Train/bus stations • OTR: Other (streets, squares, etc...) |
./Origin/@Route | Y | String | (Only for InOut Transfers) Indicates if it is an In or an Out Origin. |
./Origin/NameString | N | String | Zone name |
./TransferResult/Destinations | N | - | List of destinations where the transfer deals. |
./Destinations/Destination | N | - | Basic information about a destination |
./Destination/@Code | N | Integer | Zone identifier.String |
./Destination/@Type | N | String | Origin/destination type. Possible values: • ALO: Hotel • ARP: Airport • PRT: Port • EST: Train/bus stations • OTR: Other (streets, squares, etc...) |
./Destination/@Route | Y | String | (Only for InOut transfers) Indicates if it is an In or anOut Destination. |
./Destination/Name | N | String | Zone name |
./Results/{AdjustmentResult} | Y | - | Additional adjustment result. It will be available if, for example, you've manually added a PromoCode by using the AdvancedOption found within this same transaction request. |
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<TransferBookingRulesResponse xmlns="http://www.juniper.es/webservice/2007/">
<BookingRulesRS Url="http://xml-uat.bookingengine.es" TimeStamp="2019-12-30T11:45:25.2754621+02:00" IntCode="KdyG/VBMKpY+XqlFzKHRMCVosUlX7No9I8qlHh4SJXk=">
<Results>
<TransferResult Status="OK" Start="2019-12-22" End="2019-12-22" DestinationZone="17852" Code="T3NJSe2hC1etTapH5diJWg==">
<BookingCode ExpirationDate="2019-12-30T11:55:25.187457+02:00">+biXnXiPhojylLs02CO5nxns46AYoIW7/VUh61fLLqLJAXf056Q0jmzIC......................5MBmlf2DhE1lZ2J5kWcf2412XuYecGKw4hxag=</BookingCode>
<TransferRequiredFields>
<TransferBooking>
<Paxes>
<Pax IdPax="1">
<Name>Holder Name</Name>
<Surname>Holder Surname</Surname>
</Pax>
<Pax IdPax="2"/>
</Paxes>
<Holder>
<RelPax IdPax="1"/>
</Holder>
<Elements>
<TransferElement>
<BookingCode>+biXnXiPhojylLs02CO5nxns46AYoIW7/VUh61fLLqLJAXf056Q0jmzIC......................5MBmlf2DhE1lZ2J5kWcf2412XuYecGKw4hxag=</BookingCode>
<RelPaxesDist>
<RelPaxDist>
<RelPaxes>
<RelPax IdPax="1"/>
<RelPax IdPax="2"/>
</RelPaxes>
</RelPaxDist>
</RelPaxesDist>
<TransfersBookingInfo>
<TransferBookingInfo>
<Origin Type="ALO">
<MeetingPointInfo MeetingTime="2019-12-30T11:45:25.2084582+02:00">
<Name>MEETING POINT CODE</Name>
</MeetingPointInfo>
<FlightInfo Airport="PMI" FlightTime="2019-12-30T11:45:25.2084582+02:00" FlightNumber="XX1234"/>
</Origin>
<Destination Type="ALO">
<MeetingPointInfo MeetingTime="2019-12-30T11:45:25.2084582+02:00">
<Name>MEETING POINT CODE</Name>
</MeetingPointInfo>
<FlightInfo Airport="PMI" FlightTime="2019-12-30T11:45:25.2084582+02:00" FlightNumber="XX1234"/>
</Destination>
</TransferBookingInfo>
</TransfersBookingInfo>
</TransferElement>
</Elements>
</TransferBooking>
</TransferRequiredFields>
<CancellationPolicy CurrencyCode="USD">
<FirstDayCostCancellation Hour="19:00">2019-12-18</FirstDayCostCancellation>
<Description>Politica a 3 dias con gastos</Description>
<PolicyRules>
<Rule From="0" To="3" DateFrom="2019-12-18" DateFromHour="19:00" DateTo="2019-12-22" DateToHour="19:00" Type="V" FixedPrice="0" PercentPrice="100" Nights="0"/>
<Rule From="4" DateFrom="2019-12-30" DateFromHour="00:00" DateTo="2019-12-18" DateToHour="19:00" Type="V" FixedPrice="0" PercentPrice="0" Nights="0"/>
</PolicyRules>
</CancellationPolicy>
<PriceInformation>
<TransferInfo>
<Name>Transfer by GoriX ES - No tocar por FAVOR</Name>
<Description>Traslado de terminal a aloja / aloja terminal X1</Description>
<Images>
<Image>/Jellyfish.jpg</Image>
</Images>
</TransferInfo>
<TransferOptions>
<TransferOption Duration="P0DT00H30M0S">
<Name>Aeropuerto</Name>
<Description>Transfer</Description>
<Images>
<Image>/Jellyfish.jpg</Image>
</Images>
<OriginName>Aeropuerto Son Sant Joan</OriginName>
<DestinationName>Mallorca</DestinationName>
<Dates>
<Date Start="2019-12-22T00:00:00" RatePlanCode="LaVBVzyMLUZKLjABXtOhKOnTLzkZC+DKKDcr.....................a0wKtq5j1Zg+TeUuJaLauKKxsY2M1T2W">
<Prices>
<Price Type="S" Currency="USD">
<TotalFixAmounts Gross="714" Nett="684.5">
<Service Amount="714"/>
<ServiceTaxes Included="true" Amount="123.92"/>
</TotalFixAmounts>
</Price>
</Prices>
</Date>
</Dates>
</TransferOption>
</TransferOptions>
<Origins>
<Origin Code="47566" Type="ARP">
<Name>Aeropuerto Son Sant Joan</Name>
</Origin>
</Origins>
<Destinations>
<Destination Code="17852" Type="ALO">
<Name>Mallorca</Name>
</Destination>
</Destinations>
</PriceInformation>
</TransferResult>
</Results>
</BookingRulesRS>
</TransferBookingRulesResponse>
</soap:Body>
</soap:Envelope>
The BookingRules response for InOut transfers is similar to the In transfers, but:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<TransferBookingRulesResponse xmlns="http://www.juniper.es/webservice/2007/">
<BookingRulesRS Url="http://xml-uat.bookingengine.es" TimeStamp="2019-12-06T12:07:40.0208315+02:00" IntCode="AcOzjrGq2+M7tZLUpict0Kmq9Df2pXlQHBQRTzjDf4U=">
<Warnings>
<Warning Code="warnCheckNotPossible" Text="Price review is not possible"/>
</Warnings>
<Results>
<TransferResult Status="OK" Start="2019-12-12" End="2019-12-12" Code=" djDfiSDIFjdlH+dfdjfIESJDFjf=">
<BookingCode ExpirationDate="2019-12-06T12:17:39.977319+02:00">w6ksO27qghT2cjVUtM7FBZss3zRgIodRbLEcdO7t5oCRda2uf0y3i7B4/2Q0x7......................8VrQJKXZdMehiXGlyJxoXImNvr</BookingCode>
<TransferRequiredFields>
<TransferBooking>
<Paxes>
<Pax IdPax="1">
<Name>Holder Name</Name>
<Surname>Holder Surname</Surname>
<Age>30</Age>
</Pax>
<Pax IdPax="2">
<Age>30</Age>
</Pax>
</Paxes>
<Holder>
<RelPax IdPax="1"/>
</Holder>
<Elements>
<TransferElement>
<BookingCode>w6ksO27qghT2cjVUtM7FBZss3zRgIodRbLEcdO7t5oCRda2uf0y3i7B4/2Q0x7......................8VrQJKXZdMehiXGlyJxoXImNvr</BookingCode>
<RelPaxesDist>
<RelPaxDist>
<RelPaxes>
<RelPax IdPax="1"/>
<RelPax IdPax="2"/>
</RelPaxes>
</RelPaxDist>
</RelPaxesDist>
<TransfersBookingInfo>
<TransferBookingInfo Route="In">
<Origin Type="ARP">
<MeetingPointInfo MeetingTime="2019-12-06T12:07:40.0188259+02:00">
<Name>TERMINAL POINT NAME</Name>
</MeetingPointInfo>
<FlightInfo FlightTime="2019-12-06T12:07:40.0188259+02:00" FlightNumber="XX1234"/>
</Origin>
<Destination Type="ALO">
<MeetingPointInfo MeetingTime="2019-12-06T12:07:40.0188259+02:00">
<Name>MEETING POINT NAME</Name>
</MeetingPointInfo>
</Destination>
</TransferBookingInfo>
<TransferBookingInfo Route="Out">
<Origin Type="ALO">
<MeetingPointInfo MeetingTime="2019-12-06T12:07:40.0193274+02:00">
<Name>MEETING POINT NAME</Name>
</MeetingPointInfo>
</Origin>
<Destination Type="ARP">
<MeetingPointInfo MeetingTime="2019-12-06T12:07:40.0193274+02:00">
<Name>TERMINAL POINT NAME</Name>
</MeetingPointInfo>
<FlightInfo Airport="PMI" FlightTime="2019-12-06T12:07:40.0193274+02:00" FlightNumber="XX1234"/>
</Destination>
</TransferBookingInfo>
</TransfersBookingInfo>
</TransferElement>
</Elements>
</TransferBooking>
</TransferRequiredFields>
<PriceInformation>
<TransferInfo>
<Name>Transfer In, Transfer Out</Name>
<Description>Transfer In and Out description</Description>
<Images>
<Image>https://juniper-uat.bookingengine.es/images/upload_p/transferIn.jpg</Image>
<Image>/transferOut.jpg</Image>
</Images>
</TransferInfo>
<TransferOptions>
<TransferOption Duration="P0DT00H30M0S" Route="In">
<Name>Transfer In, Option 1</Name>
<Images>
<Image>https://juniper-uat.bookingengine.es/images/upload_p/transferIn.jpg</Image>
</Images>
<OriginName>Madrid-Barajas Aeropuerto</OriginName>
<DestinationName>Madrid</DestinationName>
<Dates>
<Date Start="2019-12-12T10:00:00"/>
</Dates>
</TransferOption>
<TransferOption Duration="P0DT00H00M0S" Route="Out">
<Name>Transfer Out, Option 3</Name>
<Description>Descripcion</Description>
<Images>
<Image>https://juniper-uat.bookingengine.es/images/upload_p/transferOut.jpg</Image>
</Images>
<OriginName>Madrid</OriginName>
<DestinationName>Madrid-Barajas Aeropuerto</DestinationName>
<Dates>
<Date Start="2019-12-14T12:00:00"/>
</Dates>
</TransferOption>
</TransferOptions>
<Prices>
<Price Type="S" Currency="EUR">
<TotalFixAmounts Recommended="0" Gross="187.5" Nett="166.88">
<Service Amount="187.5"/>
<Commissions Included="true" Amount="20.62"/>
</TotalFixAmounts>
</Price>
</Prices>
<Origins>
<Origin Code="37457" Type="ARP" Route="In">
<Name>Madrid-Barajas Aeropuerto</Name>
</Origin>
<Origin Code="41050" Type="ALO" Route="Out">
<Name>Madrid</Name>
</Origin>
</Origins>
<Destinations>
<Destination Code="41050" Type="ALO" Route="In">
<Name>Madrid</Name>
</Destination>
<Destination Code="37457" Type="ARP" Route="Out">
<Name>Madrid-Barajas Aeropuerto</Name>
</Destination>
</Destinations>
</PriceInformation>
</TransferResult>
</Results>
</BookingRulesRS>
</TransferBookingRulesResponse>
</soap:Body>
</soap:Envelope>
We book a transfer by a BookingCode which we got in the BookingRules Response.
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
@Version | N | String | Web Service version |
@Language | N | String | Language in which the response will be returned. Please, contact Juniper for available languages. Note: Some suppliers only support one language. If your language is not supported, default language is returned. |
@TimeStamp | Y | DateTime | This is an optional field that allows for you to send your own time stamp. Format: yyyy-MM-ddThh:mm:ss (UTC) |
{Login} | N | - | Customer login to access the Web Service |
{Paxes} | N | Indicates the passenger information. Array of passangers. Fields necessary for this transaction: • @IdPax (Required) • Age (Optional for adults |
|
ReservationLocator | Y | String | You may indicate an existing booking code to add a transfer to it. Remarcable points: • If no data of the main pax is sent, current data of the booking holder will be taken. • If some data of the main pax is sent, name and surname should match to the current boookingholder. The rest of the info will be updated. |
ExternalBookingReference | Y | String | Free text that may indicate its agency reference, booking code or any code you wish to identify the booking. It will not exceed 50 characters. |
PlatformBookingReference | Y | String | Free text field through which you may send the reference of your platform (ideally you should always prioritize the ExternalBookingReference but, if you would like to differentiate between your platform and the agency's final booking reference, send the agency one on ExternalBookingReference and yours here). Right now this is mainly a referential purposes, and cannot be used in order to search and/or identify bookings. |
FileNumber | Y | String | File No |
Agent | Y | - | If you are interested you may modify the name and email of the user that is making the booking. By default, the ones that are configured are used in the user. |
./Agent/@Name | N | String | Agent name |
./Agent/@Email | N | String | Agent email |
Holder | N | - | Main passenger |
./Holder/@IdPax | N | Integer | Main passenger identifier |
Comments | Y | - | List of comments |
./Comments/Comment | N | String | Comment |
./Comment/@Type | Y | String | Comment type. Possible values: • RES: General booking comments • INT: Internal booking comments. Kindly note that these comments are restricted, contact with Juniper for more information. Note that it is important to set the proper @Type or the comment won’t be properly saved. |
Elements | N | - | List of transfer elements |
./Elements/TransferElement | N | - | Transfer element |
./TransferElement/BookingCode | N | String | Encrypted code which identifies the transfer you want to book |
./TransferElement/RelPaxesDist | N | - | Passengers’ distribution you wish to request |
./RelPaxesDist/RelPaxes | N | - | Passengers list of this distribution. |
./RelPaxes/RelPax | N | - | Passenger |
./RelPax/@IdPax | N | Integer | Passenger Identifier. It should match with a Pax@IdPax |
./Elements/Comments | Y | - | List of comments |
./Comments/Comment | N | String | Comment |
./Comment/@Type | N | String | Comment type. Possible values: • ELE: Booking element comments • TRF: Transfer voucher comments Note that it is important to set the proper @Type or the comment won’t be properly saved. |
./Elements/TransferBookingInfo | N | - | Basic information of the transfer |
./TransferBookingInfo/@Route | Y | String | (Only for InOut Transfers) Indicates if it is an In or InOut Origin |
./TransferBookingInfo/Origin | N | ||
./Origin/@Code | N | - | Information of the transfer origin/destination |
./Origin/@Type | N | String | Origin/destination type. Possible values: • ALO: Hotel • ARP: Airport • PRT: Port • EST: Train/bus stations • OTR: Other (streets, squares, etc...) |
./Origin/@SuggestedTime | Y | String | Client suggested time. Format: HH:mm |
./Origin/MeetingPointInfo | N | - | Information about the meeting point. It contains data of the transfer type of zone |
./MeetingPointInfo/@Code | N | String | Meeting point code. Mandatory when the client uses the groundhandling module. If not, it accepts 000. When setting a incorrect meeting point code, the system will supply you with a JP_TRANSFER_INVALID_MEETING_POINT error response. These codes may be retrieved from the MeetingPointList transaction. |
./MeetingPointInfo/@MeetingTime | N | DateTime | Pickup date and time at the meeting point |
./MeetingPointInfo/Name | Y | String | Name of the hotel or zone of the meeting point |
./MeetingPointInfo/Address | Y | String | Meeting point address |
./MeetingPointInfo/PostalCode | Y | String | Post code of the zone in whihc the meeting point is located |
./Origin/{HotelService} | Y | - | Optional information about the selected hotel of the transfer |
./Origin/ShipInfo | Y | - | Basic information about the type of zone PRT (port) |
./ShipInfo/Name | N | String | Name of the ship, cruise or ferry |
./ShipInfo/Company | N | String | Name of the shipping company |
./Origin/TrainInfo | Y | - | Basic information about the type of zone EST (bus/train station) |
./TrainInfo/Name | N | String | Name of the train, bus or station service |
./TrainInfo/StationInfo | N | String | Name of the bus/train station |
./StationInfo/@Code | N | String | Station code |
./Origin/FlightInfo | Y | String | Basic information about the flight. Flight number. Mandatory for the type of zone ARP (airport) |
./FlightInfo/@Airport | N | String | IATA code of the airport from flight number |
./FlightInfo/@FlightTime | N | Time | Departure or arrival time of the flight |
./FlightInfo/@FlightNumber | N | String | Flight number. This field has a maximum length of 7characters. |
./FlightInfo/@TimeZone | Y | String | Flight time TimeZone. In this property, you will be able to specify the TimeZone on which your @FlightTime is specified. |
./Origin/TerminalDeparture | Y | String | Name of the departure terminal |
./Origin/TerminalArrival | Y | String | Name of the arrival terminal |
./TransferBookingInfo/Destination | N | ||
./Destination/@Code | N | - | Information of the transfer origin/destination |
./Destination/@Type | N | String | Origin/destination type. Possible values: • ALO: Hotel • ARP: Airport • PRT: Port • EST: Train/bus stations • OTR: Other (streets, squares, etc...) |
./Destination/MeetingPointInfo | N | - | Information about the meeting point. It contains data of the transfer type of zone |
./MeetingPointInfo/@Code | N | String | Meeting point code. Mandatory when the client uses the groundhandling module. If not, it accepts 000. When setting a incorrect meeting point code, the system will supply you with a JP_TRANSFER_INVALID_MEETING_POINT error response. These codes may be retrieved from the MeetingPointList transaction. |
./MeetingPointInfo/@MeetingTime | N | DateTime | Pickup date and time at the meeting point |
./MeetingPointInfo/Name | Y | String | Name of the hotel or zone of the meeting point |
./MeetingPointInfo/Address | Y | String | Meeting point address |
./MeetingPointInfo/PostalCode | Y | String | Post code of the zone in whihc the meeting point is located |
./Destination/{HotelService} | Y | - | Optional information about the selected hotel of the transfer |
./Destination/ShipInfo | Y | - | Basic information about the type of zone PRT (port) |
./ShipInfo/Name | N | String | Name of the ship, cruise or ferry |
./ShipInfo/Company | N | String | Name of the shipping company |
./Destination/TrainInfo | Y | - | Basic information about the type of zone EST (bus/train station) |
./TrainInfo/Name | N | String | Name of the train, bus or station service |
./TrainInfo/StationInfo | N | String | Name of the bus/train station |
./StationInfo/@Code | N | String | Station code |
./Destination/FlightInfo | Y | String | Basic information about the flight. Flight number. Mandatory for the type of zone ARP (airport) |
./FlightInfo/@Airport | N | String | IATA code of the airport from flight number |
./FlightInfo/@FlightTime | N | Time | Departure or arrival time of the flight |
./FlightInfo/@FlightNumber | N | String | Flight number. This field has a maximum length of 7characters. |
./FlightInfo/@TimeZone | Y | String | Flight time TimeZone. In this property, you will be able to specify the TimeZone on which your @FlightTime is specified. |
./Destination/TerminalDeparture | Y | String | Name of the departure terminal |
./Destination/TerminalArrival | Y | String | Name of the arrival terminal |
./TransferBookingInfo/Language | Y | Language | |
./Language/@Code | N | String | Language code |
./TransferBookingInfo/{AdditionalRequiredFields} | Y | - | Additional required fields of the transfer. NOT IMPLEMENTED |
AdvancedOptions | Y | - | Optional information |
./AdvancedOptions/ShowBreakdownPrice | Y | Boolean | If the value is True, it will show the full price object with all the information about the prices. If not specified, False is assumed by default. |
./AdvancedOptions/SendMailTo | Y | String | If included with the ALL value a booking confirmation email will be sent to your email account. |
./AdvancedOptions/BookingPaid | Y | String | Parameter meant for internal use only. |
<soapenv:Envelope xmlns:soapenv = "http://schemas.xmlsoap.org/soap/envelope/" xmlns = "http://www.juniper.es/webservice/2007/">
<soapenv:Header/>
<soapenv:Body>
<TransferBooking>
<TransferBookingRQ Version = "1" Language = "es">
<Login Email = "user@mydomain.com" Password = "pass"/>
<Paxes>
<Pax IdPax = "1">
<Name>Holder Name</Name>
<Surname>Holder Surname</Surname>
<Age>30</Age>
</Pax>
</Paxes>
<Holder>
<RelPax IdPax = "1"/>
</Holder>
<ExternalBookingReference>EXT_REFERENCE_123</ExternalBookingReference>
<Comments>
<Comment Type = "RES">General booking comments</Comment>
</Comments>
<Elements>
<TransferElement>
<BookingCode>/nV50gUcfbZueTEQ6G+mlIg5/crSaEwmG7dyxOUFGNH7QOzONlwINwc...</BookingCode>
<RelPaxesDist>
<RelPaxDist>
<RelPaxes>
<RelPax IdPax = "1"/>
</RelPaxes>
</RelPaxDist>
</RelPaxesDist>
<TransfersBookingInfo>
<TransferBookingInfo>
<Origin Type = "ALO">
<MeetingPointInfo Code = "000" MeetingTime = "2022-12-12T10:00:00">
<Name>WHERE TO MEET</Name>
</MeetingPointInfo>
</Origin>
<Destination Type = "ALO">
<MeetingPointInfo Code = "000" MeetingTime = "2022-12-12T10:45:00">
<Name>WHERE TO LEAVE</Name>
</MeetingPointInfo>
</Destination>
</TransferBookingInfo>
</TransfersBookingInfo>
</TransferElement>
</Elements>
</TransferBookingRQ>
</TransferBooking>
</soapenv:Body>
</soapenv:Envelope>
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
@Url | N | String | URL endpoint |
@TimeStamp | N | DateTime | Response date and time. Format: yyyy-MM-ddThh:mm:ss (UTC) |
@IntCode | N | String | Internal control code |
{Errors} | Y | - | Applicable errors. |
{Warnings} | Y | - | Applicable warnings. |
Reservations | N | List of reservations | |
./Reservations/Reservation | N | - | Reservation item |
./Reservation/@Locator | N | String | Booking code that you should use to check or cancel the booking. Ie: MSZB3S |
./Reservation/@Status | N | String | Booking confirmation status. Possible values are: •PAG – Booking confirmed and paid •CON – Booking confirmed •CAN or CAC – Booking cancelled •PRE or PDI – Booking on request •QUO – Quotation (this is a similar status to on request that will always be received when your account requires for the payment of the booking through the WebService) It is very important to check the Status attribute in order to verify the booking is confirmed. |
./Reservation/ExternalBookingReference | N | String | Free text that may indicate its agency reference, booking code or any code you wish to identify the booking. It will not exceed 50 characters. |
./Reservation/Holder | N | String | Booking holder or mail passenger |
./Holder/RelPax | N | ||
./RelPax/@IdPax | N | Integer | Holder ID |
./Reservation/{Paxes} | N | - | Passenger data. Mandatory passenger data will be filled in with random data. |
./Reservation/Comments | Y | - | List of comments |
./Comments/Comment | Y | String | Comment |
./Comment/@Type | Y | String | Comment type. Possible values: • RES: General booking comments • INT: Internal booking comments |
./Reservation/Payment | Y | - | Payment information. |
./Payment/@Type | N | String | Payment type code. Possivle values: •C: Credit •B: Bank •T: POS (Point of sale) |
./Reservation/Items | N | List of items | |
./Items/TransferItem | N | Transfer ítem Important note for InOut bookings: the response returns two items, one for each route. |
|
./TransferItem/@ItemId | N | Integer | ID of the booking Element |
./TransferItem/@Status | N | String | Item status. Possible values are: • OK or AV - Available • RQ - On request • CA - Cancelled |
./TransferItem/@Start | N | Date | Starting date of the transfer Format: yyyy-MM-dd |
./TransferItem/@End | N | Date | Ending date of the transfer Format: yyyy-MM-dd |
./TransferItem/@Code | Y | String | Transfer code |
./TransferItem/ExternalInfo | Y | - | External information. Restricted information that depends on a permission. |
./ExternalInfo/ExternalLocator | Y | String | Supplier locator |
./TransferItem/{Prices} | N | - | Price |
./TransferItem/CancellationPolicy | N | - | Cancellation policies |
./CancellationPolicy/Description | N | String | Cancellation policies description |
./TransferItem/Comments | Y | - | List of item-wise comments. |
./Comments/Comment | N | String | Comment text. |
./Comment/@Type | Y | String | Comment type. Possible values: • ELE: Item line comments • TRF: Comments from the provider/transfer voucher comments. |
./TransferItem/TransferInfo | N | - | Transfer basic information |
./TransferInfo/Name | N | String | Transfer name |
./TransferInfo/Description | Y | String | Transfer description |
./TransferInfo/{Images} | Y | String | Images URL |
./TransferItem/TransferOptions | N | - | Transfer options container |
./TransferOptions/TransferOption | N | - | Transfer option. Refer to the TransferAvail response for the full specs of this node. |
./TransferOption/TransferBookingInfo | N | - | Basic information of the transfer. This is the information that may be required for you to comply on the TransferBookingRules response. |
./TransferBookingInfo/Origin | N | - | Information of the transfer origin. |
./Origin/@Code | N | Integer | Zone code of the origin/destination |
./Origin/@Type | N | String | Origin/destination type. Possible values: • ALO: Hotel • ARP: Airport • PRT: Port • EST: Train/bus stations • OTR: Other (streets, squares, etc...) |
./Origin/@SuggestedTime | Y | String | Client suggested time. Format: HH:mm |
./Origin/MeetingPointInfo | N | - | Information about the meeting point. It contains data of the transfer type of zone |
./MeetingPointInfo/@Code | N | String | Meeting point code |
./MeetingPointInfo/@MeetingTime | N | DateTime | Pickup date and time at the meeting point |
./MeetingPointInfo/Name | Y | String | Name of the hotel or zone of the meeting point |
./MeetingPointInfo/Address | Y | String | Meeting point address |
./MeetingPointInfo/PostalCode | Y | String | Post code of the zone in which the meeting point is located |
./Origin/{HotelService} | Y | - | Optional information about the selected hotel of the transfer. |
./Origin/ShipInfo | Y | - | - Basic information about the type of zone PRT (port) |
./ShipInfo/Name | N | String | Name of the ship, cruise or ferry |
./ShipInfo/Company | N | String | Name of the shipping company |
./Origin/TrainInfo | Y | - | Basic information about the type of zone EST (bus/trainstation) |
./TrainInfo/Name | N | String | Name of the train, bus or station service |
./TrainInfo/StationInfo | N | String | Name of the bus/train station |
./StationInfo/@Code | N | String | Station code |
./Origin/FlightInfo | Y | String | Basic information about the flight. Flight number. Mandatory for the type of zone ARP (airport) |
./FlightInfo/@Airport | N | String | IATA code of the airport from flight number |
./FlightInfo/@FlightTime | N | Time | me Departure or arrival time of the flight |
./FlightInfo/@FlightNumber | N | String | Flight Number |
./FlightInfo/@TimeZone | Y | String | Flight time TimeZone. TimeZone on which the @FlightTime is specified. |
./Origin/TerminalDeparture | Y | String | Name of the departure terminal |
./Origin/TerminalArrival | Y | String | Name of the arrival terminal |
./TransferBookingInfo/Destination | N | - | Information of the transfer destination. |
./Destination/@Code | N | Integer | Zone code of the origin/destination |
./Destination/@Type | N | String | Origin/destination type. Possible values: • ALO: Hotel • ARP: Airport • PRT: Port • EST: Train/bus stations • OTR: Other (streets, squares, etc...) |
./Destination/MeetingPointInfo | N | - | Information about the meeting point. It contains data of the transfer type of zone |
./MeetingPointInfo/@Code | N | String | Meeting point code |
./MeetingPointInfo/@MeetingTime | N | DateTime | Pickup date and time at the meeting point |
./MeetingPointInfo/Name | Y | String | Name of the hotel or zone of the meeting point |
./MeetingPointInfo/Address | Y | String | Meeting point address |
./MeetingPointInfo/PostalCode | Y | String | Post code of the zone in which the meeting point is located |
./Destination/{HotelService} | Y | - | Optional information about the selected hotel of the transfer. |
./Destination/ShipInfo | Y | - | - Basic information about the type of zone PRT (port) |
./ShipInfo/Name | N | String | Name of the ship, cruise or ferry |
./ShipInfo/Company | N | String | Name of the shipping company |
./Destination/TrainInfo | Y | - | Basic information about the type of zone EST (bus/trainstation) |
./TrainInfo/Name | N | String | Name of the train, bus or station service |
./TrainInfo/StationInfo | N | String | Name of the bus/train station |
./StationInfo/@Code | N | String | Station code |
./Destination/FlightInfo | Y | String | Basic information about the flight. Flight number. Mandatory for the type of zone ARP (airport) |
./FlightInfo/@Airport | N | String | IATA code of the airport from flight number |
./FlightInfo/@FlightTime | N | Time | me Departure or arrival time of the flight |
./FlightInfo/@FlightNumber | N | String | Flight Number |
./FlightInfo/@TimeZone | Y | String | Flight time TimeZone. TimeZone on which the @FlightTime is specified. |
./Destination/TerminalDeparture | Y | String | Name of the departure terminal |
./Destination/TerminalArrival | Y | String | Name of the arrival terminal |
./TransferItem/RelPaxes | N | - | |
./RelPaxes/Relpax | N | - | |
./RelPax/@IdPax | N | Integer | It focuses on the passenger it refers to. |
./Items/{AdjustmentItem} | Y | - | Additional adjustment item. It will be available if, for example, you've manually added a PromoCode on the previous BookingRules step. |
<soap:Envelope xmlns:soap = "http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd = "http://www.w3.org/2001/XMLSchema">
<soap:Body>
<TransferBookingResponse xmlns = "http://www.juniper.es/webservice/2007/">
<BookingRS Url = "http://xml-uat.bookingengine.es" TimeStamp = "2022-07-27T16:54:10.3152509+02:00" IntCode = "eC8BbyReqnmkv5cMMc9o0bxOUx1uTF06kZ5mX+ZvnPM=">
<Reservations>
<Reservation Locator = "4M3K24" Status = "PAG" Language = "es">
<ExternalBookingReference>EXT_REFERENCE_123</ExternalBookingReference>
<Holder>
<RelPax IdPax = "2"/>
</Holder>
<Paxes>
<Pax IdPax = "1">
<Name>Holder Name</Name>
<Surname>Holder Surname</Surname>
<Age>30</Age>
</Pax>
<Pax IdPax = "2">
<Name>Holder Name</Name>
<Surname>Holder Surname</Surname>
<Age>30</Age>
<Nationality>ES</Nationality>
</Pax>
</Paxes>
<Comments>
<Comment Type = "RES">General booking comments</Comment>
</Comments>
<AgenciesData>
<AgencyData>
<ReferencedAgency>false</ReferencedAgency>
<AgencyCode>280</AgencyCode>
<AgencyName>Juniper (Integrador)</AgencyName>
<AgencyHandledBy>Agente XML</AgencyHandledBy>
<AgencyEmail>noreply@ejuniper.com</AgencyEmail>
<AgencyReference>EXT_REFERENCE_123</AgencyReference>
</AgencyData>
<AgencyData>
<ReferencedAgency>true</ReferencedAgency>
<AgencyCode>0</AgencyCode>
</AgencyData>
</AgenciesData>
<Items>
<TransferItem ItemId = "386261" Status = "OK" Start = "2022-12-12" End = "2022-12-12" Code = "HmI+0kDMRhu0c9ysAbhvxQ==">
<Prices>
<Price Type = "S" Currency = "EUR">
<TotalFixAmounts Gross = "21.95" Nett = "21.95">
<Service Amount = "21.95"/>
</TotalFixAmounts>
</Price>
<Price Type = "C" Currency = "USD">
<TotalFixAmounts Gross = "20" Nett = "20">
<Service Amount = "20"/>
<Commissions Included = "true" Amount = "0"/>
</TotalFixAmounts>
</Price>
</Prices>
<TransferInfo>
<Name>PMI Airport to center</Name>
<Description>Descripcion de traslado de Aeropuerto Palma de Mallorca al centro</Description>
<Images>
<Image Featured = "true">
<FileName>https://juniper-uat.bookingengine.es/images/upload_p/Transfers/cache_46940620.png</FileName>
</Image>
</Images>
</TransferInfo>
<TransferOptions>
<TransferOption Code = "7" Duration = "P0DT00H45M0S">
<Name>Taxi</Name>
<OccupancyAllowed Children = "false"/>
<Images>
<Image>https://juniper-uat.bookingengine.es/images/upload_p/Transfers/taxi-pmi.jpg</Image>
</Images>
<OriginName>Aeropuerto de Palma de Mallorca</OriginName>
<DestinationName>Palma de Mallorca</DestinationName>
<Dates>
<Date Start = "2022-12-12T10:00:00" End = "2022-12-12T10:45:00" RatePlanCode = "AxqgIvnsoMiJdBzhqSMRSLO+09YV8KReHsVv++6NiTFh9c/Heyw8z9Ps6JrGqXbPngKgnjCj77YWuI1iABEyEhIy/6i057+5orqXPY8fD55uVVYCtBuJ/aPMnRcKY+aOjMpjw86U9Yj7aC51g2xd9OJ3flZBP3Kb//Zszi7Y0EWvrE5PcvDrT3UYHb0VBVG3psipDpE3ph9MmojUKrZKbQ==">
<Prices>
<Price Type = "S" Currency = "EUR">
<TotalFixAmounts Recommended = "0" Gross = "21.95" Nett = "21.95">
<Service Amount = "21.95"/>
</TotalFixAmounts>
</Price>
<Price Type = "C" Currency = "USD">
<TotalFixAmounts Gross = "20" Nett = "20">
<Service Amount = "20"/>
</TotalFixAmounts>
</Price>
</Prices>
</Date>
</Dates>
<TransferBookingInfo>
<Origin Code = "15011" Type = "ALO">
<MeetingPointInfo MeetingTime = "2022-12-12T10:00:00">
<Address>WHERE TO MEET</Address>
<PostalCode/>
</MeetingPointInfo>
</Origin>
<Destination Code = "15011" Type = "ALO">
<MeetingPointInfo MeetingTime = "2022-12-12T10:45:00">
<Name>WHERE TO LEAVE</Name>
<Address/>
<PostalCode/>
</MeetingPointInfo>
</Destination>
</TransferBookingInfo>
</TransferOption>
</TransferOptions>
<RelPaxes>
<RelPax IdPax = "1"/>
</RelPaxes>
</TransferItem>
</Items>
</Reservation>
</Reservations>
</BookingRS>
</TransferBookingResponse>
</soap:Body>
</soap:Envelope>
Obtaining a booking by its reference code. The returned information is the same as in Booking Method. Please see the respective Booking method for further information.
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
ReadBooking | N | - | - |
@Version | N | String | Web Service version |
@Language | N | String | Language in which the response will be returned. Please, contact Juniper for available languages |
{Login} | N | - | Customer login to access the Web Service |
ReadRequest | - | - | - |
./ReadRequest/@ReservationLocator | N | - | Booking code |
AdvancedOptions | Y | - | Optional information |
./AdvancedOptions/ShowBreakdownPrice | Y | Boolean | If the value is True, it will show the full price object with all the information about the prices. If not specified, False is assumed by default. |
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns="http://www.juniper.es/webservice/2007/">
<soapenv:Header/>
<soapenv:Body>
<ReadBooking>
<ReadRQ Version="1.1" Language="en">
<Login Email="user@mydomain.com" Password="pass"/>
<ReadRequest ReservationLocator="CSY243"/>
</ReadRQ>
</ReadBooking>
</soapenv:Body>
</soapenv:Envelope>
It returns the same information as the response of TransferBooking. For further information regarding the parameters, please review the section related to the response of TransferBooking transaction
This transaction allows for the cancellation of a booking, either to the booking as a whole or to specifically one of its services/items. Through the use of the @OnlyCancellationFees property it will also allow you to retrieve the cancellation costs of such booking without needing to actually cancel the same, whenever available (as it is important to note that this information could be unavailable and, on those cases, you will need to rely on the available cancellation policies).
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
@Version | N | String | Web Service version |
@Language | N | String | Language in which the response will be returned. Please, contact Juniper for available languages. |
{Login} | N | - | Customer login to access the Web Service |
CancelRequest | N | - | - |
./CancelRequest/@ReservationLocator | N | String | Booking code. If not used along an @ItemId will allow for the cancellation of the booking as a whole. |
./CancelRequest/@ItemId | Y | Integer | Booking line (service item) identifier. If it is the only/latest available item of a booking, canceling the locator as a whole will be necessary. |
./CancelRequest/@OnlyCancellationFees | Y | Boolean | Allows for the retrieval of the available cancellation costs of the booking. If included, the booking will not be cancelled. |
AdvancedOptions | Y | - | Optional parameters. |
./AdvancedOptions/SendMailTo | Y | String | If included with the ALL value, a booking confirmation email will be sent to your email account. |
./AdvancedOptions/ShowBreakdownPrice | Y | Boolean | If the value is true, it will show the full price object with all the information about the prices. If not specified, false is assumed by default. |
./AdvancedOptions/ShowCancelBreakdown | Y | Boolean | If the value is true and if the information is available, it will include the cancellation cost breakdown. |
Booking locator cancellation
<soapenv:Envelope xmlns:soapenv = "http://schemas.xmlsoap.org/soap/envelope/" xmlns = "http://www.juniper.es/webservice/2007/">
<soapenv:Header/>
<soapenv:Body>
<CancelBooking>
<CancelRQ Version = "1.1" Language = "en">
<Login Email = "user@mydomain.com" Password = "pass"/>
<CancelRequest ReservationLocator = "WZS1N6"/>
</CancelRQ>
</CancelBooking>
</soapenv:Body>
</soapenv:Envelope>
Retrieval of cancellation costs
<soapenv:Envelope xmlns:soapenv = "http://schemas.xmlsoap.org/soap/envelope/" xmlns = "http://www.juniper.es/webservice/2007/">
<soapenv:Header/>
<soapenv:Body>
<CancelBooking>
<CancelRQ Version = "1.1" Language = "en">
<Login Email = "user@mydomain.com" Password = "pass"/>
<CancelRequest ReservationLocator = "WZS1N6" OnlyCancellationFees = "true"/>
</CancelRQ>
</CancelBooking>
</soapenv:Body>
</soapenv:Envelope>
Aside from the CancelInfo object (which we detail below), if the cancellation request is successful, this response will return the same structure that the response of the TransferBooking request has. Kindly refer to the TransferBooking request for the specifications of the nodes and properties from this transaction.
In addition to this, it is very important to focus on the warnings from the response of this transaction, as they will tell you if the cancellation cost could or could not be retrieved and if the reservation was or was not canceled, as in the below list of examples:
Important
In the event of canceling the reservation but getting a response on which the cancellation cost could not be calculated (warnCancelledAndCancellationNotCalculated), it is important to never assume that this reservation will not involve any costs and contacting with your Juniper supplier will be necessary.
Object that details the cancellation costs of a reservations, if any. We may refer to this object as: {CancelInfo}
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
BookingCodeState | Y | String | Status on which the booking has been left. Refer to the booking confirmation response, for a list of all of the possible statuses. |
BookingCancelCost | Y | Double | Cancellation cost of the reservation. |
BookingCancelCostCurrency | Y | String | Cancellation cost currency of the reservation. |
BreakDown | Y | - | Cancellation cost breakdown of the reservation. Refer to the breakdown node from the {Prices} object, for further information on its specification. |
Actual booking cancellation
<soap:Envelope xmlns:soap = "http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd = "http://www.w3.org/2001/XMLSchema">
<soap:Body>
<CancelBookingResponse xmlns = "http://www.juniper.es/webservice/2007/">
<BookingRS Url = "http://xml-uat.bookingengine.es" TimeStamp = "2022-11-30T11:45:24.7817582+01:00" IntCode = "JObE7JM8D9DJtKzKcFWsGf8a6DLVaQ+5cwGmNKAYuc0=">
<Warnings>
<Warning Code = "warnCancelledAndCancellationCostRetrieved" Text = "Cancellation cost retrieved. Reservation was cancelled."/>
<CancelInfo>
<BookingCodeState>CaC</BookingCodeState>
<BookingCancelCost>0</BookingCancelCost>
<BookingCancelCostCurrency>EUR</BookingCancelCostCurrency>
</CancelInfo>
</Warnings>
<Reservations>
<Reservation Locator = "WZS1N6" Status = "CAC" Language = "en">
<ExternalBookingReference>YOUR_OWN_REFERENCE</ExternalBookingReference>
<Holder>
<RelPax IdPax = "4"/>
</Holder>
<Paxes>
<Pax IdPax = "2">
<Name>Passenger Name</Name>
<Surname>Passenger Surname</Surname>
<Age>30</Age>
</Pax>
<Pax IdPax = "3">
<Name>Passenger Name 2</Name>
<Surname>Passenger Surname 2</Surname>
<Age>30</Age>
</Pax>
<Pax IdPax = "4">
<Name>Holder Name</Name>
<Surname>Holder Surname</Surname>
<Age>30</Age>
<Nationality>ES</Nationality>
</Pax>
</Paxes>
<Comments>
<Comment Type = "RES">GENERAL BOOKING COMMENTS</Comment>
</Comments>
<AgenciesData>
<AgencyData>
<ReferencedAgency>false</ReferencedAgency>
<AgencyCode>280</AgencyCode>
<AgencyName>Juniper (Integrador)</AgencyName>
<AgencyHandledBy>Agente XML</AgencyHandledBy>
<AgencyEmail>replacement@test.com</AgencyEmail>
<AgencyReference>YOUR_OWN_REFERENCE</AgencyReference>
</AgencyData>
<AgencyData>
<ReferencedAgency>true</ReferencedAgency>
<AgencyCode>0</AgencyCode>
</AgencyData>
</AgenciesData>
<Items>
<TransferItem ItemId = "368017" Status = "CA" Start = "2023-09-03" End = "2023-09-05">...</TransferItem>
</Items>
<Payment Type = "C"/>
</Reservation>
</Reservations>
</BookingRS>
</CancelBookingResponse>
</soap:Body>
</soap:Envelope>
Cancellation cost retrieval
<soap:Envelope xmlns:soap = "http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd = "http://www.w3.org/2001/XMLSchema">
<soap:Body>
<CancelBookingResponse xmlns = "http://www.juniper.es/webservice/2007/">
<BookingRS Url = "http://xml-uat.bookingengine.es" TimeStamp = "2022-11-30T11:36:47.3924763+01:00" IntCode = "dyPTSrKuEYclahby39DdPTgHCqIuVWcSjmp8IrvX2c4=">
<Warnings>
<Warning Code = "warnCancellationCostRetrieved" Text = "Cancellation cost retrieved. Reservation was not cancelled."/>
<CancelInfo>
<BookingCodeState>Pag</BookingCodeState>
<BookingCancelCost>0</BookingCancelCost>
<BookingCancelCostCurrency>EUR</BookingCancelCostCurrency>
<BreakDown>
<Concepts>
<Concept Name = "Transfer Reservation (03/09/2023 - 05/09/2023)">
<Items>
<Item Amount = "0"/>
</Items>
</Concept>
</Concepts>
</BreakDown>
</CancelInfo>
</Warnings>
</BookingRS>
</CancelBookingResponse>
</soap:Body>
</soap:Envelope>
The modification transactions allow you to modify transfer bookings without the need of cancelling and creating them again. You will be able to modify the following information:
At a booking level:
At a transfer level (TransferItem):
Important note:
It is important to keep in mind that you will not always be able to modify all of this information. This will depend on the transfer itself as they may only allow some of these modifications, or even it will not be allowed.
The bookings that have cancellation charges cannot be modified. In order to modify them you will have to cancel them, assume the cancellation charges and create a new one on your end.
The modification process consists of two steps:
TransferModify: This transaction allows you to check if the modifications that you want to perform are possible without the need of actually performing them in the process. In the transaction you will have to indicate the information that you want to modify so that on the response you will get:
TransferConfirmModify: After checking that the modifications are possible with the TransferModify transaction, this transaction will allow you to actually confirm such modifications. If the TransferModify transaction gave you one or more @ModifyCode you will have to choose and send one in this transaction.
In this first step you will have to specify the information you wish to modify.
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
@Version | N | String | Web Service version |
@Language | N | String | Language in which the response will be returned. Please, contact Juniper for available languages. |
{Login} | N | - | Customer login to access the Web Service |
ReservationLocator | N | String | Reservation locator |
./ReservationLocator/@ItemId | N | String | Hotel item Id |
{Paxes} | Y | - | Allows you to modify the passenger information or the occupancy of the rooms of the booking. |
Holder | N | - | Allows you to modify the lead passenger information. |
./Holder/RelPax | N | - | - |
./RelPax/@IdPax | N | Integer | Booking passenger Id. It should match with a Pax@IdPax |
ExternalBookingReference | Y | String | Allows you to modify the external booking reference. |
Comments | Y | - | Allows you to modify the booking comments. |
./Comments/Comment | Y | String | - |
./Comment/@Type | Y | String | RES |
SearchSegmentTransfers | Y | - | |
./SearchSegmentTransfers/@Start | Y | Date | Allows you to modify the start date. It is mandatory to send TransferBookingInfo data. |
./SearchSegmentTransfers/@End | Y | Date | Allows you to modify the end date. It is mandatory to send TransferBookingInfo data. |
./SearchSegmentTransfers/@Hour | Y | Time | If you wish to modify the transfer dates, it will also be necessary for you to include its hour. |
./SearchSegmentTransfers/@Code | Y | String | Allows you to modify the transfer |
./SearchSegmentTransfers/@OptionCode | Y | String | Allows you to modify the transfer option |
RelPaxesDist | Y | - | Allows you to modify the passenger distribution. |
./RelPaxesDist/RelPaxDist | N | - | Distribution list. |
./RelPaxDist/RelPaxes | N | - | Passengers list of this distribution |
./RelPaxes/RelPax | N | - | Passenger |
./RelPax/@IdPax | N | Integer | Passenger Identifier. It should match with a Pax@IdPax |
TransferBookingInfo | Y | - | Basic information of the transfer |
./TransferBookingInfo/Origin | N | - | Information of the transfer origin. It is mandatory to send the entire information based on the TransferBookingInfo node inside the TransferBooking method description |
./TransferBookingInfo/Destination | N | - | Information of the transfer destination. It is mandatory to send the entire information based on the TransferBookingInfo node inside the TransferBooking method description |
AdvancedOptions | Y | - | Optional information |
./AdvancedOptions/ShowBreakdownPrice | Y | Boolean | If the value is True, it will show the full price object with all the information about the prices. If not specified, False is assumed by default. |
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
@Url | N | String | URL endpoint |
@TimeStamp | N | DateTime | Response date and time. Format: yyyy-MM-ddThh:mm:ss (UTC) |
@IntCode | N | String | Internal control code |
{Errors} | Y | - | Applicable errors. |
{Warnings} | Y | - | Applicable warnings. |
TransferModifyResponse | N | - | - |
./TransferModifyResponse/ModifyRS | N | - | - |
./ModifyRS/@Url | N | String | URL endpoint |
./ModifyRS/@TimeStamp | N | DateTime | Response date and time. Format: yyyy-MM-ddThh:mm:ss (UTC) |
./ModifyRS/@IntCode | N | String | Internal control code |
./ModifyRS/Warnings | Y | - | |
./Warnings/Warning | Y | - | |
./Warning/@Code | N | String | Please check section Warnings. |
./Warning/@Text | N | String | Warning text description |
./ModifyRS/Results | N | - | List of results |
./ModifyRS/TransferModifyResult | Y | - | Only if the price will be modified (new transfer, option, date). |
./TransferModifyResult/@Start | N | Date | Start |
./TransferModifyResult/@End | N | Date | End |
./TransferModifyResult/@Code | N | String | Code |
./TransferModifyResult/@Status | N | String | Transfer status: OK: Available RQ: On Request |
./TransferModifyResult/@DestinationZone | N | String | Destination Code |
./TransferModifyResult/TransferInfo | Y | - | Transfer basic information. |
./TransferInfo/Name | Y | String | Transfer name |
./TransferInfo/Description | Y | String | Transfer description |
./TransferInfo/Images | Y | - | List of images |
./Images/Image | Y | String | URL image |
./ModifyRS/TransferOptions | N | - | List of options |
./ModifyRS/TransferOption | N | - | Option |
./TransferOption/@Code | N | String | Option Code |
./TransferOption/@Duration | N | String | Length of the segment in minutes Format: P0DT7H50M0S (PDaysDTHoursHMinutesMSecondsS) |
./TransferOption/Name | Y | String | Option name |
./TransferOption/Description | Y | String | Transfer option description. |
./TransferOption/OriginName | Y | String | Transfer option origin name. |
./TransferOption/DestinationName | Y | String | Transfer option destination name. |
./TransferOption/Dates | N | - | List of dates |
./Dates/Date | N | - | Room |
./Dates/@Start | N | Date | Start date |
./Dates/ModifyCode | N | String | Code that identifies the combination that will be used on the modification. |
./Dates/@ExpirationDate | N | DateTime | Expiration Date of the modify Code, will appear just for the option send in the request in case we get a result available Format: yyyy-MM-ddThh:mm:ss (UTC) |
./Dates/{Prices} | N | - | Prices |
Request
We request to modify the booking comments.
<soapenv:Envelope xmlns:soapenv = "http://schemas.xmlsoap.org/soap/envelope/" xmlns = "http://www.juniper.es/webservice/2007/">
<soapenv:Header/>
<soapenv:Body>
<TransferModify>
<TransferModifyRQ Version = "1.1" Language = "en">
<Login Email = "user@mydomain.com" Password = "pass"/>
<ReservationLocator ItemId = "123456">XXXXXX</ReservationLocator>
<Comments>
<Comment Type = "RES">Modify general booking comments</Comment>
</Comments>
</TransferModifyRQ>
</TransferModify>
</soapenv:Body>
</soapenv:Envelope>
Response
The response will simply confirm that the modification will be done changing the comment from "1234" to "Modify general booking comments"
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<TransferModifyResponse xmlns="http://www.juniper.es/webservice/2007/">
<ModifyRS Url="http://xml-uat.bookingengine.es" TimeStamp="2020-01-01T16:27:41.3001568+01:00" IntCode="O5RVrr8NMek65UvsA+dY0M5pwiRypS5qImg0BsPrgzE=">
<Warnings>
<Warning Code="warnModifyBookingComments" Text="The booking comments will be modified. Before: [1234] After: [Modify general booking comments]"/>
</Warnings>
<Results/>
</ModifyRS>
</TransferModifyResponse>
</soap:Body>
</soap:Envelope>
Request
We request to modify the booking dates. In this case the Origin/Destination information is required.
<soapenv:Envelope xmlns:soapenv = "http://schemas.xmlsoap.org/soap/envelope/" xmlns = "http://www.juniper.es/webservice/2007/">
<soapenv:Header/>
<soapenv:Body>
<TransferModify>
<TransferModifyRQ Version = "1.1" Language = "es">
<Login Email = "user@mydomain.com" Password = "pass"/>
<ReservationLocator ItemId = "123456">XXXXXX</ReservationLocator>
<SearchSegmentTransfers Start = "2020-06-24" End = "2020-06-24" Hour = "15:00:00"/>
<TransferBookingInfo>
<Origin Code = "37420" Type = "ALO">
<MeetingPointInfo MeetingTime = "2020-06-24T15:00:00">
<Name>Hotel Name</Name>
<Address>Hotel Address</Address>
<PostalCode>56454</PostalCode>
</MeetingPointInfo>
</Origin>
<Destination Code = "46121" Type = "ARP">
<MeetingPointInfo MeetingTime = "2020-06-24T16:00:00">
<Name>Terminal 1</Name>
</MeetingPointInfo>
<FlightInfo Airport = "BCN" FlightTime = "2019-12-24T18:00:00+01:00" FlightNumber = "XX1234"/>
</Destination>
</TransferBookingInfo>
</TransferModifyRQ>
</TransferModify>
</soapenv:Body>
</soapenv:Envelope>
Response
We have to select an option and send its related @ModifyCode in the TransferConfirmModify petition.
<soap:Envelope xmlns:soap = "http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd = "http://www.w3.org/2001/XMLSchema">
<soap:Body>
<TransferModifyResponse xmlns = "http://www.juniper.es/webservice/2007/">
<ModifyRS Url = "http://xml-uat.bookingengine.es" TimeStamp = "2020-01-01T15:11:50.9001111+01:00" IntCode = "5ECORevHJfUomMPIZExL3aT6w+eF/mwM3EMyDMHc5tA=">
<Warnings>
<Warning Code = "warnModifyDates" Text = "The dates will be modified. Before: [25/06/2020 15:00-25/06/2020 15:00] After: [24/06/2020 15:00-24/06/2020 15:00]"/>
<Warning Code = "warnModifyTransferOrigin" Text = "The transfer origin will be modified"/>
<Warning Code = "warnModifyTransferDestination" Text = "The transfer destination will be modified"/>
</Warnings>
<Results>
<TransferModifyResult Start = "2020-06-24" End = "2020-06-24" Code = "dXU1lWMoaM4DJV+gZ7XpUQ==" Status = "OK">
<TransferInfo>
<Name>Test Transfer</Name>
<Description>Transfer description</Description>
</TransferInfo>
<TransferOptions>
<TransferOption Code = "3036" Duration = "P0DT00H00M0S">
<Name>Option Name</Name>
<OccupancyAllowed Children = "true"/>
<Description>Option Description</Description>
<OriginName>Alcudia</OriginName>
<DestinationName>Aeropuerto de Palma de Mallorca</DestinationName>
<Dates>
<Date Start = "2020-06-24T15:00:00">
<ModifyCode ExpirationDate = "2020-01-01T15:21:47.8130036+01:00">CxTEN+z5N7ZAKHlnNsfb8ozSkww/EmRAVd3Wc5XzEuyHI6emOVyQL4z2PA6bYJEsi8B1jZgfcDKO90BquXHg1JSA1oaPCuWrobtumMyO0jYtAc2wiAYLw+2aEYsFYrD3bw/GcBJTPKnKKvGmr0N2zangUVsq+c2L9z3yRTdTot1iEdNd8RjzWY6omJwV81DJ8MxwB5Tf1DZZhzvsqG6ZrTn/2iwDjjl3M5TynCgTMr9tTHRx3iY0NyKjQz3pbCJuygLGt1Qw9/AsCkwGelXx9lIeEsa7H2+iY3v3ywD5QMP9K5hJ0w5rbeuwQ3uiMXbsFUNvqXAXnL/5PvZCkQOVgg==</ModifyCode>
<Prices>
<Price Type = "S" Currency = "EUR">
<TotalFixAmounts Gross = "150.79" Nett = "150.79">
<Service Amount = "150.79"/>
</TotalFixAmounts>
</Price>
</Prices>
</Date>
</Dates>
</TransferOption>
</TransferOptions>
</TransferModifyResult>
</Results>
</ModifyRS>
</TransferModifyResponse>
</soap:Body>
</soap:Envelope>
Once you confirm that the modification can be made through the TransferModify petition you can proceed to make such modifications through this petition. For this end, you will have to specify all the information that you want to modify along with the @ModifyCode if it is necessary.
The response will always return a warning with the changes that have been made along with the booking information.
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
@Version | N | Web Service version | |
@Language | N | String | Language in which the response will be returned. Please, contact Juniper for available languages. |
{Login} | N | - | Customer login to access the Web Service |
ReservationLocator | N | String | Reservation locator |
./ReservationLocator/@ItemId | N | Integer | Transfer item Id |
{Paxes} | Y | - | Allows you to modify the passenger information or the occupancy of the rooms of the booking. |
Holder | Y | - | Allows you to modify the lead passenger information. |
./Holder/RelPax | N | - | - |
./RelPax/@IdPax | N | Integer | Booking passenger Id. It should match with a Pax@IdPax |
ExternalBookingReference | Y | String | Allows you to modify the external booking reference. |
Comments | Y | - | Allows you to modify the booking comments. |
./Comments/Comment | N | String | - |
./Comment/@Type | N | String | RES. |
TransferElement | Y | - | |
./TransferElement/ModifyCode | N | String | Code that identifies the combination. Obtained from the TransferModify petition. |
./TransferElement/RelPaxesDist | N | - | Allows you to modify the passenger distribution. |
./RelPaxesDist/RelPaxDist | N | - | Distribution list. Each one them corresponds to a room. |
./RelPaxDist/RelPaxes | N | - | Passengers list of this distribution/room. |
./RelPaxes/RelPax | N | - | Passenger |
./RelPax/@IdPax | N | Integer | Passenger Identifier. It should match with a Pax@IdPax |
TransferBookingInfo | Y | - | Basic information of the transfer |
./TransferBookingInfo/Origin | N | - | Information of the transfer origin. It is mandatory to send the entire information based on the TransferBookingInfo node inside the TransferBooking method description |
./TransferBookingInfo/Destination | N | - | Information of the transfer destination. It is mandatory to send the entire information based on the TransferBookingInfo node inside the TransferBooking method description |
AdvancedOptions | Y | - | Optional information |
./AdvancedOptions/ShowBreakdownPrice | Y | Boolean | If the value is True, it will show the full price object with all the information about the prices. If not specified, False is assumed by default. |
It returns the same information as the TransferBooking response. If you wish to know the specifications of this petition, please review the section related to the TransferBooking response.
Please check the Appendix: Warnings section (concretely Modification warnings) to see the warning list.
Request
We modify the booking comments.
<soapenv:Envelope xmlns:soapenv = "http://schemas.xmlsoap.org/soap/envelope/" xmlns = "http://www.juniper.es/webservice/2007/">
<soapenv:Header/>
<soapenv:Body>
<TransferConfirmModify>
<TransferConfirmModifyRQ Version = "1.1" Language = "en">
<Login Email = "user@mydomain.com" Password = "pass"/>
<ReservationLocator ItemId = "123456">XXXXXX</ReservationLocator>
<Comments>
<Comment Type = "RES">Modify general booking comments</Comment>
</Comments>
</TransferConfirmModifyRQ>
</TransferConfirmModify>
</soapenv:Body>
</soapenv:Envelope>
Request
We modify the booking dates. In the previous step we've selected a combination (@ModifyCode) that we are now sending through this petition. In this case, there’s no need for more information to be sent as the @ModifyCode contains all of the necessary information.
<soapenv:Envelope xmlns:soapenv = "http://schemas.xmlsoap.org/soap/envelope/" xmlns = "http://www.juniper.es/webservice/2007/">
<soapenv:Header/>
<soapenv:Body>
<TransferConfirmModify>
<TransferConfirmModifyRQ Version = "1.1" Language = "es">
<Login Email = "user@mydomain.com" Password = "pass"/>
<ReservationLocator ItemId = "123456">XXXXXX</ReservationLocator>
<TransferElement>
<ModifyCode>CxTEN+z5N7ZAKHlnNsfb8ozSkww/EmRAVd3Wc5XzEuyHI6emOVyQL4z2PA6bYJEsi8B1jZgfcDKO90BquXHg1JSA1oaPCuWrobtumMyO0jYtAc2wiAYLw+2aEYsFYrD3bw/GcBJTPKnKKvGmr0N2zangUVsq+c2L9z3yRTdTot1iEdNd8RjzWY6omJwV81DJ8MxwB5Tf1DZZhzvsqG6ZrTn/2iwDjjl3M5TynCgTMr9tTHRx3iY0NyKjQz3pbCJuygLGt1Qw9/AsCkwGelXx9lIeEsa7H2+iY3v3ywD5QMP9K5hJ0w5rbeuwQ3uiMXbsFUNvqXAXnL/5PvZCkQOVgg==</ModifyCode>
<TransfersBookingInfo>
<TransferBookingInfo>
<Origin Code = "37420" Type = "ALO">
<MeetingPointInfo MeetingTime = "2020-06-24T15:00:00">
<Name>Hotel Name</Name>
<Address>Hotel Address</Address>
<PostalCode>56454</PostalCode>
</MeetingPointInfo>
</Origin>
<Destination Code = "46121" Type = "ARP">
<MeetingPointInfo MeetingTime = "2020-06-24T16:00:00">
<Name>Terminal 1</Name>
</MeetingPointInfo>
<FlightInfo Airport = "BCN" FlightTime = "2019-12-24T18:00:00+01:00" FlightNumber = "XX1234"/>
</Destination>
</TransferBookingInfo>
</TransfersBookingInfo>
</TransferElement>
</TransferConfirmModifyRQ>
</TransferConfirmModify>
</soapenv:Body>
</soapenv:Envelope>
Before moving to the live environment, you will be asked to perform some tests in order to validate your integration and ensure the correct use of the API: First of all, we will need you to create, read and cancel the following bookings in the development environment:
The next step will be to supply us with the following information (on each one of the bookings that you performed):
XML request and responses of all of the transactions included on these bookings, this may include:
Detailed information about the booking that you have saved on your system (through screenshots if posible), this may include:
Please algo give us some information regarding the length of the timeout that you have set for our availability response and reservation response.
What we check in the booking flow certification
First, the structure of the availability request must be correctly formed, and none of the mandatory fields must be missed. Amongst other, we will check the following nodes:
It is also mandatory to allow for compressed responses on the request so that the response size will be considerably reduced (meaning faster transfer times). If you do not allow for the same, the response will contain the following error:
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<TransferAvailResponse xmlns="http://www.juniper.es/webservice/2007/">
<AvailabilityRS Url="http://xml-uat.bookingengine.es" TimeStamp="2019-12-20T13:03:20.8017875+02:00" IntCode="LkA/OybCaPcNYWQsOXR0S8apZRv97EEUlhg3j6Aebn8=">
<Errors>
<Error Text="Please add the 'Accept-Encoding: gzip, deflate' header in your petition.
This can reduce the transmission time and response size by about 75-95%. See more here: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html"
Code="COMPRESSION_REQUIRED"/>
</Errors>
</AvailabilityRS>
</TransferAvailResponse>
</soap:Body>
</soap:Envelope>
If the request is valid, you will receive a response containing all the possible transfers for the desired criteria. Each transfer will be returned along a RatePlanCode which should be used in the next step of the booking flow, which can be TransferCheckAvail (if you desire to validate the availability of the selected option) or TransferBookingRules
Please be aware that the proper use of the RatePlanCode is an important point in the certification process.
The TransferBookingRules transaction is a mandatory step for the booking process which, apart from supplying you with any involved cancellation policies, validates the allotment/rate and returns any required field that may apply to this combination.
Please note that the proper use of the required fields is a crucial point for both the booking confirmation and the certification process.
This transaction only requires the RatePlanCode from the availability response and its response will contain:
<BookingCode ExpirationDate="2019-03-26T10:31:44.393171+01:00"> 3WCCdKrNDmJB1QQRy...........mOySKbvdSTXtO35YtBgquA6m6U</BookingCode>
<Warnings>
<Warning Code = "warnCheckNotPossible" Text = "Price review is not possible"/>
</Warnings>
<TransferRequiredFields>
<TransferBooking>
<Paxes>
<Pax IdPax = "1">
<Name>Holder Name</Name>
<Surname>Holder Surname</Surname>
<Age>30</Age>
</Pax>
<Pax IdPax = "2">
<Age>30</Age>
</Pax>
<Pax IdPax = "3">
<Age>15</Age>
</Pax>
</Paxes>
<Holder>
<RelPax IdPax = "1"/>
</Holder>
<Elements>
<TransferElement>
<BookingCode>/nV50gUcfbZueTEQ6G+mlNQ5uAMcHhQyXONy2vJPOgepa.........BXdcC1rjDPpU8Kuplw8XrpYmgjsCGxPhZJp/VJUa</BookingCode>
<RelPaxesDist>
<RelPaxDist>
<RelPaxes>
<RelPax IdPax = "1"/>
<RelPax IdPax = "2"/>
<RelPax IdPax = "3"/>
</RelPaxes>
</RelPaxDist>
</RelPaxesDist>
<TransfersBookingInfo>
<TransferBookingInfo Route = "In">
<Origin Type = "ARP">
<MeetingPointInfo Code = "999" MeetingTime = "2019-12-31T13:57:02.2243141+02:00"/>
<FlightInfo FlightTime = "2019-12-20T13:57:02.2243141+02:00" FlightNumber = "XX1234"/>
</Origin>
<Destination Type = "ALO">
<MeetingPointInfo Code = "999" MeetingTime = "2019-12-31T13:57:02.2243141+02:00">
<Name>MEETING POINT NAME</Name>
</MeetingPointInfo>
</Destination>
</TransferBookingInfo>
<TransferBookingInfo Route = "Out">
<Origin Type = "ALO">
<MeetingPointInfo Code = "999" MeetingTime = "2019-12-31T13:57:02.2243141+02:00">
<Name>MEETING POINT NAME</Name>
</MeetingPointInfo>
</Origin>
<Destination Type = "ARP">
<MeetingPointInfo Code = "999" MeetingTime = "2019-12-31T13:57:02.2243141+02:00"/>
<FlightInfo Airport = "PMI" FlightTime = "2019-12-31T13:57:02.2243141+02:00" FlightNumber = "XX1234"/>
</Destination>
</TransferBookingInfo>
</TransfersBookingInfo>
</TransferElement>
</Elements>
</TransferBooking>
</TransferRequiredFields>
NOTE: Keep in mind that the required fields feature default values, meaning that you have to replace the default values with the preferred information.
<CancellationPolicy CurrencyCode = "EUR">
<FirstDayCostCancellation Hour = "00:00">2019-08-22</FirstDayCostCancellation>
<Description>PMI Airport to center: General policy | * Airport transfer from Palma: Políticas de cancelación</Description>
<PolicyRules>
<Rule DateFrom="2019-10-20" DateFromHour="00:00" DateTo="2019-10-21" DateToHour="00:00" Type="V" FixedPrice="0" PercentPrice="0" Nights="0" ApplicationTypeNights="Average"/>
<Rule DateFrom="2019-11-22" DateFromHour="00:00" DateTo="2019-11-23" DateToHour="00:00" Type="V" FixedPrice="1.82" PercentPrice="0" Nights="0" ApplicationTypeNights="Average"/>
<Rule DateFrom="2019-11-26" DateFromHour="00:00" DateTo="2019-11-27" DateToHour="00:00" Type="V" FixedPrice="38.65" PercentPrice="0" Nights="0" ApplicationTypeNights="Average"/>
<Rule DateFrom="2019-12-30" DateFromHour="00:00" DateTo="2019-12-31" DateToHour="00:00" Type="V" FixedPrice="36.83" PercentPrice="0" Nights="0" ApplicationTypeNights="Average"/>
</PolicyRules>
</CancellationPolicy>
The last step in the booking flow is the TransferBooking transaction. This transaction validates all of the information retrieved from all of the previous transactions and confirms the booking. Some important information we will check are:
Finally, we ask you to check the value of the Status property from the booking response. You should not consider a booking confirmed without reading its status as it might be returned as cancelled (CaC or Can) or on request (Pre or PDI) if there is any problem on the booking confirmation.