Keep in mind that this documentation is a work in progress, and that under no circumstances should you attempt to implement the same.
To help better understand the workflow of the Transport API, we've prepared a flow chart that outlines all of the main steps that exist for use on our API, including those of the booking flow process. We will refer to this flow chart as we advance further on our explanation:
TBD equivalente nuevo API
As you can see in this flow chart, this process consists of up to five steps, case for which we will proceed to describe each of them in detail:
This is the step that encompasses the transactions that are meant for the retrieval of static data information, in other words, information that will let you populate your system with the options available for search.
This step is optional, and it's availability will be entirely reliand on the product types that you will be buying on your supplier connections (some product types will have static data information available, while some other may not).
TransportCheckAvail: Optional request that you may use in order to confirm availability of a specific option (a specific RatePlanCode). It is only recommended to be used on flows on which there will be a lot of time in between the availability and booking rules requests.
TransportBookingRules: Mandatoryh request that you will need to send prior to attempt to confirm a reservation. It will provide you with all of the required elements that will be needed to confirm a reservation (namely required fields), and with the BookingCode that you will need to be sending on your booking confirmation request.
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 transport integration process, here we supply you with a series of resources which, along the use of test environment XML credentials, will let you experience the transport integration process first hand.
On this section we have a Postman example that embraces all of the transport integration process.
TBD collecion postman equivalentye
On this section we will describe generic types that may be used by multiple transactions.
Object that lists all of the routes that will be available for a specific transport result, we will refer to this object as {Routes}
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
Routes | N | - | Routes included within the transport result. |
./Routes/@ValidatingCarrier | Y | String | Carrier that sells the transport. |
./Routes/Route | N | - | Specific route. |
./Route/@Origin | N | Integer | Origin Juniper zone code. |
./Route/@Destination | N | Integer | Destination Juniper zone code. |
./Route/Segments | N | - | List of segments available for the route. |
./Segments/Segment | N | - | Specific segment. |
./Segment/@Order | N | Integer | Segment order. |
./Segment/@Stops | N | Integer | Nº. of stops. |
./Segment/@DepartureAirport | N | String | Departure airport. |
./Segment/@ArrivalAirport | N | String | Arrival airport. |
./Segment/@DepartureDate | N | Date | Departure date. |
./Segment/@ArrivalDate | N | Date | Arrival date. |
./Segment/@OperatingAirline | N | String | Company operating the airline. |
./Segment/@MarquetingAirline | N | String | Marketing company or sales company. |
./Segment/@TransportNumber | N | String | Nº of transport. |
./Segment/@JourneyDuration | Y | Duration | Length of the transport Format: P0DT7H50M0S (PdaysDThoursHminutesMsecondsS) |
./Segment/@GroundDuration | Y | Duration | Length of the segment Format: P0DT7H50M0S (PdaysDThoursHminutesMSecondsS) |
./Segment/@Class | Y | String | Route class. |
./Segment/@Meal | Y | String | NOT IMPLEMENTED |
./Segment/@Cabin | N | String | Cabin code from the GDS. Some examples are. • F: First • C: Business • B: Business • Y: Economy • P: PremiumFirst • J: PremiumBusiness • S: PremiumEconomy It is important to note that these belong to the GDS and that, consequently, it will be possible for you to receive Cabin codes that are not within this list. If you would like for more information in this regard contact with your Juniper supplier. |
./Segment/@AirplaneType | Y | String | Indicates the airplane type or code. |
./Segment/@FareBasis | Y | String | Indicates the code of the fare. |
./Segment/@VendorLocator | Y | String | Vendor locator. |
./Segment/Equipments | Y | - | List of equipments. |
./Equipments/Equipment | Y | - | Specific equipment. |
./Equipment/@Type | Y | String | For example: AirEquipType |
./Segment/TechnicalStops | Y | - | List of technical stops. |
./TechnicalStops/TechnicalStop | Y | - | Technical stop of segment. |
./TechnicalStop/@AirportCode | Y | String | Airport code of the technical stop. |
./TechnicalStop/@ArrivalDate | Y | Date | Arrival date of the technical stop. |
./TechnicalStop/@DepartureDate | Y | Date | Departure date after technical stop. |
./Segment/{SeatingMap} | Y | - | Seating map information, refer to the below object for further specifications. |
Object that groups all of the available seating information, we will refer to this object as {SeatingMap}
As of the moment, this information will only be available on the TransportBookingRules response. Additionally, it is important to understand that not all transports will allow for this selection. For further information, please contact Juniper.
If you would like to select available seatings, you will need to send an additional TransportBookingRules request along with the SeatSelectionCode of the seats that have been chosen, kindly refer to the specs of this transaction for further information in this regard.
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
SeatingMap | Y | - | Seating map information. |
./SeatingMap/{SeatEquipments} | Y | - | List of possible seating equipments. Here you will be able to find all of the available seatings along with some information like their availability and characteristics. |
./SeatingMap/{SeatGroups} | Y | - | List of possible seating groups. Here you will be able to find all of the available seating groups along with its rates, this section is important in order to understand how much a seating will cost. |
Object that groups all of the available seating equipments, we will refer to this object as {SeatEquipments}
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
SeatEquipments | Y | - | List of possible seating equipments. |
./SeatEquipments/SeatEquipment | Y | - | Specific seating equipment. |
./SeatEquipment/@Type | Y | String | Seating equipment type. For example: "73H" |
./SeatEquipment/Compartments | Y | - | Refer to the compartments specifications below. |
./Compartments/Compartment | Y | - | Specific compartment |
./Compartment/@Cabin | Y | String | Cabin code from the GDS. |
./Compartment/Seats | Y | - | List of available seats. |
./Seats/Seat | Y | - | Specific seat. |
./Seat/@Avail | Y | String | Seat availability status. Possible values: • Open • Blocked • FeetBlocked |
./Seat/@Code | Y | String | Seat code, usually refers to the number (for example: 1A). |
./Seat/@Group | Y | Integer | Seat group. Relates the seating to the {SeatGroups} object. |
./Seat/@Premium | Y | Boolean | Indicates if it is a premium seating. |
./Seat/@SeatSelectionCode | Y | String | Seat selection code. Code that you might later use in the TransportBookingRules request in order to select a seat for one or more passengers of the reservation. |
./Seat/Situations | Y | - | Seat situation inside of the plane. A single seating may have multiple situations. |
./Situations/Situation | Y | String | Specific situation. Example of possible values (which depend on the transport supplier): • WINDOW • LEFTSIDE • RIGHTSIDE • EXITROW • WING • AISLE |
Object that groups all of the available seating groups, we will refer to this object as {SeatGroups}
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
SeatGroups | Y | - | List of possible seating groups. |
./SeatGroups/SeatGroup | Y | - | Specific seating group. |
./SeatGroup/@Group | Y | Integer | Group identifier. Needed to be related to the appropiate seating from {SeatEquipments}. |
./SeatGroup/GroupFee | Y | - | Group fee information. |
./GroupFee/Paxes | Y | - | Group fee passenger information. These will be the passengers to which the group fee will apply, if selected. |
./Paxes/RelPaxDist | Y | - | Distribution list. |
./RelPaxDist/RelPaxes | Y | - | Passenger list of this distribution. |
./RelPaxes/RelPax | Y | - | Specific passenger. |
./RelPax/@IdPax | N | Integer | Passenger id. |
./GroupFee/{Price} | Y | - | Group fee price information. |
./SeatGroup/GroupDetail | Y | - | Group fee detailed information. |
./GroupDetail/Names | Y | - | Group fee names container. |
./Names/Name | Y | String | Group fee name. |
Object that groups all of the additional elements included within a result (such as, for example, supplements), we will refer to this object as {AdditionalElements}
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
AdditionalElements | Y | - | List of additional elements. Supplements and offers/promotions. |
./AdditionalElements/Fees | Y | - | List of fees available. |
./Fees/Fee | Y | String | Specific fee. |
./AdditionalElements/{Bags} | Y | String | Bags included. |
./AdditionalElements/{CreditCardFee} | Y | String | Credit card fee included. |
./AdditionalElements/{TransportSupplements} | Y | - | Transport supplements. |
Object that groups all of the optional elements that may be included within the booking (such as, for example, supplements), we will refer to this object as {OptionalElements}
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
OptionalElements | Y | - | List of optional elements |
./OptionalElements/{Bags} | Y Optional bags. | ||
./OptionalElements/CreditCardsFee | Y | - | Optional credit card fees |
./CreditCardsFee/{CreditCardFee} | Y | - | Optional credit card fee. |
./OptionalElements/{TransportSupplements} | Y | - | Transport supplements. |
Object that groups all of the available baggage information, we will refer to this object as {Bags}
If you would like to select available bags, you will need to send an additional TransportBookingRules request along with the BagSelectionCode of the bags that have been chosen, kindly refer to the specs of this transaction for further information in this regard. In addition, it is important to understand that not all transports will allow for this selection. For further information, please contact Juniper.
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
Bags | Y | String | Bags included. |
./Bags/Bag | N | - | |
./Bag/@BaggageType | Y | String | Type of baggage. Possible values: • handBaggage • holdBaggage |
./Bag/@Quantity | Y | Integer | Indicates the number of bags. |
./Bag/@Weight | Y | Integer | Bag weight. |
./Bag/@Size | Y | String | Bag size. |
./Bag/@BagSelectionCode | Y | String | Bag selection code. Code that you might later use in the TransportBookingRules request in order to select a bag for one or more passengers of the reservation. |
./Bag/RelPaxes | Y | - | Passenger distribution. |
./RelPaxes/RelPax | N | - | Passenger element. |
./RelPax/@IdPax | N | Integer | Id/order of the passenger to which the Bag element will refer to. |
./RelPax/@RatePlanCode | Y | String | DEPRECATED. Property that was previously used for bag selection. For this purpose, kindly use the BagSelectionCode property. |
./Bag/RelSegments | Y | - | List of Segments (found within the Routes object) to which the Bag is related to. If unavailable, the bag will apply to all of the TransportResult. |
./RelSegments/RelSegment | N | Integer | Segment @Order to which the related Bag refers to. |
./Bag/{Prices} | Y | - | Price information. If the @RatePlanCode is present, it will refer to the total price of the transport while including the bag price while, if the @RatePlanCode is missing (for example, on packages), it will only refer to the bag price. |
./Bag/Descriptions | Y | - | Bag descriptions |
./Descriptions/Description | Y | String | Specific description. |
Object that groups all of the available credit card fees, we will refer to this object as {CreditCardFee}
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
CreditCardFee | Y | String | Credit card fee included. |
./CreditCardFee/@Cardcode | N | String | Card Type. |
./CreditCardFee/@Name | N | String | Card name. |
./CreditCardFee/@PerPax | N | Boolean | true: Price per pax false: Price per booking. |
./CreditCardFee/@RatePlanCode | Y | String | RatePlanCode in which this bag is included for passenger IdPax. If you wish to include it you should generate a BookingRules through this RatePlanCode Available when the fee is not already included on the OptionalElements node. |
./CreditCardFee/{Prices} | Y | - | Total price of the service including this supplement. |
Object that groups all of the available transport supplements, we will refer to this object as {TransportSupplements}
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
TransportSupplements | Y | - | List of available transport supplements. |
./TransportSupplements/TransportSupplement | Y | String | Specific supplement. |
./TransportSupplement/@Units | N | Integer | Supplement units. |
./TransportSupplement/RelPaxes | Y | - | If this tag is not found it means it applies to all passengers. |
./RelPaxes/RelPax | N | - | Specific passenger. |
./RelPax/@IdPax | N | Integer | Identifies the passenger the supplement would apply for. |
./RelPax/@RatePlanCode | Y | String | If this is an optional supplements, this RatePlanCode will need to be used in order to apply the supplement to the booking. If you wish to include it, you should send an additional BookingRules request through the use of this RatePlanCode. |
./RelPax/{Prices} | Y | - | Total price of the service including this supplement. |
./RelPaxes/{Prices} | Y | - If this supplement is for all passengers. Total price of the service including this supplement. |
Methods that allow for the retrieval of static data information.
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.
Request that allows for the retrieval of all of the routes that we have available for use stored on the target system.
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 |
ModuleTypes | N | - | List of module types you would like to retrieve routes for. |
./ModuleTypes/ModuleType | N | String | Module type to retrieve routes for. Possible values: • Ferry • Flight • Train |
<soapenv:Envelope xmlns:soapenv = "http://schemas.xmlsoap.org/soap/envelope/" xmlns = "http://www.juniper.es/webservice/2007/">
<soapenv:Header/>
<soapenv:Body>
<TransportRoutePortfolio>
<TransportRoutePortfolioRQ Version = "1.1" Language = "es">
<Login Email = "username" Password = "password"/>
<ModuleTypes>
<ModuleType>Ferry</ModuleType>
</ModuleTypes>
</TransportRoutePortfolioRQ>
</TransportRoutePortfolio>
</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. |
Locations | N | - | List of routes available. |
./Locations/Location | N | - | Specific route. |
./Location/@OriginPortCode | N | String | Origing port/airport code. |
./Location/@DestinationPortCode | N | String | Destination port/airport code. |
./Location/@DescriptionOriginPort | N | String | Origing port/airport description. |
./Location/@DescriptionDestinationPort | N | String | Destination port/airport description. |
./Location/@idZonOrigen | N | Integer | Origing zone code. |
./Location/@idZonDestino | N | Integer | Destination zone code. |
./Location/@TipoProducto | N | String | Product type code to which the route belongs to. |
<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>
<TransportRoutePortfolioResponse xmlns = "http://www.juniper.es/webservice/2007/">
<TransportRoutePortfolioRS Url = "http://xml-uat.bookingengine.es" TimeStamp = "2025-07-25T13:36:59.3424373+02:00" IntCode = "h47InbdQ1pRei7jyc69195j1iy7F8DumXIV1MVeWmSA=">
<TransportRoutePortfolio>
<Locations>
<Location OriginPortCode = "SCLAD" DestinationPortCode = "SCPOV" DescriptionOriginPort = "Puerto de La Digue" DescriptionDestinationPort = "Puerto de La Digue" idZonOrigen = "149807" idZonDestino = "149808" TipoProducto = "CCO"/>
<Location OriginPortCode = "SCLAD" DestinationPortCode = "" DescriptionOriginPort = "Puerto de La Digue" DescriptionDestinationPort = "Puerto de La Digue" idZonOrigen = "149807" idZonDestino = "56977" TipoProducto = "CCO"/>
<Location OriginPortCode = "SCLAD" DestinationPortCode = "SEZ" DescriptionOriginPort = "Puerto de La Digue" DescriptionDestinationPort = "Puerto de La Digue" idZonOrigen = "149807" idZonDestino = "36996" TipoProducto = "CCO"/>
<Location OriginPortCode = "KKN" DestinationPortCode = "SCPOV" DescriptionOriginPort = "Isla de La Digue" DescriptionDestinationPort = "Isla de La Digue" idZonOrigen = "49841" idZonDestino = "149808" TipoProducto = "CCO"/>
<Location OriginPortCode = "KKN" DestinationPortCode = "" DescriptionOriginPort = "Isla de La Digue" DescriptionDestinationPort = "Isla de La Digue" idZonOrigen = "49841" idZonDestino = "56977" TipoProducto = "CCO"/>
<Location OriginPortCode = "KKN" DestinationPortCode = "SEZ" DescriptionOriginPort = "Isla de La Digue" DescriptionDestinationPort = "Isla de La Digue" idZonOrigen = "49841" idZonDestino = "36996" TipoProducto = "CCO"/>
<Location OriginPortCode = "" DestinationPortCode = "SCPOV" DescriptionOriginPort = "La Digue y las islas Interiores " DescriptionDestinationPort = "La Digue y las islas Interiores " idZonOrigen = "149492" idZonDestino = "149808" TipoProducto = "CCO"/>
<Location OriginPortCode = "" DestinationPortCode = "" DescriptionOriginPort = "La Digue y las islas Interiores " DescriptionDestinationPort = "La Digue y las islas Interiores " idZonOrigen = "149492" idZonDestino = "56977" TipoProducto = "CCO"/>
<Location OriginPortCode = "" DestinationPortCode = "SEZ" DescriptionOriginPort = "La Digue y las islas Interiores " DescriptionDestinationPort = "La Digue y las islas Interiores " idZonOrigen = "149492" idZonDestino = "36996" TipoProducto = "CCO"/>
<Location OriginPortCode = "SCPOV" DestinationPortCode = "SCLAD" DescriptionOriginPort = "Puerto de Victoria" DescriptionDestinationPort = "Puerto de Victoria" idZonOrigen = "149808" idZonDestino = "149807" TipoProducto = "CCO"/>
<Location OriginPortCode = "SCPOV" DestinationPortCode = "KKN" DescriptionOriginPort = "Puerto de Victoria" DescriptionDestinationPort = "Puerto de Victoria" idZonOrigen = "149808" idZonDestino = "49841" TipoProducto = "CCO"/>
<Location OriginPortCode = "SCPOV" DestinationPortCode = "" DescriptionOriginPort = "Puerto de Victoria" DescriptionDestinationPort = "Puerto de Victoria" idZonOrigen = "149808" idZonDestino = "149492" TipoProducto = "CCO"/>
<Location OriginPortCode = "" DestinationPortCode = "SCLAD" DescriptionOriginPort = "Victoria" DescriptionDestinationPort = "Victoria" idZonOrigen = "56977" idZonDestino = "149807" TipoProducto = "CCO"/>
<Location OriginPortCode = "" DestinationPortCode = "KKN" DescriptionOriginPort = "Victoria" DescriptionDestinationPort = "Victoria" idZonOrigen = "56977" idZonDestino = "49841" TipoProducto = "CCO"/>
<Location OriginPortCode = "" DestinationPortCode = "" DescriptionOriginPort = "Victoria" DescriptionDestinationPort = "Victoria" idZonOrigen = "56977" idZonDestino = "149492" TipoProducto = "CCO"/>
<Location OriginPortCode = "SEZ" DestinationPortCode = "SCLAD" DescriptionOriginPort = "Isla de Mahe" DescriptionDestinationPort = "Isla de Mahe" idZonOrigen = "36996" idZonDestino = "149807" TipoProducto = "CCO"/>
<Location OriginPortCode = "SEZ" DestinationPortCode = "KKN" DescriptionOriginPort = "Isla de Mahe" DescriptionDestinationPort = "Isla de Mahe" idZonOrigen = "36996" idZonDestino = "49841" TipoProducto = "CCO"/>
<Location OriginPortCode = "SEZ" DestinationPortCode = "" DescriptionOriginPort = "Isla de Mahe" DescriptionDestinationPort = "Isla de Mahe" idZonOrigen = "36996" idZonDestino = "149492" TipoProducto = "CCO"/>
</Locations>
</TransportRoutePortfolio>
</TransportRoutePortfolioRS>
</TransportRoutePortfolioResponse>
</soap:Body>
</soap:Envelope>
Methods available for the use of the booking flow of the Transport API.
The availability request, which will return you with any trasnports that are available for the requested criteria, along with the RatePlanCode that you will need in order to be able to continue with the booking flow process.
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 passengers. Fields necessary for this transaction: • @IdPax (required). • Age (optional for adults) |
TransportRequest | N | - | Request container. |
./TransportRequest/SearchSegmentsTransport | N | - | Search properties. |
./SearchSegmentsTransport/SearchSegmentTransport | N | - | Basic search properties. |
./SearchSegmentTransport/@Cabin | Y | String | Filter by cabin. Possible values: • Business • First • Economy • Premium • PremiumBusiness • PremiumFirst • PremiumEconomy |
./SearchSegmentTransport/@Class | Y | String | Filter by airline class. |
./SearchSegmentTransport/@LowCost | Y | Boolean | Indicates whether it includes or not LowCost. |
./SearchSegmentTransport/@Stops | Y | Integer | Filter by maximum Nº of accepted transport connections, if you do not wish connected transports indicate 0. NOT IMPLEMENTED |
./SearchSegmentTransport/CountryOfResidence | N | String | Nationality of the holder of the reservation. |
./SearchSegmentTransport/Routes | N | - | Maximum Nº of routes to request: 10. |
./Routes/Route | N | - | Specific route. |
./Route/@Origin | Y | Integer | Origin Juniper zone code. Either sending this or @OriginIATA will be mandatory. |
./Route/@OriginIATA | Y | String | Origin IATA zone code. Either sending this or @Origin will be mandatory. |
./Route/@Destination | Y | Integer | Destination Juniper zone code. Either sending this or @DestinationIATA will be mandatory. |
./Route/@DestinationIATA | Y | String | Destination IATA zone code. Either sending this or @Destination will be mandatory. |
./Route/@Date | N | Date | Indicates the departure date. |
./Routes/Discount | Y | - | Discounts that you may wish to apply to the requested passengers. If available (as, if unavailable, normal rates may also be returned), the mentioned will apply to all of the requested passengers (meaning that all of them should be eligible). When requesting availability while including a discount, there will be some mandatory passenger information that will need to be provided. This data will be marked as required fields on the booking rules response: • In case of a resident discount, the Pax Municipality code will be requested (the @Municipality node). You will be able to check all the possible values in the following section: Municipality Codes • In case of a large family discount, the Large Family code (the @Code node) and the Autonomous Community code (the @AutonomousCommunity node) will be requested. You will be able to check all the possible values in the following section: AutonomousCommunity Codes Last of all, in the TransportBooking response, the type (@Type) of each one of the applied discounts will be returned at a passenger level. This value should not be sent in the TransportBooking request, as discounts are calculated internally with the data retrieved from the TransportAvail transaction. |
./Discount/@Resident | Y | Boolean | If they are entitled to a resident discount. |
./Discount/@LargeFamily | Y | String | If they are entitled to a large family discount. Large family values: • F1: General Category. • F2: Special Category. |
./Routes/AirLines | Y | - | List of airline codes to request availability for. |
./Airlines/Airline | N | - | Specific airline. |
./Airline/Code | N | String | Airline code. |
./SearchSegmentsTransport/TransportSuppliers | Y | - | Supplier codes to filter for. NOT IMPLEMENTED |
./TransportSuppliers/TransportSupplier | N | - | Specific transport supplier. |
./TransportSupplier/@Code | N | String | Supplier code. |
./TransportSupplier/TransportRates | Y | - | List of rates to filter for. |
./TransportRates/TransportRate | N | - | Specific rate. |
./TransportRate/@Code | N | String | Rate code. |
./TransportRequest/RelPaxesDist | N | - | Passenger distribution you wish to book. |
./RelPaxesDist/RelPaxDist | N | - | Distribution list, only one is needed. |
./RelPaxDist/RelPaxes | N | - | Passenger list of this distribution. |
./RelPaxes/RelPax | N | - | Passenger. |
./RelPax/@IdPax | N | Integer | Passenger Id. It should match with a {Pax@IdPax}. |
AdvancedOptions | Y | - | Advaced options that you may apply to your request. |
./AdvancedOptions/CalendarSearh | Y | Boolean | If the value is True, it will perform a calendar search on any transport that allows for the same, meaning that the availability response will contain transports from the dates specified along transports within 3 days from them. |
./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. |
./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. |
ModuleTypes | N | - | List of module types you would like to retrieve availability for. As of the moment, only one module type is accepted per request. |
./ModuleTypes/ModuleType | N | String | Module type to retrieve availability for. Possible values: • Ferry • Flight • Train |
<soap:Envelope xmlns:soap = "http://www.w3.org/2003/05/soap-envelope" xmlns = "http://www.juniper.es/webservice/2007/">
<soap:Header/>
<soap:Body>
<TransportAvail>
<TransportAvailRQ Version = "1.1" Language = "en">
<Login Email = "username" Password = "password"/>
<Paxes>
<Pax IdPax = "1">
<Age>30</Age>
</Pax>
</Paxes>
<TransportRequest>
<SearchSegmentsTransport>
<SearchSegmentTransport>
<CountryOfResidence>ES</CountryOfResidence>
<Routes>
<Route OriginIATA = "PMI" DestinationIATA = "BCN" Date = "2026-11-08"/>
</Routes>
</SearchSegmentTransport>
</SearchSegmentsTransport>
<RelPaxesDist>
<RelPaxDist>
<RelPaxes>
<RelPax IdPax = "1"/>
</RelPaxes>
</RelPaxDist>
</RelPaxesDist>
</TransportRequest>
<AdvancedOptions>
<ShowBreakdownPrice>false</ShowBreakdownPrice>
</AdvancedOptions>
<ModuleTypes>
<ModuleType>Flight</ModuleType>
</ModuleTypes>
</TransportAvailRQ>
</TransportAvail>
</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 results available. |
./Results/TransportResult | N | - | Specific transport result. |
./TransportResult/@FareType | N | String | Fare type. Exmaple values: • Public • Negotiated • Private |
./TransportResult/@AvailableSeats | Y | Integer | Seats available for the fare (1..9 seats available). |
./TransportResult/@Number | N | String | Numeric option identifier. |
./TransportResult/@Direction | N | String | Transport direction. Possible values: • Outbound: Outbound transports • Inbound: Inbound transports • Roundtrip: Roundtrip transports. Identifies travel from one point to another point and returns to the original point • MultiDestiny |
./TransportResult/@LowCost | N | Boolean | Identifies if it is a low cost fare. |
./TransportResult/@RatePlanCode | N | String | Code that identifies the result, and that will be required in order to be able to continue with the booking flow. |
./TransportResult/@Status | N | String | Availability status. Possible values: • OK: Available |
./TransportResult/@Source | N | String | Product type code for the transport. Example values: • Amad: Amadeus • Chv2: CharterV2 • Sab2: SabreV2 • etc... |
./TransportResult/{Routes} | N | - | Routes included within the transport result. |
./TransportResult/{Prices} | N | - | Price object related to the transport result. |
./TransportResult/{AdditionalElements} | Y | - | Additional elements included on the transport result. |
./TransportResult/Rules | Y | - | Applicable rule information. |
./Rules/Rule | N | String | Specific rule value. |
./Rule/@Name | N | String | Rule name. For example: LastTicketDate |
./TransportResult/OptionalFares | Y | - | List of optional fares. |
./OptionalFares/FareGroupPrices | N | - | List of prices of Fare Groups (Not all Fares have a price). |
./FareGroupPrices/FareGroupPrice | N | - | Fare Group Price Item. |
./FareGroupPrice/@FareGroupCode | N | String | Code of the Fare Group. |
./FareGroupPrice/@RatePlanCode | N | String | RatePlanCode of the Fare Group. |
./FareGroupPrice/{Prices} | N | - | Price element. |
./OptionalFares/FareGroups | N | - | List of Fare Groups. |
./FareGroups/FareGroup | N | - | Fare Group Item. |
./FareGroup/@Code | N | String | Code of the Fare Group. |
./FareGroup/Name | N | String | Name of the Fare Group. |
./FareGroup/FareGroupServices | N | - | List of FareGroupServices. |
./FareGroupServices/FareGroupService | N | - | FareGroupService element. |
./FareGroupService/@TypeCode | N | Integer | Code of the Type of Service included in OptionalFaresDescription. |
./FareGroupService/@PriceApplicationCode | N | Integer | Code of the Type of Price of the Service included in OptionalFaresDescription. |
OptionalDescriptions | Y | - | List of optional descriptions. |
./OptionalDescriptions/OptionalFaresDescription | Y | - | Optional fare description. |
./OptionalFaresDescription/FareGroupTypes | N | - | List of types of Fare Groups. |
./FareGroupTypes/FareGroupType | N | - | Type of Fare Groups. |
./FareGroupType/@Code | N | Integer | Code of the Type of Fare Group. |
./FareGroupType/Description | N | String | Description of the Type of Fare Group. |
./OptionalFaresDescription/FareGroupPriceApplications | N | - | Fare Group Price Application container. |
./FareGroupPriceApplications/FareGroupPriceApplication | N | - | Fare Group Price Application item. |
./FareGroupPriceApplication/@Code | N | Integer | Code of the Fare Group Price application. |
./FareGroupPriceApplication/Description | N | Integer | Description of the Fare Group Price Application. |
<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>
<TransportAvailResponse xmlns = "http://www.juniper.es/webservice/2007/">
<AvailabilityRS Url = "http://xml-uat.bookingengine.es" TimeStamp = "2025-07-28T15:27:50.9896355+02:00" IntCode = "p4FWrnJuxnIEF3bdrJJhZCjkKEQfiqnTnJYXrtJVd80=">
<Results>
<TransportResult FareType = "PUB" AvailableSeats = "9" Number = "1" Direction = "Outbound" LowCost = "false" RatePlanCode = "wLa+Z9Sl0lOXLNSHXNW/Hsaqm9YEeX56Go39p32XDsIYbrIzytu7B2pEN9PnYTa30EgsJflJk8uZoXZm7NTebofCXKO2ECmHe2RVcWz9azLTlQen1ktoX9r..." Status = "OK">
<Routes ValidatingCarrier = "UX">
<Route Origin = "40233" Destination = "37799">
<Segments>
<Segment Order = "1" DepartureAirport = "PMI" ArrivalAirport = "BCN" DepartureDate = "2025-11-08T20:20:00" ArrivalDate = "2025-11-08T21:10:00" OperatingAirline = "UX" MarquetingAirline = "UX" TransportNumber = "6102" JourneyDuration = "P0DT0H50M0S" GroundDuration = "P0DT0H50M0S" Class = "Z" Cabin = "Y" AirplaneType = "Boeing 737-800 Winglets" FareBasis = "ZDYO3L"/>
</Segments>
</Route>
</Routes>
<Prices>
<Price Type = "S" Currency = "EUR">
<TotalFixAmounts Gross = "22.85" Nett = "22.85">
<Service Amount = "15"/>
<ServiceTaxes Included = "false" Amount = "7.85"/>
</TotalFixAmounts>
</Price>
</Prices>
<Rules>
<Rule Name = "LastTicketDate">2025-07-29</Rule>
</Rules>
</TransportResult>
<TransportResult FareType = "PUB" AvailableSeats = "9" Number = "2" Direction = "Outbound" LowCost = "false" RatePlanCode = "wLa+Z9Sl0lOXLNSHXNW/Hsaqm9YEeX56Go39p32XDsIYbrIzytu7B2pEN9PnYTa3tXqpm0qL6ejvUL2DBIiUfU+8WnFy0F+zB7dnwfNZCJ5ZS87P..." Status = "OK">
<Routes ValidatingCarrier = "UX">
<Route Origin = "40233" Destination = "37799">
<Segments>
<Segment Order = "1" DepartureAirport = "PMI" ArrivalAirport = "BCN" DepartureDate = "2025-11-08T13:30:00" ArrivalDate = "2025-11-08T14:20:00" OperatingAirline = "UX" MarquetingAirline = "UX" TransportNumber = "6060" JourneyDuration = "P0DT0H50M0S" GroundDuration = "P0DT0H50M0S" Class = "Z" Cabin = "Y" AirplaneType = "Boeing 737-800 Winglets" FareBasis = "ZDYO5L"/>
</Segments>
</Route>
</Routes>
<Prices>
<Price Type = "S" Currency = "EUR">
<TotalFixAmounts Gross = "34.85" Nett = "34.85">
<Service Amount = "27"/>
<ServiceTaxes Included = "false" Amount = "7.85"/>
</TotalFixAmounts>
</Price>
</Prices>
<Rules>
<Rule Name = "LastTicketDate">2025-07-29</Rule>
</Rules>
</TransportResult>
</Results>
</AvailabilityRS>
</TransportAvailResponse>
</soap:Body>
</soap:Envelope>
This method may be used in order to check the availability of a specific result. The only parameter required (other than the credentials) will be the RatePlanCode retrieved from the previous availability response.
This method is only intended for when there has been a considerable time in between the original availability and the moment on which you would send the booking rules request, otherwise, there is no need to implement and use this transaction.
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 |
TransportCheckAvailRequest | N | - | Request container. |
./TransportCheckAvailRequest/TransportOption | N | - | Transport option. |
./TransportOption/@RatePlanCode | N | String | RatePlanCode of the result you're going to check availability for. Retrieve from the previous availability request. |
AvancedOptions | Y | - | Advaced options that you may apply to your request. |
./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. |
./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>
<TransportCheckAvail>
<TransportCheckAvailRQ Version = "1.1" Language = "en">
<Login Email = "username" Password = "password"/>
<TransportCheckAvailRequest>
<TransportOption RatePlanCode = "wLa+Z9Sl0lOXLNSHXNW/Hsaqm9YEeX56Go39p32XDsIYbrIzytu7B2pEN9PnYTa30EgsJflJk8uZoXZm7NTe..."/>
</TransportCheckAvailRequest>
</TransportCheckAvailRQ>
</TransportCheckAvail>
</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 results available. |
./Results/TransportResult | N | - | Specific transport result. |
./TransportResult/@Status | N | String | Availability status. Possible values: • OK: Available |
./TransportResult/@Direction | N | String | Transport direction. Possible values: • Outbound: Outbound transports • Inbound: Inbound transports • Roundtrip: Roundtrip transports. Identifies travel from one point to another point and returns to the original point • MultiDestiny |
./TransportResult/@LowCost | N | Boolean | Identifies if it is a low cost fare. |
./TransportResult/@RatePlanCode | N | String | Code that identifies the result, and that will be required in order to be able to continue with the booking flow. |
./TransportResult/PriceInformation | N | - | Price related information. |
./PriceInformation/{Routes} | N | - | Routes included within the transport result. |
./PriceInformation/{Prices} | N | - | Price object related to the transport result. |
./PriceInformation/{AdditionalElements} | Y | - | Additional elements included on the transport result. |
./PriceInformation/{OptionalElements} | Y | - | Opional elements included on the transport result. |
<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>
<TransportCheckAvailResponse xmlns = "http://www.juniper.es/webservice/2007/">
<CheckAvailRS Url = "http://xml-uat.bookingengine.es" TimeStamp = "2025-07-28T15:33:29.8799652+02:00" IntCode = "U0cRqC3gOm/j6FaEmQXdwVbpjz0ndAgIPkdI4f4dLeY=">
<Results>
<TransportResult Status = "OK" Direction = "Outbound" LowCost = "true" RatePlanCode = "wLa+Z9Sl0lOXLNSHXNW/Hsaqm9YEeX56Go39p32XDsIYbrIzytu7B2pEN9PnYTa3UCpN+busApoMp90gC1zi0eqtL9pDgYZ/GReZeDd33sxQczt2NA6s8yRrKmjGxb1RcI6PqIbu8OLi...">
<PriceInformation>
<Routes ValidatingCarrier = "UX">
<Route Origin = "40233" Destination = "37799">
<Segments>
<Segment Order = "1" DepartureAirport = "PMI" ArrivalAirport = "BCN" DepartureDate = "2025-11-08T20:20:00" ArrivalDate = "2025-11-08T21:10:00" OperatingAirline = "UX" MarquetingAirline = "UX" TransportNumber = "6102" JourneyDuration = "P0DT0H50M0S" GroundDuration = "P0DT0H50M0S" Class = "Z" Cabin = "Y" AirplaneType = "Boeing 737-800 Winglets" FareBasis = "ZDYO3L"/>
</Segments>
</Route>
</Routes>
<Prices>
<Price Type = "S" Currency = "EUR">
<TotalFixAmounts Gross = "22.85" Nett = "22.85">
<Service Amount = "15"/>
<ServiceTaxes Included = "false" Amount = "7.85"/>
</TotalFixAmounts>
</Price>
</Prices>
</PriceInformation>
<OptionalElements>
<Bags>
<Bag BaggageType = "holdBaggage" Quantity = "0" Size = "56,00x35,00x23,00" BagSelectionCode = "qf05GSAJJAve75PWTgjfobks0p8bUDXZ35ACowDpo/R1a00lJxl9mrXAZxkon1sGahjhllUtbdVpgRdz0cnHgxDPERw4XMxFaKP8DGuhGc8AswM0qziqWUSfFQOM5CT5NBvmVNLzvNU/pClGNlZICA==">
<RelPaxes>
<RelPax IdPax = "1" RatePlanCode = "wLa+Z9Sl0lOXLNSHXNW/Hsaqm9YEeX56Go39p32XDsIYbrIzytu7B2pEN9PnYTa3NMyPsr0Jua5yI+rmbSvcBekX6l+5NrlxcdmOwwbH9Hlsq1TVzd5NDriSgaBN2G0WSQZiyqdsS6+cU0vMXJv/TS/zzg..."/>
</RelPaxes>
<RelSegments>
<RelSegment>1</RelSegment>
</RelSegments>
<Price Type = "S" Currency = "EUR">
<TotalFixAmounts Recommended = "0" Gross = "52.85" Nett = "52.85">
<Service Amount = "45"/>
<ServiceTaxes Included = "false" Amount = "7.85"/>
</TotalFixAmounts>
</Price>
<Descriptions>
<Description>FIRST PREPAID BAG - FROM PIECE 1 TO PIECE 1</Description>
</Descriptions>
</Bag>
<Bag BaggageType = "holdBaggage" Quantity = "0" Size = "56,00x35,00x23,00" BagSelectionCode = "MX/Xj0kWs0amgRpD8BCecPFnDAvhGAjYxk5fMbARLhz35GPdQLG2v2lSS6Q8Spws8P2paLjoNEaSH6lfIXJl3h6acPL9IJk5lyl9FDxDgCQ=">
<RelPaxes>
<RelPax IdPax = "1" RatePlanCode = "wLa+Z9Sl0lOXLNSHXNW/Hsaqm9YEeX56Go39p32XDsIYbrIzytu7B2pEN9PnYTa3z1ymzgI48ajbgTt4FSw+KM6RqLeTRCCgOMW3otcUvr0VysuXwGvVilcfbED/lDnrQx1QHYfwzibO70l41D..."/>
</RelPaxes>
<RelSegments>
<RelSegment>1</RelSegment>
</RelSegments>
<Price Type = "S" Currency = "EUR">
<TotalFixAmounts Recommended = "0" Gross = "62.85" Nett = "62.85">
<Service Amount = "55"/>
<ServiceTaxes Included = "false" Amount = "7.85"/>
</TotalFixAmounts>
</Price>
<Descriptions>
<Description>PREPAID BAG</Description>
</Descriptions>
</Bag>
<Bag BaggageType = "holdBaggage" Quantity = "0" Size = "56,00x35,00x23,00" BagSelectionCode = "ngmTr64XlNVRR0+StN+dn2ROzCvAfQ0XU0APwntRo6NYdZ3z0FGiSDICzI6gPKZPe4J53c4pbWDWMIB9FMn1ZZ5oiU8REMdSd5jSRLwe2VYXlF/DB2DVsxUnCI6cXcspP06YUA88f208aF3Doie1xA==">
<RelPaxes>
<RelPax IdPax = "1" RatePlanCode = "wLa+Z9Sl0lOXLNSHXNW/Hsaqm9YEeX56Go39p32XDsIYbrIzytu7B2pEN9PnYTa3NMyPsr0Jua5yI+rmbSvcBekX6l+5NrlxcdmOwwbH9Hlsq1TVzd5NDriSgaBN2G0WSQZiyqdsS6+cU0vMXJv/TS/zzg..."/>
</RelPaxes>
<RelSegments>
<RelSegment>1</RelSegment>
</RelSegments>
<Price Type = "S" Currency = "EUR">
<TotalFixAmounts Recommended = "0" Gross = "52.85" Nett = "52.85">
<Service Amount = "45"/>
<ServiceTaxes Included = "false" Amount = "7.85"/>
</TotalFixAmounts>
</Price>
<Descriptions>
<Description>PREPAID BAG - FROM PIECE 1 TO PIECE 1</Description>
</Descriptions>
</Bag>
<Bag BaggageType = "holdBaggage" Quantity = "0" Size = "56,00x35,00x23,00" BagSelectionCode = "N2CBlHYLps3fulHdgdeG713ZSDcj8a8IKpLpZrQGUmcSt5C2GUXD+rBlWFyvEogr/MVcONHrAJUhUWnBgvloczdlcuNXjDZRaE5YShCSBmZeqySMpF+h1/ztv5rOCXpg3LBzERhd8u67sLc9Wk9LRg==">
<RelPaxes>
<RelPax IdPax = "1" RatePlanCode = "wLa+Z9Sl0lOXLNSHXNW/Hsaqm9YEeX56Go39p32XDsIYbrIzytu7B2pEN9PnYTa3z1ymzgI48ajbgTt4FSw+KM6RqLeTRCCgOMW..."/>
</RelPaxes>
<RelSegments>
<RelSegment>1</RelSegment>
</RelSegments>
<Price Type = "S" Currency = "EUR">
<TotalFixAmounts Recommended = "0" Gross = "62.85" Nett = "62.85">
<Service Amount = "55"/>
<ServiceTaxes Included = "false" Amount = "7.85"/>
</TotalFixAmounts>
</Price>
<Descriptions>
<Description>PREPAID BAG - FROM PIECE 2 TO PIECE 2</Description>
</Descriptions>
</Bag>
</Bags>
</OptionalElements>
</TransportResult>
</Results>
</CheckAvailRS>
</TransportCheckAvailResponse>
</soap:Body>
</soap:Envelope>
This method is used in order to quote a specific transport result, and is required prior to the confirmation of the reservation. Through its respective response, you will be able to retrieve:
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. |
TransportBookingRulesRequest | N | - | Request container. |
./TransportBookingRulesRequest/TransportOption | N | - | Transport option. |
./TransportOption/@RatePlanCode | N | String | RatePlanCode of the result you're going to quote. Retrieve from the previous availability request (or, if implemented and used, check avail response). |
./TransportBookingRulesRequest/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 this 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 this object for further information regarding the bag selection feature. |
AvancedOptions | Y | - | Advaced options that you may apply to your request. |
./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. |
./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 TransportResult 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>
<TransportBookingRules>
<TransportBookingRulesRQ Version = "1.1" Language = "en">
<Login Email = "username" Password = "password"/>
<TransportBookingRulesRequest>
<TransportOption RatePlanCode = "wLa+Z9Sl0lOXLNSHXNW/Hsaqm9YEeX56Go39p32XDsIYbrIzytu7B2pEN9PnYTa3UCpN+busApoMp90gC1zi0eqtL9pDgYZ/GReZeDd33sxQczt2NA6s8yRrKmjGxb1RcI..."/>
</TransportBookingRulesRequest>
</TransportBookingRulesRQ>
</TransportBookingRules>
</soapenv:Body>
</soapenv:Envelope>
Attached you will be able to see an example on which we select a seat for the first passenger of the reservation. If you would like for more information regarding this feature, kindly refer to the {SeatingMap} object.
<soapenv:Envelope xmlns:soapenv = "http://schemas.xmlsoap.org/soap/envelope/" xmlns = "http://www.juniper.es/webservice/2007/">
<soapenv:Header/>
<soapenv:Body>
<TransportBookingRules>
<TransportBookingRulesRQ Version = "1.1" Language = "en">
<Login Email = "username" Password = "password"/>
<TransportBookingRulesRequest>
<TransportOption RatePlanCode = "wLa+Z9Sl0lOXLNSHXNW/Hsaqm9YEeX56Go39p32XDsIYbrIzytu7B2pEN9PnYTa3UCpN+busApoMp90gC1zi0eqtL9pDgYZ/GReZeDd33sxQczt2NA6s8yRrKmjGxb1RcI..."/>
<RelPaxesDist>
<RelPaxDist>
<RelPaxes>
<RelPax IdPax = "1">
<PaxSeats>
<PaxSeat SeatSelectionCode = "ciiuZqn3JCeUBFrrD9w8GVodoVKaLfGuH3tWfOwdXUk="/>
</PaxSeats>
</RelPax>
</RelPaxes>
</RelPaxDist>
</RelPaxesDist>
</TransportBookingRulesRequest>
</TransportBookingRulesRQ>
</TransportBookingRules>
</soapenv:Body>
</soapenv:Envelope>
Attached you will be able to see an example on which we select a bag for the first passenger of the reservation. If you would like for more information regarding this feature, kindly refer to the {Bags} object.
<soapenv:Envelope xmlns:soapenv = "http://schemas.xmlsoap.org/soap/envelope/" xmlns = "http://www.juniper.es/webservice/2007/">
<soapenv:Header/>
<soapenv:Body>
<TransportBookingRules>
<TransportBookingRulesRQ Version = "1.1" Language = "en">
<Login Email = "username" Password = "password"/>
<TransportBookingRulesRequest>
<TransportOption RatePlanCode = "wLa+Z9Sl0lOXLNSHXNW/Hsaqm9YEeX56Go39p32XDsIYbrIzytu7B2pEN9PnYTa3UCpN+busApoMp90gC1zi0eqtL9pDgYZ/GReZeDd33sxQczt2NA6s8yRrKmjGxb1RcI..."/>
<RelPaxesDist>
<RelPaxDist>
<RelPaxes>
<RelPax IdPax = "1">
<PaxBags>
<PaxBag BagSelectionCode = "eAMiWHwWdx+aYy3bFSkiT4aWdluAit6tGdrMVDAmbQ03yj+dgnLw5xVM16Lwm7u/bAJow/V/gaoHHn9ATUDShSI..."/>
</PaxBags>
</RelPax>
</RelPaxes>
</RelPaxDist>
</RelPaxesDist>
</TransportBookingRulesRequest>
</TransportBookingRulesRQ>
</TransportBookingRules>
</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 results available. |
./Results/TransportResult | N | - | Specific transport result. |
./TransportResult/@Status | N | String | Availability status. Possible values: • OK: Available |
./TransportResult/@Source | N | String | Product type code for the transport. Example values: • Amad: Amadeus • Chv2: CharterV2 • Sab2: SabreV2 • etc... |
./TransportResult/@Direction | N | String | Transport direction. Possible values: • Outbound: Outbound transports • Inbound: Inbound transports • Roundtrip: Roundtrip transports. Identifies travel from one point to another point and returns to the original point • MultiDestiny |
./TransportResult/@LowCost | N | Boolean | Identifies if it is a low cost fare. |
./TransportResult/BookingCode | Y | String | Booking Code. Parameter that you will need to send on the subsequent booking confirmation request. If there is no booking code available, it means there are mandatory data that needs to be selected. |
./BookingCode/ExpirationDate | N | String | Booking code expiry date. |
./TransportResult/{TransportRequiredFields} | N | - | List of fields that are mandatory for the completion of the reservation. The structure matches with a TransportBooking request. Any of the nodes and attributes that are listed within this structure will be mandatory to be sent during the booking confirmation process. If not sent the confirmation will fail. |
./TransportResult/{CancellationPolicy} | Y | - | Cancellation policies available for the result. |
./TransportResult/{AdditionalPolicies} | Y | - | Additional policies. |
./TransportResult/PriceInformation | N | - | Price related information. |
./PriceInformation/{Routes} | N | - | Routes included within the transport result. |
./PriceInformation/{Prices} | N | - | Price object related to the transport result. |
./PriceInformation/{AdditionalElements} | Y | - | Additional elements included on the transport result. |
./PriceInformation/{OptionalElements} | Y | - | Opional elements included on the transport result. |
./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>
<TransportBookingRulesResponse xmlns = "http://www.juniper.es/webservice/2007/">
<BookingRulesRS Url = "http://xml-uat.bookingengine.es" TimeStamp = "2025-07-28T15:56:01.1941403+02:00" IntCode = "yzscXIYsjANsHzv4dVDujlCRbn/u/ah3ssrG7WS2dco=">
<Results>
<TransportResult Status = "OK" Source = "UWSP" Direction = "Outbound" LowCost = "true">
<BookingCode ExpirationDate = "2025-07-28T16:06:01.1941403+02:00">wLa+Z9Sl0lOXLNSHXNW/Hsaqm9YEeX56Go39p32XDsIYbrIzytu7B2pEN9PnYTa3JNd7xBKeUU6PMsuZJrbdyr+...</BookingCode>
<TransportRequiredFields>
<TransportBooking>
<Paxes>
<Pax IdPax = "1">
<Document Type = "PAS">Pax Document Number</Document>
<PhoneNumbers>
<PhoneNumber>Pax Phone number</PhoneNumber>
</PhoneNumbers>
<Title>Pax Title</Title>
<Name>Holder Name</Name>
<Surname>Holder Surname</Surname>
<Age>30</Age>
<BornDate>1995-07-28</BornDate>
<Nationality>Pax Nationality</Nationality>
</Pax>
</Paxes>
<Holder>
<RelPax IdPax = "1"/>
</Holder>
<Elements>
<TransportElement>
<BookingCode>wLa+Z9Sl0lOXLNSHXNW/Hsaqm9YEeX56Go39p32XDsIYbrIzytu7B2pEN9PnYTa3JNd7xBKeUU6PMsuZJrbdyr+r20gm/eQPHigczYf2...</BookingCode>
<RelPaxesDist>
<RelPaxDist>
<RelPaxes>
<RelPax IdPax = "1"/>
</RelPaxes>
</RelPaxDist>
</RelPaxesDist>
</TransportElement>
</Elements>
</TransportBooking>
</TransportRequiredFields>
<CancellationPolicy CurrencyCode = "EUR" Type = "S">
<FirstDayCostCancellation Hour = "23:50">2025-07-29</FirstDayCostCancellation>
<Description>* Cancelling from 28/07/2025 at 00:00:00 up to 29/07/2025 at 23:50:00: 0 &euro; * Cancelling from 29/07/2025 at 23:50:00: 100.00 % of total amount</Description>
<PolicyRules>
<Rule DateFrom = "2025-07-28" DateFromHour = "00:00" DateTo = "2025-07-29" DateToHour = "23:50" Type = "R" FixedPrice = "0" PercentPrice = "0" Nights = "0" ApplicationTypeNights = "Average"/>
<Rule DateFrom = "2025-07-29" DateFromHour = "23:50" Type = "R" FixedPrice = "0" PercentPrice = "100" Nights = "0" ApplicationTypeNights = "Average"/>
</PolicyRules>
</CancellationPolicy>
<PriceInformation>
<Routes ValidatingCarrier = "UX">
<Route Origin = "40233" Destination = "37799">
<Segments>
<Segment Order = "1" DepartureAirport = "PMI" ArrivalAirport = "BCN" DepartureDate = "2025-11-08T20:20:00" ArrivalDate = "2025-11-08T21:10:00" OperatingAirline = "UX" MarquetingAirline = "UX" TransportNumber = "6102" JourneyDuration = "P0DT0H50M0S" GroundDuration = "P0DT0H50M0S" Class = "Z" Cabin = "Y" AirplaneType = "Boeing 737-800 Winglets" FareBasis = "ZDYO3L"/>
</Segments>
</Route>
</Routes>
<Prices>
<Price Type = "S" Currency = "EUR">
<TotalFixAmounts Gross = "22.85" Nett = "22.85">
<Service Amount = "15"/>
<ServiceTaxes Included = "false" Amount = "7.85"/>
</TotalFixAmounts>
</Price>
</Prices>
</PriceInformation>
<OptionalElements>
<Bags>
<Bag BaggageType = "holdBaggage" Quantity = "0" Size = "56,00x35,00x23,00" BagSelectionCode = "qf05GSAJJAve75PWTgjfobks0p8bUDXZ35ACowDpo/R1a00lJxl9mrXAZxkon1sGahjhllUtbdVpgRdz0cnHgxDPERw4XMxFaKP8DGuhGc8AswM0qziqWUSfFQOM5CT5NBvmVNLzvNU/pClGNlZICA==">
<RelPaxes>
<RelPax IdPax = "1" RatePlanCode = "wLa+Z9Sl0lOXLNSHXNW/Hsaqm9YEeX56Go39p32XDsIYbrIzytu7B2pEN9PnYTa3NMyPsr0Jua5yI+rmbSvcBekX6l+5NrlxcdmOwwbH9Hl0q1HsMM1elq1L0n..."/>
</RelPaxes>
<RelSegments>
<RelSegment>1</RelSegment>
</RelSegments>
<Price Type = "S" Currency = "EUR">
<TotalFixAmounts Recommended = "0" Gross = "52.85" Nett = "52.85">
<Service Amount = "45"/>
<ServiceTaxes Included = "false" Amount = "7.85"/>
</TotalFixAmounts>
</Price>
<Descriptions>
<Description>FIRST PREPAID BAG - FROM PIECE 1 TO PIECE 1</Description>
</Descriptions>
</Bag>
<Bag BaggageType = "holdBaggage" Quantity = "0" Size = "56,00x35,00x23,00" BagSelectionCode = "MX/Xj0kWs0amgRpD8BCecPFnDAvhGAjYxk5fMbARLhz35GPdQLG2v2lSS6Q8Spws8P2paLjoNEaSH6lfIXJl3h6acPL9IJk5lyl9FDxDgCQ=">
<RelPaxes>
<RelPax IdPax = "1" RatePlanCode = "wLa+Z9Sl0lOXLNSHXNW/Hsaqm9YEeX56Go39p32XDsIYbrIzytu7B2pEN9PnYTa3z1ymzgI48ajbgTt4FSw+KM6RqLeTRCCgOMW3otcUvr0ex12Ktsntg9g..."/>
</RelPaxes>
<RelSegments>
<RelSegment>1</RelSegment>
</RelSegments>
<Price Type = "S" Currency = "EUR">
<TotalFixAmounts Recommended = "0" Gross = "62.85" Nett = "62.85">
<Service Amount = "55"/>
<ServiceTaxes Included = "false" Amount = "7.85"/>
</TotalFixAmounts>
</Price>
<Descriptions>
<Description>PREPAID BAG</Description>
</Descriptions>
</Bag>
<Bag BaggageType = "holdBaggage" Quantity = "0" Size = "56,00x35,00x23,00" BagSelectionCode = "ngmTr64XlNVRR0+StN+dn2ROzCvAfQ0XU0APwntRo6NYdZ3z0FGiSDICzI6gPKZPe4J53c4pbWDWMIB9FMn1ZZ5oiU8REMdSd5jSRLwe2VYXlF/DB2DVsxUnCI6cXcspP06YUA88f208aF3Doie1xA==">
<RelPaxes>
<RelPax IdPax = "1" RatePlanCode = "wLa+Z9Sl0lOXLNSHXNW/Hsaqm9YEeX56Go39p32XDsIYbrIzytu7B2pEN9PnYTa3NMyPsr0Jua5yI+rmbSvcBekX6l+5NrlxcdmOwwbH9Hl0q1HsMM1elq1..."/>
</RelPaxes>
<RelSegments>
<RelSegment>1</RelSegment>
</RelSegments>
<Price Type = "S" Currency = "EUR">
<TotalFixAmounts Recommended = "0" Gross = "52.85" Nett = "52.85">
<Service Amount = "45"/>
<ServiceTaxes Included = "false" Amount = "7.85"/>
</TotalFixAmounts>
</Price>
<Descriptions>
<Description>PREPAID BAG - FROM PIECE 1 TO PIECE 1</Description>
</Descriptions>
</Bag>
<Bag BaggageType = "holdBaggage" Quantity = "0" Size = "56,00x35,00x23,00" BagSelectionCode = "N2CBlHYLps3fulHdgdeG713ZSDcj8a8IKpLpZrQGUmcSt5C2GUXD+rBlWFyvEogr/MVcONHrAJUhUWnBgvloczdlcuNXjDZRaE5YShCSBmZeqySMpF+h1/ztv5rOCXpg3LBzERhd8u67sLc9Wk9LRg==">
<RelPaxes>
<RelPax IdPax = "1" RatePlanCode = "wLa+Z9Sl0lOXLNSHXNW/Hsaqm9YEeX56Go39p32XDsIYbrIzytu7B2pEN9PnYTa3z1ymzgI48ajbgTt4FSw+KM6RqLeTRCCgOMW3otcUvr0ex12Ktsntg9gR..."/>
</RelPaxes>
<RelSegments>
<RelSegment>1</RelSegment>
</RelSegments>
<Price Type = "S" Currency = "EUR">
<TotalFixAmounts Recommended = "0" Gross = "62.85" Nett = "62.85">
<Service Amount = "55"/>
<ServiceTaxes Included = "false" Amount = "7.85"/>
</TotalFixAmounts>
</Price>
<Descriptions>
<Description>PREPAID BAG - FROM PIECE 2 TO PIECE 2</Description>
</Descriptions>
</Bag>
</Bags>
</OptionalElements>
</TransportResult>
</Results>
</BookingRulesRS>
</TransportBookingRulesResponse>
</soap:Body>
</soap:Envelope>
This method is used in order to confirm a reservation, after having already completed the previous booking flow steps (TransportAvail and TransportBookingRules), and providing all of the information that has been required on the previous booking rules 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. |
@TimeStamp | Y | DateTime | This is an optional field that allows for you to send your own booking confirmation time stamp, usefull for proper booking response calculations. Format: yyyy-MM-ddThh:mm:ss (UTC), |
{Login} | N | - | Customer login to access the Web Service |
{Paxes} | N | - | Passenger information. Array of passengers. Fields necessary for this object: • @IdPax (required) • Age (required for children) |
Holder | N | - | Holder container. |
./Holder/RelPax | N | - | RelPax node. |
./RelPax/@IdPax | N | Integer | ID of the passenger (listed within the Paxes node) that will represent the holder of the reservation. |
ReservationLocator | Y | String | You may indicate an existing booking code to add a new line to an already existing reservation. Remarcable points: • If no data of the main pax is sent, current data of the booking holder will be taken. • If some data of the main pax is sent, name and surname should match to the current booking holder. The rest of the info will be updated. |
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. |
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 TransportElement comments found below). |
./Comments/Comment | N | String | Comment text. |
./Comment/@Type | Y | String | Comment type. Possible values: • RES: General booking comments • INT: Internal booking comments. Kindly note that these comments are restricted, contact with Juniper for more information. |
Elements | N | - | Elements container. |
./Elements/TransportElement | N | - | Transport element. |
./TransportElement/BookingCode | N | String | BookingCode is the code that is used to identify the result. You must get it from the previous booking rules response. |
./TransportElement/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 |
./TransportElement/Comments | Y | - | Transport element comments. It's important to note that, although we will not be able to ensure this (as not all product types 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 |
./TransportElement/CreditCard | Y | - | Credit card information. NOT IMPLEMENTED |
./CreditCard/@CardCode | N | String | Credit card code. It is important to understand that this is a sample of credit card codes, and that the actual list of supported card type codes will always depend on your supplier reason for which, if you are interested on performing these kind of payments, it will be necessary for you to clarify the list of supported card type codes directly with your supplier. Possible values: • AX: American Express • CA: Cabal • DC: Diners Club Card • DS: Discover Card • ER: enRoute Card • IT: ItalCred • JC: JCB Card • MA: Maestro • MC: MasterCard • NR: Naranja • NT: Nativa • VE: Visa Electron • VI: Visa • OT: Others Setting a non supported card code will result in a JP_BOOK_INVALIDCREDITCARDCODE error response. |
./CreditCard/@CvC | N | String | Credit card series/security/validation code. |
./CreditCard/@CardNumber | N | String | Credit card number. |
./CreditCard/@ExpireDate | N | String | Credit card expiration date with format “mm/yy”. Ex: “06/16” (June 2016) |
./CreditCard/Name | N | String | Credit card holder name. |
./CreditCard/Surname | N | String | Credit card holder surname. |
./CreditCard/Email | Y | String | Credit card holder email. |
./TransportElement/TransportBookingInfo | N | - | Element basic information. It is necessary to validate the request. |
./TransportBookingInfo/Price | N | - | Price to which the element will be booked. You may obtain it from the transaction TransportBookingRules. |
./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 TransportBookingRules and the TransportBooking steps. By default, the TransportBookingRules response supplies you with a -/+ 5% rule of the original price of the booking (a minimum of the 95% of the price of the booking and a maximum of the 105% of the price of the booking) but 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 TransportBookingRules response. |
./TransportBookingInfo/Status | Y | String | If specified, it can have the values OK or RQ. If it is specified, the booking will only be confirmed if its status is the same as the requested. For example, if you use Status=OK and the reservation changes to “on request” (because some booked the last room before you), the booking will fail. In this way you can prevent undesired on request bookings. If not specified, no status validation will be performed. |
AvancedOptions | Y | - | Advaced options that you may apply to your request. |
./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. |
./AdvancedOptions/SendMailTo | Y | String | If included with the ALL value a booking confirmation email will be sent to your email account. |
./AdvancedOptions/ShowBreakdownPrice | Y | Boolean | If the value is True, it will show the full price object with all the information about the prices. If not specified, False is assumed by default. |
./AdvancedOptions/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>
<TransportBooking>
<TransportBookingRQ Version = "1.1" Language = "en">
<Login Email = "username" Password = "password"/>
<Paxes>
<Pax IdPax = "1">
<Document Type = "PAS">41758243B</Document>
<PhoneNumbers>
<PhoneNumber>600661662</PhoneNumber>
</PhoneNumbers>
<Title>Mr</Title>
<Name>Name</Name>
<Surname>Surname</Surname>
<Age>30</Age>
<BornDate>1995-07-28</BornDate>
<Nationality>ES</Nationality>
</Pax>
</Paxes>
<Holder>
<RelPax IdPax = "1"/>
</Holder>
<Elements>
<TransportElement>
<BookingCode>wLa+Z9Sl0lOXLNSHXNW/Hsaqm9YEeX56Go39p32XDsIYbrIzytu7B2pEN9PnYTa3JNd7xBKeUU6PMsuZJrbdyr+r20gm/...</BookingCode>
<RelPaxesDist>
<RelPaxDist>
<RelPaxes>
<RelPax IdPax = "1"/>
</RelPaxes>
</RelPaxDist>
</RelPaxesDist>
<TransportBookingInfo>
<Price>
<PriceRange Minimum = "5.71" Maximum = "22.85" Currency = "EUR"/>
</Price>
</TransportBookingInfo>
</TransportElement>
</Elements>
</TransportBookingRQ>
</TransportBooking>
</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 reference (aka, 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 | Y | String | Language under which the booking was confirmed. |
./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/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 | - | Passenger. |
./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 items (booking lines) available within the reservation. |
./Items/FlightItem | N | - | Flight booking line. |
./FlightItem/@ItemId | N | String | Item identifier |
./FlightItem/@Status | N | String | Item status. Possible values are: • OK or AV: Available • RQ_ On request • CA: Cancelled |
./FlightItem/@Ticketing | Y | Boolean | If it is true, it means that a ticket has been issued. |
./FlightItem/@Direction | Y | String | Flight direction. Possible values: • Outbound: Outbound transports • Inbound: Inbound transports • Roundtrip: Roundtrip transports. Identifies travel from one point to another point and returns to the original point • MultiDestiny |
./FlightItem/ExternalInfo | Y | - | External information. Restricted information by default. |
./ExternalInfo/ExternalLocator | Y | String | External supplier reference. |
./FlightItem/{Prices} | N | - | Price object related to the reservation. |
./FlightItem/{CancellationPolicy} | N | - | Cancellation policy. |
./FlightItem/Comments | Y | - | List of booking line comments. |
./Comments/Comment | N | String | Comment text. |
./Comment/@Type | N | String | Comment type. Possible values: • ELE: Booking element comments. Note that it is important to set the proper @Type or the comment won't be properly saved. |
./FlightItem/{Routes} | N | - | Routes included in the reservation. |
./FlightItem/{AdditionalElements} | Y | - | Additional elements included on the combination. NOT IMPLEMENTED |
./FlightItem/RelPaxes | N | - | List of passengers included within the item. |
./RelPaxes/RelPax | N | - | Specific passenger. |
./RelPax/@IdPax | N | Integer | ID of the passenger, related to the Paxes node. |
./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 related 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>
<TransportBookingResponse xmlns = "http://www.juniper.es/webservice/2007/">
<BookingRS Url = "http://xml-uat.bookingengine.es" TimeStamp = "2025-07-28T16:17:54.9256404+02:00" IntCode = "vKPLzQ3bE8wxgj2+gOaVTs4W+xOBot+jnPs6NaTizLc=">
<Reservations>
<Reservation Locator = "Q9432Q" Status = "PAG" Language = "en">
<Holder>
<RelPax IdPax = "2"/>
</Holder>
<Paxes>
<Pax IdPax = "1">
<Document Type = "PAS">41758243B</Document>
<PhoneNumbers>
<PhoneNumber>600661662</PhoneNumber>
</PhoneNumbers>
<Title>Mr</Title>
<Name>Name</Name>
<Surname>Surname</Surname>
<Age>30</Age>
<BornDate>1995-07-28</BornDate>
<Nationality>ES</Nationality>
</Pax>
<Pax IdPax = "2">
<Document Type = "PAS">41758243B</Document>
<PhoneNumbers>
<PhoneNumber Type = "TFN">600661662</PhoneNumber>
</PhoneNumbers>
<Title>Mr</Title>
<Name>Name</Name>
<Surname>Surname</Surname>
<BornDate>1995-07-28</BornDate>
<Nationality>ES</Nationality>
</Pax>
</Paxes>
<AgenciesData>
<AgencyData>
<ReferencedAgency>false</ReferencedAgency>
<AgencyCode>494</AgencyCode>
<AgencyName>Test XML DCS Fast Link</AgencyName>
<AgencyHandledBy>XML Agent</AgencyHandledBy>
<AgencyEmail>driana.parvu@dcsplus.net</AgencyEmail>
</AgencyData>
<AgencyData>
<ReferencedAgency>true</ReferencedAgency>
<AgencyCode>0</AgencyCode>
</AgencyData>
</AgenciesData>
<Items>
<FlightItem ItemId = "608125" Status = "OK">
<Prices>
<Price Type = "S" Currency = "EUR">
<TotalFixAmounts Gross = "22.85" Nett = "22.85">
<Service Amount = "15"/>
<ServiceTaxes Included = "false" Amount = "7.85"/>
</TotalFixAmounts>
</Price>
</Prices>
<CancellationPolicy CurrencyCode = "EUR" Type = "S">
<FirstDayCostCancellation Hour = "23:50">2025-07-29</FirstDayCostCancellation>
<Description>* Cancelling from 28/07/2025 at 00:00:00 up to 29/07/2025 at 23:50:00: 0 &euro; * Cancelling from 29/07/2025 at 23:50:00: 100.00 % of total amount</Description>
<PolicyRules>
<Rule DateFrom = "2025-07-28" DateFromHour = "00:00" DateTo = "2025-07-29" DateToHour = "23:50" Type = "R" FixedPrice = "0" PercentPrice = "0" Nights = "0" ApplicationTypeNights = "Average"/>
<Rule DateFrom = "2025-07-29" DateFromHour = "23:50" Type = "R" FixedPrice = "0" PercentPrice = "100" Nights = "0" ApplicationTypeNights = "Average"/>
</PolicyRules>
</CancellationPolicy>
<Routes ValidatingCarrier = "UX">
<Route Origin = "40233" Destination = "37799">
<Segments>
<Segment Order = "1" DepartureAirport = "PMI" ArrivalAirport = "BCN" DepartureDate = "2025-11-08T20:20:00" ArrivalDate = "2025-11-08T21:10:00" OperatingAirline = "UX" MarquetingAirline = "UX" FlightNumber = "6102" JourneyDuration = "P0DT0H50M0S" GroundDuration = "P0DT0H50M0S" Class = "Z" Cabin = "Y" AirplaneType = "Boeing 737-800 Winglets" FareBasis = "ZDYO3L">
<TechnicalStops/>
</Segment>
</Segments>
</Route>
</Routes>
<AdditionalElements/>
<RelPaxes>
<RelPax IdPax = "1"/>
</RelPaxes>
</FlightItem>
</Items>
<Payment Type = "C"/>
</Reservation>
</Reservations>
</BookingRS>
</TransportBookingResponse>
</soap:Body>
</soap:Envelope>
This method is used in order to issue a transport reservation, whenever available for the product type in question.
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 |
Reservations | N | - | List of reservations. |
./Reservations/Reservation | N | - | Reservation to which the ticket has to be issued. |
./Reservation/ReservationLocator | N | String | Reservation locator. |
./Reservation/Commission | N | - | Commission to apply to the reservation price. |
./Commission/@Type | N | String | Commission type. Possible values: • Fixed: The commission will be the exact amount specified • Percent: A percentatge applied to the reservation price |
./Commission/@Amount | N | Integer | Price amount or percent of the commission. Must be higher than 0. |
./Commission/@Currency | Y | String | Currency in which the commission has to be charged. It is only needed if the commission type is Fixed. |
<soapenv:Envelope xmlns:soapenv = "http://schemas.xmlsoap.org/soap/envelope/" xmlns = "http://www.juniper.es/webservice/2007/">
<soapenv:Header/>
<soapenv:Body>
<TransportTicketing>
<TransportTicketingRQ Version = "1.1" Language = "en">
<Login Email = "username" Password = "password"/>
<Reservations>
<Reservation>
<ReservationLocator>Q9432Q</ReservationLocator>
<Commission Type = "Fixed" Amount = "10" Currency = "USD"/>
</Reservation>
</Reservations>
</TransportTicketingRQ>
</TransportTicketing>
</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/Transport | N | - | Transport item. |
./Transport/@Locator | Y | - | External transport locator. If the status is not OK, the locator will be empty. |
./Transport/Status | N | String | Status of the ticketing: • OK: Ticket is issued. • Provided error: External error. • Currency required: The currency is not specified and a fixed commission is used. • Already emitted: The reservation's transport tickets have already been issued. |
./Transport/{Paxes} | Y | - | List of passengers with the following attributes: • Name • Surname • Ticket Number The list of passengers will only be present if the Status is OK. |
<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>
<TransportTicketingResponse xmlns = "http://www.juniper.es/webservice/2007/">
<TransportTicketingRS>
<Reservations>
<Reservation>
<Transport Locator = "608125">
<Status>OK</Status>
<Paxes>
<Pax IdPax = "1">
<Name>Name</Name>
<Surname>Surname</Surname>
</Pax>
</Paxes>
</Transport>
</Reservation>
</Reservations>
</TransportTicketingRS>
</TransportTicketingResponse>
</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 (@Locator).
The returned information is the same as in the TransportBooking response. Please refer to the TransportBooking 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 | - | Read request container. |
./ReadRequest/@ReservationLocator | N | String | Booking code (@Locator). |
AvancedOptions | Y | - | Advaced options that you may apply to your request. |
./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 = "username" Password = "password"/>
<ReadRequest ReservationLocator = "Q9432Q"/>
</ReadRQ>
</ReadBooking>
</soapenv:Body>
</soapenv:Envelope>
It returns the same information as the response of TransportBooking. Kindly refer to the TransportBooking 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 = "2025-07-28T17:08:51.3525845+02:00" IntCode = "+BnisuIsUUCoJhqne6IR35SG0dBkB4NYVxDpLrl1FyA=">
<Reservations>
<Reservation Locator = "Q9432Q" Status = "PAG" Language = "en">
<Holder>
<RelPax IdPax = "2"/>
</Holder>
<Paxes>
<Pax IdPax = "1">
<Document Type = "PAS">41758243B</Document>
<PhoneNumbers>
<PhoneNumber>600661662</PhoneNumber>
</PhoneNumbers>
<Title>Mr</Title>
<Name>Name</Name>
<Surname>Surname</Surname>
<Age>30</Age>
<BornDate>1995-07-28</BornDate>
<Nationality>ES</Nationality>
</Pax>
<Pax IdPax = "2">
<Document Type = "PAS">41758243B</Document>
<PhoneNumbers>
<PhoneNumber Type = "TFN">600661662</PhoneNumber>
</PhoneNumbers>
<Title>Mr</Title>
<Name>Name</Name>
<Surname>Surname</Surname>
<BornDate>1995-07-28</BornDate>
<Nationality>ES</Nationality>
</Pax>
</Paxes>
<AgenciesData>
<AgencyData>
<ReferencedAgency>false</ReferencedAgency>
<AgencyCode>494</AgencyCode>
<AgencyName>Test XML DCS Fast Link</AgencyName>
<AgencyHandledBy>XML Agent</AgencyHandledBy>
<AgencyEmail>driana.parvu@dcsplus.net</AgencyEmail>
</AgencyData>
<AgencyData>
<ReferencedAgency>true</ReferencedAgency>
<AgencyCode>0</AgencyCode>
</AgencyData>
</AgenciesData>
<Items>
<FlightItem ItemId = "608125" Status = "OK">
<Prices>
<Price Type = "S" Currency = "EUR">
<TotalFixAmounts Gross = "22.85" Nett = "22.85">
<Service Amount = "15"/>
<ServiceTaxes Included = "false" Amount = "7.85"/>
</TotalFixAmounts>
</Price>
</Prices>
<CancellationPolicy CurrencyCode = "EUR" Type = "S">
<FirstDayCostCancellation Hour = "23:50">2025-07-29</FirstDayCostCancellation>
<Description>* Cancelling from 28/07/2025 at 00:00:00 up to 29/07/2025 at 23:50:00: 0 &euro; * Cancelling from 29/07/2025 at 23:50:00: 100.00 % of total amount</Description>
<PolicyRules>
<Rule DateFrom = "2025-07-28" DateFromHour = "00:00" DateTo = "2025-07-29" DateToHour = "23:50" Type = "R" FixedPrice = "0" PercentPrice = "0" Nights = "0" ApplicationTypeNights = "Average"/>
<Rule DateFrom = "2025-07-29" DateFromHour = "23:50" Type = "R" FixedPrice = "0" PercentPrice = "100" Nights = "0" ApplicationTypeNights = "Average"/>
</PolicyRules>
</CancellationPolicy>
<Routes ValidatingCarrier = "UX">
<Route Origin = "40233" Destination = "37799">
<Segments>
<Segment Order = "1" DepartureAirport = "PMI" ArrivalAirport = "BCN" DepartureDate = "2025-11-08T20:20:00" ArrivalDate = "2025-11-08T21:10:00" OperatingAirline = "UX" MarquetingAirline = "UX" FlightNumber = "6102" JourneyDuration = "P0DT0H50M0S" GroundDuration = "P0DT0H50M0S" Class = "Z" Cabin = "Y" AirplaneType = "Boeing 737-800 Winglets" FareBasis = "ZDYO3L">
<TechnicalStops/>
</Segment>
</Segments>
</Route>
</Routes>
<AdditionalElements/>
<RelPaxes>
<RelPax IdPax = "1"/>
</RelPaxes>
</FlightItem>
</Items>
<Payment Type = "C"/>
</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 | Booking line (service item) identifier. If it is the only/latest available item of a booking, canceling the locator as a whole will be necessary. |
./CancelRequest/@OnlyCancellationFees | Y | Boolean | Allows for the retrieval of the available cancellation costs of the booking. If included, the booking will not be cancelled. |
AvancedOptions | Y | - | Advaced options that you may apply to your request. |
./AdvancedOptions/SendMailTo | Y | String | If included with the ALL value, a booking confirmation email will be sent to your email account. |
./AdvancedOptions/ShowBreakdownPrice | Y | Boolean | If the value is true, it will show the full price object with all the information about the prices. If not specified, false is assumed by default. |
./AdvancedOptions/ShowCancelBreakdown | Y | Boolean | If the value is true and if the information is available, it will include the cancellation cost breakdown. |
Booking locator cancellation
<soapenv:Envelope xmlns:soapenv = "http://schemas.xmlsoap.org/soap/envelope/" xmlns = "http://www.juniper.es/webservice/2007/">
<soapenv:Header/>
<soapenv:Body>
<CancelBooking>
<CancelRQ Version = "1.1" Language = "en">
<Login Email = "username" Password = "password"/>
<CancelRequest ReservationLocator = "Q9432Q"/>
</CancelRQ>
</CancelBooking>
</soapenv:Body>
</soapenv:Envelope>
Retrieval of cancellation costs
<soapenv:Envelope xmlns:soapenv = "http://schemas.xmlsoap.org/soap/envelope/" xmlns = "http://www.juniper.es/webservice/2007/">
<soapenv:Header/>
<soapenv:Body>
<CancelBooking>
<CancelRQ Version = "1.1" Language = "en">
<Login Email = "username" Password = "password"/>
<CancelRequest ReservationLocator = "Q9432Q" OnlyCancellationFees = "true"/>
</CancelRQ>
</CancelBooking>
</soapenv:Body>
</soapenv:Envelope>
Aside from the CancelInfo object (which we detail below), if the cancellation request is successful, this response will return the same structure that the response of the TransportBooking request has. Kindly refer to the TransportBooking request for the specifications of the nodes and properties from this transaction.
In addition to this, it is very important to focus on the warnings from the response of this transaction, as they will tell you if the cancellation cost could or could not be retrieved and if the reservation was or was not canceled, as in the below list of examples:
Important
In the event of canceling the reservation but getting a response on which the cancellation cost could not be calculated (warnCancelledAndCancellationNotCalculated), it is important to never assume that this reservation will not involve any costs and contacting with your Juniper supplier will be necessary.
Object that details the cancellation costs of a reservations, if any. We may refer to this object as: {CancelInfo}
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
BookingCodeState | Y | String | Status on which the booking has been left. Refer to the booking confirmation response, for a list of all of the possible statuses. |
BookingCancelCost | Y | Double | Cancellation cost of the reservation. |
BookingCancelCostCurrency | Y | String | Cancellation cost currency of the reservation. |
BreakDown | Y | - | Cancellation cost breakdown of the reservation. Refer to the breakdown node from the {Prices} object, for further information on its specification. |
Actual booking cancellation
<soap:Envelope xmlns:soap = "http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd = "http://www.w3.org/2001/XMLSchema">
<soap:Body>
<CancelBookingResponse xmlns = "http://www.juniper.es/webservice/2007/">
<BookingRS Url = "http://xml-uat.bookingengine.es" TimeStamp = "2025-07-28T17:14:50.7458758+02:00" IntCode = "bdes5zr8pyjI6vC1qquP2A2Ev17ENsEL+bFKmow7OMs=">
<Warnings>
<Warning Code = "warnCancelledAndCancellationCostRetrieved" Text = "Cancellation cost retrieved. Reservation was cancelled."/>
<CancelInfo>
<BookingCodeState>CaC</BookingCodeState>
<BookingCancelCost>0</BookingCancelCost>
<BookingCancelCostCurrency>EUR</BookingCancelCostCurrency>
</CancelInfo>
</Warnings>
<Reservations>
<Reservation Locator = "Q9432Q" Status = "CAC" Language = "en">
<Holder>
<RelPax IdPax = "2"/>
</Holder>
<Paxes>
<Pax IdPax = "1">
<Document Type = "PAS">41758243B</Document>
<PhoneNumbers>
<PhoneNumber>600661662</PhoneNumber>
</PhoneNumbers>
<Title>Mr</Title>
<Name>Name</Name>
<Surname>Surname</Surname>
<Age>30</Age>
<BornDate>1995-07-28</BornDate>
<Nationality>ES</Nationality>
</Pax>
<Pax IdPax = "2">
<Document Type = "PAS">41758243B</Document>
<PhoneNumbers>
<PhoneNumber Type = "TFN">600661662</PhoneNumber>
</PhoneNumbers>
<Title>Mr</Title>
<Name>Name</Name>
<Surname>Surname</Surname>
<BornDate>1995-07-28</BornDate>
<Nationality>ES</Nationality>
</Pax>
</Paxes>
<AgenciesData>
<AgencyData>
<ReferencedAgency>false</ReferencedAgency>
<AgencyCode>494</AgencyCode>
<AgencyName>Test XML DCS Fast Link</AgencyName>
<AgencyHandledBy>XML Agent</AgencyHandledBy>
<AgencyEmail>driana.parvu@dcsplus.net</AgencyEmail>
</AgencyData>
<AgencyData>
<ReferencedAgency>true</ReferencedAgency>
<AgencyCode>0</AgencyCode>
</AgencyData>
</AgenciesData>
<Items>
<FlightItem ItemId = "608125" Status = "CA">
<Prices>
<Price Type = "S" Currency = "EUR">
<TotalFixAmounts Gross = "22.85" Nett = "22.85">
<Service Amount = "15"/>
<ServiceTaxes Included = "false" Amount = "7.85"/>
</TotalFixAmounts>
<Cancellation Amount = "0"/>
<Breakdown>
<Concepts>
<Concept Type = "BAS" Name = "Base Coste">
<Items>
<Item Amount = "15" Quantity = "1" Days = "1" PaxType = "ADT" TtaCode = "200"/>
</Items>
</Concept>
<Concept Type = "SUP" Name = "Suplemento maleta">
<Items>
<Item Amount = "0" Quantity = "1" Days = "1" TtaCode = "666"/>
</Items>
</Concept>
</Concepts>
<Taxes>
<Tax Name = "Tasas Others" Value = "7.8500000000000014" IsFix = "true" ByNight = "false" Commissionable = "false" Included = "false">
<TtaCodes>
<TtaCode>200</TtaCode>
</TtaCodes>
<Total Base = "0" Amount = "7.85"/>
</Tax>
</Taxes>
</Breakdown>
</Price>
</Prices>
<CancellationPolicy CurrencyCode = "EUR" Type = "S">
<FirstDayCostCancellation Hour = "23:50">2025-07-29</FirstDayCostCancellation>
<Description>* Cancelling from 28/07/2025 at 00:00:00 up to 29/07/2025 at 23:50:00: 0 &euro; * Cancelling from 29/07/2025 at 23:50:00: 100.00 % of total amount</Description>
<PolicyRules>
<Rule DateFrom = "2025-07-28" DateFromHour = "00:00" DateTo = "2025-07-29" DateToHour = "23:50" Type = "R" FixedPrice = "0" PercentPrice = "0" Nights = "0" ApplicationTypeNights = "Average"/>
<Rule DateFrom = "2025-07-29" DateFromHour = "23:50" Type = "R" FixedPrice = "0" PercentPrice = "100" Nights = "0" ApplicationTypeNights = "Average"/>
</PolicyRules>
</CancellationPolicy>
<Routes ValidatingCarrier = "UX">
<Route Origin = "40233" Destination = "37799">
<Segments>
<Segment Order = "1" DepartureAirport = "PMI" ArrivalAirport = "BCN" DepartureDate = "2025-11-08T20:20:00" ArrivalDate = "2025-11-08T21:10:00" OperatingAirline = "UX" MarquetingAirline = "UX" FlightNumber = "6102" JourneyDuration = "P0DT0H50M0S" GroundDuration = "P0DT0H50M0S" Class = "Z" Cabin = "Y" AirplaneType = "Boeing 737-800 Winglets" FareBasis = "ZDYO3L">
<TechnicalStops/>
</Segment>
</Segments>
</Route>
</Routes>
<AdditionalElements/>
<RelPaxes>
<RelPax IdPax = "1"/>
</RelPaxes>
</FlightItem>
</Items>
<Payment Type = "C"/>
</Reservation>
</Reservations>
</BookingRS>
</CancelBookingResponse>
</soap:Body>
</soap:Envelope>
Cancellation cost retrieval
<soap:Envelope xmlns:soap = "http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd = "http://www.w3.org/2001/XMLSchema">
<soap:Body>
<CancelBookingResponse xmlns = "http://www.juniper.es/webservice/2007/">
<BookingRS Url = "http://xml-uat.bookingengine.es" TimeStamp = "2025-07-28T17:13:28.7921085+02:00" IntCode = "LhqgFqezEtvRhnjRHSYRRXjJ7cKpgl0+VfIt7PJc45Q=">
<Warnings>
<Warning Code = "warnCancellationCostRetrieved" Text = "Cancellation cost retrieved. Reservation was not cancelled."/>
<CancelInfo>
<BookingCodeState>Pag</BookingCodeState>
<BookingCancelCost>0</BookingCancelCost>
<BookingCancelCostCurrency>EUR</BookingCancelCostCurrency>
<BreakDown>
<Concepts>
<Concept Name = "PMI-BCN (08/11/2025 - 08/11/2025)">
<Items>
<Item Amount = "0"/>
</Items>
</Concept>
</Concepts>
</BreakDown>
</CancelInfo>
</Warnings>
</BookingRS>
</CancelBookingResponse>
</soap:Body>
</soap:Envelope>
In this section, you will be able to find a compendium of all of the tests that you will be expected to perform and data that you will be expected to provide us with for the completion of the certification process.
Process that you will be expected to undergo after you have already completed the implementation of your integration, and before connecting to a production environment for the first time.
Keep in mind that, afterwards, you will be expected to recertify your integration when connecting to new production environments at least once a year (this recertification will be much lighter and will focus on you having implemented the key features that would be necessary in order to ensure the well-being of the integration).
Last of all, once you successfully completed this process, you would be granted access to the production environment (connection on which you would need to ensure that you had already registered all of your production IPs on your corresponding buyer account from the buyer platform, as otherwise you will not be able to connect to the same).
After completing the development of your integration and prior to connecting to the live environment, we will require you to comply with our best practices and to perform a series of tests meant for us to validate that the integration has been properly implemented.
Prior to performing any tests, you will be first expected to clarify directly with your supplier which will be the module types that you will be buying from their production environment (Ferry, Flight and/or Train), as we will be expecting for you to perform the test scenarios for each of these products (if you would only be buying ferries from them, then only a ferry test scenario, while if you would be buying all three product types from them, test scenarios for each of these products).
Having clarified this, in order to complete the certification process, we will request you to refer to each and everyone of the below sections:
In order to ensure that you are taking into account each of the requirements and best practices described and to supply us with any of the logs and information that we might require you for on each of them. This will be very important in order to complete the certification process.
Here we will describe a brief booking flow example, outlining the key parameters that you should take into account for a proper implementation and for the certification:
First, the structure of the availability request must be correctly formed, and none of the mandatory fields must be missed. Amongst other, we will check the following nodes:
<soap:Envelope xmlns:soap = "http://www.w3.org/2003/05/soap-envelope" xmlns = "http://www.juniper.es/webservice/2007/">
<soap:Header/>
<soap:Body>
<TransportAvail>
<TransportAvailRQ Version = "1.1" Language = "en">
<Login Email = "username" Password = "password"/>
<Paxes>
<Pax IdPax = "1">
<Age>30</Age>
</Pax>
</Paxes>
<TransportRequest>
<SearchSegmentsTransport>
<SearchSegmentTransport>
<CountryOfResidence>ES</CountryOfResidence>
<Routes>
<Route OriginIATA = "PMI" DestinationIATA = "BCN" Date = "2026-11-08"/>
</Routes>
</SearchSegmentTransport>
</SearchSegmentsTransport>
<RelPaxesDist>
<RelPaxDist>
<RelPaxes>
<RelPax IdPax = "1"/>
</RelPaxes>
</RelPaxDist>
</RelPaxesDist>
</TransportRequest>
<AdvancedOptions>
<ShowBreakdownPrice>false</ShowBreakdownPrice>
</AdvancedOptions>
<ModuleTypes>
<ModuleType>Flight</ModuleType>
</ModuleTypes>
</TransportAvailRQ>
</TransportAvail>
</soap:Body>
</soap:Envelope>
It will also be mandatory for your availability request to accept for compressed responses from the host, so that the amount of transmitted data and transfer times is highly reduced. If you do not allow for the same, the response will contain an error and the booking process won’t go forward.
<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>
<TransportAvailResponse xmlns = "http://www.juniper.es/webservice/2007/">
<AvailabilityRS Url = "http://xml-uat.bookingengine.es" TimeStamp = "2025-07-28T17:34:12.9963895+02:00" IntCode = "4bldmfqcWyMuLUtYvywcaOUbGjAOwsSXy57IUFUy8FuaVq2lDbX8PKuyWkNMooDJ">
<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>
</TransportAvailResponse>
</soap:Body>
</soap:Envelope>
If the request is valid, you will receive a response containing all the possible results for the requested criteria. Each result will be returned under a RatePlanCode. This code should be used in the next transaction of the booking flow: TransportBookingRules. Please be aware that the use of this code is other important point in the certification process.
Next step is the TransportBookingRules request. This is a mandatory step for the booking process as, besides from returning important information for the booking (e.g. cancellation policies), it validates the allotment and price. Some suppliers use dynamic assignation, so it is not up to this point when allotment and prices are confirmed in live.
This transaction needs only a few parameters: your credentials and the RatePlanCode from the previous availability response.
<soapenv:Envelope xmlns:soapenv = "http://schemas.xmlsoap.org/soap/envelope/" xmlns = "http://www.juniper.es/webservice/2007/">
<soapenv:Header/>
<soapenv:Body>
<TransportBookingRules>
<TransportBookingRulesRQ Version = "1.1" Language = "en">
<Login Email = "username" Password = "password"/>
<TransportBookingRulesRequest>
<TransportOption RatePlanCode = "wLa+Z9Sl0lOXLNSHXNW/Hsaqm9YEeX56Go39p32XDsIYbrIzytu7B2pEN9PnYTa3UCpN+busApoMp90gC1zi0eqtL9pDgYZ/GReZeDd33sxQczt2NA6s8yRrKmjGxb1RcI..."/>
</TransportBookingRulesRequest>
</TransportBookingRulesRQ>
</TransportBookingRules>
</soapenv:Body>
</soapenv:Envelope>
The response will contain:
<BookingCode ExpirationDate="2025-07-28T16:26:55.155842+02:00">wLa+Z9Sl0lOXLNSHXNW/Hsaqm9YEeX56Go39p32XDsIYbrIzytu7B2pEN9PnYTa3JNd7xBKe...</BookingCode>
It is very important to note that this code has an expiration time of 10 minutes and that, if expired, you will need to send an additional TransportBookingRules request in order to retrieve an updated one.
*Cancellation policies: List of available cancellation policy rules. If unavailable, it will be recommeded to assume that the booking is non-refundable.
<CancellationPolicy CurrencyCode = "EUR" Type = "S">
<FirstDayCostCancellation Hour = "23:50">2025-07-29</FirstDayCostCancellation>
<Description>* Cancelling from 28/07/2025 at 00:00:00 up to 29/07/2025 at 23:50:00: 0 &euro; * Cancelling from 29/07/2025 at 23:50:00: 100.00 % of total amount</Description>
<PolicyRules>
<Rule DateFrom = "2025-07-28" DateFromHour = "00:00" DateTo = "2025-07-29" DateToHour = "23:50" Type = "R" FixedPrice = "0" PercentPrice = "0" Nights = "0" ApplicationTypeNights = "Average"/>
<Rule DateFrom = "2025-07-29" DateFromHour = "23:50" Type = "R" FixedPrice = "0" PercentPrice = "100" Nights = "0" ApplicationTypeNights = "Average"/>
</PolicyRules>
</CancellationPolicy>
*Required fields: List of mandatory fields that will need to be included on the booking confirmation request in order to succesfully confirm the booking. It is very important to always fulfill the same (only when required) as otherwise the booking confirmation process will fail.
<TransportRequiredFields>
<TransportBooking>
<Paxes>
<Pax IdPax = "1">
<Document Type = "PAS">Pax Document Number</Document>
<PhoneNumbers>
<PhoneNumber>Pax Phone number</PhoneNumber>
</PhoneNumbers>
<Title>Pax Title</Title>
<Name>Holder Name</Name>
<Surname>Holder Surname</Surname>
<Age>30</Age>
<BornDate>1995-07-28</BornDate>
<Nationality>Pax Nationality</Nationality>
</Pax>
</Paxes>
<Holder>
<RelPax IdPax = "1"/>
</Holder>
<Elements>
<TransportElement>
<BookingCode>BOOKINGCODE...</BookingCode>
<RelPaxesDist>
<RelPaxDist>
<RelPaxes>
<RelPax IdPax = "1"/>
</RelPaxes>
</RelPaxDist>
</RelPaxesDist>
</TransportElement>
</Elements>
</TransportBooking>
</TransportRequiredFields>
Updated price and allotment: The TransportBookingRules response validates that the price and allotment of the combination is still effective and, if this were not the case, supplies you with an updated one, reason for which it will be required for you to verify that none of these two values have changed on our end and, if they did, act depending on what your system allows for in this regard.
Optional products and supplements: For further information and a detailed description, please review the section TransportBookingRules specifications.
As it is not mandatory to select these products to complete a booking, we would not ask you to validate them. However, if you don’t include them in the certification tests, we consider you will not use them and therefore you are not allowed to include them in the bookings.
Last step in the booking process is the TransportBooking. This transaction validates all the information retrieved from the rest of transactions and confirms the booking. Some important date we will check are:
Same language must also be specified in all of the transactions from the booking flow (if you set a specific language on the availability request, the mentioned must be mantained on any subsequent transactions).
<soapenv:Envelope xmlns:soapenv = "http://schemas.xmlsoap.org/soap/envelope/" xmlns = "http://www.juniper.es/webservice/2007/">
<soapenv:Header/>
<soapenv:Body>
<TransportBooking>
<TransportBookingRQ Version = "1.1" Language = "en">
<Login Email = "username" Password = "password"/>
<Paxes>
<Pax IdPax = "1">
<Document Type = "PAS">41758243B</Document>
<PhoneNumbers>
<PhoneNumber>600661662</PhoneNumber>
</PhoneNumbers>
<Title>Mr</Title>
<Name>Name</Name>
<Surname>Surname</Surname>
<Age>30</Age>
<BornDate>1995-07-28</BornDate>
<Nationality>ES</Nationality>
</Pax>
</Paxes>
<Holder>
<RelPax IdPax = "1"/>
</Holder>
<Elements>
<TransportElement>
<BookingCode>wLa+Z9Sl0lOXLNSHXNW/Hsaqm9YEeX56Go39p32XDsIYbrIzytu7B2pEN9PnYTa3JNd7xBKeUU6PMsuZJrbdyr+r20gm/...</BookingCode>
<RelPaxesDist>
<RelPaxDist>
<RelPaxes>
<RelPax IdPax = "1"/>
</RelPaxes>
</RelPaxDist>
</RelPaxesDist>
<TransportBookingInfo>
<Price>
<PriceRange Minimum = "5.71" Maximum = "22.85" Currency = "EUR"/>
</Price>
</TransportBookingInfo>
</TransportElement>
</Elements>
</TransportBookingRQ>
</TransportBooking>
</soapenv:Body>
</soapenv:Envelope>
Here we will need you to confirm, read and cancel on reservation for each of the module types that you will be buying in production, as these tests will let us verify that most of the functionalities are covered.
For each of these reservations, we will need for you to supply us with all of the XML logs of the requests and responses that were involved and/or called during this process, these may include:
We will also need for you to showcase how will you be showing the following information from the TransportBooking 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: