In order to understand the JP WebService work flow, we've prepated a flow chart that outlines and simplies all of the steps that need to be taken through the booking process. We will refer to this flow chart as we advance further on our explanation.
As you may have observed, this booking process is divided in four differentiated steps. We will proceed to describe each of these steps in detail:
FlightBookingRules: Mandatory element requests for the booking. It returns the booking request filled in with the existing elements and fictitious data for the mandatory and non existing ones. We obtain the bookingCode with the expiry time. Should supplements exist the ratePlancode per supplement will be returned. If the bookingCode is not returned it means that there are mandatory data without being selected.
FlightCheckAvail: Optional request, it returns the RatePlancode and informs about any change in the availability. It is single product availability. It is used to check whether there was a price change or not.
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 Flight 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 Flight integration process first hand.
On this section we have a Postman example that embraces all of the Flight integration process.
On this section we have a series of code samples that will let you understand how to implement and use one of the transactions from our API.
Object that shows the list of available routes from a specific flight result.
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
Routes | N | - | |
./Routes/@ValidatingCarrier | Y | String | Carrier that sells the flight. |
./Routes/Route | N | - | |
./Route/@Origin | N | Integer | Origin. |
./Route/@Destination | N | Integer | Destination. |
./Route/Segments | N | - | |
./Segments/Segment | N | - | |
./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/@FlightNumber | N | String | Nº of flight. |
./Segment/@JourneyDuration | Y | Duration | Length of the flight 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 | - | |
./Equipments/Equipment | Y | - | Equipment value. |
./Equipment/@Type | Y | String | For example: AirEquipType. |
./Segment/TechnicalStops | Y | - | |
./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 FlightBookingRules response. Additionally, it is important to understand that not all flights 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 FlightBookingRules 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 FlightBookingRules 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 flight 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 shows supplements and offers/promotions.
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
AdditionalElements | Y | - | List of additional elements. Supplements and offers/promotions. |
./AdditionalElements/Fees | Y | - | |
./Fees/Fee | Y | String | Taxes included. |
./AdditionalElements/{Bags} | Y | String | Bags included. |
./AdditionalElements/{CreditCardFee} | Y | String | Credit card fee included. |
./AdditionalElements/{FlightSupplements} | Y | - | Flight 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 FlightBookingRules 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 flights 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 FlightBookingRules 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 FlightResult. |
./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 flight 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 shows the CreditCardFee object
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 shows the FlightSupplements object
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
FlightSupplements | Y | - | |
./FlightSupplements/FlightSupplement | Y | String | Additional supplements. |
./FlightSupplement/@Units | N | Integer | Supplement units. |
./FlightSupplement/RelPaxes | Y | - | If this tag is not found it means it applies to all passengers. |
./RelPaxes/RelPax | N | - | |
./RelPax/@IdPax | N | Integer | It focuses on the passenger that has a supplement. |
./RelPax/@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 supplement is not already included on the OptionalElements node. |
./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. |
Oject that shows the list of available optional elements for the combinations.
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/{FlightSupplements} | Y | - | Optional supplements. |
Object that shows the optional Fares of a flight. Each Optional Fare includes it’s own RatePlanCode.
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
OptionalFares | Y | - | |
./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. |
It is the availability request. It returns the available flights with its RatePlancode according to the specified search parameters.
<soap:Envelope xmlns:soap = "http://www.w3.org/2003/05/soap-envelope" xmlns = "http://www.juniper.es/webservice/2007/">
<soap:Header/>
<soap:Body>
<FlightAvail>
<FlightAvailRQ Version = "1.1" Language = "es">
<Login Email = "user@domain.ext" Password = "pass"/>
<Paxes>
<Pax IdPax = "1">
<Age>30</Age>
</Pax>
</Paxes>
<FlightRequest>
<SearchSegmentsFlight>
<SearchSegmentFlight>
<CountryOfResidence>ES</CountryOfResidence>
<Routes>
<Route OriginIATA = "PMI" DestinationIATA = "MAD" Date = "2020-09-15"/>
<Route OriginIATA = "MAD" DestinationIATA = "PMI" Date = "2020-09-22"/>
</Routes>
</SearchSegmentFlight>
</SearchSegmentsFlight>
<RelPaxesDist>
<RelPaxDist>
<RelPaxes>
<RelPax IdPax = "1"/>
</RelPaxes>
</RelPaxDist>
</RelPaxesDist>
</FlightRequest>
<AdvancedOptions>
<ShowBreakdownPrice>false</ShowBreakdownPrice>
</AdvancedOptions>
</FlightAvailRQ>
</FlightAvail>
</soap:Body>
</soap:Envelope>
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) |
FlightRequest | N | - | |
./FlightRequest/SearchSegmentsFlight | N | - | Search properties. |
./SearchSegmentsFlight/SearchSegmentFlight | N | - | Basic search properties. |
./SearchSegmentFlight/@Cabin | Y | String | Filter by cabin. Possible values: • Business • First • Economy • Premium • PremiumBusiness • PremiumFirst • PremiumEconomy |
./SearchSegmentFlight/@Class | Y | String | Filter by airline class. |
./SearchSegmentFlight/@LowCost | Y | Boolean | Indicates whether it includes or not LowCost. |
./SearchSegmentFlight/@Stops | Y | Integer | Filter by maximum Nº of accepted flight connections, if you do not wish connected flights indicate 0. NOT IMPLEMENTED |
./SearchSegmentFlight/CountryOfResidence | N | String | Indicated the nationality / country of residence. |
./SearchSegmentFlight/Routes | N | - | [Maximum Nº of routes to request: 10] |
./Routes/Route | N | - | |
./Route/@Date | N | Date | Indicates the flight departure date. |
./Route/@Origin | Y | Integer | Indicates the Juniper code of the origin zone. This field is required if not informed OriginIATA. |
./Route/@OriginIATA | Y | String | Indicates the origin airport IATA code. This field is required if not informed Origin. |
./Route/@Destination | Y | Integer | Indicates the Juniper code of the destination zone. This field is required if not informed DestinationIATA. |
./Route/@DestinationIATA | Y | String | Indicates the destination airport IATA code. This field is required if not informed Destination. |
./Routes/CardPayment | - | - | NOT IMPLEMENTED |
./CardPayment/@Type | Y | String | Indicates the credit card payment type. |
./Routes/Discount | - | - | 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). |
./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 | - | |
./Airlines/Airline | N | - | |
./Airline/Code | N | String | Airline code by which you wish to filter. |
./SearchSegmentsFlight/FlightSuppliers | Y | - | Supplier search nd specific rates. NOT IMPLEMENTED |
./FlightSuppliers/FlightSupplier | N | - | |
./FlightSupplier/@Code | N | String | Supplier code. |
./FlightSuppliers/FlightRates | Y | - | |
./FlightRates/FlightRate | N | - | |
./FlightRate/@Code | N | String | Rates filter code. |
./FlightRequest/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 | - | Optional information. |
./AdvancedOptions/ShowBreakdownPrice | Y | Boolean | If the value is True, it will show the full price object with all the information about the prices. If not specified, False is assumed by default. |
./AdvancedOptions/CalendarSearh | Y | Boolean | If the value is True, it will perform a calendar search on any flight that allows for the same, meaning that the availability response will contain flights from the dates specified along flights 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. |
<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>
<FlightAvailResponse xmlns = "http://www.juniper.es/webservice/2007/">
<AvailabilityRS Url = "http://xml-uat.bookingengine.es" TimeStamp = "2019-09-23T14:37:42.6575811+02:00" IntCode = "rmIXs8vZvK9iG2juJfJplEl058BVNUcTnjndiJA0DFg=">
<Results>
<FlightResult FareType = "PUB" AvailableSeats = "9" Number = "2" Direction = "Outbound" LowCost = "false" RatePlanCode = "pR+Drc2veFAtxSETJRPPRxMSU0S+05he6M86pFU7TIv.......UsNrG5KmfIqonEU4mNKE/u2J5UUanK" Status = "OK" Source = "****">
<Routes ValidatingCarrier = "IB">
<Route Origin = "40233" Destination = "37786">
<Segments>
<Segment DepartureAirport = "PMI" ArrivalAirport = "MAD" DepartureDate = "2020-09-15T21:25:00" ArrivalDate = "2020-09-15T22:50:00" OperatingAirline = "I2" MarquetingAirline = "IB" FlightNumber = "3921" JourneyDuration = "P0DT1H25M0S" Class = "A" Cabin = "Y" AirplaneType = "32A" FareBasis = "AD7OB3"/>
</Segments>
</Route>
</Routes>
<Prices>
<Price Type = "S" Currency = "EUR">
<TotalFixAmounts Gross = "30.68" Nett = "30.68">
<Service Amount = "21"/>
<ServiceTaxes Included = "false" Amount = "9.68"/>
</TotalFixAmounts>
</Price>
<Price Type = "C" Currency = "EUR">
<TotalFixAmounts Gross = "30.68" Nett = "30.68">
<Service Amount = "21"/>
<ServiceTaxes Included = "false" Amount = "9.68"/>
<Commissions Included = "true" Amount = "0"/>
</TotalFixAmounts>
</Price>
</Prices>
<Rules>
<Rule Name = "LastTicketDate">2019-09-24</Rule>
</Rules>
</FlightResult>
<FlightResult FareType = "PUB" Number = "3" Direction = "Outbound" LowCost = "true" RatePlanCode = "vuu0E8wk42/K3dUbFjT+IKH0mrmXvTjGpqf8pdL......XlHSJAHTQO1DuRvffB18qe4p0=" Status = "OK" Source = "****">
<Routes ValidatingCarrier = "FR">
<Route Origin = "40233" Destination = "37786">
<Segments>
<Segment DepartureAirport = "PMI" ArrivalAirport = "MAD" DepartureDate = "2020-09-15T21:55:00" ArrivalDate = "2020-09-15T23:30:00" OperatingAirline = "FR" MarquetingAirline = "FR" FlightNumber = "2062" JourneyDuration = "P0DT1H35M0S" GroundDuration = "P0DT1H35M0S" Class = "H" Cabin = "Y" FareBasis = "AFR2062H"/>
</Segments>
</Route>
</Routes>
<Prices>
<Price Type = "S" Currency = "EUR">
<TotalFixAmounts Gross = "42.85" Nett = "42.85">
<Service Amount = "40.76"/>
<ServiceTaxes Included = "false" Amount = "2.09"/>
</TotalFixAmounts>
</Price>
<Price Type = "C" Currency = "USD">
<TotalFixAmounts Gross = "46.76" Nett = "46.76">
<Service Amount = "44.46"/>
<ServiceTaxes Included = "false" Amount = "2.3"/>
<Commissions Included = "true" Amount = "0"/>
</TotalFixAmounts>
</Price>
</Prices>
</FlightResult>
<FlightResult FareType = "CMB" Number = "75" Direction = "RoundTrip" LowCost = "false" RatePlanCode = "sWYRjsVZY5/NjG4JEnv0g9XF1zXBzlSJKh91.......RdU5+O9Y8j6HNTPky/YKlLIrN5XnHIIDc=" Status = "OK" Source = "****">
<Routes ValidatingCarrier = "EI">
<Route Origin = "40233" Destination = "37786">
<Segments>
<Segment DepartureAirport = "PMI" ArrivalAirport = "MAD" DepartureDate = "2020-09-15T10:00:00" ArrivalDate = "2020-09-15T20:00:00" OperatingAirline = "EI" MarquetingAirline = "EI" FlightNumber = "1" JourneyDuration = "P0DT8H0M0S" GroundDuration = "P0DT8H0M0S" Class = "FT" Cabin = "F"/>
</Segments>
</Route>
<Route Origin = "37786" Destination = "40233">
<Segments>
<Segment DepartureAirport = "MAD" ArrivalAirport = "PMI" DepartureDate = "2020-09-22T10:00:00" ArrivalDate = "2020-09-22T20:00:00" OperatingAirline = "EI" MarquetingAirline = "EI" FlightNumber = "1" JourneyDuration = "P0DT8H0M0S" GroundDuration = "P0DT8H0M0S" Class = "FT" Cabin = "F"/>
</Segments>
</Route>
</Routes>
<Prices>
<Price Type = "S" Currency = "EUR">
<TotalFixAmounts Recommended = "0" Gross = "403.36" Nett = "403.36">
<Service Amount = "403.36"/>
</TotalFixAmounts>
</Price>
<Price Type = "C" Currency = "EUR">
<TotalFixAmounts Gross = "363.04" Nett = "363.04">
<Service Amount = "363.04"/>
<Commissions Included = "true" Amount = "0"/>
</TotalFixAmounts>
</Price>
</Prices>
</FlightResult>
</Results>
</AvailabilityRS>
</FlightAvailResponse>
</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. |
./Results/FlightResult | N | - | - |
./FlightResult/@Number | N | String | Option identifier. |
./FlightResult/@Source | N | String | Supplier that offers the flight. Example: • Amad: Amadeus. • Chv2: CharterV2. • Sab2: SabreV2. • etc. |
./FlightResult/@Direction | N | String | Flight direction. Possible values: • Outbound: Outbound flights • Inbound: Inbound flights • Roundtrip: Roundtrip flights. Identifies travel from one point to another point and returns to the original point • MultiDestiny |
./v/@LowCost | N | Boolean | Indicates if the flight is or not LowCost. |
./FlightResult/@FareType | N | String | Indicates type of the fare. Possible values: • Public. • Negotiated. • Private. |
./FlightResult/@AvailableSeats | Y | Integer | Indicates availability of fare. (1..9 seats available) |
./FlightResult/@RatePlanCode | N | String | A code which is necessary to create the BookingRules. |
./FlightResult/{Routes} | N | - | Routes included on the combination. |
./FlightResult/{Prices} | N | - | Price object related to the combination. |
./FlightResult/{AdditionalElements} | Y | - | Additional elements included on the combination. |
./FlightResult/Rules | Y | - | Applicable rule information. |
./Rules/Rule | N | String | Specific rule value. |
./Rule/@Name | N | String | Rule name. For example: LastTicketDate |
./FlightResult/{OptionalFares} | Y | - | Optional fares included on the combination. |
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. |
This method is used to check a flight price, it required the RatePlanCode got from Availability Response
<soapenv:Envelope xmlns:soapenv = "http://schemas.xmlsoap.org/soap/envelope/" xmlns = "http://www.juniper.es/webservice/2007/">
<soapenv:Header/>
<soapenv:Body>
<FlightCheckAvail>
<FlightCheckAvailRQ Version = "1.1" Language = "es">
<Login Email = "user@domain.ext" Password = "pass"/>
<FlightCheckAvailRequest>
<FlightOption RatePlanCode = "sWYRjsVZY5/NjG4JEnv0g9XF1zXBzlSJKh910UwKN6Kt..............O9Y8j6HNTPky/YKlLIrN5XnHIIDc="/>
</FlightCheckAvailRequest>
</FlightCheckAvailRQ>
</FlightCheckAvail>
</soapenv:Body>
</soapenv:Envelope>
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. |
SearchSegmentsFlightRules | N | - | Search properties. |
./SearchSegmentsFlightRules/FlightOption | N | - | |
./FlightOption/@RatePlanCode | N | String | Code to be avaluated by the CkeckAvail. |
AvancedOptions | Y | - | Optional information. |
./AdvancedOptions/ShowBreakdownPrice | Y | Boolean | If the value is True, it will show the full price object with all the information about the prices. If not specified, False is assumed by default. |
./AdvancedOptions/UseCurrency | Y | String | This value allows you to set the currency code that will be used on the booking flow process. It is important to note that if a currency is specified on the availability request, you will then need to set the same AdvancedOption along the same value on the rest of the booking flow transactions. It is also important to note that the list of available currencies for your use (if any, as the feature could not be available) will entirely depend of the Juniper supplier that you will be connecting to. Last of all, please note that if no currency is set on the request the system will then use the default currency configured by your Juniper supplier. |
<soap:Envelope xmlns:soap = "http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd = "http://www.w3.org/2001/XMLSchema">
<soap:Body>
<FlightCheckAvailResponse xmlns = "http://www.juniper.es/webservice/2007/">
<CheckAvailRS Url = "http://xml-uat.bookingengine.es" TimeStamp = "2019-09-23T15:19:42.0111925+02:00" IntCode = "RuNoUCVSoCMbzeIM0xVFHa1EdHXbVcArkwi5rGaILh8=">
<Results>
<FlightResult Status = "OK" Direction = "RoundTrip" LowCost = "false" RatePlanCode = "sWYRjsVZY5/NjG4JEnv0g9XF1zXBzlSJKh910UwK.....qS9DscEtc4syZomoD6u4h81rKkWgyKoDTHmsUcFE=">
<PriceInformation>
<Routes ValidatingCarrier = "EI">
<Route Origin = "40233" Destination = "37786">
<Segments>
<Segment DepartureAirport = "PMI" ArrivalAirport = "MAD" DepartureDate = "2020-09-15T10:00:00" ArrivalDate = "2020-09-15T20:00:00" OperatingAirline = "EI" MarquetingAirline = "EI" FlightNumber = "1" JourneyDuration = "P0DT8H0M0S" GroundDuration = "P0DT8H0M0S" Class = "FT" Cabin = "F"/>
</Segments>
</Route>
<Route Origin = "37786" Destination = "40233">
<Segments>
<Segment DepartureAirport = "MAD" ArrivalAirport = "PMI" DepartureDate = "2020-09-22T10:00:00" ArrivalDate = "2020-09-22T20:00:00" OperatingAirline = "EI" MarquetingAirline = "EI" FlightNumber = "1" JourneyDuration = "P0DT8H0M0S" GroundDuration = "P0DT8H0M0S" Class = "FT" Cabin = "F"/>
</Segments>
</Route>
</Routes>
<Prices>
<Price Type = "S" Currency = "EUR">
<TotalFixAmounts Recommended = "0" Gross = "403.36" Nett = "403.36">
<Service Amount = "403.36"/>
</TotalFixAmounts>
</Price>
<Price Type = "C" Currency = "EUR">
<TotalFixAmounts Gross = "363.04" Nett = "363.04">
<Service Amount = "363.04"/>
<Commissions Included = "true" Amount = "0"/>
</TotalFixAmounts>
</Price>
</Prices>
</PriceInformation>
<OptionalElements/>
</FlightResult>
</Results>
</CheckAvailRS>
</FlightCheckAvailResponse>
</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. |
./Results/FlightResult | N | - | - |
./FlightResult/@Status | N | String | Option status. |
./FlightResult/@Source | N | String | Supplier that offers the flight. Example: • Amad: Amadeus. • Chv2: CharterV2. • Sab2: SabreV2. • etc. |
./FlightResult/@Direction | N | String | Flight route. Direction = itinerary type. • Outbound (outbound flights). • Inbound (inbound flights) • Roundtrip (it identifies travel from one point to another point and returns to the original point). |
./FlightResult/@LowCost | N | Boolean | Indicates whether it includes a LowCost or not. |
./FlightResult/@RatePlanCode | N | String | A code which is necessary to create the BookingRules. |
./FlightResult/PriceInformation | N | - | |
./PriceInformation/{Routes} | N | - | Routes included on the combination. |
./PriceInformation/{Prices} | N | - | Price object related to the combination. |
./PriceInformation/{AdditionalElements} | Y | - | Additional elements included on the combination. NOT IMPLEMENTED |
This method is used to quote a flight and get the booking code to be used in the booking request.
<soapenv:Envelope xmlns:soapenv = "http://schemas.xmlsoap.org/soap/envelope/" xmlns = "http://www.juniper.es/webservice/2007/">
<soapenv:Header/>
<soapenv:Body>
<FlightBookingRules>
<FlightBookingRulesRQ Version = "1.1" Language = "es">
<Login Email = "user@domain.ext" Password = "pass"/>
<FlightBookingRulesRequest>
<FlightOption RatePlanCode = "UxvqooycR3elzeCAU3miTnIDsB8CeRIadzb4nWXWcLOKOxGPbGg2kOpGGTIOSUraJiAiyZp9LKUPifm0dOQojzQMwOG4LJVq..."/>
</FlightBookingRulesRequest>
<AdvancedOptions>
<ShowBreakdownPrice>true</ShowBreakdownPrice>
</AdvancedOptions>
</FlightBookingRulesRQ>
</FlightBookingRules>
</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>
<FlightBookingRules>
<FlightBookingRulesRQ Version = "1.1" Language = "es">
<Login Email = "user@domain.ext" Password = "pass"/>
<FlightBookingRulesRequest>
<FlightOption RatePlanCode = "UxvqooycR3elzeCAU3miTnIDsB8CeRIadzb4nWXWcLOKOxGPbGg2kOpGGTIOSUraJiAiyZp9LKUPifm0dOQojzQMwOG4LJVq..."/>
<RelPaxesDist>
<RelPaxDist>
<RelPaxes>
<RelPax IdPax = "1">
<PaxSeats>
<PaxSeat SeatSelectionCode = "ciiuZqn3JCeUBFrrD9w8GVodoVKaLfGuH3tWfOwdXUk="/>
</PaxSeats>
</RelPax>
</RelPaxes>
</RelPaxDist>
</RelPaxesDist>
</FlightBookingRulesRequest>
<AdvancedOptions>
<ShowBreakdownPrice>true</ShowBreakdownPrice>
</AdvancedOptions>
</FlightBookingRulesRQ>
</FlightBookingRules>
</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>
<FlightBookingRules>
<FlightBookingRulesRQ Version = "1.1" Language = "es">
<Login Email = "user@domain.ext" Password = "pass"/>
<FlightBookingRulesRequest>
<FlightOption RatePlanCode = "/ZDOnSoPDTwxYb2G/UYDGrgZf7fMEPaIJjuz06XWdxKOnTa6GL8rkzqKst9V4rbW+khEOwptBumyz86O0j46V..."/>
<RelPaxesDist>
<RelPaxDist>
<RelPaxes>
<RelPax IdPax = "1">
<PaxBags>
<PaxBag BagSelectionCode = "eAMiWHwWdx+aYy3bFSkiT4aWdluAit6tGdrMVDAmbQ03yj+dgnLw5xVM16Lwm7u/bAJow/V/gaoHHn9ATUDShSI..."/>
</PaxBags>
</RelPax>
</RelPaxes>
</RelPaxDist>
</RelPaxesDist>
</FlightBookingRulesRequest>
<AdvancedOptions>
<ShowBreakdownPrice>true</ShowBreakdownPrice>
</AdvancedOptions>
</FlightBookingRulesRQ>
</FlightBookingRules>
</soapenv:Body>
</soapenv:Envelope>
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. |
FlightBookingRulesRequest | N | - | Booking rules request. |
./FlightBookingRulesRequest/FlightOption | N | - | Specific flight option. |
./FlightOption/@RatePlanCode | N | String | RatePlanCode of the combination that we wish to consider, retrieved from the previous availability request. |
./FlightBookingRulesRequest/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. |
AssignSeats | Y | - | DEPRECATED. Node that was previously used for seat selection. For this purpose, kindly use the RelPaxesDist node. |
AvancedOptions | Y | - | Optional information. |
./AdvancedOptions/ShowBreakdownPrice | Y | Boolean | If the value is True, it will show the full price object with all the information about the prices. If not specified, False is assumed by default. |
./AdvancedOptions/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/PromoCode | Y | String | Promotional code that you would like to apply to the combination. • If found and applied, the promotion will not be included within the HotelResult price and, instead, be returned through its own AdjustmentElement. • If unsuccessful, the response will include a warnPromoNotApply warning. |
./PromoCode/@BinCode | Y | String | BinCode for which you would like to search for an applicable promotion. May be sent along with a PromoCode, case on which the system will look for the best possible promotion available within the two. |
<soap:Envelope xmlns:soap = "http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd = "http://www.w3.org/2001/XMLSchema">
<soap:Body>
<FlightBookingRulesResponse xmlns = "http://www.juniper.es/webservice/2007/">
<BookingRulesRS Url = "http://xml-uat.bookingengine.es" TimeStamp = "2019-09-23T15:21:40.9326954+02:00" IntCode = "+VtLjH2FY2RgtD7ESIQSlkXKGmbF+EVaci2eD2rkSeg=">
<Results>
<FlightResult Status = "OK" Source = "****" Direction = "RoundTrip" LowCost = "false">
<BookingCode ExpirationDate = "2019-09-23T15:31:40.9326954+02:00">sWYRjsVZY5/NjG4JEnv0g9XF1zXBzlSJKh9........k/3YHYypYQzio8PF/f2KpXwGR07AAk8JXWdIqlJwA=</BookingCode>
<FlightRequiredFields>
<FlightBooking>
<Paxes>
<Pax IdPax = "1">
<Name>Holder Name</Name>
<Surname>Holder Surname</Surname>
<Age>30</Age>
<BornDate>1989-09-23</BornDate>
<Address>Passenger address</Address>
<City>Passegner city</City>
<Country>Passenger country</Country>
<PostalCode>Passenger postal code</PostalCode>
<Nationality>Passenger nationality</Nationality>
</Pax>
</Paxes>
<Holder>
<RelPax IdPax = "1"/>
</Holder>
<Elements>
<FlightElement>
<BookingCode>sWYRjsVZY5/NjG4JEnv0g9XF1zXBz..........io8PF/f2KpXwGR07AAk8JXWdIqlJwA=</BookingCode>
<RelPaxesDist>
<RelPaxDist>
<RelPaxes>
<RelPax IdPax = "1"/>
</RelPaxes>
</RelPaxDist>
</RelPaxesDist>
</FlightElement>
</Elements>
</FlightBooking>
</FlightRequiredFields>
<PriceInformation>
<Routes ValidatingCarrier = "EI">
<Route Origin = "40233" Destination = "37786">
<Segments>
<Segment DepartureAirport = "PMI" ArrivalAirport = "MAD" DepartureDate = "2020-09-15T10:00:00" ArrivalDate = "2020-09-15T20:00:00" OperatingAirline = "EI" MarquetingAirline = "EI" FlightNumber = "1" JourneyDuration = "P0DT8H0M0S" GroundDuration = "P0DT8H0M0S" Class = "FT" Cabin = "F"/>
</Segments>
</Route>
<Route Origin = "37786" Destination = "40233">
<Segments>
<Segment DepartureAirport = "MAD" ArrivalAirport = "PMI" DepartureDate = "2020-09-22T10:00:00" ArrivalDate = "2020-09-22T20:00:00" OperatingAirline = "EI" MarquetingAirline = "EI" FlightNumber = "1" JourneyDuration = "P0DT8H0M0S" GroundDuration = "P0DT8H0M0S" Class = "FT" Cabin = "F"/>
</Segments>
</Route>
</Routes>
<Prices>
<Price Type = "S" Currency = "EUR">
<TotalFixAmounts Recommended = "0" Gross = "403.36" Nett = "403.36">
<Service Amount = "403.36"/>
</TotalFixAmounts>
</Price>
<Price Type = "C" Currency = "EUR">
<TotalFixAmounts Gross = "363.04" Nett = "363.04">
<Service Amount = "363.04"/>
<Commissions Included = "true" Amount = "0"/>
</TotalFixAmounts>
</Price>
</Prices>
</PriceInformation>
<OptionalElements/>
</FlightResult>
</Results>
</BookingRulesRS>
</FlightBookingRulesResponse>
</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. |
./Results/FlightResult | N | - | - |
./FlightResult/@Status | N | String | Option status. |
./FlightResult/@Source | N | String | Supplier that offers the flight. Example: • Amad: Amadeus. • Chv2: CharterV2. • Sab2: SabreV2. • etc. |
./FlightResult/@Direction | N | String | Flight route. Direction = Itinerary type. • Outbound: Outbound flights. • Inbound: Inbound flights. • Roundtrip: Identifies travel from one point to another point and returns to the original point. |
./FlightResult/@LowCost | Y | Boolean | Indicates whether it includes a LowCost or not. |
./FlightResult/@AdditionalInformation | Y | String | Indicates the notes of Charter if set up. |
./FlightResult/BookingCode | Y | String | Booking code. If there is no code for the booking it means there are mandatory data without being selected. |
./BookingCode/ExpirationDate | N | String | Booking code expiry date. |
./FlightResult/{FlightRequieredFields} | N | - | Required fields for the booking process. The structure matches with a FlightBooking request. Only the nodes and attributes that are returned in this structure will be mandatory, the rest of the information will be considered as optional. |
./FlightResult/{CancellationPolicy} | Y | - | Cancellation policies. |
./FlightResult/{AdditionalPolicies} | Y | - | Additional policies. |
./FlightResult/PriceInformation | N | - | |
./PriceInformation/{Routes} | N | - | Routes included on the combination. |
./PriceInformation/{Prices} | N | - | Price object related to the combination. |
./PriceInformation/{AdditionalElements} | Y | - | Additional elements included on the combination. NOT IMPLEMENTED |
./PriceInformation/BillingOrganization | Y | String | Billing organization name. This information is restricted and will not be available by default. |
./BillingOrganization/@Code | Y | String | Billing organization code. |
./FlightResult/{OptionalElements} | Y | - | Optional supplements. |
./FlightResult/FareGroup | N | - | Fare Group. |
./FareGroup/@Code | N | String | Code of the Fare Group. |
./FareGroup/Name | N | String | Name of the Fare Group. |
./FareGroup/FareGroupServices | N | - | List of Fare Group Services. |
./FareGroupServices/FareGroupService | N | - | Fare Group Service element. |
./FareGroupService/@TypeCode | N | String | Code of Type of Service included in OptionalFaresDescription. |
./FareGroupService/PriceApplicationCode | N | String | Code of Type of Price of the Service included in OptionalFaresDescription. |
./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. |
We book a flight by BookingCode which we got in the BookingRules Response
<soapenv:Envelope xmlns:soapenv = "http://schemas.xmlsoap.org/soap/envelope/" xmlns = "http://www.juniper.es/webservice/2007/">
<soapenv:Header/>
<soapenv:Body>
<FlightBooking>
<FlightBookingRQ Version = "1.1" Language = "es">
<Login Email = "user@domain.ext" Password = "pass"/>
<Paxes>
<Pax IdPax = "1">
<Name>Jaime</Name>
<Surname>Aitor</Surname>
<Age>30</Age>
<BornDate>1995-09-23</BornDate>
<Address>San Francisco, 9</Address>
<City>Palma de Mallorca</City>
<Country>Spain</Country>
<PostalCode>07001</PostalCode>
<Nationality>ES</Nationality>
</Pax>
</Paxes>
<Holder>
<RelPax IdPax = "1"/>
</Holder>
<ExternalBookingReference>YOUR_OWN_BOOKINGREFERENCE</ExternalBookingReference>
<Elements>
<FlightElement>
<BookingCode>sWYRjsVZY5/NjG4JEnv0g9X...........HYypYQzio8PF/f2KpXwGR07AAk8JXWdIqlJwA=</BookingCode>
<RelPaxesDist>
<RelPaxDist>
<RelPaxes>
<RelPax IdPax = "1"/>
</RelPaxes>
</RelPaxDist>
</RelPaxesDist>
<FlightBookingInfo>
<Price>
<PriceRange Minimum = "363.04" Maximum = "480.53" Currency = "EUR"/>
</Price>
</FlightBookingInfo>
</FlightElement>
</Elements>
<AdvancedOptions>
<ShowBreakdownPrice>true</ShowBreakdownPrice>
</AdvancedOptions>
</FlightBookingRQ>
</FlightBooking>
</soapenv:Body>
</soapenv:Envelope>
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
@Version | N | String | Web Service version. |
@Language | N | String | Language in which the response will be returned. Please, contact Juniper for available languages. |
@TimeStamp | Y | DateTime | This is an optional field that allows for you to send your own time stamp. Format: yyyy-MM-ddThh:mm:ss (UTC) |
{Login} | N | - | Customer login to access the Web Service. |
{Paxes} | N | - | Indicates the passenger information. Array of passengers. Fields necessary for this transaction: • @IdPax: Required. • Age: Optional for adults. |
Holder | N | - | Holder container. |
./Holder/RelPax | N | - | RelPax node. |
./RelPax/@IdPax | N | Integer | ID of the RelPax that stands for the holder of the booking. |
Comments | Y | - | List of comments. |
./Comments/Comment | N | String | Comment. |
./Comment/@Type | Y | String | Comment type. Possible values: • RES: General booking comments • INT: Internal booking comments. Kindly note that these comments are restricted, contact with Juniper for more information. Note that it is important to set the proper @Type or the comment won’t be properly saved. |
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. |
Elements | N | - | Elements container. |
./Elements/FlightElement | N | - | Flight item. |
./FlightElement/BookingCode | N | String | Booking Code, is in BookingRules response and encode all information needed to book the quoted product. |
./FlightElement/Card | Y | String | Credit card payment. Optional, if it has a credit card payment. If it does not have a credit type payment, the ticket cannot be issued unless the user enters a credit card. NOT IMPLEMENTED |
./Card/@Type | N | String | Credit card type. |
./Card/@Code | N | String | Credit card number. |
./Card/@CVV | N | Integer | Security code. |
./Card/@DateExp | N | Date | Credit card expiry date. |
./FlightElement/RelPaxesDist | N | - | |
./RelPaxesDist/RelPaxDist | N | - | |
./RelPaxDist/RelPaxes | N | - | |
./RelPaxes/RelPax | N | - | |
./RelPax/@IdPax | N | Integer | It focuses on the passenger it refers to. |
./FlightElement/Comments | Y | - | List of comments. |
./Comments/Comment | N | String | Comment. |
./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. |
./FlightElement/FlightBookingInfo | N | - | |
./FlightBookingInfo/Price | N | - | Price information. |
./Price/PriceRange | N | - | Price information. |
./PriceRange/@Minimum | N | Integer | Minimum price of the reservation. If when booking, the price is lower, the booking will be cancelled automatically. |
./PriceRange/@Maximum | N | Integer | Maximum price of the reservation. If when booking, the price is higher, the booking will be cancelled automatically. |
./PriceRange/@Currency | N | String | Currency. |
AdvancedOptions | Y | - | Optional information. |
./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. |
<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>
<FlightBookingResponse xmlns = "http://www.juniper.es/webservice/2007/">
<BookingRS Url = "http://xml-uat.bookingengine.es" TimeStamp = "2019-09-23T15:22:38.289212+02:00" IntCode = "eGZY5sk+8CEpKVBdNI94wCTXjbclPKoblqSTwuYSa9c=">
<Reservations>
<Reservation Locator = "CK35KV" Status = "PAG" Language = "es">
<Holder>
<RelPax IdPax = "2"/>
</Holder>
<Paxes>
<Pax IdPax = "1">
<Name>Jaime</Name>
<Surname>Aitor</Surname>
<Age>30</Age>
<BornDate>1995-09-23</BornDate>
<Address>San Francisco, 9</Address>
<City>Palma de Mallorca</City>
<Country>Spain</Country>
<PostalCode>07001</PostalCode>
<Nationality>ES</Nationality>
</Pax>
<Pax IdPax = "2">
<Name>Jaime</Name>
<Surname>Aitor</Surname>
<Age>30</Age>
<BornDate>1995-09-23</BornDate>
<Address>San Francisco, 9</Address>
<City>Palma de Mallorca</City>
<Country>Spain</Country>
<PostalCode>07001</PostalCode>
<Nationality>ES</Nationality>
</Pax>
</Paxes>
<Items>
<FlightItem ItemId = "145094" Status = "OK">
<ExternalInfo/>
<Prices>
<Price Type = "S" Currency = "EUR">
<TotalFixAmounts Gross = "201.68" Nett = "201.68">
<Service Amount = "201.68"/>
</TotalFixAmounts>
<Breakdown>
<Concepts>
<Concept Type = "BAS" Name = "Base Coste">
<Items>
<Item Amount = "201.68" Quantity = "1" Days = "1" PaxType = "ADT" TtaCode = "200"/>
</Items>
</Concept>
</Concepts>
</Breakdown>
</Price>
<Price Type = "C" Currency = "USD">
<TotalFixAmounts Gross = "200" Nett = "200">
<Service Amount = "200"/>
<Commissions Included = "true" Amount = "0"/>
</TotalFixAmounts>
<Breakdown>
<Concepts>
<Concept Type = "BAS" Name = "Base Coste" Code = "PN_0">
<Items>
<Item Amount = "200" Quantity = "1" Days = "1" PaxType = "ADT" TtaCode = "200" SupplierAmount = "200" SupplierCurrency = "USD"/>
</Items>
</Concept>
</Concepts>
<Commissions>
<Commission>
<Total Base = "200" Amount = "0"/>
</Commission>
</Commissions>
</Breakdown>
</Price>
</Prices>
<Routes ValidatingCarrier = "EI">
<Route Origin = "40233" Destination = "37786">
<Segments>
<Segment DepartureAirport = "PMI" ArrivalAirport = "MAD" DepartureDate = "2020-09-15T10:00:00" ArrivalDate = "2020-09-15T20:00:00" OperatingAirline = "EI" MarquetingAirline = "EI" FlightNumber = "1" Class = "FT" Cabin = "F">
<TechnicalStops/>
</Segment>
</Segments>
</Route>
</Routes>
<AdditionalElements/>
<RelPaxes>
<RelPax IdPax = "1"/>
</RelPaxes>
</FlightItem>
<FlightItem ItemId = "145095" Status = "OK">
<ExternalInfo/>
<Prices>
<Price Type = "S" Currency = "EUR">
<TotalFixAmounts Gross = "201.68" Nett = "201.68">
<Service Amount = "201.68"/>
</TotalFixAmounts>
<Breakdown>
<Concepts>
<Concept Type = "BAS" Name = "Base Coste">
<Items>
<Item Amount = "201.68" Quantity = "1" Days = "1" PaxType = "ADT" TtaCode = "200"/>
</Items>
</Concept>
</Concepts>
</Breakdown>
</Price>
<Price Type = "C" Currency = "USD">
<TotalFixAmounts Gross = "200" Nett = "200">
<Service Amount = "200"/>
<Commissions Included = "true" Amount = "0"/>
</TotalFixAmounts>
<Breakdown>
<Concepts>
<Concept Type = "BAS" Name = "Base Coste" Code = "PN_0">
<Items>
<Item Amount = "200" Quantity = "1" Days = "1" PaxType = "ADT" TtaCode = "200" SupplierAmount = "200" SupplierCurrency = "USD"/>
</Items>
</Concept>
</Concepts>
<Commissions>
<Commission>
<Total Base = "200" Amount = "0"/>
</Commission>
</Commissions>
</Breakdown>
</Price>
</Prices>
<Routes ValidatingCarrier = "EI">
<Route Origin = "37786" Destination = "40233">
<Segments>
<Segment DepartureAirport = "MAD" ArrivalAirport = "PMI" DepartureDate = "2020-09-22T10:00:00" ArrivalDate = "2020-09-22T20:00:00" OperatingAirline = "EI" MarquetingAirline = "EI" FlightNumber = "1" Class = "FT" Cabin = "F">
<TechnicalStops/>
</Segment>
</Segments>
</Route>
</Routes>
<AdditionalElements/>
<RelPaxes>
<RelPax IdPax = "1"/>
</RelPaxes>
</FlightItem>
</Items>
</Reservation>
</Reservations>
</BookingRS>
</FlightBookingResponse>
</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. |
Reservations | N | - | List of bookings. |
./Reservations/Reservation | N | String | Booking item. |
./Reservation/@Locator | N | String | Booking code that you should use to check or cancel the booking. Ie: MSZB3S. |
./Reservation/@Status | N | String | Booking status. Possible values are: • Pag - Booking confirmed and paid. • Con - Booking confirmed. • Tar - Booking confirmed (if pending credit card charge). • Can or CaC - Booking cancelled. • PRe or PDI - Booking on request. It is very important to check the Status attribute in order to verify the booking 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 | String | Booking holder Indicate which passenger from the Paxes node is the booking holder. It may not match with one of the booking passengers. Please note that, even if you do not specify the same on your request, the system will always create an additional holder passenger (identified through this node) on the response as it saves the holder information separatedly from the rest of the passengers. For example: Let’s say you ask for a booking of 4 passengers while setting the first one as the holder, given the case, the system will answer you with 5 passengers, the first 4 being the ones included on the booking and the fifth one being the holder itself. |
./Holder/RelPax | N | - | |
./RelPax/@IdPax | N | Integer | It focuses on the passenger it refers to. |
./Reservation/{Paxes} | N | - | Passengers and booking holder. |
./Reservation/Comments | Y | - | Booking comments. |
./Comments/Comment | Y | - | - |
./Comment/@Type | Y | String | Comment type. Possible values: • RES: General booking comments • INT: Internal booking comments |
./Reservation/AgenciesData | N | - | - |
./AgenciesData/AgencyData | N | - | - |
./AgencyData/ReferencedAgency | Y | Indicates if the data belongs to the agency stated as referenced angency in the booking process. | |
./AgencyData/AgencyCode | N | Agency code. | |
./AgencyData/AgencyName | N | Agency name. | |
./AgencyData/AgencyHandledBy | Y | Name of the agency handling the booking. | |
./AgencyData/AgencyEmail | N | Agency email. | |
./Reservation/Payment | Y | - | Payment information. |
./Payment/@Type | N | String | Payment type code. Possivle values: •C: Credit •B: Bank •T: POS (Point of sale) |
./Reservation/Items | N | - | |
./Items/FlightItem | N | - | |
./FlightItem/@ItemId | N | Integer | Booking element identifier. |
./FlightItem/@Status | N | String | Booking status. |
./FlightItem/@Ticketing | Y | Boolean | If it is true it means that a ticket has been issued, otherwise none of them were issued. |
./FlightItem/@Direction | Y | String | Flight route. Direction = itinerary. • Outbound: Outbound flights. • Inbound: Inbound flights. • Roundtrip: It identifies travelling from one point to another point and returns to the original point. |
./FlightItem/ExternalInfo | Y | - | External information. Restricted. |
./ExternalInfo/ExternalLocator | Y | External / Supplier location. Restricted by a special permission. | |
./FlightItem/{Prices} | N | - | Price object related to the combination. |
./FlightItem/{CancellationPolicy} | N | - | Cancellation policy. |
./FlightItem/{Routes} | N | - | Routes included on the combination. |
./FlightItem/{AdditionalElements} | Y | - | Additional elements included on the combination. NOT IMPLEMENTED |
./FlightItem/RelPaxes | N | - | |
./RelPaxes/RelPax | N | - | |
./RelPax/@IdPax | N | Integer | It focuses on the passenger it refers to. |
./Items/{AdjustmentItem} | Y | - | Additional adjustment item. It will be available if, for example, you've manually added a PromoCode on the previous BookingRules step. |
Issues the flight ticket by using the booking Locator.
<soapenv:Envelope xmlns:soapenv = "http://schemas.xmlsoap.org/soap/envelope/" xmlns = "http://www.juniper.es/webservice/2007/">
<soapenv:Header/>
<soapenv:Body>
<FlightTicketing>
<FlightTicketingRQ Version = "1.1" Language = "en">
<Login Email = "user@domain.ext" Password = "pass"/>
<Reservations>
<Reservation>
<ReservationLocator>CK35KV</ReservationLocator>
<Commission Type = "Fixed" Amount = "10" Currency = "EUR"/>
</Reservation>
</Reservations>
</FlightTicketingRQ>
</FlightTicketing>
</soapenv:Body>
</soapenv:Envelope>
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 @Amount specified. • Percent: A percentatge applied to the reservation price. |
./Commission/@Amount | N | Integer | 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". |
<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>
<FlightTicketingResponse xmlns = "http://www.juniper.es/webservice/2007/">
<FlightTicketingRS>
<Reservations>
<Reservation>
<Flight>
<Status>OK</Status>
<Paxes>
<Pax IdPax = "1">
<Name>Jaime</Name>
<Surname>Aitor</Surname>
</Pax>
</Paxes>
</Flight>
<Flight>
<Status>OK</Status>
<Paxes>
<Pax IdPax = "1">
<Name>Jaime</Name>
<Surname>Aitor</Surname>
</Pax>
</Paxes>
</Flight>
</Reservation>
</Reservations>
</FlightTicketingRS>
</FlightTicketingResponse>
</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. |
Reservations | N | - | Reservation list. |
./Reservations/Reservation | N | - | Flight list. This node will have a child or each flight in the reservation. |
./Reservation/Flight | N | - | Flight. |
./Flight/@Locator | Y | String | External flight locator. If the status is not OK, the locator will be empty. |
./Flight/Status | N | String | Status of the ticket: • 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 flight tickets have already been issued. |
./Flight/{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. |
Obtain booking information by using the Booking code.
<soapenv:Envelope xmlns = "http://www.juniper.es/webservice/2007/" xmlns:soapenv = "http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<ReadBooking>
<ReadRQ Version = "1.1" Language = "en">
<Login Email = "user@domain.ext" Password = "pass"/>
<ReadRequest ReservationLocator = "CK35KV"/>
</ReadRQ>
</ReadBooking>
</soapenv:Body>
</soapenv:Envelope>
Node / Attribute (@) | Opt | Type | Description |
---|---|---|---|
@Version | N | String | Web Service version. |
@Language | N | String | Language in which the response will be returned. Please, contact Juniper for available languages. |
{Login} | N | - | Customer login to access the Web Service. |
ReadRequest | N | - | - |
./ReadRequest/@ReservationLocator | N | - | Booking code. |
AdvancedOptions | Y | - | Optional information. |
./AdvancedOptions/ShowBreakdownPrice | Y | Boolean | If the value is True, it will show the full price object with all the information about the prices. If not specified, False is assumed by default. |
<soap:Envelope xmlns:soap = "http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd = "http://www.w3.org/2001/XMLSchema">
<soap:Body>
<ReadBookingResponse xmlns = "http://www.juniper.es/webservice/2007/">
<BookingRS Url = "http://xml-uat.bookingengine.es" TimeStamp = "2019-09-24T12:48:39.3017812+02:00" IntCode = "f4eHjIV4OnIjHFtC92HWwc+g/YiCyGQLHbpaKx+Gs58=">
<Reservations>
<Reservation Locator = "CK35KV" Status = "PAG" Language = "es">
<Holder>
<RelPax IdPax = "2"/>
</Holder>
<Paxes>
<Pax IdPax = "1">
<Name>Jaime</Name>
<Surname>Aitor</Surname>
<Age>30</Age>
<BornDate>1995-09-23</BornDate>
<Address>San Francisco, 9</Address>
<City>Palma de Mallorca</City>
<Country>Spain</Country>
<PostalCode>07001</PostalCode>
<Nationality>ES</Nationality>
</Pax>
<Pax IdPax = "2">
<Name>Jaime</Name>
<Surname>Aitor</Surname>
<Age>30</Age>
<BornDate>1995-09-23</BornDate>
<Address>San Francisco, 9</Address>
<City>Palma de Mallorca</City>
<Country>Spain</Country>
<PostalCode>07001</PostalCode>
<Nationality>ES</Nationality>
</Pax>
</Paxes>
<Items>
<FlightItem ItemId = "145094" Status = "OK">
<ExternalInfo/>
<Prices>
<Price Type = "S" Currency = "EUR">
<TotalFixAmounts Gross = "201.68" Nett = "201.68">
<Service Amount = "201.68"/>
</TotalFixAmounts>
</Price>
<Price Type = "C" Currency = "USD">
<TotalFixAmounts Gross = "200" Nett = "200">
<Service Amount = "200"/>
<Commissions Included = "true" Amount = "0"/>
</TotalFixAmounts>
</Price>
</Prices>
<Routes ValidatingCarrier = "EI">
<Route Origin = "40233" Destination = "37786">
<Segments>
<Segment DepartureAirport = "PMI" ArrivalAirport = "MAD" DepartureDate = "2020-09-15T10:00:00" ArrivalDate = "2020-09-15T20:00:00" OperatingAirline = "EI" MarquetingAirline = "EI" FlightNumber = "1" Class = "FT" Cabin = "F">
<TechnicalStops/>
</Segment>
</Segments>
</Route>
</Routes>
<AdditionalElements/>
<RelPaxes>
<RelPax IdPax = "1"/>
</RelPaxes>
</FlightItem>
<FlightItem ItemId = "145095" Status = "OK">
<ExternalInfo/>
<Prices>
<Price Type = "S" Currency = "EUR">
<TotalFixAmounts Gross = "201.68" Nett = "201.68">
<Service Amount = "201.68"/>
</TotalFixAmounts>
</Price>
<Price Type = "C" Currency = "USD">
<TotalFixAmounts Gross = "200" Nett = "200">
<Service Amount = "200"/>
<Commissions Included = "true" Amount = "0"/>
</TotalFixAmounts>
</Price>
</Prices>
<Routes ValidatingCarrier = "EI">
<Route Origin = "37786" Destination = "40233">
<Segments>
<Segment DepartureAirport = "MAD" ArrivalAirport = "PMI" DepartureDate = "2020-09-22T10:00:00" ArrivalDate = "2020-09-22T20:00:00" OperatingAirline = "EI" MarquetingAirline = "EI" FlightNumber = "1" Class = "FT" Cabin = "F">
<TechnicalStops/>
</Segment>
</Segments>
</Route>
</Routes>
<AdditionalElements/>
<RelPaxes>
<RelPax IdPax = "1"/>
</RelPaxes>
</FlightItem>
</Items>
</Reservation>
</Reservations>
</BookingRS>
</ReadBookingResponse>
</soap:Body>
</soap:Envelope>
The returned information is the same as in FlightBooking. Please see section FlightBooking for further information.
Issues the flight ticket by using the booking Locator.
<soap:Envelope xmlns:soap = "http://www.w3.org/2003/05/soap-envelope" xmlns = "http://www.juniper.es/webservice/2007/">
<soap:Header/>
<soap:Body>
<CancelBooking>
<CancelRQ Version = "1.1" Language = "en">
<Login Email = "user@domain.ext" Password = "pass"/>
<CancelRequest ReservationLocator = "CK35KV"/>
</CancelRQ>
</CancelBooking>
</soap:Body>
</soap:Envelope>
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 | - | Booking code. |
./CancelRequest/@ItemId | Y | - | Item identifier. |
AdvancedOptions | Y | - | Optional information. |
./AdvancedOptions/ShowBreakdownPrice | Y | Boolean | If the value is True, it will show the full price object with all the information about the prices. If not specified, False is assumed by default. |
<soap:Envelope xmlns:soap = "http://www.w3.org/2003/05/soap-envelope" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd = "http://www.w3.org/2001/XMLSchema">
<soap:Body>
<CancelBookingResponse xmlns = "http://www.juniper.es/webservice/2007/">
<BookingRS Url = "http://xml-uat.bookingengine.es" TimeStamp = "2019-09-24T14:59:02.4862166+02:00" IntCode = "ev7lce/YTno+qL1a/5SO+THn/lPXxg4t5vl6zXSmARk=">
<Warnings>
<Warning Code = "warnCancelledAndCancellationNotCalculated" Text = "Cancellation cost could not be calculated. Reservation was cancelled and it is pending of cancellation cost."/>
</Warnings>
<Reservations>
<Reservation Locator = "CK35KV" Status = "CAC" Language = "es">
<Holder>
<RelPax IdPax = "2"/>
</Holder>
<Paxes>
<Pax IdPax = "1">
<Name>Jaime</Name>
<Surname>Aitor</Surname>
<Age>30</Age>
<BornDate>1995-09-23</BornDate>
<Address>San Francisco, 9</Address>
<City>Palma de Mallorca</City>
<Country>Spain</Country>
<PostalCode>07001</PostalCode>
<Nationality>ES</Nationality>
</Pax>
<Pax IdPax = "2">
<Name>Jaime</Name>
<Surname>Aitor</Surname>
<Age>30</Age>
<BornDate>1995-09-23</BornDate>
<Address>San Francisco, 9</Address>
<City>Palma de Mallorca</City>
<Country>Spain</Country>
<PostalCode>07001</PostalCode>
<Nationality>ES</Nationality>
</Pax>
</Paxes>
<Items>
<FlightItem ItemId = "145094" Status = "CA">
<ExternalInfo>
<ExternalLocator>CK35KV</ExternalLocator>
</ExternalInfo>
<Prices>
<Price Type = "S" Currency = "EUR">
<TotalFixAmounts Gross = "201.68" Nett = "201.68">
<Service Amount = "201.68"/>
</TotalFixAmounts>
</Price>
<Price Type = "C" Currency = "USD">
<TotalFixAmounts Gross = "200" Nett = "200">
<Service Amount = "200"/>
<Commissions Included = "true" Amount = "0"/>
</TotalFixAmounts>
</Price>
</Prices>
<Routes ValidatingCarrier = "EI">
<Route Origin = "40233" Destination = "37786">
<Segments>
<Segment DepartureAirport = "PMI" ArrivalAirport = "MAD" DepartureDate = "2020-09-15T10:00:00" ArrivalDate = "2020-09-15T20:00:00" OperatingAirline = "EI" MarquetingAirline = "EI" FlightNumber = "1" Class = "FT" Cabin = "F">
<TechnicalStops/>
</Segment>
</Segments>
</Route>
</Routes>
<AdditionalElements/>
<RelPaxes>
<RelPax IdPax = "1"/>
</RelPaxes>
</FlightItem>
<FlightItem ItemId = "145095" Status = "CA">
<ExternalInfo>
<ExternalLocator>CK35KV</ExternalLocator>
</ExternalInfo>
<Prices>
<Price Type = "S" Currency = "EUR">
<TotalFixAmounts Gross = "201.68" Nett = "201.68">
<Service Amount = "201.68"/>
</TotalFixAmounts>
</Price>
<Price Type = "C" Currency = "USD">
<TotalFixAmounts Gross = "200" Nett = "200">
<Service Amount = "200"/>
<Commissions Included = "true" Amount = "0"/>
</TotalFixAmounts>
</Price>
</Prices>
<Routes ValidatingCarrier = "EI">
<Route Origin = "37786" Destination = "40233">
<Segments>
<Segment DepartureAirport = "MAD" ArrivalAirport = "PMI" DepartureDate = "2020-09-22T10:00:00" ArrivalDate = "2020-09-22T20:00:00" OperatingAirline = "EI" MarquetingAirline = "EI" FlightNumber = "1" Class = "FT" Cabin = "F">
<TechnicalStops/>
</Segment>
</Segments>
</Route>
</Routes>
<AdditionalElements/>
<RelPaxes>
<RelPax IdPax = "1"/>
</RelPaxes>
</FlightItem>
</Items>
</Reservation>
</Reservations>
</BookingRS>
</CancelBookingResponse>
</soap:Body>
</soap:Envelope>
The returned information is the same as in FlightBooking. Please see section FlightBooking for further information.
This section will describe in more detail the discounts in flights.
First, it is necessary to point out that there are two kinds of discounts:
In order to enable them, you have to include the node Discount in the FlightAvail transaction and specify the type of discount to request. Both types can be requested together.
After requesting the availability including the discount, there will be some mandatory passenger information so the discount can be applied. These data will be marked as “Required Fields”.
In case of resident discount, the Pax Municipality code will be requested (@Municipality). Please check all the possible values in section FAQ.
In case of large family discount, the Large Family code (@Code) and the Autonomous Community code (@AutonomousCommunity) are required. Please check all their possible values in section FAQ.
In the FlightBooking 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 FlightBooking request, as discounts are calculated internally with the data retrieved from the FlightAvail transaction.
Before moving to the live environment, you will be asked to perform some tests in order to validate your integration and ensure the correct use of the API:
The next step will be to supply us with the following information (on each one of the bookings that you performed):
We would also like you to give us a short description of your system flow and how many requests you have planned to do in live. We want the approximate number of requests per day and per second for times of more work, both availability and reservations as others (total requests). We need an estimation, the number doesn’t have to be exact.
Please algo give us some information regarding the length of the timeout that you have set for our availability response and reservation response.
First, the structure of the availability request must be correctly formed, and none of the mandatory fields must be missed. Amongst other, we will check the following nodes:
It is also mandatory to allow for compressed responses on the request so that the response size will be considerably reduced (meaning faster transfer times). If you do not allow for the same, the response will contain the following error:
<soap:Envelope xmlns:soap = "http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd = "http://www.w3.org/2001/XMLSchema">
<soap:Body>
<FlightAvailResponse xmlns = "http://www.juniper.es/webservice/2007/">
<AvailabilityRS Url = "http://xml-uat.bookingengine.es" TimeStamp = "2019-04-29T10:07:50.6302996+02:00" IntCode = "TnRpipRFnwM03HsUhG0MT1Qs2amoCQVijaUtMy9/o7A=">
<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>
</FlightAvailResponse>
</soap:Body>
</soap:Envelope>
If the request is valid, you will receive a response containing all the possible flight combinations for the desired criteria.
Each flight combination will be returned along a RatePlanCode which should be used in the next step of the booking flow, which can be FlightCheckAvail (if you desire to validate the availability of the selected option) or FlightBookingRules. Please be aware that the proper use of the RatePlanCode is an important point in the certification process.
The FlightBookingRules transaction is a mandatory step for the booking process which, apart from supplying you with any involved cancellation policies, validates the allotment/rate and returns any required field that may apply to this combination. Please note that the proper use of the required fields is a crucial point for both the booking confirmation and the certification process.
This transaction only requires the RatePlanCode from the availability response and its response will contain:
<BookingCode ExpirationDate = "2014-03-26T10:31:44.393171+01:00">3WCCdKrNDmJB1QQRyLq2X3CEfLuy1bKgHGE61..............vdSTXtO35YtBgquA6m6U</BookingCode>
<Warnings>
<Warning Code = "warnCheckNotPossible" Text = "Price review is not possible"/>
</Warnings>
<FlightRequiredFields>
<FlightBooking>
<Paxes>
<Pax IdPax = "1">
<Document Type = "PAS" ExpirationDate = "2024-04-29T00:00:00+02:00"> Pax Document Number </Document>
<Name>Holder Name</Name>
<Surname>Holder Surname</Surname>
<Age>30</Age>
<BornDate>1989-04-29</BornDate>
<PostalCode>Holder PostalCode</PostalCode>
<Nationality>Pax Nationality</Nationality>
</Pax>
</Paxes>
<Holder>
<RelPax IdPax = "1"/>
</Holder>
<Elements>
<FlightElement>
<BookingCode>/+vmaFq4bJEvipKFyDWsJVENHILXN8+Sj........v4cCuZPknQPQWH5U1d2VdKGP1rHgo/J6gOpOn4afpuAxi4Y=</BookingCode>
<RelPaxesDist>
<RelPaxDist>
<RelPaxes>
<RelPax IdPax = "1"/>
</RelPaxes>
</RelPaxDist>
</RelPaxesDist>
</FlightElement>
</Elements>
</FlightBooking>
</FlightRequiredFields>
NOTE: Keep in mind that the required fields feature default values, meaning that you have to replace the default values with the preferred information.
<CancellationPolicy CurrencyCode = "USD">
<FirstDayCostCancellation Hour = "00:00">2019-04-29</FirstDayCostCancellation>
<Description>* From now until the start date of travel : 100.00 % of expenses</Description>
<PolicyRules>
<Rule From = "0" DateFrom = "2019-04-29" DateFromHour = "00:00" Type = "R" FixedPrice = "0" PercentPrice = "100" Nights = "0" ApplicationTypeNights = "Average"/>
</PolicyRules>
</CancellationPolicy>
The last step in the booking flow is the FlightBooking transaction. This transaction validates all of the information retrieved from all of the previous transactions and confirms the booking. Some important information we will check are:
Finally, we ask you to check the value of the Status property from the booking response. You should not consider a booking confirmed without reading its status as it might be returned as cancelled (CaC or Can) or on request (Pre or PDI) if there is any problem on the booking confirmation.