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 static data transactions meant for the retrieval of package information that you may need prior to overtaking the booking flow process.
An optimal static data retrieval process could consist of:
This is the first step required in order to create a new booking. Through the use of the PackageAvail request you will be capable of retrieving results on all of the available packages.
This list will contain configuration and prices for the cheapest mandatory products, although it will also inform about the optional products the package may have and if it is possible to perform searches for the rest of the package products. We will get a code for each package “PackageCode”, which is needed for the subsequent treatment of the package.
At this step, on which we've already performed the availability request and selected a package through a RatePlanCode from its response, we will validate that the mentioned is still effective and that there has been no change on the same.
In this step we have the following transactions available:
PackageChangeProduct: Pptional transaction to get the different options of a certain product. For instance, it can be obtained from all the available hotels for a package. Each package result will be a different hotel combination, with it's “RatePlanCode” which uniquely identifies the package combination. The same goes for flights.
PackageCheckAvail: Optional transaction that can be called with a “RatePlanCode” and it will check the package, their products, availability, and prices.
PackageBookingRules: It will return the necessary information of each product for the booking confirmation, cancellation policies, and required fields. It will also validate the package with the selected products, consistence and final Price. It returns a booking code “BookingCode”, needed to confirm the booking.
Once you retrieve the BookingCode of the package that you wish to confirm through the PackageBookingRules response, you may then send the booking confirmation request along all of the data that is requested for on the PackageRequiredFields node from the aforementioned transaction.
The response will return a booking code (@Locator) that will identify the booking in a unique way and let you read and/or cancel the same if you ever wish to do the same.
Kindly refer to the PackageBooking section for more information.
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 Package integration process, here we supply you with a series of resources which, along with the use of test environment XML credentials, will let you experience the Package 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 Package 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 Package 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.
Object that details the stays of a package. It contains multiple product related nodes that are detailed below. This is a very important object to implement in order to properly understand the contents of a package.
| Node / Attribute (@) | Opt | Type | Description |
|---|---|---|---|
| .Stays | N | - | List of package stays. |
| ./Stays/Stay | N | - | Specific package stay. |
| ./Stay/@Code | N | Integer | Stay order code. |
| ./Stay/@DestinationZone | N | Integer | Destination code. |
| ./Stay/@DestinationJPDCode | Y | Integer | Destination JPCode. For internal use, you won't see this property on your responses. |
| ./Stay/@Start | N | Date | Start date range Format: yyyy-MM-dd |
| ./Stay/@End | N | Date | End date range Format: yyyy-MM-dd |
| ./Stay/{Hotels} | Y | - | List of hotels included within the package. |
| ./Stay/{Flights} | Y | - | List of flights included within the package. |
| ./Stay/{Transfers} | Y | - | List of transfers included within the package. |
| ./Stay/{Services} | Y | - | List of tickets included within the package. |
| ./Stay/{Packages} | Y | - | List of packages included within the package. It is possible for dynamic packages to contain enclosed packages within its configuration. |
| ./Stay/{Insurances} | Y | - | List of insurances included within the package. |
| ./Stay/{Rentacars} | Y | - | List of rentacar included within the package. |
Object that details the list of available hotel products within a package.
| Node / Attribute (@) | Opt | Type | Description |
|---|---|---|---|
| Hotels | Y | - | List of package hotels |
| ./Hotels/Hotel | N | - | Item containing hotel details |
| ./Hotel/@Code | Y | String | Product Code. |
| ./Hotel/@JPCode | Y | String | Product JPCode. |
| ./Hotel/@Start | N | Date | Checkin date of the stay Format: yyyy-MM-dd |
| ./Hotel/@End | N | Date | Checkout date of the stay Format: yyyy-MM-dd |
| ./Hotel/@ICode | Y | String | Encrypted product code. Useful for optional products |
| ./Hotel/@SearchMore | Y | Boolean | Shows if it is posible to search other hotels for the stay |
| ./Hotel/@BestDeal | Y | Boolean | Indicates if the hotel is a BestDeal |
| ./Hotel/HotelInfo | Item with information concerning the hotel | ||
| ./HotelInfo/Name | N | String | Hotel name |
| ./HotelInfo/Images | Y | - | Hotel images |
| ./Images/Image | N | String | Image URL |
| ./Images/Description | Y | String | Image description |
| ./Hotel/HotelOptions | N | - | List of hotel distributions |
| ./HotelOptions/HotelOption | N | - | Hotel distribution |
| ./HotelOption/Board | Board type distribution | ||
| ./Board/@Type | Y | String | Board type |
| ./HotelOption/HotelRooms | N | - | List of Hotel rooms |
| ./HotelRooms/HotelRoom | N | - | Hotel rooms |
| ./HotelRoom/@Units | Y | Integer | Number of rooms. |
| ./HotelRoom/@JRCode | Y | String | Juniper room code. To be used in conjuction with the Hotel API, refer to the RoomList request if you would like for more information. |
| ./HotelRoom/RoomCategory | N | String | Name of the room type |
| ./RoomCategory/@Type | N | String | Room type |
| ./Hotel/Rebook | Y | - | Rebook-related information. Available on the booking and read responses of rebook-type reservations (disregard this node if you're implementing the normal booking flow). |
| ./Rebook/@ItemId | N | Integer | Booking line id of the rebook. |
Object that details the list of available flight products within a package.
| Node / Attribute (@) | Opt | Type | Description |
|---|---|---|---|
| Flights | Y | - | List of package flights |
| ./Flights/Flight | N | - | Item with information concerning the flight |
| ./Flight/@FareType | N | String | Indicates type of the fare: Public, Negotiated or Private. |
| ./Flight/@Direction | Y | String | Flight direction. Possible values: • Outbound • Inbound • Roundtrip |
| ./Flight/@SearchMore | Y | Boolean | Shows if it is posible to search for alternatives flights for the stay |
| ./Flight/@ICode | Y | String | Encrypted product code. Useful for optional products |
| ./Flight/Routes | N | - | List of flight Routes |
| ./Routes/Route | N | - | Flight route |
| ./Route/@Origin | N | Integer | Juniper code for the origin zone of the route |
| ./Route/@Destination | N | Integer | Juniper code for the destination zone of the route |
| ./Route/Segments | N | - | List of Flight Segments |
| ./Segments/Segment | N | - | Segment of the Route |
| ./Segment/@Order | N | Integer | Number of the segment in the route |
| ./Segment/@FareBasis | Y | String | Indicates the code of the fare. |
| ./Segment/@AirplaneType | Y | String | Indicates the airplane type or code. |
| ./Segment/@DepartureAirport | N | String | IATA code of the origin airport of the segment. |
| ./Segment/@ArrivalAirport | N | String | IATA code of the destination airport of the segment. |
| ./Segment/@DepartureDateTime | N | DateTime | Starting date and time of the flight Format: yyyy-MM-ddThh:mm:ss (UTC) |
| ./Segment/@ArrivalDateTime | DateTime | Ending date and time of the flight Format: yyyy-MM-ddThh:mm:ss (UTC) |
|
| ./Segment/@OperatingAirline | Y | String | Code of the airline that manages the flight |
| ./Segment/@FlightNumber | Y | String | Flight number |
| ./Segment/@Class | Y | String | Accommodation class of the flight |
| ./Segment/@Cabin | Y | String | Cabin code from the GDS |
| ./Segment/@JourneyDuration | Y | Duration | Length of the flight Format: P0DT7H50M0S (PDiasDTHorasHMinutosMSegundosS) |
| ./Segment/@GroundDuration | Y | Duration | Length of the segment Format: P0DT7H50M0S (PDiasDTHorasHMinutosMSegundosS) |
| ./Segment/@MarquetingAirline | N | String | Marketing company or sales company. |
| ./Segment/TechnicalStops | Y | - | |
| ./TechnicalStops/TechnicalStop | Y | - | Technical stop of segment. |
| ./TechnicalStops/@AirportCode | Y | String | Airport code of the technical stop. |
| ./TechnicalStops/@ArrivalDate | Y | Date | Arrival date of the technical stop. |
| ./TechnicalStops/@DepartureDate | Y | Date | Departure date after technical stop. |
| ./Segment/{SeatingMap} | Y | - | Seating map information. Kindly refer to the related object for more information regarding this feature. |
| ./Flight/InfoExtra | N | - | Additional flight information. |
| ./InfoExtra/ExternalLocator | N | String | External/supplier locator. Restricted by a special permission. |
| ./InfoExtra/Source | N | String | Supplier that offers the flight. Ej: Amad(Amadeus), Chv2(CharterV2), Sab2(SabreV2), etc. |
| ./Flight/OptionalElements | Y | - | Optional elements that may be applied to the flight. |
| ./OptionalElements/{Bags} | Y | - | Baggage information. Kindly refer to the related object for more information regarding this feature. |
Object that details the list of available transfer products within a package.
| Node / Attribute (@) | Opt | Type | Description |
|---|---|---|---|
| Transfers | Y | - | Package transfer list |
| ./Transfers/Transfer | N | - | Item with transfer details |
| ./Transfer/@SearchMore | Y | Boolean | It indicates if there are alternatives to this transfer. |
| ./Transfer/@ICode | Y | String | Product encrypted code. |
| ./Transfer/@Code | Y | String | Product code. |
| ./Transfer/TransferInfo | N | - | Transfer details |
| ./TransferInfo/Name | N | String | Transfer name |
| ./TransferInfo/Description | Y | String | Transfer description |
| ./TransferInfo/Image | Y | String | Transfer image route |
| ./TransferInfo/TransferOptions | N | - | Selected transfer option |
| ./TransferOptions/TranferOption | N | - | Transfer option details |
| ./TranferOption/@Start | N | Date | Start date range Format: yyyy-MM-dd |
| ./TranferOption/@End | N | Date | End date range Format: yyyy-MM-dd |
| ./TranferOption/@Origin | Y | Integer | Transfer origin area code |
| ./TranferOption/@Destination | Y | Integer | Transfer destination area code |
| ./TranferOption/@Duration | Y | String | Transfer duration format HH:MM:SS |
| ./TranferOption/@StartHour | Y | String | Start time Format HH:MM:SS |
| ./TranferOption/Name | N | String | Transfer option name |
| ./TranferOption/Description | N | String | Transfer description option |
| ./TranferOption/OriginName | N | String | Transfer origin name |
| ./TranferOption/DestinationName | N | String | Transfer destination name |
Object that details the list of available service products within a package.
| Node / Attribute (@) | Opt | Type | Description |
|---|---|---|---|
| Services | Y | - | Package service list. |
| ./Services/Service | N | - | Item with service details |
| ./Service/@SearchMore | Y | Boolean | It indicates if there are alternatives to this service. |
| ./Service/@ICode | Y | String | Product encrypted code. |
| ./Service/@Code | Y | String | Product code. |
| ./Service/ServiceInfo | N | - | Service details |
| ./ServiceInfo/@SearchMore | Y | Boolean | It indicates if it is possible to search for alternatives to this service. |
| ./ServiceInfo/@ICode | Y | String | Product encrypted code. |
| ./ServiceInfo/ServiceInfo | N | - | Service details. |
| ./ServiceInfo/Name | N | String | Service name. |
| ./ServiceInfo/Description | Y | String | Service description. |
| ./ServiceInfo/Image | Y | String | Service image route. |
| ./ServiceInfo/ServiceOptions | N | - | Selected service option |
| ./ServiceOptions/ServiceOption | N | - | Service option details |
| ./ServiceOption/@Start | N | Date | Start date range Format: yyyy-MM-dd |
| ./ServiceOption/@End | N | Date | End date range Format: yyyy-MM-dd |
| ./ServiceOption/@Destination | Y | Integer | Service destination area code |
| ./ServiceOption/@Duration | Y | String | Service duration format HH:MM:SS |
| ./ServiceOption/@StartHour | Y | String | Start time Format HH:MM:SS |
| ./ServiceOption/Name | N | String | Service option name |
| ./ServiceOption/Description | N | String | Service option description |
| ./ServiceOption/DestinationName | N | String | Service destination name |
Object that details the list of available insurance products within a package.
| Node / Attribute (@) | Opt | Type | Description |
|---|---|---|---|
| Insurances | Y | - | Package insurance list. |
| ./Insurances/Insurance | N | - | Item with insurance details |
| ./Insurance/@SearchMore | Y | Boolean | Indicates if there are alternatives to this insurance |
| ./Insurance/@ICode | Y | String | Product encrypted code |
| ./Insurance/@Start | N | Date | Start date range Format: yyyy-MM-dd |
| ./Insurance/@End | N | Date | End date range Format: yyyy-MM-dd |
| ./Insurance/@Code | Y | String | Product code. |
| ./Insurance/InsuranceInfo | N | - | Insurance details |
| ./InsuranceInfo/Name | Y | String | Insurance name |
| ./InsuranceInfo/{Descriptions} | Y | - | Insurance description |
Object that details the list of available package products within a package.
| Node / Attribute (@) | Opt | Type | Description |
|---|---|---|---|
| Packages | Y | - | |
| ./Packages/Package | N | - | |
| ./Package/@SearchMore | Y | Boolean | It indicates if there are alternatives to this tour. |
| ./Package/@ICode | Y | String | Product encrypted code. |
| ./Package/@Start | N | Date | Start date range Format: yyyy-MM-dd |
| ./Package/@End | N | Date | End date range Format: yyyy-MM-dd |
| ./Package/@Code | Y | String | Product code. |
| ./Package/Name | N | String | Tour circuit name |
| ./Package/Description | Y | String | Tour circuit description |
| ./Package/Image | Y | String | Tour circuit image route |
| ./Package/HotelInfo | Y | - | Item with information concerning the hotel |
| ./HotelInfo/Name | N | String | Hotel name |
| ./HotelInfo/Description | Y | String | Hotel description |
| ./HotelInfo/Images | Y | - | Hotel images |
| ./Images/Image | N | String | Image URL |
| ./Package/HotelOptions | Y | - | List of hotel distributions |
| ./HotelOptions/HotelOption | N | - | Hotel distribution |
| ./HotelOption/HotelRooms | N | - | List of Hotel rooms |
| ./HotelRooms/HotelRoom | N | - | Hotel rooms |
| ./HotelRoom/RoomCategory | N | String | Name of the room type |
Object that details the list of available rent a car products within a package.
| Node / Attribute (@) | Opt | Type | Description |
|---|---|---|---|
| Rentacars | Y | - | Package vehicle list. |
| ./Rentacars/Rentacar | N | - | Item with vehicle details |
| ./Rentacar/@SearchMore | Y | Boolean | It indicates if there are alternatives to this vehicle. |
| ./Rentacar/@ICode | Y | String | Product encrypted code. |
| ./Rentacar/@Start | N | Date | Start date range Format: yyyy-MM-dd |
| ./Rentacar/@End | N | Date | End date range Format: yyyy-MM-dd |
| ./Rentacar/@Code | Y | String | Product code. |
| ./Rentacar/RentacarInfo | N | - | Vehicle details |
| ./RentacarInfo/Name | Y | String | Vehicle name |
| ./RentacarInfo/Description | Y | String | Vehicle description |
| ./RentacarInfo/Image | Y | String | Vehicle image route |
| ./Rentacar/PickupOffice | N | - | Vehicle pick-up office. |
| ./Rentacar/DropOffOffice | N | - | Vehicle return office. |
Object that shows supplements and offers/promotions. We refer to this object labeled as: {AdditionalElements}
| Node / Attribute (@) | Opt | Type | Description |
|---|---|---|---|
| AdditionalElements | Y | - | List of additional elements of the package. By now supplements. |
| ./AdditionalElements/PackageSupplements | N | - | List os package supplements |
| ./PackageSupplements/PackageSupplement | N | - | Package supplement |
| ./PackageSupplement/Name | N | String | Supplement name |
| ./PackageSupplement/Description | N | String | Supplement description |
Object that contains all of the required fields that you will need to comply with in the PackageBooking request in order to be able to confirm a package booking. It is used in both the booking rules and booking steps.
| Node / Attribute (@) | Opt | Type | Description |
|---|---|---|---|
| .PackageElement | N | - | Package element. |
| ./PackageElement/BookingCode | N | String | EBookingCode is the code that is used to identify the combination. You must get it from PackageBookingRules response. |
| ./PackageElement/RelPaxesDist | N | - | Passenger distribution of the booking. |
| ./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 |
| ./PackageElement/Comments | Y | - | Package element comments. It's important to note that, although we will not be able to ensure this (as not all products allow for us to supply them with this information), this is the node on which you should send any special requests and/or comments that your customer may have. |
| ./Comments/Comment | Y | String | Comment text. |
| ./Comment/@Type | Y | String | Comment type, it's very important to set the proper @Type or the comment won’t be recognized and saved. Possible values: • ELE: Booking element comments |
| ./PackageElement/PackageBookingInfo | N | - | Element basic information. It is necessary to validate the request. |
| ./PackageBookingInfo/@Start | N | Date | Start date Format: yyyy-MM-dd |
| ./PackageBookingInfo/@End | N | Date | End date Format: yyyy-MM-dd |
| ./PackageBookingInfo/Price | N | - | Price to which the element will be booked. You may obtain it from the transaction PackageBookingRules. |
| ./Price/PriceRange | N | - | In this node you will be able to set the minimium a maximum price to which you will allow for the booking price to be modified between the PackageBookingRules and the PackageBooking steps. You’re allowed to set any price in the @Minimum and @Maximum properties so that the mentioned will fit your needs, for example: * If your system does not allow any kind of price modification, then you’re advised to send the 100% of the original price of the booking in both the @Minimum and the @Maximum * Otherwise, if you allow for the price to be modified as long as the new price is lower than the original one, you could for example set a @Minimum of the 25% of the original price of the booking and a @Maximum of the 100% of the original price of the booking. |
| ./PriceRange/@Minimum | N | Double | Minimum price to which you allow for the booking to be modified, if you do not allow for price modifications set the 100% of the original price of the booking. |
| ./PriceRange/@Maximum | N | Double | Maximum price to which you allow for the booking to be modified, if you do not allow for price modifications set the 100% of the original price of the booking. |
| ./PriceRange/@Currency | N | String | Currency. Note that the currency has to be the same that is supplied on the PackageBookingRules response. |
| ./PackageBookingInfo/PackageCode | N | String | Code of the package that's going to get booked. |
| ./PackageElement/TransfersBookingInfo | Y | - | List of required fields needed by the transfers contained within the package. |
| ./TransfersBookingInfo/TransferBookingInfo | N | - | Required fields of a specific transfer of the package. |
| ./TransferBookingInfo/@ICode | N | String | Unique code that identifies the product |
| ./TransferBookingInfo/Origin | N | - | Required fields related to the origin of the transfer. |
| ./Origin/@Code | N | Integer | Destination code of the origin |
| ./Origin/@Type | N | String | Type of destination of the transfer origin. Possible values: • ARP: airport • ALO: hotel • PRT: port • EST: train/bus stations • OTR: other zones |
| ./Origin/@Start | Y | Date | Start date range Format: yyyy-MM-dd |
| ./Origin/@MeetingTime | Y | Time | Meeting time at the origin |
| ./Origin/MeetingPointInfo | N | - | Information about the meeting point. It contains data of the transfer type of zone |
| ./MeetingPointInfo/@Code | N | String | Meeting point code. It is mandatory if the client is using groundhandling. If not, it accepts ‘000’. This code can be retrieved from a transaction by using the ICode |
| ./MeetingPointInfo/@MeetingTime | N | Time | Pickup 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/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 |
| ./FlightInfo/@FlightTime | N | Time | Flight time. |
| ./FlightInfo/@FlightNumber | Y | String | Flight number. |
| ./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/TerminalArrival | Y | String | Name of the arrival terminal |
| ./Origin/TerminalDeparture | Y | String | Name of the departure terminal |
| ./TransferBookingInfo/Destination | N | - | Required fields related to the destination of the transfer. |
| ./Destination/@Code | N | Integer | Destination code of the destination |
| ./Destination/@Type | N | String | Type of destination of the transfer destination. Possible values: • ARP: airport • ALO: hotel • PRT: port • EST: train/bus stations • OTR: other zones |
| ./Destination/@Start | Y | Date | Start date range Format: yyyy-MM-dd |
| ./Destination/@MeetingTime | Y | Time | Meeting time at the destination |
| ./Destination/MeetingPointInfo | N | - | Information about the meeting point. It contains data of the transfer type of zone |
| ./MeetingPointInfo/@Code | N | String | Meeting point code. It is mandatory if the client is using groundhandling. If not, it accepts ‘000’. This code can be retrieved from a transaction by using the ICode |
| ./MeetingPointInfo/@MeetingTime | N | Time | Pickup 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/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 |
| ./FlightInfo/@FlightTime | N | Time | Flight time. |
| ./FlightInfo/@FlightNumber | Y | String | Flight number. |
| ./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/TerminalArrival | Y | String | Name of the arrival terminal |
| ./Destination/TerminalDeparture | Y | String | Name of the departure terminal |
| ./TransferBookingInfo/{HotelService} | Y | - | Optional information about the selected hotel of the service. |
| ./TransferBookingInfo/Language | Y | - | Language to be booked. |
| ./Language/@Code | N | String | Language ISO2 code. |
| ./PackageElement/ServicesBookingInfo | Y | - | List of required fields needed by the services contained within the package. |
| ./ServicesBookingInfo/ServiceBookingInfo | N | - | Essential information of a service |
| ./ServiceBookingInfo/MeetingPointInfo | N | - | Information about the meeting point including the type of transfer |
| ./MeetingPointInfo/@Code | N | String | Meeting point code. It is mandatory if the client is using groundhandling. If not, it accepts ‘000’. This code can be retrieved from a transaction by using the Icode |
| ./MeetingPointInfo/@MeetingTime | N | Time | Pickup 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 |
| ./ServiceBookingInfo/{HotelService} | Y | - | Optional information about the selected hotel of the service. |
| ./TransferBookingInfo/Language | Y | - | Language to be booked. |
| ./Language/@Code | N | String | Language ISO2 code. |
For the methods to retrieve the static information such as areas, packages, etc. Take into account that the information varies between the test environment and production environment.
The maximum allowed frequency for the retrieval of static data information (if you plan on retrieving such information) is at least once every 15 days. This a requirement meant to keep the static data information from our system updated.
This request allows you to retrieve the list of all of the package codes available. Filtering either for a specific area (from an origin or to a certain destination), or for all of the Master packages available.
For the retrieval of the origin and destination zone codes that you would be requesting for, you will need to implement and use the ZoneList request.
| 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 |
| PackageListRequest | N | - | Search properties |
| ./PackageListRequest/@OriginZone | Y | Integer | Juniper code of the origin area. This attribute is optional. If it is not specified, the search will only take into account the DestinationZone value. For this option, OriginZone can be omitted or sent as “-1” |
| ./PackageListRequest/@DestinationZone | N | Integer | Juniper code of the destination area. |
| ./PackageListRequest/@Masters | Y | Boolean | Indicates if you want to obtain the list containing the codes of all the package considered as “Masters”. Default value: false. If it is set as “true”, the search will not take into account the values of OriginZone and DestinationZone. |
| ./PackageListRequest/Suppliers | Y | - | With this option you can specify the suppliers you wish. |
| ./Suppliers/Supplier | N | String | Supplier code. |
Master packages: Packages in which there is no defined origin and destination. They don’t have a fixed/specified duration and consist of at least two products: flight and hotel.
<soap:Envelope xmlns:soap = "http://www.w3.org/2003/05/soap-envelope" xmlns:ns = "http://www.juniper.es/webservice/2007/">
<soap:Header/>
<soap:Body>
<PackageList>
<PackageListRQ Version = "1.1" Language = "en">
<Login Email = "user@mydomain.com" Password = "pass"/>
<PackageListRequest OriginZone = "-1" DestinationZone = "17852" Masters = "false"/>
</PackageListRQ>
</PackageList>
</soap:Body>
</soap:Envelope>
PackageList Response Detail
| 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. |
| PackageList | N | - | - |
| ./PackageList/Packages | N | - | List of package codes |
| ./Packages/Package | N | - | Element package |
| ./Packages/@Code | N | String | Package code. This code will be used in the PackageContent transaction to retrieve the static information of them. |
<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>
<PackageListResponse xmlns="http://www.juniper.es/webservice/2007/">
<PackageListRS Url="http://xml-uat.bookingengine.es" TimeStamp="2019-09-30T22:04:06.765295+02:00" IntCode="Yt2gJ2zAulIae0DRxPvCCGjMIdyrOiW9FBId5qIhmvQ=">
<PackageList>
<Packages>
<Package Code="up7BLW/+eFb4XBEzE8x2oA=="/>
<Package Code="6/pwF6TNbSnwuFnTiuFGNg=="/>
<Package Code="uN49y9g6MMuD90w4lol9BQ=="/>
<Package Code="f6VAJXcebYbEM7rVshrYYA=="/>
<Package Code="ROI4/BEylaYrciHJrD9cqQ=="/>
<Package Code="2DHiixeN/c+NzskFdPMvpg=="/>
<Package Code="BEvMpJA+MO6pClFXteNCWw=="/>
<Package Code="SS8hzoMAXCGgM0unAF9JNg=="/>
<Package Code="m9o3+Fse0xLaiflRqDKnaQ=="/>
</Packages>
</PackageList>
</PackageListRS>
</PackageListResponse>
</soap:Body>
</soap:Envelope>
After you have the list of package codes available (usually through the use of the previously referred PackageList request), here you will be able to retrieve all of the static data that's available for any specific package code.
This transaction allows for up to 25 packages to be requested at once.
| 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 |
| Packages | Y | - | List of package codes. |
| ./Packages/Package | Y | - | Specific package. |
| ./Package/@Code | N | String | Package code. |
<soap:Envelope xmlns:soap = "http://www.w3.org/2003/05/soap-envelope" xmlns:ns = "http://www.juniper.es/webservice/2007/">
<soap:Header/>
<soap:Body>
<PackageContent>
<PackageContentRQ Version = "1.1" Language = "en">
<Login Email = "user@mydomain.com" Password = "pass"/>
<Packages>
<Package Code = "2Xqw6mPlEU5BSITvM3NQuQ=="/>
</Packages>
</PackageContentRQ>
</PackageContent>
</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. |
| Contents | N | - | List of the requested package profiles. |
| ./Contents/PackageContent | N | - | Static data for a specific package. |
| ./PackageContent/@Code | N | String | Package code. |
| ./PackageContent/@Duration | Y | String | Time that the package will take. If unavailable, it means that the pacakge has an undefined duration, and that can be of any number of days. In this node you will receive values such as P0DT7H50M0S, corresponding to the following format: PDaysDTHoursHMinutesMSecondsS (for further reference, this code contains both control characters, such as P, DT, H, M and S, and actual sets of data that relate to the duration, such as the number of days, hours, miuntes and seconds). |
| ./PackageContent/PackageName | N | String | Package name. |
| ./PackageContent/Origins | Y | - | List of available origins within the package. There may be packages with no defined origin (for example, masters). |
| ./Origins/PackageZone | N | - | Specific destination. |
| ./PackageZone/@Code | N | Integer | Destination internal code. |
| ./PackageZone/Name | N | String | Destination name. |
| ./PackageContent/Destinations | Y | - | List of available destinations within the package. There may be packages with no defined destination (for example, masters) but, otherwiese, there will always be at least one destination. |
| ./Destinations/PackageZone | N | - | Specific destination. |
| ./PackageZone/@Code | N | Integer | Destination internal code. |
| ./PackageZone/Name | N | String | Destination name. |
| ./PackageZone/RelStays | N | - | Destination stay order. By looking into all of the RelStays of all of the available destinations, you will be capable of identifying which order will be each of the destination stayed upon in a typified way. This may be helpful for you to create your own package itinerary on your system. |
| ./RelStays/RelStay | N | - | Stay order. A specific PackageZone may have multiple RelStay nodes (whenever the destination will be stayed upon more than once). |
| ./RelStay/@Code | N | Integer | Stay order code. Starting at 1, this property will identify the specific order in which this destination will be stayed upon. |
| ./PackageContent/Dates | Y | - | List of ranges of dates under which a package is valid and may be sold. There won't be any for 'Master' packages (which may be sold on any dates). |
| ./Dates/Date | N | - | Range of specific dates under which a package may be sold. When processing these dates, if available (if its not an undefined package and the @Duration property is present), you will need to account for its number of days, as you will not be able to buy a package on a date whose @Start plus its number of days exceeds its @End date (this is specifically important for packages that have very specific departure dates available). |
| ./Date/@Start | N | Date | Start date. |
| ./Date/@End | Y | Date | End date. Keep in mind that this value is optional, and will be missing for example on packages that have an undefined duration (in order to represent the list of dates on which you may search availability for, while also representing that there is no fixed end/duration for them). |
| ./PackageContent/Prices | Y | - | List of package prices. |
| ./Prices/Price | N | - | Price from. |
| ./Price/@From | N | Integer | Price amount. |
| ./Price/@Currency | N | String | Price currency. |
| ./Price/@Start | N | Date | Start date of the price. |
| ./Price/@End | N | Date | End date of the price. |
| ./PackageContent/Images | Y | - | List of package images. |
| ./Images/Image | N | String | Image URL. |
| ./PackageContent/Descriptions | Y | - | List of package descriptions. |
| ./Descriptions/Description | N | String | Item description. |
| ./Description/@Type | N | String | Type of description. Possible values: •SHT: Short • LNG: Long •INC: Price included • NIN: Price not include • INO: Important notes |
| ./PackageContent/Itineraries | Y | - | List of itineraries. |
| ./Itineraries/Itinerary | N | - | Specific itinerary. |
| ./Itinerary/@Day | N | String | Day in which an itinerary starts. Possible values: • Number • LAST: Last day |
| ./Itinerary/@Duration | Y | String | Itinerary duration. Depends on the @Day. Possible values: • Number • BEFORELAST: The day before the last. Only for Package with aflexible duration Examples: • Day 1, Duration 1: the itinerary includes the first day of the Package • Day 2, Duration 4: the itinerary includes the day 2, 3, 4 and 5 of the Package. • Day 10, Duration BEFORELAST: from day 10 till the day before the last day of the package • Day LAST, Duration (empty): The last they of the package |
| ./Itinerary/Title | Y | String | Itinerary title. |
| ./Itinerary/Subtitle | Y | String | Itinerary subtitle. |
| ./Itinerary/Description | Y | String | Itinerary description. |
| ./Itinerary/DailyProductTypes | Y | - | Product types per day. |
| ./DailyProductTypes/ProductTypes | N | - | Product types. |
| ./ProductTypes/@Day | Y | - | Number of day within the current itinerary. Example: Itinerary @Day=6, @Duration=3 DailyProductTypes: ProductTypes@Day=1: Day 6 of the itinerary ProductTypes@Day=2: Day 7 of the itinerary ProductTypes@Day=3: Day 8 of the itinerary If there is no @Day, it means that it corresponds to various days. Only for @Duration BEFORELAST. |
| ./ProductTypes/ProductType | N | - | Product type values. Refer to below ProductTypes node. |
| ./PackageContent/ProductTypes | Y | - | Products that the package contains. |
| ./ProductTypes/ProductType | N | String | Product type values: • HOT: Hotel • CAR: Car • TKT: Ticket • TRF: Transfer • PCK: Package • FLH: Flight • INS: Insurance |
<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>
<PackageContentResponse xmlns = "http://www.juniper.es/webservice/2007/">
<ContentRS Url = "http://xml-uat.bookingengine.es" TimeStamp = "2021-02-19T11:15:33.3247476+01:00" IntCode = "UgBQF3pBn9Sh1JmvRjNb8VqYA+gTHhMclwRJiT1Bxpc=">
<Contents>
<PackageContent Code = "2Xqw6mPlEU5BSITvM3NQuQ==" Duration = "P7DT0H0M0S">
<PackageName>Dynamic Package GEN flight</PackageName>
<Origins>
<PackageZone Code = "37786">
<Name>Adolfo Suárez Madrid-Barajas Aeropuerto</Name>
</PackageZone>
</Origins>
<Destinations>
<PackageZone Code = "15011">
<Name>Palma de Mallorca</Name>
<RelStays>
<RelStay Code = "1"/>
</RelStays>
</PackageZone>
</Destinations>
<Descriptions>
<Description Type = "SHT">A very nice trip to somewhere</Description>
</Descriptions>
</PackageContent>
</Contents>
</ContentRS>
</PackageContentResponse>
</soap:Body>
</soap:Envelope>
This request allows you to retrieve all the destinations, origins, dates, stays, and package codes of all the available packages on a certain supplier.
This request is sequential and will return different results depending on the used filters:
| 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 |
| PackageSearcherRequest | Y | - | Package search properties. If no property are set a list will all the available destinations will be returned. |
| ./PackageSearcherRequest/@DestinationZone | Y | Integer | Destination code, if specified, a list with all the available origins of the destination will be returned. |
| ./PackageSearcherRequest/@OriginZone | Y | Integer | Origin code, if specified alongside the destination code a list with all the available dates will be returned. |
| ./PackageSearcherRequest/@Date | Y | Date | Package date, if specified alongside the destination and the origin code a list with all the available stays will be returned. |
| ./PackageSearcherRequest/@Duration | Y | Integer | Stay duration of the package, if specified alongside the destination code, the origin code and a date a list with all the available package codes will be returned. |
| Suppliers | Y | - | List of suppliers that you wish to request for. If not informed, only dynamic packages will be returned. |
| ./Suppliers/Supplier | N | String | Supplier code. Possible values: • P - Predefined packages • D3N - Dynamic packages • Supplier code - Code of the supplier you want to obtain the results from (e.g. EUM) |
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns="http://www.juniper.es/webservice/2007/">
<soapenv:Header/>
<soapenv:Body>
<PackageSearcher>
<PackageSearcherRQ Version="1.1" Language="en">
<Login Email="user@mydomain.com" Password="pass"/>
<PackageSearcherRequest/>
</PackageSearcherRQ>
</PackageSearcher>
</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>
<PackageSearcher>
<PackageSearcherRQ Version="1.1" Language="en">
<Login Email="user@mydomain.com" Password="pass"/>
<PackageSearcherRequest DestinationZone="15011" />
</PackageSearcherRQ>
</PackageSearcher>
</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>
<PackageSearcher>
<PackageSearcherRQ Version="1.1" Language="en">
<Login Email="user@mydomain.com" Password="pass"/>
<PackageSearcherRequest DestinationZone="15011" OriginZone="37786" />
</PackageSearcherRQ>
</PackageSearcher>
</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>
<PackageSearcher>
<PackageSearcherRQ Version="1.1" Language="en">
<Login Email="user@mydomain.com" Password="pass"/>
<PackageSearcherRequest DestinationZone="15011" OriginZone="37786" Date="2020-02-28"/>
</PackageSearcherRQ>
</PackageSearcher>
</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>
<PackageSearcher>
<PackageSearcherRQ Version="1.1" Language="en">
<Login Email="user@mydomain.com" Password="pass"/>
<PackageSearcherRequest DestinationZone="15011" OriginZone="37786" Date="2020-02-28" Duration="7"/>
</PackageSearcherRQ>
</PackageSearcher>
</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. |
| PackageSearcher | N | - | - |
| ./PackageSearcher/PackageSearcherItems | N | - | Element container. |
| ./PackageSearcherItems/PackageSearcherItem | N | - | Element with the asked information (based on the filters used on the request) |
| ./PackageSearcherItem/@Code | N | String | Value with the asked information. Note that all values will be returned as a String (including the Dates, which should be used in the request as a DateTime) |
| ./PackageSearcherItem/Name | Y | String | Name of the value (destination name…) |
Here we have examples on all the available responses depending on the used filters:
<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>
<PackageSearcherResponse xmlns="http://www.juniper.es/webservice/2007/">
<PackageSearcherRS Url="http://xml-uat.bookingengine.es" TimeStamp="2019-10-01T01:08:52.209618+02:00" IntCode="WNWtjLoI9p42JJDNwwsLjKkhdsMLeP0webPv/7piy/0=">
<PackageSearcher>
<PackageSearcherItems>
<PackageSearcherItem Code="319">
<Name>Barcelona Province</Name>
</PackageSearcherItem>
<PackageSearcherItem Code="1953">
<Name>Majorca</Name>
</PackageSearcherItem>
<PackageSearcherItem Code="1361">
<Name>Orlando</Name>
</PackageSearcherItem>
<PackageSearcherItem Code="15011">
<Name>Palma de Mallorca</Name>
</PackageSearcherItem>
<PackageSearcherItem Code="40233">
<Name>Palma de Mallorca Airport</Name>
</PackageSearcherItem>
</PackageSearcherItems>
</PackageSearcher>
</PackageSearcherRS>
</PackageSearcherResponse>
</soap:Body>
</soap:Envelope>
<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>
<PackageSearcherResponse xmlns="http://www.juniper.es/webservice/2007/">
<PackageSearcherRS Url="http://xml-uat.bookingengine.es" TimeStamp="2019-10-01T01:11:32.1164998+02:00" IntCode="1BixGo+mkCx3rQcIGNDHb5x1Cen8B0gxYTHc6VCI+dQ=">
<PackageSearcher>
<PackageSearcherItems>
<PackageSearcherItem Code="37786">
<Name>Adolfo Suárez Madrid-Barajas Airport</Name>
</PackageSearcherItem>
</PackageSearcherItems>
</PackageSearcher>
</PackageSearcherRS>
</PackageSearcherResponse>
</soap:Body>
</soap:Envelope>
<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>
<PackageSearcherResponse xmlns="http://www.juniper.es/webservice/2007/">
<PackageSearcherRS Url="http://xml-uat.bookingengine.es" TimeStamp="2019-10-01T01:12:51.0873401+02:00" IntCode="BLcs2BeUqiXorEsQO8epnlrekq/JdRmAca/zVt+8p3k=">
<PackageSearcher>
<PackageSearcherItems>
<PackageSearcherItem Code="02/10/2019"/>
<PackageSearcherItem Code="03/10/2019"/>
<PackageSearcherItem Code="04/10/2019"/>
<PackageSearcherItem Code="05/10/2019"/>
<PackageSearcherItem Code="06/10/2019"/>
<PackageSearcherItem Code="07/10/2019"/>
<PackageSearcherItem Code="08/10/2019"/>
<PackageSearcherItem Code="09/10/2019"/>
<PackageSearcherItem Code="10/10/2019"/>
<PackageSearcherItem Code="11/10/2019"/>
<PackageSearcherItem Code="12/10/2019"/>
<PackageSearcherItem Code="13/10/2019"/>
<PackageSearcherItem Code="14/10/2019"/>
<PackageSearcherItem Code="15/10/2019"/>
<PackageSearcherItem Code="16/10/2019"/>
<PackageSearcherItem Code="17/10/2019"/>
<PackageSearcherItem Code="22/12/2020"/>
<PackageSearcherItem Code="23/12/2020"/>
<PackageSearcherItem Code="24/12/2020"/>
<PackageSearcherItem Code="25/12/2020"/>
<PackageSearcherItem Code="26/12/2020"/>
<PackageSearcherItem Code="27/12/2020"/>
<PackageSearcherItem Code="28/12/2020"/>
<PackageSearcherItem Code="29/12/2020"/>
<PackageSearcherItem Code="30/12/2020"/>
<PackageSearcherItem Code="31/12/2020"/>
</PackageSearcherItems>
</PackageSearcher>
</PackageSearcherRS>
</PackageSearcherResponse>
</soap:Body>
</soap:Envelope>
<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>
<PackageSearcherResponse xmlns="http://www.juniper.es/webservice/2007/">
<PackageSearcherRS Url="http://xml-uat.bookingengine.es" TimeStamp="2019-10-01T01:15:49.2561086+02:00" IntCode="BLcs2BeUqiXorEsQO8epnl5bitaujEcb3RGveYp6Jrk=">
<PackageSearcher>
<PackageSearcherItems>
<PackageSearcherItem Code="7"/>
</PackageSearcherItems>
</PackageSearcher>
</PackageSearcherRS>
</PackageSearcherResponse>
</soap:Body>
</soap:Envelope>
<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>
<PackageSearcherResponse xmlns="http://www.juniper.es/webservice/2007/">
<PackageSearcherRS Url="http://xml-uat.bookingengine.es" TimeStamp="2019-10-01T01:16:24.6771394+02:00" IntCode="rfavwxN/pzfRC7wL8bOsXqLAoI18ub7sYIVeJhY2HmU=">
<PackageSearcher>
<PackageSearcherItems>
<PackageSearcherItem Code="2Xqw6mPlEU5BSITvM3NQuQ==">
<Name>Dynamic Package GEN flight</Name>
</PackageSearcherItem>
</PackageSearcherItems>
</PackageSearcher>
</PackageSearcherRS>
</PackageSearcherResponse>
</soap:Body>
</soap:Envelope>
This is the basic availability request for the package product. It returns a list of packages (with mandatory and cheapest products) that comply with the requested search parameters.
For you to be able to send an availability request, you will be expected to provide 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. |
| {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) |
| PackageRequest | N | - | Search properties. |
| ./PackageRequest/SearchSegmentsPackages | N | - | List of elements which contains package information |
| ./SearchSegmentsPackages/SearchSegmentPackages | N | - | Package code, composed by its identifier concatenated with the provider code |
| ./SearchSegmentPackages/@Start | N | Date | Stard date Format: yyyy-MM-dd |
| ./SearchSegmentPackages/@End | N | Date | End date Format: yyyy-MM-dd |
| ./SearchSegmentPackages/@OriginZone | Y | Integer | Juniper code of the origin zone. You may specify -1 if you wish to search for a origin-less package (for example, when there are no flights involved). |
| ./SearchSegmentPackages/@DestinationZone | N | Integer | Juniper code of the destination zone. |
| ./SearchSegmentPackages/@DestinationZoneForHotel | Y | Integer | Zone code where you want to search hotels. Only for the code of the zone where you want to look for a hotel. Only for Master packages. |
| ./SearchSegmentPackages/Suppliers | Y | - | List of supplier codes that you wish for the results to be filtered for. NOT IMPLEMENTED |
| ./Suppliers/Supplier | N | String | Supplier code. Multiple supplier codes may be specified through multiple supplier nodes. |
| ./SearchSegmentPackages/CountryOfResidence | N | String | Code of the country residence of the passenger following the ISO-3166-1 standard. You may refer to the FAQ section for further information. |
| ./SearchSegmentPackages/PackageCodes | N | - | List of package codes. |
| ./PackageCodes/PackageCode | N | String | Package code that you want to search. You can search up to 20 package codes |
| ./SearchSegmentPackages/HotelName | Y | String | Name of the hotel that you want to filter by |
| ./SearchSegmentPackages/HotelCategories | Y | - | List of hotel categories that you want to filter by |
| ./HotelCategories/HotelCategory | N | String | Hotel category |
| ./HotelCategory/@Type | N | Integer | Type of category |
| ./PackageRequest/RelPaxesDist | N | - | Passengers’ distribution you wish to request. |
| ./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 |
| AdvancedOptions | Y | - | Optional parameters. |
| ./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/TimeOut | Y | Integer | This value allows you to set the timeout that will be used on the availability request. Note that this node expects milliseconds (for example; 5000 for a 5 second timeout). |
| ./AdvancedOptions/UseCurrency | Y | String | This value allows you to set the currency code that will be used on the booking flow process. It is important to note that if a currency is specified on the availability request, you will then need to set the same AdvancedOption along the same value on the rest of the booking flow transactions. It is also important to note that the list of available currencies for your use (if any, as the feature could not be available) will entirely depend of the Juniper supplier that you will be connecting to. Last of all, please note that if no currency is set on the request the system will then use the default currency configured by your Juniper supplier. |
<soap:Envelope xmlns:soap = "http://www.w3.org/2003/05/soap-envelope" xmlns = "http://www.juniper.es/webservice/2007/">
<soap:Header/>
<soap:Body>
<PackageAvail>
<PackageAvailRQ Version = "1.1" Language = "en">
<Login Email = "user@mydomain.com" Password = "pass"/>
<Paxes>
<Pax IdPax = "1">
<Age>30</Age>
</Pax>
<Pax IdPax = "2">
<Age>30</Age>
</Pax>
</Paxes>
<PackageRequest>
<SearchSegmentsPackages>
<SearchSegmentPackages Start = "2026-12-10" End = "2026-12-16" OriginZone = "-1" DestinationZone = "15011">
<CountryOfResidence>ES</CountryOfResidence>
<PackageCodes>
<PackageCode>wzz9+u3iZZKMuUek/t6Fxw==</PackageCode>
</PackageCodes>
</SearchSegmentPackages>
</SearchSegmentsPackages>
<RelPaxesDist>
<RelPaxDist>
<RelPaxes>
<RelPax IdPax = "1"/>
</RelPaxes>
</RelPaxDist>
</RelPaxesDist>
</PackageRequest>
<AdvancedOptions>
<ShowBreakdownPrice>false</ShowBreakdownPrice>
</AdvancedOptions>
</PackageAvailRQ>
</PackageAvail>
</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 available package results. |
| ./Results/PackageResult | N | - | Specific package result. |
| ./PackageResult/@Start | N | Date | Start date. Format: yyyy-MM-dd |
| ./PackageResult/@End | Y | Date | End date. Format: yyyy-MM-dd |
| ./PackageResult/@OriginZone | Y | Integer | Juniper code of the origin zone. |
| ./PackageResult/@DestinationZone | N | Integer | Juniper code of the destination zone. |
| ./PackageResult/@Code | N | String | Package code. |
| ./PackageResult/@Status | N | String | Package status: * OK: Available * RQ: On request |
| ./PackageResult/@RatePlanCode | N | String | Code that identifies the combination. It will be required in subsequent requests in order to continue with the booking flow. It is not recommended for you to cache the same on a long period of time (as the higher the time the more likely for the subsequent request to fail due to lack of availability). |
| ./PackageResult/PackageInfo | N | - | Package basic information. |
| ./PackageInfo/Name | N | String | Package name. |
| ./PackageInfo/Images | Y | - | Package images. |
| ./Images/Image | N | String | Package specific image URL. |
| ./PackageInfo/Description | Y | - | Package description. |
| ./PackageResult/{Prices} | N | - | Package price object. |
| ./PackageResult/{Stays} | N | - | List of package stays. This is the object that lists and details all of the products (hotels, flights, transfers, etc...) that are part of the package result. |
| ./PackageResult/{AdditionalElements} | Y | - | Additional elements from the package (not from their products) such as, for example, package supplements. |
<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>
<PackageAvailResponse xmlns = "http://www.juniper.es/webservice/2007/">
<AvailabilityRS Url = "http://xml-uat.bookingengine.es" TimeStamp = "2026-05-08T14:43:31.3813526+02:00" IntCode = "W1jPfHLa7yw63sLhTRyKf/kCGBWqKvflYSW0bcCJXiw=">
<Results>
<PackageResult Start = "2026-12-10" End = "2026-12-16" DestinationZone = "15011" Code = "wzz9+u3iZZKMuUek/t6Fxw==" Status = "OK" RatePlanCode = "ZtJgg+ZrQ6PlJAaAbJ6vX6Xhl3L7vneNYy9bLgVCSkLqiVwpSzrTF0BX0JsN06JH7ZoPIWmsKsbckyW2Gi+D88wJv+s0vx...">
<PackageInfo>
<Name>UAT Test Dynamic Package</Name>
</PackageInfo>
<Prices>
<Price Type = "S" Currency = "EUR">
<TotalFixAmounts Recommended = "0" Gross = "288.02" Nett = "288.02">
<Service Amount = "265.78"/>
<ServiceTaxes Included = "false" Amount = "22.24"/>
</TotalFixAmounts>
</Price>
</Prices>
<Stays>
<Stay Code = "1" DestinationZone = "15011" Start = "2026-12-10" End = "2026-12-16">
<Hotels>
<Hotel Code = "j8SZiYI/Ut6Ir0JgCO/xWA==" JPCode = "JP046300" Start = "2026-12-10" End = "2026-12-16" ICode = "jgXh5M+CqhWzn22P64HBu8MbttREmMB3gDUiLKnLJJrNFirhbaxS+8RAT/+NiRDasVkvvEX84cB9nzt7FRXx9nmZjZ6UcbfyG4uTIneL1..." SearchMore = "true">
<HotelInfo>
<Name>Allsun Hotel Pil·larí Playa UAT</Name>
<Description>Situated on the seafront, opposite a long stretch of sandy beach, by the seaside road of Playa de Palma. 204 studios and apartments in constant renovation with reception, bar-cafeteria, video-games, billiards and tv lounge (sateliteTV),</Description>
<Images>
<Image>https://juniper-uat.bookingengine.es/images/upload_p//hotels/Apartamentos_Allsun_Pil_lari_Play_a/PIL_20190424_161.jpg</Image>
</Images>
<HotelCategory Type = "3">3 Stars</HotelCategory>
<Address>Carrer Marbella, 24, 07610 Palma, Islas Baleares, Spain</Address>
<Latitude>39.5264005357401</Latitude>
<Longitude>2.73455500602722</Longitude>
</HotelInfo>
<HotelOptions>
<HotelOption PackageContract = "false">
<Board Type = "SA">Room Only</Board>
<HotelRooms>
<HotelRoom Units = "1">
<RoomCategory Type = "2">Single</RoomCategory>
</HotelRoom>
</HotelRooms>
<AdditionalElements>
<HotelOffers>
<HotelOffer>
<Name>Test Offer (default)</Name>
<Description>Additional conditions of the offer may be specified here</Description>
</HotelOffer>
<HotelOffer>
<Description>Promotional Notes</Description>
</HotelOffer>
</HotelOffers>
</AdditionalElements>
</HotelOption>
</HotelOptions>
</Hotel>
</Hotels>
<Transfers>
<Transfer Code = "LoxcM8CoalHFFgC8zxI8Ql7sWFq/zSKmjLdMYjKqssQ=" ICode = "UU4ccCkzI+fvJgCuX7qLQwUa6kgvkjn/hNDcnW7wjjOWzgsQDR+vS/lY4IRercob" SearchMore = "true" Order = "1">
<TransferInfo>
<Name>PMI Airport to center</Name>
<Description>Description of the transfer from Palma Airport to the city center</Description>
<Images>
<Image Featured = "true">
<FileName>https://juniper-uat.bookingengine.es/images/upload//Transfers/cache_46940620.png</FileName>
</Image>
</Images>
</TransferInfo>
<TransferOptions>
<TransferOption Code = "16" Start = "2026-12-10T12:00:00" End = "2026-12-10T12:45:00" Origin = "40233" OriginType = "ARP" Destination = "15011" DestinationType = "ALO" Duration = "P0DT0H45M0S">
<Name>Small Car</Name>
<Description>Small Car</Description>
<OriginName>Palma de Mallorca Airport</OriginName>
<DestinationName>Palma de Mallorca</DestinationName>
</TransferOption>
</TransferOptions>
</Transfer>
</Transfers>
</Stay>
</Stays>
</PackageResult>
</Results>
</AvailabilityRS>
</PackageAvailResponse>
</soap:Body>
</soap:Envelope>
This is the change product transaction, which allows you to request and change specific products from an already established package (one that you would have previously received from the PackageAvail response). For example, through this transaction, you will be able to select a specific hotel from a specific stay from a package, retrieve all of the hotels that there are available for a specific stay and, if you desire it so, replace the original hotel option from the package with the one that you selected on this transaction.
It is important to keep in mind that changes are performed on a product-by-product basis (if you wish to change multiple products, you will need to send multiple PackageChangeProduct requests, sequentially.
Having understood this, in order to be able to properly utilize the transaction, you will need to keep in mind that:
In addition to this, in order to actually perform a product change, you will be required the provide the following set of data from the PackageAvail 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. |
| {Login} | N | - | Customer login to access the Web Service |
| PackageChangeProductRequest | N | - | Change product parameters. |
| ./PackageChangeProductRequest/PackageOption | N | - | Specific package option. |
| ./PackageOption/@RatePlanCode | N | String | Code that identifies the package combination. Retrieved from the previous PackageAvail response. |
| ./PackageOption/@ProductType | Y | String | DEPRECATED. |
| ./PackageOption/@ICode | N | Strng | Code that idenifies the product that you're going to request to change. Retrieved from the previous PackageAvail response. |
| AdvancedOptions | Y | - | Optional parameters. |
| ./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>
<PackageChangeProduct>
<PackageChangeProductRQ Version = "1.1" Language = "en">
<Login Email = "user@mydomain.com" Password = "pass"/>
<PackageChangeProductRequest>
<PackageOption RatePlanCode = "ZtJgg+ZrQ6PlJAaAbJ6vX6Xhl3L7vneNYy9bLgVCSkLqiVwpSzrTF0BX0JsN06JH7ZoPIWmsKsbckyW2Gi+D88wJv+s0vxNFl..."
ICode = "jgXh5M+CqhWzn22P64HBu8MbttREmMB3gDUiLKnLJJrNFirhbaxS+8RAT/+NiRDasVkvvEX84cB9nzt7FRXx9nmZjZ6UcbfyG4uTIneL..."/>
</PackageChangeProductRequest>
<AdvancedOptions>
<ShowBreakdownPrice>false</ShowBreakdownPrice>
</AdvancedOptions>
</PackageChangeProductRQ>
</PackageChangeProduct>
</soapenv:Body>
</soapenv:Envelope>
The response that you will receive (that shares almost the same structure as the PackageAvail response, in case that you would like to start from here for your ease of implementation) will contain multiple package options (PackageResult), each of them being an instance of the original requested package but with a different product option for the product that you requested to change in question.
Each of them will have the new total price available (with the new product applied) and will contain a new RatePlanCode that will identify the new/changed package, in case that you will like to apply the change and continue with the same (case for which you should simply take and use that RatePlanCode, either to change another product through an additiona PackageChangeProduct request, or either to continue the booking flow process through the PackageBookingRules request).
| 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 package results. |
| ./Results/PackageResult | N | - | Specific package result. |
| ./PackageResult/@Start | N | Date | Start date. Format: yyyy-MM-dd |
| ./PackageResult/@End | Y | Date | End date. Format: yyyy-MM-dd |
| ./PackageResult/@OriginZone | Y | Integer | Juniper code of the origin zone. |
| ./PackageResult/@DestinationZone | N | Integer | Juniper code of the destination zone. |
| ./PackageResult/@Code | N | String | Package code. |
| ./PackageResult/@Status | N | String | Package status: * OK: Available * RQ: On request |
| ./PackageResult/@RatePlanCode | N | String | Code that identifies the package combination. On the context of the PackageChangeProduct response, it identifies the package along with the new changed product applied. |
| ./PackageResult/PackageInfo | N | - | Package basic information. |
| ./PackageInfo/Name | N | String | Package name. |
| ./PackageInfo/Images | Y | - | Package images. |
| ./Images/Image | N | String | Package specific image URL. |
| ./PackageInfo/Description | Y | - | Package description. |
| ./PackageResult/{Prices} | N | - | Package price object. On the context of the PackageChangeProduct response, it identifies the new total packge price while including the new changed option. |
| ./PackageResult/{Stays} | N | - | List of package stays. This is the object that lists and details all of the products (hotels, flights, transfers, etc...) that are part of the package result. |
| ./PackageResult/{AdditionalElements} | Y | - | Additional elements from the package (not from their products) such as, for example, package supplements. |
<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>
<PackageChangeProductResponse xmlns = "http://www.juniper.es/webservice/2007/">
<AvailabilityRS Url = "http://xml-uat.bookingengine.es" TimeStamp = "2026-05-08T15:15:48.6056913+02:00" IntCode = "kEpZwo3bMBrfB+jwa7+d6LUFvjJnlQUQASWykYg6TNY=">
<Results>
<PackageResult Start = "2026-12-10" End = "2026-12-16" DestinationZone = "15011" Code = "wzz9+u3iZZKMuUek/t6Fxw==" Status = "OK" RatePlanCode = "ZtJgg+ZrQ6PlJAaAbJ6vX6Xhl3L7vneNYy9bLgVCSk...">
<PackageInfo>
<Name>UAT Test Dynamic Package</Name>
</PackageInfo>
<Prices>
<Price Type = "S" Currency = "EUR">
<TotalFixAmounts Recommended = "0" Gross = "288.02" Nett = "288.02">
<Service Amount = "265.78"/>
<ServiceTaxes Included = "false" Amount = "22.24"/>
</TotalFixAmounts>
</Price>
</Prices>
<Stays>
<Stay Code = "1" DestinationZone = "15011" Start = "2026-12-10" End = "2026-12-16">
<Hotels>
<Hotel Code = "j8SZiYI/Ut6Ir0JgCO/xWA==" JPCode = "JP046300" Start = "2026-12-10" End = "2026-12-16" ICode = "eqsmVPegzzjZOjFeRlWVk5PRPwW3FQMgJgpMYU9zWrCsbWqD67eRMwG1BkN...">
<HotelInfo>
<Name>Allsun Hotel Pil·larí Playa UAT</Name>
<Description>Situated on the seafront, opposite a long stretch of sandy beach, by the seaside road of Playa de Palma. 204 studios and apartments in constant renovation with reception, bar-cafeteria, video-games, billiards and tv lounge (sateliteTV),</Description>
<Images>
<Image>https://juniper-uat.bookingengine.es/images/upload_p//hotels/Apartamentos_Allsun_Pil_lari_Play_a/PIL_20190424_161.jpg</Image>
</Images>
<HotelCategory Type = "3">3 Stars</HotelCategory>
<Address>Carrer Marbella, 24, 07610 Palma, Islas Baleares, Spain</Address>
<Latitude>39.5264005357401</Latitude>
<Longitude>2.73455500602722</Longitude>
</HotelInfo>
<HotelOptions>
<HotelOption PackageContract = "false">
<Board Type = "SA">Room Only</Board>
<HotelRooms>
<HotelRoom Units = "1">
<RoomCategory Type = "2">Single</RoomCategory>
</HotelRoom>
</HotelRooms>
<AdditionalElements>
<HotelOffers>
<HotelOffer>
<Name>Test Offer (default)</Name>
<Description>Additional conditions of the offer may be specified here</Description>
</HotelOffer>
<HotelOffer>
<Description>Promotional Notes</Description>
</HotelOffer>
</HotelOffers>
</AdditionalElements>
</HotelOption>
</HotelOptions>
</Hotel>
</Hotels>
<Transfers>
<Transfer Code = "LoxcM8CoalHFFgC8zxI8Ql7sWFq/zSKmjLdMYjKqssQ=" ICode = "UU4ccCkzI+fvJgCuX7qLQwUa6kgvkjn/hNDcnW7wjjOWzgsQDR+vS/lY4IRercob" Order = "1">
<TransferInfo>
<Name>PMI Airport to center</Name>
<Description>Description of the transfer from Palma Airport to the city center</Description>
<Images>
<Image Featured = "true">
<FileName>https://juniper-uat.bookingengine.es/images/upload//Transfers/cache_46940620.png</FileName>
</Image>
</Images>
</TransferInfo>
<TransferOptions>
<TransferOption Code = "16" Start = "2026-12-10T12:00:00" End = "2026-12-10T12:45:00" Origin = "40233" OriginType = "ARP" Destination = "15011" DestinationType = "ALO" Duration = "P0DT0H45M0S">
<Name>Small Car</Name>
<Description>Small Car</Description>
<OriginName>Palma de Mallorca Airport</OriginName>
<DestinationName>Palma de Mallorca</DestinationName>
</TransferOption>
</TransferOptions>
</Transfer>
</Transfers>
</Stay>
</Stays>
</PackageResult>
<PackageResult Start = "2026-12-10" End = "2026-12-16" DestinationZone = "15011" Code = "wzz9+u3iZZKMuUek/t6Fxw==" Status = "OK" RatePlanCode = "ZtJgg+ZrQ6PlJAaAbJ6vX6Xhl3L7vneNYy9bLgVCSkLqiVwpSz...">
<PackageInfo>
<Name>UAT Test Dynamic Package</Name>
</PackageInfo>
<Prices>
<Price Type = "S" Currency = "EUR">
<TotalFixAmounts Recommended = "0" Gross = "343.59" Nett = "343.59">
<Service Amount = "316.9"/>
<ServiceTaxes Included = "false" Amount = "26.69"/>
</TotalFixAmounts>
</Price>
</Prices>
<Stays>
<Stay Code = "1" DestinationZone = "15011" Start = "2026-12-10" End = "2026-12-16">
<Hotels>
<Hotel Code = "j8SZiYI/Ut6Ir0JgCO/xWA==" JPCode = "JP046300" Start = "2026-12-10" End = "2026-12-16" ICode = "eqsmVPegzzjZOjFeRlWVk5PRPwW3FQMgJgpMYU9zWrCsbWqD67e...">
<HotelInfo>
<Name>Allsun Hotel Pil·larí Playa UAT</Name>
<Description>Situated on the seafront, opposite a long stretch of sandy beach, by the seaside road of Playa de Palma. 204 studios and apartments in constant renovation with reception, bar-cafeteria, video-games, billiards and tv lounge (sateliteTV),</Description>
<Images>
<Image>https://juniper-uat.bookingengine.es/images/upload_p//hotels/Apartamentos_Allsun_Pil_lari_Play_a/PIL_20190424_161.jpg</Image>
</Images>
<HotelCategory Type = "3">3 Stars</HotelCategory>
<Address>Carrer Marbella, 24, 07610 Palma, Islas Baleares, Spain</Address>
<Latitude>39.5264005357401</Latitude>
<Longitude>2.73455500602722</Longitude>
</HotelInfo>
<HotelOptions>
<HotelOption PackageContract = "false">
<Board Type = "MP">Half Board</Board>
<HotelRooms>
<HotelRoom Units = "1">
<RoomCategory Type = "2">Single</RoomCategory>
</HotelRoom>
</HotelRooms>
<AdditionalElements>
<HotelOffers>
<HotelOffer>
<Name>Test Offer (default)</Name>
<Description>Additional conditions of the offer may be specified here</Description>
</HotelOffer>
<HotelOffer>
<Description>Promotional Notes</Description>
</HotelOffer>
</HotelOffers>
</AdditionalElements>
</HotelOption>
</HotelOptions>
</Hotel>
</Hotels>
<Transfers>
<Transfer Code = "LoxcM8CoalHFFgC8zxI8Ql7sWFq/zSKmjLdMYjKqssQ=" ICode = "UU4ccCkzI+fvJgCuX7qLQwUa6kgvkjn/hNDcnW7wjjOWzgsQDR+vS/lY4IRercob" Order = "1">
<TransferInfo>
<Name>PMI Airport to center</Name>
<Description>Description of the transfer from Palma Airport to the city center</Description>
<Images>
<Image Featured = "true">
<FileName>https://juniper-uat.bookingengine.es/images/upload//Transfers/cache_46940620.png</FileName>
</Image>
</Images>
</TransferInfo>
<TransferOptions>
<TransferOption Code = "16" Start = "2026-12-10T12:00:00" End = "2026-12-10T12:45:00" Origin = "40233" OriginType = "ARP" Destination = "15011" DestinationType = "ALO" Duration = "P0DT0H45M0S">
<Name>Small Car</Name>
<Description>Small Car</Description>
<OriginName>Palma de Mallorca Airport</OriginName>
<DestinationName>Palma de Mallorca</DestinationName>
</TransferOption>
</TransferOptions>
</Transfer>
</Transfers>
</Stay>
</Stays>
</PackageResult>
<PackageResult Start = "2026-12-10" End = "2026-12-16" DestinationZone = "15011" Code = "wzz9+u3iZZKMuUek/t6Fxw==" Status = "OK" RatePlanCode = "ZtJgg+ZrQ6PlJAaAbJ6vX6Xhl3L7vneNYy9bLgVCS...">
<PackageInfo>
<Name>UAT Test Dynamic Package</Name>
</PackageInfo>
<Prices>
<Price Type = "S" Currency = "EUR">
<TotalFixAmounts Recommended = "0" Gross = "399.15" Nett = "399.15">
<Service Amount = "368.02"/>
<ServiceTaxes Included = "false" Amount = "31.13"/>
</TotalFixAmounts>
</Price>
</Prices>
<Stays>
<Stay Code = "1" DestinationZone = "15011" Start = "2026-12-10" End = "2026-12-16">
<Hotels>
<Hotel Code = "j8SZiYI/Ut6Ir0JgCO/xWA==" JPCode = "JP046300" Start = "2026-12-10" End = "2026-12-16" ICode = "eqsmVPegzzjZOjFeRlWVk5PRPwW3FQMgJgpMYU9zWrCsbWqD67eRMwG1Bk...">
<HotelInfo>
<Name>Allsun Hotel Pil·larí Playa UAT</Name>
<Description>Situated on the seafront, opposite a long stretch of sandy beach, by the seaside road of Playa de Palma. 204 studios and apartments in constant renovation with reception, bar-cafeteria, video-games, billiards and tv lounge (sateliteTV),</Description>
<Images>
<Image>https://juniper-uat.bookingengine.es/images/upload_p//hotels/Apartamentos_Allsun_Pil_lari_Play_a/PIL_20190424_161.jpg</Image>
</Images>
<HotelCategory Type = "3">3 Stars</HotelCategory>
<Address>Carrer Marbella, 24, 07610 Palma, Islas Baleares, Spain</Address>
<Latitude>39.5264005357401</Latitude>
<Longitude>2.73455500602722</Longitude>
</HotelInfo>
<HotelOptions>
<HotelOption PackageContract = "false">
<Board Type = "AD">Bed & Breakfast</Board>
<HotelRooms>
<HotelRoom Units = "1">
<RoomCategory Type = "2">Single</RoomCategory>
</HotelRoom>
</HotelRooms>
<AdditionalElements>
<HotelOffers>
<HotelOffer>
<Name>Test Offer (default)</Name>
<Description>Additional conditions of the offer may be specified here</Description>
</HotelOffer>
<HotelOffer>
<Description>Promotional Notes</Description>
</HotelOffer>
</HotelOffers>
</AdditionalElements>
</HotelOption>
</HotelOptions>
</Hotel>
</Hotels>
<Transfers>
<Transfer Code = "LoxcM8CoalHFFgC8zxI8Ql7sWFq/zSKmjLdMYjKqssQ=" ICode = "UU4ccCkzI+fvJgCuX7qLQwUa6kgvkjn/hNDcnW7wjjOWzgsQDR+vS/lY4IRercob" Order = "1">
<TransferInfo>
<Name>PMI Airport to center</Name>
<Description>Description of the transfer from Palma Airport to the city center</Description>
<Images>
<Image Featured = "true">
<FileName>https://juniper-uat.bookingengine.es/images/upload//Transfers/cache_46940620.png</FileName>
</Image>
</Images>
</TransferInfo>
<TransferOptions>
<TransferOption Code = "16" Start = "2026-12-10T12:00:00" End = "2026-12-10T12:45:00" Origin = "40233" OriginType = "ARP" Destination = "15011" DestinationType = "ALO" Duration = "P0DT0H45M0S">
<Name>Small Car</Name>
<Description>Small Car</Description>
<OriginName>Palma de Mallorca Airport</OriginName>
<DestinationName>Palma de Mallorca</DestinationName>
</TransferOption>
</TransferOptions>
</Transfer>
</Transfers>
</Stay>
</Stays>
</PackageResult>
</Results>
</AvailabilityRS>
</PackageChangeProductResponse>
</soap:Body>
</soap:Envelope>
This transaction is used in order to verify the availability from an already selected package combination from the availability response. If the price and/or status changes, a warning will advise about the changes. Also, a RatePlanCode will be genereated by the system which will be the one used in later transactions.
Important note:
It is recommended to use this transaction whenever there has been a considerable delay since you first retrieved the package combination from the availability response (for example, if your system caches availability responses). Otherwise, you may skip this transaction and directly proceed to the PackageBookingRules step.
| 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 |
| PackageCheckAvailRequest | N | - | Search properties. |
| ./PackageCheckAvailRequest/PackageOption | N | - | Specific package option. |
| ./PackageOption/@RatePlanCode | N | String | Code that identifies the package combination. Retrieved from the previous PackageAvail response. |
| AdvancedOptions | Y | - | Optional parameters. |
| ./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>
<PackageCheckAvail>
<PackageCheckAvailRQ Version = "1.1" Language = "en">
<Login Email = "user@mydomain.com" Password = "pass"/>
<PackageCheckAvailRequest>
<PackageOption RatePlanCode = "ZtJgg+ZrQ6PlJAaAbJ6vX6Xhl3L7vneNYy9bLgVCSkLqiVwpSzrTF0BX0JsN06JH7ZoPIWmsKsbckyW2Gi+D88wJv+s0vx..."/>
</PackageCheckAvailRequest>
<AdvancedOptions>
<ShowBreakdownPrice>false</ShowBreakdownPrice>
</AdvancedOptions>
</PackageCheckAvailRQ>
</PackageCheckAvail>
</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 package results. |
| ./Results/PackageResult | N | - | Specific package result. |
| ./PackageResult/@Start | N | Date | Start date. Format: yyyy-MM-dd |
| ./PackageResult/@End | Y | Date | End date. Format: yyyy-MM-dd |
| ./PackageResult/@OriginZone | Y | Integer | Juniper code of the origin zone. |
| ./PackageResult/@DestinationZone | N | Integer | Juniper code of the destination zone. |
| ./PackageResult/@Code | N | String | Package code. |
| ./PackageResult/@Status | N | String | Package status: * OK: Available * RQ: On request |
| ./PackageResult/@RatePlanCode | N | String | Code that identifies the package combination. |
| ./PackageResult/PackageInfo | N | - | Package basic information. |
| ./PackageInfo/Name | N | String | Package name. |
| ./PackageInfo/Images | Y | - | Package images. |
| ./Images/Image | N | String | Package specific image URL. |
| ./PackageInfo/Description | Y | - | Package description. |
| ./PackageResult/{Prices} | N | - | Package price object. |
| ./PackageResult/{Stays} | N | - | List of package stays. This is the object that lists and details all of the products (hotels, flights, transfers, etc...) that are part of the package result. |
| ./PackageResult/{AdditionalElements} | Y | - | Additional elements from the package (not from their products) such as, for example, package supplements. |
<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>
<PackageCheckAvailResponse xmlns = "http://www.juniper.es/webservice/2007/">
<PackageCheckAvailRS Url = "http://xml-uat.bookingengine.es" TimeStamp = "2026-05-08T15:29:03.761353+02:00" IntCode = "DOryRMNZMzqNypMBkSmPNF8NqF0fWIs+ZaTk/W4Kj6c=">
<Results>
<PackageResult Start = "2026-12-10" End = "2026-12-16" DestinationZone = "15011" Code = "wzz9+u3iZZKMuUek/t6Fxw==" Status = "OK" RatePlanCode = "ZtJgg+ZrQ6PlJAaAbJ6vX6Xhl3L7vneNYy9bLgVCSkLqiVwpSzrTF0BX...">
<PackageInfo>
<Name>UAT Test Dynamic Package</Name>
</PackageInfo>
<Prices>
<Price Type = "S" Currency = "EUR">
<TotalFixAmounts Recommended = "0" Gross = "288.02" Nett = "288.02">
<Service Amount = "265.78"/>
<ServiceTaxes Included = "false" Amount = "22.24"/>
</TotalFixAmounts>
</Price>
</Prices>
<Stays>
<Stay Code = "1" DestinationZone = "15011" Start = "2026-12-10" End = "2026-12-16">
<Hotels>
<Hotel Code = "XEN2eaGo3yR13oGTBkHuLw==" JPCode = "JP046300" Start = "2026-12-10" End = "2026-12-16" ICode = "jgXh5M+CqhWzn22P64HBu8MbttREmMB3gDUiLKnLJJrNFirhbaxS+8RAT/+NiRDasVkvvEX84cB9nzt..." SearchMore = "true">
<HotelInfo>
<Name>Allsun Hotel Pil·larí Playa UAT</Name>
<Description>Situated on the seafront, opposite a long stretch of sandy beach, by the seaside road of Playa de Palma. 204 studios and apartments in constant renovation with reception, bar-cafeteria, video-games, billiards and tv lounge (sateliteTV),</Description>
<Images>
<Image>https://juniper-uat.bookingengine.es/images/upload_p//hotels/Apartamentos_Allsun_Pil_lari_Play_a/PIL_20190424_161.jpg</Image>
</Images>
<HotelCategory Type = "3">3 Stars</HotelCategory>
<Address>Carrer Marbella, 24, 07610 Palma, Islas Baleares, Spain</Address>
<Latitude>39.5264005357401</Latitude>
<Longitude>2.73455500602722</Longitude>
</HotelInfo>
<HotelOptions>
<HotelOption PackageContract = "false">
<Board Type = "SA">Room Only</Board>
<HotelRooms>
<HotelRoom Units = "1">
<RoomCategory Type = "2">Single</RoomCategory>
</HotelRoom>
</HotelRooms>
<AdditionalElements>
<HotelOffers>
<HotelOffer>
<Name>Test Offer (default)</Name>
<Description>Additional conditions of the offer may be specified here</Description>
</HotelOffer>
<HotelOffer>
<Description>Promotional Notes</Description>
</HotelOffer>
</HotelOffers>
</AdditionalElements>
</HotelOption>
</HotelOptions>
</Hotel>
</Hotels>
<Transfers>
<Transfer Code = "LoxcM8CoalHFFgC8zxI8Ql7sWFq/zSKmjLdMYjKqssQ=" ICode = "UU4ccCkzI+fvJgCuX7qLQwUa6kgvkjn/hNDcnW7wjjOWzgsQDR+vS/lY4IRercob" Order = "1">
<TransferInfo>
<Name>PMI Airport to center</Name>
<Description>Description of the transfer from Palma Airport to the city center</Description>
<Images>
<Image Featured = "true">
<FileName>https://juniper-uat.bookingengine.es/images/upload//Transfers/cache_46940620.png</FileName>
</Image>
</Images>
</TransferInfo>
<TransferOptions>
<TransferOption Code = "16" Start = "2026-12-10T12:00:00" End = "2026-12-10T12:45:00" Origin = "40233" OriginType = "ARP" Destination = "15011" DestinationType = "ALO" Duration = "P0DT0H45M0S">
<Name>Small Car</Name>
<Description>Small Car</Description>
<OriginName>Palma de Mallorca Airport</OriginName>
<DestinationName>Palma de Mallorca</DestinationName>
</TransferOption>
</TransferOptions>
</Transfer>
</Transfers>
</Stay>
</Stays>
</PackageResult>
</Results>
</PackageCheckAvailRS>
</PackageCheckAvailResponse>
</soap:Body>
</soap:Envelope>
This is the valuation request which, given a specific RatePlanCode (retrieved from either the previous steps of the booking flow, such as for example the PackageAvail response), will validate the combination and supply you with all of the neccesary information in order to complete the booking flow process.
The information that is supplied through this transaction includes:
| 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 |
| PackageBookingRuleRequest | N | - | Booking rule parameters. |
| ./PackageBookingRuleRequest/PackageOption | N | - | Specific package option. |
| ./PackageOption/@RatePlanCode | N | String | Code that identifies the package combination. Retrieved from the previous PackageAvail response. |
| ./PackageBookingRuleRequest/RelPaxesDist | Y | - | Passenger distribution. Optional unless we wish to select specific seat selection codes. |
| ./RelPaxesDist/RelPaxDist | Y | - | Distribution list, only one is needed. |
| ./RelPaxDist/RelPaxes | Y | - | Passenger list of this distribution. |
| ./RelPaxes/RelPax | Y | - | Specific passenger. |
| ./RelPax/@IdPax | N | Integer | Passenger id. Should match the previously specified distribution. |
| ./RelPax/PaxSeats | Y | - | Passenger seating information. Through this node, you will be able to establish which seatings you would like to select for each passenger. |
| ./PaxSeats/PaxSeat | Y | - | Specific passenger seat. |
| ./PaxSeat/@SeatSelectionCode | N | String | Seat selection code. Should match the value from the SeatSelectionCode property found within the SeatingMap object. Kindly refer to the {Flights} object for further information regarding the seat selection feature. |
| ./RelPax/PaxBags | Y | - | Passenger baggage information. Through this node, you will be able to establish which bags you would like to select for each passenger. |
| ./PaxBags/PaxBag | Y | - | Specific passenger bag. |
| ./PaxBag/@BagSelectionCode | N | String | Bag selection code. Should match the value from the BagSelectionCode property found within the Bags object. Kindly refer to the {Flights} object for further information regarding the bag selection feature. |
| AdvancedOptions | Y | - | Optional parameters. |
| ./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/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. |
<soapenv:Envelope xmlns:soapenv = "http://schemas.xmlsoap.org/soap/envelope/" xmlns = "http://www.juniper.es/webservice/2007/">
<soapenv:Header/>
<soapenv:Body>
<PackageBookingRules>
<PackageBookingRulesRQ Version = "1.1" Language = "en">
<Login Email = "user@mydomain.com" Password = "pass"/>
<PackageBookingRuleRequest>
<PackageOption RatePlanCode = "ZtJgg+ZrQ6PlJAaAbJ6vX6Xhl3L7vneNYy9bLgVCSkLqiVwpSzrTF0BX0JsN0..."/>
</PackageBookingRuleRequest>
<AdvancedOptions>
<ShowBreakdownPrice>false</ShowBreakdownPrice>
</AdvancedOptions>
</PackageBookingRulesRQ>
</PackageBookingRules>
</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 package results. |
| ./Results/PackageResult | N | - | Specific package result. |
| ./PackageResult/@Status | N | String | Package status: * OK: Available * RQ: On request |
| ./PackageResult/@Start | N | Date | Start date. Format: yyyy-MM-dd |
| ./PackageResult/@End | Y | Date | End date. Format: yyyy-MM-dd |
| ./PackageResult/@OriginZone | Y | Integer | Juniper code of the origin zone. |
| ./PackageResult/@DestinationZone | N | Integer | Juniper code of the destination zone. |
| ./PackageResult/@Code | N | String | Package code. |
| ./PackageResult/BookingCode | N | String | Encrypted code that identifies the package with selected products and options. |
| ./BookingCode/@ExpirationDate | N | DateTime | Shows the expiration date of the generated BookingCode. Format: yyyy-MM-ddThh:mm:ss (UTC) |
| ./PackageResult/PackageRequiredFields | N | - | List of required elements to confirm the booking. It is very important to comply with this information as, otherwise, the booking will not be confirmed. |
| ./PackageRequiredFields/PackageBooking | N | - | Set of mandatory elements required in order to successfully confirm the booking. |
| ./PackageBooking/{Paxes} | N | Indicates the passenger information. Array of passangers. Fields of this transaction: * @IdPax: Required * Age: Optional for adults |
|
| ./PackageBooking/Holder | N | - | Booking holder. It is mandatory to indicate which of the passengers of the Paxes node that you wish to be the booking holder. Any passenger that stays at the hotel may be the booking holder or you may add a new passenger. |
| ./Holder/RelPax | N | - | Booking holder relpax. |
| ./RelPax/@IdPax | N | Integer | Booking passenger Id. It should match with a Pax@IdPax. |
| ./PackageBooking/Elements | N | List of package elements. | |
| ./Elements/{PackageElement} | N | - | Package element. It is very important for you to properly process this node, as it will contain all of the product-specific required fields, which need to be sent at the subsequent PackageBooking request for the booking to get succesfully confirmed. |
| ./PackageResult/{CancellationPolicy} | N | - | Cancellation policies. |
| ./PackageResult/PriceInformation | N | - | Price information |
| ./PriceInformation/PackageInfo | N | - | Package basic information. |
| ./PackageInfo/Name | N | String | Package name. |
| ./PackageInfo/Images | Y | - | Package images. |
| ./Images/Image | N | String | Package specific image URL. |
| ./PackageInfo/Description | Y | - | Package description. |
| ./PriceInformation/{Stays} | N | - | List of package stays. This is the object that lists and details all of the products (hotels, flights, transfers, etc...) that are part of the package result. |
| ./PriceInformation/{AdditionalElements} | Y | - | Additional elements from the package (not from their products) such as, for example, package supplements. |
| ./PriceInformation/{Prices} | N | - | Package price object. |
| ./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://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd = "http://www.w3.org/2001/XMLSchema">
<soap:Body>
<PackageBookingRulesResponse xmlns = "http://www.juniper.es/webservice/2007/">
<BookingRulesRS Url = "http://xml-uat.bookingengine.es" TimeStamp = "2026-05-08T15:38:30.903197+02:00" IntCode = "Gfxo+N4Q5MzvM7wbzCDF5SgRsSYxEflonEvJFiqGmsk=">
<Results>
<PackageResult Status = "OK" Start = "2026-12-10" End = "2026-12-16" DestinationZone = "15011" Code = "wzz9+u3iZZKMuUek/t6Fxw==">
<BookingCode ExpirationDate = "2026-05-08T15:48:30.903197+02:00">4JV+v6GevqSfH+whMutZiq7sIMCi2hGuGkr86y4CXG1ph8V0zJ7uJJxpDYdDxB4aHKqLyHJ/xLXEK5uySBWwf..</BookingCode>
<PackageRequiredFields>
<PackageBooking>
<Paxes>
<Pax IdPax = "1">
<Name>Holder Name</Name>
<Surname>Holder Surname</Surname>
<Age>30</Age>
</Pax>
</Paxes>
<Holder>
<RelPax IdPax = "1"/>
</Holder>
<Elements>
<PackageElement>
<BookingCode>4JV+v6GevqSfH+whMutZiq7sIMCi2hGuGkr86y4CXG1ph8V0zJ7uJJxpDYdDxB4aHKqLyHJ/xLXEK5uySBWwf...</BookingCode>
<RelPaxesDist>
<RelPaxDist>
<RelPaxes>
<RelPax IdPax = "1"/>
</RelPaxes>
</RelPaxDist>
</RelPaxesDist>
<PackageBookingInfo Start = "2026-12-10" End = "2026-12-16">
<PackageCode>wzz9+u3iZZKMuUek/t6Fxw==</PackageCode>
</PackageBookingInfo>
<TransfersBookingInfo>
<TransferBookingInfo ICode = "UU4ccCkzI+fvJgCuX7qLQwUa6kgvkjn/hNDcnW7wjjOWzgsQDR+vS/lY4IRercob">
<Origin Type = "ARP">
<MeetingPointInfo Code = "000" MeetingTime = "2026-12-10T12:00:00"/>
<FlightInfo Airport = "PMI" FlightTime = "2026-12-10T12:00:00" FlightNumber = "XX1234"/>
</Origin>
<Destination Type = "ALO">
<MeetingPointInfo Code = "000" MeetingTime = "2026-12-10T12:00:00">
<Name>MEETING POINT NAME</Name>
</MeetingPointInfo>
</Destination>
<Language/>
</TransferBookingInfo>
</TransfersBookingInfo>
</PackageElement>
</Elements>
</PackageBooking>
</PackageRequiredFields>
<CancellationPolicy Type = "S">
<Description>Default cancellation policies</Description>
</CancellationPolicy>
<PriceInformation>
<PackageInfo>
<Name>UAT Test Dynamic Package</Name>
</PackageInfo>
<Stays>
<Stay Code = "1" DestinationZone = "15011" Start = "2026-12-10" End = "2026-12-16">
<Hotels>
<Hotel Code = "XEN2eaGo3yR13oGTBkHuLw==" JPCode = "JP046300" Start = "2026-12-10" End = "2026-12-16" ICode = "jgXh5M+CqhWzn22P64HBu8MbttREmMB3gDUiLKnLJJrNFirhbaxS+8RAT/+NiRDa..." SearchMore = "true">
<HotelInfo>
<Name>Allsun Hotel Pil·larí Playa UAT</Name>
<Description>Situated on the seafront, opposite a long stretch of sandy beach, by the seaside road of Playa de Palma. 204 studios and apartments in constant renovation with reception, bar-cafeteria, video-games, billiards and tv lounge (sateliteTV),</Description>
<Images>
<Image>https://juniper-uat.bookingengine.es/images/upload_p//hotels/Apartamentos_Allsun_Pil_lari_Play_a/PIL_20190424_161.jpg</Image>
</Images>
<HotelCategory Type = "3">3 Stars</HotelCategory>
<Address>Carrer Marbella, 24, 07610 Palma, Islas Baleares, Spain</Address>
<Latitude>39.5264005357401</Latitude>
<Longitude>2.73455500602722</Longitude>
</HotelInfo>
<HotelOptions>
<HotelOption PackageContract = "false">
<Board Type = "SA">Room Only</Board>
<HotelRooms>
<HotelRoom Units = "1">
<RoomCategory Type = "2">Single</RoomCategory>
</HotelRoom>
</HotelRooms>
<AdditionalElements>
<HotelOffers>
<HotelOffer>
<Name>Test Offer (default)</Name>
<Description>Additional conditions of the offer may be specified here</Description>
</HotelOffer>
<HotelOffer>
<Description>Promotional Notes</Description>
</HotelOffer>
</HotelOffers>
</AdditionalElements>
</HotelOption>
</HotelOptions>
</Hotel>
</Hotels>
<Transfers>
<Transfer Code = "LoxcM8CoalHFFgC8zxI8Ql7sWFq/zSKmjLdMYjKqssQ=" ICode = "UU4ccCkzI+fvJgCuX7qLQwUa6kgvkjn/hNDcnW7wjjOWzgsQDR+vS/lY4IRercob" Order = "1">
<TransferInfo>
<Name>PMI Airport to center</Name>
<Description>Description of the transfer from Palma Airport to the city center</Description>
<Images>
<Image Featured = "true">
<FileName>https://juniper-uat.bookingengine.es/images/upload//Transfers/cache_46940620.png</FileName>
</Image>
</Images>
</TransferInfo>
<TransferOptions>
<TransferOption Code = "16" Start = "2026-12-10T12:00:00" End = "2026-12-10T12:45:00" Origin = "40233" OriginType = "ARP" Destination = "15011" DestinationType = "ALO" Duration = "P0DT0H45M0S">
<Name>Small Car</Name>
<Description>Small Car</Description>
<OriginName>Palma de Mallorca Airport</OriginName>
<DestinationName>Palma de Mallorca</DestinationName>
</TransferOption>
</TransferOptions>
</Transfer>
</Transfers>
</Stay>
</Stays>
<Prices>
<Price Type = "S" Currency = "EUR">
<TotalFixAmounts Recommended = "0" Gross = "288.02" Nett = "288.02">
<Service Amount = "265.78"/>
<ServiceTaxes Included = "false" Amount = "22.24"/>
</TotalFixAmounts>
<Breakdown>
<Concepts>
<Concept Type = "BAS" Name = "Base">
<Items>
<Item Amount = "0" Quantity = "1" TtaCode = "0"/>
</Items>
</Concept>
<Concept Type = "BAS" Name = "Base">
<Items>
<Item Amount = "269.21999999999997" Quantity = "1" TtaCode = "0"/>
<Item Amount = "0" Quantity = "1" PaxType = "ADT" TtaCode = "0"/>
</Items>
</Concept>
<Concept Type = "SUP" Name = "Test Offer (default)">
<Items>
<Item Amount = "-13.440000000000001" Quantity = "1" TtaCode = "0"/>
</Items>
</Concept>
<Concept Type = "BAS" Name = "Base">
<Items>
<Item Amount = "9" Quantity = "1" TtaCode = "0"/>
<Item Amount = "1" Quantity = "1" PaxType = "ADU" TtaCode = "0"/>
</Items>
</Concept>
</Concepts>
<Taxes>
<Tax Name = "NOT INCLUDED Taxes" Value = "22.24" IsFix = "true" ByNight = "false" Commissionable = "false" Included = "false">
<Total Base = "222.42000000000002" Amount = "22.24"/>
</Tax>
<Tax Name = "INCLUDED Taxes" Value = "33.36" IsFix = "true" ByNight = "false" Commissionable = "false" Included = "true">
<Total Base = "222.42000000000002" Amount = "33.36"/>
</Tax>
</Taxes>
</Breakdown>
</Price>
</Prices>
</PriceInformation>
</PackageResult>
</Results>
</BookingRulesRS>
</PackageBookingRulesResponse>
</soap:Body>
</soap:Envelope>
This is the booking confirmation request which, given a specific BookingCode (retrieved from the PackageBookingRules response), will attempt to confirm the selected package combination and, if successful, supply you with the confirmation code along all of the information related to the same. It will be very important for you to verify the status code of the booking as it will be possible for the mentioned to have found some kind of problem on the confirmation process.
While using this transaction, it will be very important to fulfill all of the necessary fields as, otherwise, it will supply you with an error response. The necessary fields from this transaction includes:
| 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. |
| @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. It should indicate the name, surname and passenger age. If it is the booking holder, you should also indicate the identity document. |
| Holder | N | - | Booking holder. It is mandatory to indicate which of the passengers of the Paxes node that you wish to be the booking holder. Any passenger that stays at the hotel may be the booking holder or you may add a new passenger. |
| ./Holder/RelPax | N | - | |
| ./RelPax/@IdPax | N | Integer | Booking passenger Id. It should match with a Pax@IdPax. |
| ExternalBookingReference | Y | String | Free text field through which you may send the agency reference, booking code and/or any information that may later help you identify this booking on your supplier system. It cannot exceed the 50 characters. Note that, if neccesary, you will later be capable of searching for the requested booking through this reference on the BookingList request, kindly refer to the related spec as per additional information in this regard. |
| 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 number field within the Juniper system, optional field that is mainly used for internal purposes. |
| 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 | Y | String | Agent name. |
| ./Agent/@Email | Y | String | Agent email. |
| Comments | Y | - | General booking comments (meant for notifications that you wish to address to your direct supplier, for special request and/or customer comments kindly refer to the PackageElement comments found below). |
| ./Comments/Comment | Y | String | Comment text. |
| ./Comment/@Type | Y | String | Comment type, it's very important to set the proper @Type or the comment won’t be recognized and saved. Possible values: • RES: General booking comments • INT: Internal booking comments. Kindly note that these comments are restricted, contact with Juniper for more information. |
| Elements | N | - | Contains one or more items PackageElement. |
| ./Elements/{PackageElement} | N | - | Package element. Follows the same structure as that of the node of the same name found within the PackageBookingRules response. |
| AdvancedOptions | Y | - | Optional parameters. |
| ./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>
<PackageBooking>
<PackageBookingRQ Version = "1.1" Language = "en">
<Login Email = "user@mydomain.com" Password = "pass"/>
<Paxes>
<Pax IdPax = "1">
<Name>Holder Name</Name>
<Surname>Holder Surname</Surname>
<Age>30</Age>
</Pax>
</Paxes>
<Holder>
<RelPax IdPax = "1"/>
</Holder>
<ExternalBookingReference>S23J1JA8S</ExternalBookingReference>
<PlatformBookingReference>E1FHJS147</PlatformBookingReference>
<Comments>
<Comment Type = "RES">General booking comments. We recommend sending here comments for the Juniper supplier.</Comment>
</Comments>
<Elements>
<PackageElement>
<BookingCode>4JV+v6GevqSfH+whMutZiq7sIMCi2hGuGkr86y4CXG1ph8V0zJ7uJJxpDYdDxB4aHKqLyHJ/xLXEK5uySBWwfgTN6jTZMkvkVJfbzQOFs4zchck/GQxjJAK4ipVi4E+2LUdLhvvm5G6u0GglkYQGeDsdqbAsVZT+35EF8uWSWK5xl1KOeC1Fj3ikqfd/sGhQT3so8L2bBRl+7mxBoTo+1ln0eHc30ThIxyl/lVJOIApZl4A535ezmtzV+BPzkR/X36PKnRG7S+7D4w5vXKDiM6dxlmT+Hr1ZFaQ09ARO4SeyA0+mywON5VKYrfArO1/N6l1NGW397Hu3nlR8qhNU3d4U8KMjsq8YwA7hoiEsAEbbVSBpCxYmqwsB7KkSZtetRvYRIk7n/a0V+1rUK5UeV+KIeEu6rW8RKXNFkbGZdOLh5w3xGCB8MhmdG6L6a7ZOt+fsxRT1BiqXl0uYFT8xynG5dSo8M99AKjH+Pa3uOUmXO/F/Fq2X+yGYMrD9SO7ZKBkAb4JH9hPhRYVLMR8vBlLyxI5fw/gqpObSG5/kgc/IcLIMjz31U4dl0Z4AesQ+pSQx1xCabdT1UKZUJ+5OH267Ktmp+T2ImPcMLQ9DKuQIPjsktNPElfFvUg5x+4deadn0GqCKdDELsA4nH9mkEQvzIIlpjdaC+DHpCxSUqClEncS3bi+7TngFVv3f5adFahaHU1zsA70VpKQYQLiUSuJ0xWqh+kVahqYYGoN5bPa+o+CM4B6Rh1IuVUocSdhtSPgLQzs+/cjhLhuP+5mwNZXXrVhrfyaQULKqVInfBUxbMYc0dkzLd+ljBnl9F7aKRb39d/M6zkXmHXczF31aDQsgcFEc/iAfqNetywGT16S1mqzefF4GERj+Ys+nIOfny/7T0Y/CKwubAv0rfMr4mytMcyWXT1qA/t+Ebbf3Y6ybLK1kSNzw7qt/RWQtacG4/uvb+ZxI87AdLrIRVID4DViebDcRzRAphTIv36Uc9sGbbaEKd0zvr8uKAaD+rpMJ1UrOFGwCjwl1HnawbpVbwXpR4XXMT3Emjg0FcWdNvUTMPZukTHUR+gcgyjknx6dKitdgJ2g7fas8V91kNDPpqa5hs50gsNVcgiwaMoeAFCKNrSnQn35qky+7+AaqPehl</BookingCode>
<RelPaxesDist>
<RelPaxDist>
<RelPaxes>
<RelPax IdPax = "1"/>
</RelPaxes>
</RelPaxDist>
</RelPaxesDist>
<Comments>
<Comment Type = "ELE">Booking line comments. We recommend sending here comments that you wish to send to the package products.</Comment>
</Comments>
<PackageBookingInfo Start = "2026-12-10" End = "2026-12-16">
<Price>
<PriceRange Minimum = "216.02" Maximum = "288.02" Currency = "EUR"/>
</Price>
<Status>OK</Status>
<PackageCode>wzz9+u3iZZKMuUek/t6Fxw==</PackageCode>
</PackageBookingInfo>
<TransfersBookingInfo>
<TransferBookingInfo ICode = "UU4ccCkzI+fvJgCuX7qLQwUa6kgvkjn/hNDcnW7wjjOWzgsQDR+vS/lY4IRercob">
<Origin Type = "ARP">
<MeetingPointInfo Code = "000" MeetingTime = "2026-12-10T12:00:00"/>
<FlightInfo Airport = "PMI" FlightTime = "2026-12-10T12:00:00" FlightNumber = "XX1234"/>
</Origin>
<Destination Type = "ALO">
<MeetingPointInfo Code = "000" MeetingTime = "2026-12-10T12:00:00">
<Name>MEETING POINT NAME</Name>
</MeetingPointInfo>
</Destination>
<Language/>
</TransferBookingInfo>
</TransfersBookingInfo>
</PackageElement>
</Elements>
<AdvancedOptions>
<ShowBreakdownPrice>false</ShowBreakdownPrice>
</AdvancedOptions>
</PackageBookingRQ>
</PackageBooking>
</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 | - | Reservations container |
| ./Reservations/Reservation | N | - | Reservation item |
| ./Reservation/@Locator | N | String | Booking confirmation locator, you should store the same in your system in order to identify the booking. You will also need the same if you wish to read and/or cancel the booking. For example: 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) • TAR: Pending credit card payment (usually API connections do not use this status) It is very important to check the Status attribute in order to verify the booking is confirmed. |
| ./Reservation/@Language | N | String | Language code under which the booking has been confirmed with. |
| ./Reservation/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. |
| ./Reservation/PlatformBookingReference | Y | String | Free text field through which you may send the reference of your platform. |
| ./Reservation/Holder | N | - | Booking holder. Indicates which passenger from the Paxes node is the booking holder. It may not match with one of the booking passengers. Please note that, even if you do not specify the same on your request, the system will always create an additional holder passenger (identified through this node) on the response as it saves the holder information separatedly from the rest of the passengers. For example: Let’s say you ask for a booking of 4 passengers while setting the first one as the holder, given the case, the system will answer you with 5 passengers, the first 4 being the ones included on the booking and the fifth one being the holder itself. |
| ./Holder/RelPax | N | - | |
| ./RelPax/@IdPax | N | Integer | Passenger identifier. |
| ./Reservation/{Paxes} | N | - | Passengers and booking holder. |
| ./Reservation/Comments | Y | - | Booking comments |
| ./Comments/Comment | Y | String | Comment text. |
| ./Comment/@Type | Y | String | Comment type. Possible values: • RES: General booking comments • INT: Internal booking comments |
| ./Reservation/AgenciesData | Y | - | Agency related information (account from which your credentials originate from). |
| ./AgenciesData/AgencyData | Y | - | Specific agency. |
| ./AgencyData/ReferencedAgency | Y | Boolean | If it is a referenced agency. |
| ./AgencyData/AgencyCode | Y | Integer | Agency internal code. |
| ./AgencyData/AgencyName | Y | String | Agency name. |
| ./AgencyData/AgencyHandledBy | Y | String | Name of the agent. |
| ./AgencyData/AgencyEmail | Y | String | Agency mail. |
| ./AgencyData/AgencyReference | Y | String | Agency reference for the reservation (ExternalBookingReference). |
| ./Reservation/Items | N | - | List of item elements. |
| ./Items/PackageItem | N | - | Identifies a package reservation. |
| ./PackageItem/@ItemId | N | Integer | Item identifier. |
| ./PackageItem/@Status | N | String | Item status. Possible values are: • OK or AV: Available • RQ: On request • CA: Cancelled |
| ./PackageItem/@Start | N | Date | Starting date of the package Format: yyyy-MM-dd |
| ./PackageItem/@End | N | Date | Ending date of the package Format: yyyy-MM-dd |
| ./PackageItem/@Code | N | String | Package code. |
| ./PackageItem/{Prices} | N | - | Package price object. |
| ./PackageItem/{CancellationPolicy} | Y | - | Cancellation policies. |
| ./PackageItem/{Stays} | N | - | List of package stays. This is the object that lists and details all of the products (hotels, flights, transfers, etc...) that are part of the package result. |
| ./PackageItem/{AdditionalElements} | Y | - | Additional elements from the package (not from their products) such as, for example, package supplements. |
| ./Items/{AdjustmentItem} | Y | - | Additional adjustment item. It will be available if, for example, you've manually added a PromoCode on the previous BookingRules step. |
| ./Reservation/Payment | Y | - | Payment information. |
| ./Payment/@Type | N | String | Payment type code. Possivle values: • C: Credit • B: Bank • T: POS (Point of sale) |
<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>
<PackageBookingResponse xmlns = "http://www.juniper.es/webservice/2007/">
<BookingRS Url = "http://xml-uat.bookingengine.es" TimeStamp = "2026-05-08T16:00:37.0736724+02:00" IntCode = "tzRBw4s6R/Dpf4urZSPeFrIU41h1CaoPwohpGK2w/pw=">
<Reservations>
<Reservation Locator = "Y623RM" Status = "PAG" Language = "en" ReservationDate = "2026-05-08T16:00:28.6500000+02:00">
<ExternalBookingReference>S23J1JA8S</ExternalBookingReference>
<PlatformBookingReference>E1FHJS147</PlatformBookingReference>
<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>
<Nationality>MS</Nationality>
</Pax>
</Paxes>
<Comments>
<Comment Type = "RES">General booking comments. We recommend sending here comments for the Juniper supplier.</Comment>
</Comments>
<AgenciesData>
<AgencyData>
<ReferencedAgency>false</ReferencedAgency>
<AgencyCode>123</AgencyCode>
<AgencyName>Test XML</AgencyName>
<AgencyHandledBy>Test XML</AgencyHandledBy>
<AgencyEmail>producto@ejuniper.com</AgencyEmail>
<AgencyReference>S23J1JA8S</AgencyReference>
</AgencyData>
<AgencyData>
<ReferencedAgency>true</ReferencedAgency>
<AgencyCode>0</AgencyCode>
</AgencyData>
</AgenciesData>
<Items>
<PackageItem ItemId = "670024" Status = "OK" Start = "2026-12-10" End = "2026-12-16" Code = "wzz9+u3iZZKMuUek/t6Fxw==">
<Prices>
<Price Type = "S" Currency = "EUR">
<TotalFixAmounts Gross = "0" Nett = "0">
<Service Amount = "0"/>
</TotalFixAmounts>
<Breakdown>
<Concepts>
<Concept Type = "BAS" Name = "Base">
<Items>
<Item Amount = "0" Quantity = "1" Days = "1" TtaCode = "0"/>
</Items>
</Concept>
</Concepts>
</Breakdown>
</Price>
</Prices>
<CancellationPolicy Type = "S">
<Description>Default cancellation policies</Description>
</CancellationPolicy>
<Stays>
<Stay Code = "1" DestinationZone = "15011" Start = "2026-12-10" End = "2026-12-16">
<Hotels>
<Hotel Code = "j8SZiYI/Ut6Ir0JgCO/xWA==" JPCode = "JP046300" Start = "2026-12-10" End = "2026-12-16">
<HotelInfo>
<Name>Allsun Hotel Pil·larí Playa UAT 3 Stars(Playa De Palma)</Name>
<Description>Hotel "long" description.</Description>
<Images>
<Image>https://juniper-uat.bookingengine.es/images/upload//hotels/Apartamentos_Allsun_Pil_lari_Play_a/PIL_20190424_161.jpg</Image>
</Images>
<HotelCategory Type = "3"/>
<Address>Carrer Marbella, 24, 07610 Palma, Islas Baleares, Spain</Address>
<Latitude>39,5264005357401</Latitude>
<Longitude>2,73455500602722</Longitude>
</HotelInfo>
<HotelOptions>
<HotelOption PackageContract = "false">
<Board>Room Only</Board>
<HotelRooms>
<HotelRoom Units = "0">
<RoomCategory Type = "">Single</RoomCategory>
</HotelRoom>
</HotelRooms>
</HotelOption>
</HotelOptions>
<Rebook ItemId = "0"/>
</Hotel>
</Hotels>
<Transfers>
<Transfer Code = "YoEt5ymlUg3IZVeUAsv4Lg==">
<TransferInfo>
<Name>PMI Airport to center</Name>
</TransferInfo>
<TransferOptions>
<TransferOption Start = "2026-12-10T12:00:00" End = "2026-12-10T12:00:00" Origin = "40233" OriginType = "ARP" Destination = "15011" DestinationType = "ALO">
<Name>Small Car</Name>
<OriginName>Palma de Mallorca Airport</OriginName>
<DestinationName>Palma de Mallorca</DestinationName>
</TransferOption>
</TransferOptions>
<TransferBookingInfo>
<Origin Code = "40233" Type = "ARP">
<MeetingPointInfo MeetingTime = "0001-01-01T12:00:00"/>
<FlightInfo FlightTime = "0001-01-01T12:00:00" FlightNumber = "XX1234"/>
</Origin>
<Destination Code = "15011" Type = "ALO">
<MeetingPointInfo MeetingTime = "0001-01-01T12:45:00">
<Name>Allsun Hotel Pil·larí Playa UAT</Name>
<Address>Carrer Marbella, 24, 07610 Palma, Islas Baleares, Spain</Address>
</MeetingPointInfo>
</Destination>
</TransferBookingInfo>
</Transfer>
</Transfers>
</Stay>
</Stays>
<RelPaxes>
<RelPax IdPax = "1"/>
</RelPaxes>
</PackageItem>
</Items>
<Payment Type = "C"/>
</Reservation>
</Reservations>
</BookingRS>
</PackageBookingResponse>
</soap:Body>
</soap:Envelope>
This transaction allows for the retrieval of the booking information of a specific booking through the use of its booking code.
The returned information is the same as in the PackageBooking response. Please refer to the PackageBooking section for further 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. |
| {Login} | N | - | Customer login to access the Web Service |
| ReadRequest | N | - | - |
| ./ReadRequest/@ReservationLocator | N | String | Booking code |
| AdvancedOptions | Y | - | Optional parameters |
| ./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="TQ1TBG"/>
</ReadRQ>
</ReadBooking>
</soapenv:Body>
</soapenv:Envelope>
It returns the same information as the response of PackageBooking. Kindly refer to the PackageBooking section if you wish to consult the specifications of the nodes and properties of this transaction.
<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>
<ReadBookingResponse xmlns = "http://www.juniper.es/webservice/2007/">
<BookingRS Url = "http://xml-uat.bookingengine.es" TimeStamp = "2019-10-03T09:50:23.1074823+02:00" IntCode = "Pczv1ukYfu8i+QIhK1rxvNQL+MNfJiiuIIpHIfPsa0I=">
<Reservations>
<Reservation Locator = "2YWFLZ" Status = "PAG" Language = "es">
<ExternalBookingReference>REFERENCES0123456</ExternalBookingReference>
<Holder>
<RelPax IdPax = "2"/>
</Holder>
<Paxes>
<Pax IdPax = "1">
<Title>Mr</Title>
<Name>Alfred</Name>
<Surname>Ashton</Surname>
<Age>30</Age>
</Pax>
<Pax IdPax = "2">
<Title>Mr</Title>
<Name>Alfred</Name>
<Surname>Ashton</Surname>
<Age>30</Age>
<Nationality>DZ</Nationality>
</Pax>
</Paxes>
<AgenciesData>
<AgencyData>
<ReferencedAgency>false</ReferencedAgency>
<AgencyCode>767</AgencyCode>
<AgencyName>Test XML</AgencyName>
<AgencyHandledBy>Test XML</AgencyHandledBy>
<AgencyEmail>acook@ingic.com</AgencyEmail>
<AgencyReference>REFERENCES0123456</AgencyReference>
</AgencyData>
<AgencyData>
<ReferencedAgency>true</ReferencedAgency>
<AgencyCode>0</AgencyCode>
</AgencyData>
</AgenciesData>
<Items>
<PackageItem ItemId = "152471" Status = "OK" Start = "2020-03-01" End = "2020-03-07" Code = "OkidhLAw+j5/wFBPHnmoJQ==">
<Prices>
<Price Type = "S" Currency = "EUR">
<TotalFixAmounts Recommended = "0" Gross = "161.58" Nett = "161.58">
<Service Amount = "161.58"/>
</TotalFixAmounts>
</Price>
</Prices>
<CancellationPolicy CurrencyCode = "EUR">
<FirstDayCostCancellation Hour = "00:00">2019-10-18</FirstDayCostCancellation>
<Description>Be Live Adults Only Marivent: * Cancelando desde 18/10/2019 a las 00:00:00 hasta 22/02/2020 a las 23:58:59: 0 &euro; * Cancelando después de 22/02/2020 a las 23:59:00: 99.09 &euro; *Fecha y hora se calcula basándose en la hora local del destino (GMT +01:00) | * PMI Airport to center: General policy | * Best Escape Rooms Ocimax: No reembolsable</Description>
<PolicyRules>
<Rule DateFrom = "2019-10-18" DateFromHour = "00:00" DateTo = "2020-02-22" DateToHour = "23:58" Type = "V" FixedPrice = "32" PercentPrice = "0" Nights = "0" ApplicationTypeNights = "Average"/>
<Rule DateFrom = "2020-02-22" DateFromHour = "23:59" DateTo = "2020-02-23" DateToHour = "23:59" Type = "V" FixedPrice = "131.09" PercentPrice = "0" Nights = "0" ApplicationTypeNights = "Average"/>
<Rule DateFrom = "2020-02-24" DateFromHour = "00:00" DateTo = "2020-02-29" DateToHour = "23:59" Type = "V" FixedPrice = "159.09" PercentPrice = "0" Nights = "0" ApplicationTypeNights = "Average"/>
<Rule DateFrom = "2020-03-01" DateFromHour = "00:00" Type = "S" FixedPrice = "131.09" PercentPrice = "0" Nights = "0" ApplicationTypeNights = "Average"/>
</PolicyRules>
</CancellationPolicy>
<PackageInfo>
<Name>Dynamic Package GEN</Name>
</PackageInfo>
<Stays>
<Stay Code = "1" DestinationZone = "1953" Start = "2020-03-01" End = "2020-03-07">
<Hotels>
<Hotel Code = "n150KfeE7tJELgjozI01ow==" JPCode = "JP243849" Start = "2020-03-01" End = "2020-03-07">
<HotelInfo>
<Name>Be Live Adults Only Marivent</Name>
<Description>Este encantador complejo de playa está situado frente a la playa de Cala Major. El aeropuerto está a 14 km y hay una parada de autobús a 50 metros, lo que pone todos los sitios de interés locales al alcance de sus clientes. Este hotel solo para adultos ofrece una variedad de servicios tales como el acceso a internet en todo el complejo, servicio de cambio de divisas, recepción las 24 horas y aire acondicionado. Hay cena y bebidas en el bar y en el restaurante climatizado del hotel. Las habitaciones disponen de baño privado y están equipadas con comodidades como teléfono, secador de pelo, minibar, caja fuerte y TV vía satélite.</Description>
<Images>
<Image>https://photos.hotelbeds.com/giata/15/156393/156393a_hb_ro_013.jpg</Image>
<Image>https://photos.hotelbeds.com/giata/15/156393/156393a_hb_r_009.jpg</Image>
<Image>https://photos.hotelbeds.com/giata/15/156393/156393a_hb_ro_015.jpg</Image>
<Image>https://photos.hotelbeds.com/giata/15/156393/156393a_hb_ro_011.jpg</Image>
<Image>https://photos.hotelbeds.com/giata/15/156393/156393a_hb_ro_010.jpg</Image>
<Image>https://photos.hotelbeds.com/giata/15/156393/156393a_hb_a_006.jpg</Image>
<Image>https://photos.hotelbeds.com/giata/15/156393/156393a_hb_a_005.jpg</Image>
<Image>https://photos.hotelbeds.com/giata/15/156393/156393a_hb_a_007.jpg</Image>
<Image>https://photos.hotelbeds.com/giata/15/156393/156393a_hb_l_002.jpg</Image>
<Image>https://photos.hotelbeds.com/giata/15/156393/156393a_hb_ro_001.jpg</Image>
<Image>https://photos.hotelbeds.com/giata/15/156393/156393a_hb_ro_014.jpg</Image>
<Image>https://photos.hotelbeds.com/giata/15/156393/156393a_hb_p_002.jpg</Image>
<Image>https://photos.hotelbeds.com/giata/15/156393/156393a_hb_ba_001.jpg</Image>
<Image>https://photos.hotelbeds.com/giata/15/156393/156393a_hb_p_001.jpg</Image>
<Image>https://photos.hotelbeds.com/giata/15/156393/156393a_hb_s_002.jpg</Image>
<Image>https://photos.hotelbeds.com/giata/15/156393/156393a_hb_s_003.jpg</Image>
<Image>https://photos.hotelbeds.com/giata/15/156393/156393a_hb_s_001.jpg</Image>
<Image>https://photos.hotelbeds.com/giata/15/156393/156393a_hb_s_006.jpg</Image>
<Image>https://photos.hotelbeds.com/giata/15/156393/156393a_hb_t_001.jpg</Image>
<Image>https://photos.hotelbeds.com/giata/15/156393/156393a_hb_s_004.jpg</Image>
<Image>https://photos.hotelbeds.com/giata/15/156393/156393a_hb_t_002.jpg</Image>
<Image>https://photos.hotelbeds.com/giata/15/156393/156393a_hb_s_005.jpg</Image>
<Image>https://photos.hotelbeds.com/giata/15/156393/156393a_hb_r_010.jpg</Image>
<Image>https://photos.hotelbeds.com/giata/15/156393/156393a_hb_r_011.jpg</Image>
<Image>https://photos.hotelbeds.com/giata/15/156393/156393a_hb_f_015.jpg</Image>
<Image>https://photos.hotelbeds.com/giata/15/156393/156393a_hb_f_016.jpg</Image>
<Image>https://photos.hotelbeds.com/giata/15/156393/156393a_hb_f_019.jpg</Image>
<Image>https://photos.hotelbeds.com/giata/15/156393/156393a_hb_f_017.jpg</Image>
<Image>https://photos.hotelbeds.com/giata/15/156393/156393a_hb_ro_002.jpg</Image>
<Image>https://photos.hotelbeds.com/giata/15/156393/156393a_hb_ro_016.jpg</Image>
<Image>https://photos.hotelbeds.com/giata/15/156393/156393a_hb_f_018.jpg</Image>
</Images>
<HotelCategory Type = "4">4 Estrellas</HotelCategory>
<Address>Carrer Gavina,9 , 07015, CALA MAYOR</Address>
<Latitude>39.552559</Latitude>
<Longitude>2.606677</Longitude>
</HotelInfo>
<HotelOptions>
<HotelOption PackageContract = "false">
<Board>ROOM ONLY</Board>
<HotelRooms>
<HotelRoom Units = "0">
<RoomCategory Type = "">Double or Twin SUPERIOR</RoomCategory>
</HotelRoom>
</HotelRooms>
</HotelOption>
</HotelOptions>
</Hotel>
</Hotels>
<Transfers>
<Transfer>
<TransferInfo>
<Name>PMI Airport to center</Name>
</TransferInfo>
<TransferOptions>
<TransferOption Start = "2020-03-01T00:00:00" End = "2020-03-01T00:00:00" Origin = "40233" OriginType = "ARP" Destination = "15011" DestinationType = "ALO">
<Name>Taxi</Name>
<OriginName>Aeropuerto de Palma de Mallorca</OriginName>
<DestinationName>Palma de Mallorca</DestinationName>
</TransferOption>
</TransferOptions>
<TransferBookingInfo>
<Origin Code = "40233" Type = "ARP">
<MeetingPointInfo MeetingTime = "0001-01-01T11:11:00"/>
<FlightInfo FlightTime = "0001-01-01T23:11:00" FlightNumber = "XX1234"/>
</Origin>
<Destination Code = "15011" Type = "ALO">
<MeetingPointInfo MeetingTime = "0001-01-01T12:11:00">
<Address>MEETING POINT NAME</Address>
</MeetingPointInfo>
</Destination>
</TransferBookingInfo>
</Transfer>
</Transfers>
<Services>
<Service>
<ServiceInfo>
<Name>Best Escape Rooms Ocimax</Name>
</ServiceInfo>
<ServiceOptions>
<ServiceOption Start = "2020-03-04T00:00:00" End = "2020-03-04T00:00:00" Destination = "15011">
<Name>La Egipcia</Name>
</ServiceOption>
</ServiceOptions>
<ServiceBookingInfo>
<MeetingPointInfo MeetingTime = "0001-01-01T00:00:00"/>
</ServiceBookingInfo>
</Service>
</Services>
</Stay>
</Stays>
<RelPaxes>
<RelPax IdPax = "1"/>
</RelPaxes>
</PackageItem>
</Items>
</Reservation>
</Reservations>
</BookingRS>
</ReadBookingResponse>
</soap:Body>
</soap:Envelope>
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 | Service/item identifier. If it is the only/latest available item of a booking you will need to cancel the booking as a whole. |
| ./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/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. |
In the following example we will completely cancel a booking
<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="TQ1TBG"/>
</CancelRQ>
</CancelBooking>
</soapenv:Body>
</soapenv:Envelope>
In the following example we will simply retrieve the available cancellation charges without cancelling the same
<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="TQ1TBG" OnlyCancellationFees="true"/>
</CancelRQ>
</CancelBooking>
</soapenv:Body>
</soapenv:Envelope>
It returns the same information as the response of PackageBooking. Kindly refer to the PackageBooking section if you wish to consult the specifications of the nodes and properties of this transaction.
In the following example we've simply retrieved the cancellation charges of the booking without cancelling the same
<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="2019-10-03T09:52:41.0407517+02:00" IntCode="ByTsyWyHpjGQxFrBJ+2sko0No5oKI07lPRl2ppRqcHk=">
<Warnings>
<Warning Code="warnCancellationCostRetrieved" Text="Cancellation cost retrieved. Reservation was not cancelled."/>
<CancelInfo>
<BookingCodeState>Pag</BookingCodeState>
<BookingCancelCost>0</BookingCancelCost>
<BookingCancelCostCurrency>EUR</BookingCancelCostCurrency>
</CancelInfo>
</Warnings>
</BookingRS>
</CancelBookingResponse>
</soap:Body>
</soap:Envelope>
When it has not been possible to retrieve the cancellation charges, the following message will be retuended
<Warnings>
<Warning Code="warnCancellationNotCalculated" Text="Cancellation cost could not be calculated. Reservation was not cancelled."/>
</Warnings>
Should this happen, either rely on the cancellation policies and/or contact with your Juniper supplier.
In this section you will find a description of the certification tests and the additional information we will ask you before connecting live.
It basically consists on some basic bookings, including the different options allowed and covering the available product. Moreover, we ask you for some info regarding the approximate volume of traffic you will send to our system (if available) a short description of your system flow and information about the timeouts you have implemented.
You can find next the certification tests that must be completed and sent to Juniper before connecting live. Please consider the certification tests depending on the products you will integrate. If we find any problem, we will inform you, so you can fix it. If everything is correct, we will provide you live access for the provided IP's.
After you complete the development of your integration, before moving to your supplier live environment, you will need to perform a series of tests so that we may validation that the mentioned has been properly implemented.
We will need for you to confirm, read and cancel a booking of a packge of your choice on the development environment. These tests will let us verify that most functionalities are covered.
We will then need for you to supply us with all of the XML logs of the requests and responses related to these bookings, these may include:
We will also need for you to showcase how will you be showing the following information from the PackageBooking response on your system (screenshots may be appreciated). This way, we will confirm that you will be properly retrieving all of the key fields from within the same:
We would also like to have a short description of your system flow (which transactions do you use when) and an expectation of how many requests do you plan on doing when live. We want the approximate number of requests per day and per second for times of more work, both availability and reservations as others (total requests). We need an estimation, the number doesn’t have to be exact.
Please also specify which is the lenght of the timeout that you have set for our responses (availability and booking confirmation) or if you don't have implemented any.
First, the structure of the availability request must be correctly formed, and none of the mandatory fields must be missed. Amongst others, we will check the following nodes:
<soap:Envelope xmlns:soap = "http://www.w3.org/2003/05/soap-envelope" xmlns = "http://www.juniper.es/webservice/2007/">
<soap:Header/>
<soap:Body>
<PackageAvail>
<PackageAvailRQ Version = "1.1" Language = "es">
<Login Email = "user@mydomain.com" Password = "pass"/>
<Paxes>
<Pax IdPax = "1">
<Age>30</Age>
</Pax>
<Pax IdPax = "2">
<Age>30</Age>
</Pax>
</Paxes>
<PackageRequest>
<SearchSegmentsPackages>
<SearchSegmentPackages Start = "2019-10-10" End = "2019-10-22" OriginZone = "37786" DestinationZone = "2204">
<CountryOfResidence>ES</CountryOfResidence>
<PackageCodes>
<PackageCode>IffN5XIfLbX+6UGtuyo1+A==</PackageCode>
</PackageCodes>
</SearchSegmentPackages>
</SearchSegmentsPackages>
<RelPaxesDist>
<RelPaxDist>
<RelPaxes>
<RelPax IdPax = "1"/>
<RelPax IdPax = "2"/>
</RelPaxes>
</RelPaxDist>
</RelPaxesDist>
</PackageRequest>
</PackageAvailRQ>
</PackageAvail>
</soap:Body>
</soap:Envelope>
It is also mandatory to use the compression tool so that the response size is considerable reduced (meaning faster transfer times). If you do not use it, the response will contain the following error:
<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>
<PackageAvailResponse xmlns="http://www.juniper.es/webservice/2007/">
<AvailabilityRS Url="http://xml-uat.bookingengine.es" TimeStamp="2019-10-12T16:41:24.894196+02:00" IntCode="+DXlavlbzVVAf/4Ig9GcUz433L6AKHXNUhKIfo6WXPA=">
<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>
</PackageAvailResponse>
</soap:Body>
</soap:Envelope>
If the request is valid, you will receive a response containing all the possible packages for the desired criteria. Each package will be returned under a RatePlanCode and may be composed of multiple stays which at the same time will be composed of multiple product types. The RatePlanCode should be used in the next step of the booking flow, which can be PackageChangeProduct (if you desire to change any product of the selected package) or PackageBookingRules. Please be aware that the proper use of the RatePlanCode is an important point in the certification process.
If your system allows the possibility of changing the selected option inside of a package (search for additional hotel, flights…), the next step is the PackageChangeProduct transaction. This is an optional step that allows you the possibility of changing the option of a single product type (hence, if you want to change the option of two or more product types, you will have to send two or more PackageChangeProduct transactions)
This transaction only requires the RatePlanCode from the selected package and the ICode from the product of the selected package that you want to change. The response will contain a list with all of the available options as PackageResults, these PackageResults will be the same as the package that you have already selected on the availability but with the difference that each one of them will contain each one of the available product options (of the product you’ve selected). To select the desired option, you have to use the RatePlanCode from the mentioned PackageResult.
<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>
<PackageChangeProductResponse xmlns="http://www.juniper.es/webservice/2007/">
<AvailabilityRS Url="http://xml-uat.bookingengine.es" TimeStamp="2019-10-12T16:48:58.9148346+02:00" IntCode="llz1yIFOksJZY6zd0c72URZpX8OC8g2TiaylWwd8O9U=">
<Results>
<PackageResult Start="2019-10-10" End="2019-10-22" OriginZone="37786" DestinationZone="313" Code="IffN5XIfLbX+6UGtuyo1+A==" Status="OK" RatePlanCode="RatePlanCodeA">...</PackageResult>
<PackageResult Start="2019-10-10" End="2019-10-22" OriginZone="37786" DestinationZone="313" Code="IffN5XIfLbX+6UGtuyo1+A==" Status="OK" RatePlanCode="RatePlanCodeB">...</PackageResult>
<PackageResult Start="2019-10-10" End="2019-10-22" OriginZone="37786" DestinationZone="313" Code="IffN5XIfLbX+6UGtuyo1+A==" Status="OK" RatePlanCode="RatePlanCodeC">...</PackageResult>
Once you have changed all of the desired product types (or if you simply do not have this possibility on your system), the next step is the PackageBookingRules transaction. This is a mandatory step for the booking process as, besides the cancellation policies, it validates the allotment/rate and returns the required fields of the combination.
The proper use of the required fields is crucial for the booking confirmation.
This transaction only requires the RatePlanCode from the availability response and its response will contain:
BookingCode: This code, similar to the RatePlanCode, it is only valid for a certain period and must be used to confirm the booking.
<BookingCode ExpirationDate="2014-03-26T10:31:44.393171+01:00">3WCCdKrNDmJB1QQRyLq2X3CEfLuy1bKgHGE61OmWeg12vmo2J0fu7epFHivGIanunBT/zLZAMsvI+d6VZd8B/L4+YQCuR0WQovQcNntLNBIvAPb0DeAoZRudxzGDFh/uI0UHRg2pnZSW0y7GdTfrzEk/KQHjONDkKH8XMpmOySKbvdSTXtO35YtBgquA6m6U</BookingCode>
Warnings: It is important to keep watch of the warning as they will notify you of important information related to the combination.
<Warnings>
<Warning Code="warnNotControlled" Text="Not Controlled warning: Transfer has been adjusted from 10/10/2019 10:00:00 to 10/10/2019 13:20:00 in accordance to flight UA9929 arrival time."/>
<Warning Code="warnNotControlled" Text="Not Controlled warning: Transfer has been adjusted from 14/10/2019 10:00:00 to 14/10/2019 22:50:00 in accordance to flight UA1054 arrival time."/>
<Warning Code="warnNotControlled" Text="Not Controlled warning: Transfer has been adjusted from 14/10/2019 10:00:00 to 14/10/2019 16:40:00 in accordance to flight UA1054 departure time."/>
<Warning Code="warnNotControlled" Text="Not Controlled warning: Transfer departure terminal has been adjusted from (JFK) to (EWR) in flight number: UA1054"/>
<Warning Code="warnNotControlled" Text="Not Controlled warning: Transfer has been adjusted from 21/10/2019 10:00:00 to 21/10/2019 8:35:00 in accordance to flight AC1811 departure time."/>
</Warnings>
Required fields: It is extremely important to consider this node as it contains the mandatory fields that you should included in order to be able to properly confirm a booking. It contains all of the required information for each one of the products included in the package.
<PackageRequiredFields>
<PackageBooking>
<Paxes>
<Pax IdPax = "1">
<Title>Pax Title</Title>
<Name>Holder Name</Name>
<Surname>Holder Surname</Surname>
<Age>30</Age>
</Pax>
<Pax IdPax = "2">
<Title>Pax Title</Title>
<Name>Pax Name</Name>
<Surname>Pax Surname</Surname>
<Age>30</Age>
</Pax>
</Paxes>
<Holder>
<RelPax IdPax = "1"/>
</Holder>
<Elements>
<PackageElement>
<BookingCode>BOOKINGCODE...</BookingCode>
<RelPaxesDist>
<RelPaxDist>
<RelPaxes>
<RelPax IdPax = "1"/>
<RelPax IdPax = "2"/>
</RelPaxes>
</RelPaxDist>
</RelPaxesDist>
<PackageBookingInfo Start = "2016-10-10" End = "2016-10-22">
<PackageCode>jHzwqYRSqOHAZw6GpEW9Ow==</PackageCode>
</PackageBookingInfo>
<TransfersBookingInfo>
<TransferBookingInfo ICode = "OhGDFnN5O0/jrQ6TpBO7Y6r4SbSZ41Smgnxdy3MIatVb7SIpOfUOHiDAFxYlTVcXmT/mLoLjMeWfY6x4eMu2/A==">
<Origin Type = "ARP">
<MeetingPointInfo MeetingTime = "2016-09-12T17:41:34.3272653+02:00">
<Name>TERMINAL POINT NAME</Name>
</MeetingPointInfo>
</Origin>
<Destination Type = "ALO">
<MeetingPointInfo MeetingTime = "2016-09-12T17:41:34.3272653+02:00">
<Name>MEETING POINT NAME</Name>
</MeetingPointInfo>
</Destination>
</TransferBookingInfo>
<TransferBookingInfo ICode = "C8djVXw8moLBxVfSDzplzgatlXZQggcIK3n7/In0K6XjVWeY+rascUlslDP/IezaqrRUoF4X+LfjoJF8wD5FZw==">
<Origin Type = "ALO">
<MeetingPointInfo MeetingTime = "2016-09-12T17:41:34.3272653+02:00">
<Name>MEETING POINT NAME</Name>
</MeetingPointInfo>
</Origin>
<Destination Type = "ARP">
<MeetingPointInfo MeetingTime = "2016-09-12T17:41:34.3272653+02:00">
<Name>TERMINAL POINT NAME</Name>
</MeetingPointInfo>
</Destination>
</TransferBookingInfo>
<TransferBookingInfo ICode = "T/AFpor//ZUZU9GMinrX9PMCHeGW51HfPwQC2eCdE2cn6uLs+OX5iUjvTYB50sKbzAw5Vi1HKqjjBd0H9faNwg==">
<Origin Type = "ARP">
<MeetingPointInfo MeetingTime = "2016-09-12T17:41:34.3272653+02:00">
<Name>TERMINAL POINT NAME</Name>
</MeetingPointInfo>
</Origin>
<Destination Type = "ALO">
<MeetingPointInfo MeetingTime = "2016-09-12T17:41:34.3272653+02:00">
<Name>MEETING POINT NAME</Name>
</MeetingPointInfo>
</Destination>
</TransferBookingInfo>
<TransferBookingInfo ICode = "A9t+WYz5md1LQh5UTG9lXaiEUgINRIJ6L+m0irxmgxP14/mgOG5KVWmpwFXEiRdHrwkJq3lHgIq7a7xcrYh6TA==">
<Origin Type = "ALO">
<MeetingPointInfo MeetingTime = "2016-09-12T17:41:34.3272653+02:00">
<Name>MEETING POINT NAME</Name>
</MeetingPointInfo>
</Origin>
<Destination Type = "ARP">
<MeetingPointInfo MeetingTime = "2016-09-12T17:41:34.3272653+02:00">
<Name>TERMINAL POINT NAME</Name>
</MeetingPointInfo>
</Destination>
</TransferBookingInfo>
</TransfersBookingInfo>
<ServicesBookingInfo>
<ServiceBookingInfo ICode = "WNOQMhVuI6L+t35yzMcYeAn0Cs/iN7XnHvqV6HGwzj61erYNzBeiHoPtJO8a2YIqb7ZkYFlE8R+JYjYqkWQmaA==">
<MeetingPointInfo MeetingTime = "2016-09-12T17:41:34.3092511+02:00">
<Name>MEETING POINT NAME</Name>
</MeetingPointInfo>
</ServiceBookingInfo>
<ServiceBookingInfo ICode = "J3wvlec7EvITkhrj5G1OAcX+/mzwUh6MQ2KDHgI+BYCVqkoyO38jQx/Dwblv3OdUdybSvMgIO5noKfylONjnvQ==">
<MeetingPointInfo MeetingTime = "2016-09-12T17:41:34.3092511+02:00">
<Name>MEETING POINT NAME</Name>
</MeetingPointInfo>
</ServiceBookingInfo>
</ServicesBookingInfo>
</PackageElement>
</Elements>
</PackageBooking>
</PackageRequiredFields>
Important note:
Keep in mind that the required fields feature default values, meaning that you have to replace the default values with the preferred information.
Cancellation policies: It is important to remember that we won't always be able to provide a list of cancellation policy rules. On these cases it is mandatory to read the plain text cancellation policy.
<CancellationPolicy CurrencyCode="EUR">
<FirstDayCostCancellation Hour="23:50">2016-09-18</FirstDayCostCancellation>
<Description><![CDATA[Flight: * Canceling from 12/09/2016 at 00:00:00 to 19/09/2016 at 11:50:00: 0 € * Canceling from 19/09/2016 at 11:50:00: 100.00 % of expenses | * DAYS HOTEL BROADWAY: * Canceling from 12/09/2016 at 00:00:00 to 08/10/2016 at 12:00:00: 0 € * Canceling after 08/10/2016 at 12:00:00: 1 nights | * . : * Canceling from 12/09/2016 at 00:00:00 to 06/10/2016 at 01:20:00: 0 € * Canceling from 06/10/2016 at 01:20:00 to 10/10/2016 at 13:20:00: 100.00 % of expenses | * . : * Canceling from 12/09/2016 at 00:00:00 to 10/10/2016 at 04:40:00: 0 € * Canceling from 10/10/2016 at 04:40:00 to 14/10/2016 at 16:40:00: 100.00 % of expenses | * . : * Canceling from 12/09/2016 at 00:00:00 to 06/10/2016 at 12:00:00: 0 € * Canceling from 06/10/2016 at 12:00:00 to 11/10/2016 at 00:00:00: 100.00 % of expenses | * .: * Canceling from 12/09/2016 at 00:00:00 to 06/10/2016 at 12:00:00: 0 € * Canceling from 06/10/2016 at 12:00:00 to 10/10/2016 at 00:00:00: 100.00 % of expenses | * .: * Canceling from 12/09/2016 at 00:00:00 to 06/10/2016 at 12:00:00: 0 € * Canceling from 06/10/2016 at 12:00:00 to 11/10/2016 at 00:00:00: 100.00 % of expenses | * HOTEL LA QUINTA INN & SUITES CANCUN: * Canceling from 12/09/2016 at 00:00:00 to 10/10/2016 at 12:00:00: 0 € * Canceling after 10/10/2016 at 12:00:00: 371.38 € | * .: * Canceling from 12/09/2016 at 00:00:00 to 10/10/2016 at 10:50:00: 0 € * Canceling from 10/10/2016 at 10:50:00 to 14/10/2016 at 22:50:00: 100.00 % of expenses | * . : * Canceling from 12/09/2016 at 00:00:00 to 16/10/2016 at 20:35:00: 0 € * Canceling from 16/10/2016 at 20:35:00 to 21/10/2016 at 08:35:00: 100.00 % of expenses]]>
</Description>
<PolicyRules>
<Rule DateFrom="2016-09-12" DateFromHour="00:00" DateTo="2016-09-19" DateToHour="11:50" Type="V" FixedPrice="0" PercentPrice="0" Nights="0"/>
<Rule DateFrom="2016-09-19" DateFromHour="11:50" DateTo="2016-10-06" DateToHour="01:20" Type="V" FixedPrice="1183.3" PercentPrice="0" Nights="0"/>
<Rule DateFrom="2016-10-06" DateFromHour="01:20" DateTo="2016-10-06" DateToHour="12:00" Type="V" FixedPrice="1219.98" PercentPrice="0" Nights="0"/>
<Rule DateFrom="2016-10-06" DateFromHour="12:00" DateTo="2016-10-09" DateToHour="23:59" Type="V" FixedPrice="1306.32" PercentPrice="0" Nights="0"/>
<Rule DateFrom="2016-10-10" DateFromHour="00:00" Type="S" FixedPrice="1293.36" PercentPrice="0" Nights="0"/>
<Rule DateFrom="2016-10-10" DateFromHour="04:40" Type="S" FixedPrice="1330.04" PercentPrice="0" Nights="0"/>
<Rule DateFrom="2016-10-10" DateFromHour="10:50" Type="S" FixedPrice="1356.64" PercentPrice="0" Nights="0"/>
<Rule DateFrom="2016-10-10" DateFromHour="12:00" Type="S" FixedPrice="1728.02" PercentPrice="0" Nights="0"/>
<Rule DateFrom="2016-10-11" DateFromHour="00:00" Type="S" FixedPrice="1617.96" PercentPrice="0" Nights="0"/>
<Rule DateFrom="2016-10-15" DateFromHour="00:00" Type="S" FixedPrice="1554.68" PercentPrice="0" Nights="0"/>
<Rule DateFrom="2016-10-16" DateFromHour="20:35" Type="S" FixedPrice="1581.28" PercentPrice="0" Nights="0"/>
<Rule DateFrom="2016-10-21" DateFromHour="11:50" Type="S" FixedPrice="1554.68" PercentPrice="0" Nights="0"/>
</PolicyRules>
</CancellationPolicy>
The last step in the booking flow is the PackageBooking 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 canceled (CaC or Can) or on request (Pre or PDI) if there is any problem with the booking confirmation.
Once the booking flow certification has been verified and confirmed by our team and if you plan on retrieving and/or storing static data information from our system (if not, simply say us so), we will ask you to send us a detailed explanation of your static data flow and how you have integrated each one of our static data transactions in such flow.
In short, what we need you to send us are the following: