APIv3 - Booking with Seat Selection
This article will outline the process and request/response structure around setting seat assignments via the booking request in APIv3. It will assume the user is already comfortable with getting travel options in APIv3 and using the response to populate the booking request.
Step 1: Find a seat to assign
As of our 16.12 release, we now support seat charge quotation within the seat map response. The request to use for this is located under the booking service called GetBookingSeatMaps. From the travel options response, pick a travel option that works for the leg of travel you are trying to book. Once you have picked an option, take the fare class identifier as well as all applicable flights and pass it to the GetBookingSeatMaps request. Here is a worked example:
1) Get travel options. Here is a snippet of the portion of the response I will use to populate the GetBookingSeatMaps request:
<b:Option> <b:Legs> <b:LegOption> <b:DepartureDate>2016-11-14T00:00:00</b:DepartureDate> <b:FareOptions> <b:Adultfares> <b:FareOption> <b:Advancebooking>1</b:Advancebooking> <b:ChangesAllowed>false</b:ChangesAllowed> <b:Currency xmlns:c="http://schemas.datacontract.org/2004/07/InteliSys.Amelia"> <c:Abbreviation>USD</c:Abbreviation> <c:Description>US Dollar</c:Description> <c:ExchangeRate>1.64999997615814</c:ExchangeRate> <c:Format>#,##0.00</c:Format> </b:Currency> <b:Description>One day in advance</b:Description> <b:DiscountFare>575.95</b:DiscountFare> <b:DiscountFareTaxes>86.39</b:DiscountFareTaxes> <b:DiscountFareTotal>662.34</b:DiscountFareTotal> <b:FareCategory>B</b:FareCategory> <b:FareCategoryFreeTextRules/> <b:FareClass>BOW</b:FareClass> <b:FareClassFreeTextRules/> <b:FareClassStatus>C</b:FareClassStatus> <b:FareCost>575.95</b:FareCost> <b:FareTaxComponents xmlns:c="http://schemas.datacontract.org/2004/07/InteliSys.Amelia"> <c:TaxComponent> <c:Amount>86.39</c:Amount> <c:Name>HST 05</c:Name> </c:TaxComponent> </b:FareTaxComponents> <b:FareTaxes>86.39</b:FareTaxes> <b:IsDefaultFare>true</b:IsDefaultFare> <b:IsRefundable>true</b:IsRefundable> <b:MaxStayOver>0</b:MaxStayOver> <b:MinStayOver>0</b:MinStayOver> <b:OnewayReturn>OnewayFare</b:OnewayReturn> <b:Option>1</b:Option> <b:PromoCodeID>-1</b:PromoCodeID> <b:PromoCodeSuffixID>-1</b:PromoCodeSuffixID> <b:PromoFlag/> <b:ReasonInvalid/> <b:Restricted>true</b:Restricted> <b:Sale>true</b:Sale> <b:SeatCharge>0</b:SeatCharge> <b:SeatChargeTax>0</b:SeatChargeTax> <b:SeatChargeTotal>0</b:SeatChargeTotal> <b:SeatSale>true</b:SeatSale> <b:SeatTaxComponents xmlns:c="http://schemas.datacontract.org/2004/07/InteliSys.Amelia"/> <b:SeatsAvailable>16</b:SeatsAvailable> <b:Totalfare>662.34</b:Totalfare> <b:Valid>true</b:Valid> <b:Waitlist>false</b:Waitlist> </b:FareOption> <b:FareOption> <b:Advancebooking>0</b:Advancebooking> <b:ChangesAllowed>false</b:ChangesAllowed> <b:Currency xmlns:c="http://schemas.datacontract.org/2004/07/InteliSys.Amelia"> <c:Abbreviation>USD</c:Abbreviation> <c:Description>US Dollar</c:Description> <c:ExchangeRate>1.64999997615814</c:ExchangeRate> <c:Format>#,##0.00</c:Format> </b:Currency> <b:Description>Full Fare</b:Description> <b:DiscountFare>874.29</b:DiscountFare> <b:DiscountFareTaxes>131.14</b:DiscountFareTaxes> <b:DiscountFareTotal>1005.43</b:DiscountFareTotal> <b:FareCategory>Y</b:FareCategory> <b:FareCategoryFreeTextRules/> <b:FareClass>Y-Fare</b:FareClass> <b:FareClassFreeTextRules/> <b:FareClassStatus>C</b:FareClassStatus> <b:FareCost>874.29</b:FareCost> <b:FareTaxComponents xmlns:c="http://schemas.datacontract.org/2004/07/InteliSys.Amelia"> <c:TaxComponent> <c:Amount>131.14</c:Amount> <c:Name>HST 05</c:Name> </c:TaxComponent> </b:FareTaxComponents> <b:FareTaxes>131.14</b:FareTaxes> <b:IsDefaultFare>true</b:IsDefaultFare> <b:IsRefundable>true</b:IsRefundable> <b:MaxStayOver>0</b:MaxStayOver> <b:MinStayOver>0</b:MinStayOver> <b:OnewayReturn>OnewayFare</b:OnewayReturn> <b:Option>2</b:Option> <b:PromoCodeID>-1</b:PromoCodeID> <b:PromoCodeSuffixID>-1</b:PromoCodeSuffixID> <b:PromoFlag/> <b:ReasonInvalid/> <b:Restricted>false</b:Restricted> <b:Sale>false</b:Sale> <b:SeatCharge>0</b:SeatCharge> <b:SeatChargeTax>0</b:SeatChargeTax> <b:SeatChargeTotal>0</b:SeatChargeTotal> <b:SeatSale>false</b:SeatSale> <b:SeatTaxComponents xmlns:c="http://schemas.datacontract.org/2004/07/InteliSys.Amelia"/> <b:SeatsAvailable>16</b:SeatsAvailable> <b:Totalfare>1005.43</b:Totalfare> <b:Valid>true</b:Valid> <b:Waitlist>true</b:Waitlist> </b:FareOption> </b:Adultfares> <b:Childfares/> </b:FareOptions> <b:NumberOfStops>2</b:NumberOfStops> <b:RouteHours>0</b:RouteHours> <b:SegmentOptions> <b:SegmentOption> <b:Flight xmlns:c="http://schemas.datacontract.org/2004/07/InteliSys.Amelia"> <c:Aircraft> <c:ModelIdent>BE1</c:ModelIdent> <c:ModelName>BECH19D</c:ModelName> </c:Aircraft> <c:ArrivalAirport> <c:Code>YYY</c:Code> <c:Name>Some Airport</c:Name> </c:ArrivalAirport> <c:DepartureAirport> <c:Code>XXX</c:Code> <c:Name>Some Airport</c:Name> </c:DepartureAirport> <c:ETA>2016-11-14T13:45:00</c:ETA> <c:ETALocal>2016-11-14T10:15:00</c:ETALocal> <c:ETD>2016-11-14T12:30:00</c:ETD> <c:ETDLocal>2016-11-14T08:30:00</c:ETDLocal> <c:Number>YY100</c:Number> </b:Flight> <b:Quality>A/C-CHG 0</b:Quality> <b:SeatAllocation>16</b:SeatAllocation> <b:Segdist>552.12</b:Segdist> </b:SegmentOption> <b:SegmentOption> <b:Flight xmlns:c="http://schemas.datacontract.org/2004/07/InteliSys.Amelia"> <c:Aircraft> <c:ModelIdent>BE1</c:ModelIdent> <c:ModelName>BECH19D</c:ModelName> </c:Aircraft> <c:ArrivalAirport> <c:Code>ZZZ</c:Code> <c:Name>Some Airport</c:Name> </c:ArrivalAirport> <c:DepartureAirport> <c:Code>YYY</c:Code> <c:Name>Some Airport</c:Name> </c:DepartureAirport> <c:ETA>2016-11-14T15:05:00</c:ETA> <c:ETALocal>2016-11-14T11:35:00</c:ETALocal> <c:ETD>2016-11-14T14:05:00</c:ETD> <c:ETDLocal>2016-11-14T10:35:00</c:ETDLocal> <c:Number>YY100</c:Number> </b:Flight> <b:Quality>A/C-CHG 0</b:Quality> <b:SeatAllocation>16</b:SeatAllocation> <b:Segdist>552.12</b:Segdist> </b:SegmentOption> </b:SegmentOptions> <b:Surcharges> <b:Surcharge> <b:AllToAllPassengers>true</b:AllToAllPassengers> <b:Amount>33</b:Amount> <b:ApplyInfantChargeFlag>N</b:ApplyInfantChargeFlag> <b:ApplyToAdult>true</b:ApplyToAdult> <b:ApplyToChild>true</b:ApplyToChild> <b:ApplyToInfant>false</b:ApplyToInfant> <b:ChargeTypeID>1</b:ChargeTypeID> <b:Description>Airport Fee</b:Description> <b:TaxComponents xmlns:c="http://schemas.datacontract.org/2004/07/InteliSys.Amelia"> <c:TaxComponent> <c:Amount>4.95</c:Amount> <c:Name>HST 05</c:Name> </c:TaxComponent> </b:TaxComponents> <b:Taxes>4.95</b:Taxes> <b:Total>37.95</b:Total> </b:Surcharge> <b:Surcharge> <b:AllToAllPassengers>true</b:AllToAllPassengers> <b:Amount>11.75</b:Amount> <b:ApplyInfantChargeFlag>N</b:ApplyInfantChargeFlag> <b:ApplyToAdult>true</b:ApplyToAdult> <b:ApplyToChild>true</b:ApplyToChild> <b:ApplyToInfant>false</b:ApplyToInfant> <b:ChargeTypeID>5</b:ChargeTypeID> <b:Description>Security Fee</b:Description> <b:TaxComponents xmlns:c="http://schemas.datacontract.org/2004/07/InteliSys.Amelia"> <c:TaxComponent> <c:Amount>1.76</c:Amount> <c:Name>HST 05</c:Name> </c:TaxComponent> </b:TaxComponents> <b:Taxes>1.76</b:Taxes> <b:Total>13.51</b:Total> </b:Surcharge> </b:Surcharges> </b:LegOption> </b:Legs> <b:Number>1</b:Number> </b:Option>
For this example, I'll choose Y-Fare. Where this is a connecting flight (two flights with the same flight number) I will need to supply both flights to the GetBookingSeatMaps request.
2) Pass the necessary information to the GetBookingSeatMaps request:
<soapenv:Body> <tem:GetBookingSeatMaps> <tem:request> <int:CurrencyCode/> <int:FareClass>Y-Fare</int:FareClass> <int:FlightList> <int1:Flight> <int1:ArrivalAirport> <int1:Code>YYY</int1:Code> </int1:ArrivalAirport> <int1:DepartureAirport> <int1:Code>XXX</int1:Code> </int1:DepartureAirport> <int1:ETDLocal>2016-11-03T08:30:00</int1:ETDLocal> <int1:Number>YY100</int1:Number> </int1:Flight> <int1:Flight> <int1:ArrivalAirport> <int1:Code>ZZZ</int1:Code> </int1:ArrivalAirport> <int1:DepartureAirport> <int1:Code>YYY</int1:Code> </int1:DepartureAirport> <int1:ETDLocal>2016-11-03T08:30:00</int1:ETDLocal> <int1:Number>YY100</int1:Number> </int1:Flight> </int:FlightList> </tem:request> </tem:GetBookingSeatMaps> </soapenv:Body>
Things to consider
- If no currency code is passed in the request, the default currency will be used to populate the response totals.
The response of the above operation will contain a list of seats and the charges associated with them. Here is a snippet of that response:
<b:FlightSeat> <b:Availability>Available</b:Availability> <b:BlockReason i:nil="true"/> <b:Flags> <b:SeatFlags>WindowSeat</b:SeatFlags> <b:SeatFlags>Seat</b:SeatFlags> </b:Flags> <b:RowNumber>1</b:RowNumber> <b:SeatNumber>A</b:SeatNumber> <b:Charges> <b:SeatCharge> <b:BookingCodeSeatCharge>10</b:BookingCodeSeatCharge> <b:Currency> <b:Abbreviation>USD</b:Abbreviation> <b:Description>US dollars</b:Description> <b:ExchangeRate>1</b:ExchangeRate> <b:Format>$#,##0.00</b:Format> </b:Currency> <b:SeatTypeCharge>10</b:SeatTypeCharge> <b:TaxAmountTotal>1</b:TaxAmountTotal> <b:TaxComponents> <b:TaxComponent> <b:Amount>1</b:Amount> <b:Name>Services</b:Name> </b:TaxComponent> </b:TaxComponents> <b:TotalSeatCost>21</b:TotalSeatCost> </b:SeatCharge> </b:Charges> </b:FlightSeat>
- Seat charges have multiple components. The total seat cost is a combination of the seat type charge, the booking code charge, and any applicable taxes.
- There are 4 possibilities for seat type charges depending on the fare chosen:
- Booking code charges only
- Seat type charges only
- Both booking code and seat type charges
- Neither (No charges for seat assignment)
Step 2: Select a seat to set
I'll choose seat 1A for the following to keep things simple. In order to tie this seat to a passenger the following must be present under the <BookingPassenger> node for the passenger you wish to seat:
<int1:BookingPassenger> <int1:AgeCategory>Adult</int1:AgeCategory> <int1:DateOfBirth>1989-12-12</int1:DateOfBirth> <int1:DestinationTelephone>1234567891</int1:DestinationTelephone> <int1:Firstname>nigel</int1:Firstname> <int1:Gender>Male</int1:Gender> <int1:Lastname>Martin</int1:Lastname> <int1:Middlename>G</int1:Middlename> <int1:SeatSelections> <int1:FlightSeatAssignmentPax> <int1:RowNumber>1</int1:RowNumber> <int1:SeatNumber>A</int1:SeatNumber> <int1:Flights> <int1:Flight> <int1:ArrivalAirport> <int1:Code>XXX</int1:Code> </int1:ArrivalAirport> <int1:DepartureAirport> <int1:Code>YYY</int1:Code> </int1:DepartureAirport> <int1:ETDLocal>2016-11-11T18:00:00</int1:ETDLocal> <int1:Number>YY100</int1:Number> </int1:Flight> <int1:Flight> <int1:ArrivalAirport> <int1:Code>ZZZ</int1:Code> </int1:ArrivalAirport> <int1:DepartureAirport> <int1:Code>XXX</int1:Code> </int1:DepartureAirport> <int1:ETDLocal>2016-11-11T23:00:00</int1:ETDLocal> <int1:Number>YY100</int1:Number> </int1:Flight> </int1:Flights> </int1:FlightSeatAssignmentPax> </int1:SeatSelections> <int1:Title>Mr</int1:Title> </int1:BookingPassenger>
Things to consider
- Because the example I chose was a connecting flight, I have to set both seats. Failing to do so will result in errors.
Step 3: Book the reservation
Now that the XML is properly formatted, we're ready to submit the request. Here is a sample of the full booking request with the seat selections:
<int:Query> <int1:Legs> <int1:BookingLeg> <int1:AdultFares> <int1:BookingClassCode>Y</int1:BookingClassCode> <int1:CurrencyCode>USD</int1:CurrencyCode> <int1:FareCode>Y-Fare</int1:FareCode> <int1:PaxCount>2</int1:PaxCount> <int1:TotalCost>1000.00</int1:TotalCost> </int1:AdultFares> <int1:Segments> <int1:BookingSegment> <int1:ArrivalAirportCode>YYY</int1:ArrivalAirportCode> <int1:DepartureAirportCode>XXX</int1:DepartureAirportCode> <int1:ETALocal>2016-11-11T19:20:00</int1:ETALocal> <int1:ETDLocal>2016-11-11T18:00:00</int1:ETDLocal> <int1:FlightCode>YY100</int1:FlightCode> </int1:BookingSegment> <int1:BookingSegment> <int1:ArrivalAirportCode>ZZZ</int1:ArrivalAirportCode> <int1:DepartureAirportCode>YYY</int1:DepartureAirportCode> <int1:ETALocal>2016-11-11T21:20:00</int1:ETALocal> <int1:ETDLocal>2016-11-11T20:00:00</int1:ETDLocal> <int1:FlightCode>YY100</int1:FlightCode> </int1:BookingSegment> </int1:Segments> </int1:BookingLeg> </int1:Legs> <int1:Passengers> <int1:BookingPassenger> <int1:AgeCategory>Adult</int1:AgeCategory> <int1:DateOfBirth>1989-12-12</int1:DateOfBirth> <int1:DestinationTelephone>1234567891</int1:DestinationTelephone> <int1:Firstname>nigel</int1:Firstname> <int1:Gender>Male</int1:Gender> <int1:Lastname>Martin</int1:Lastname> <int1:Middlename>M</int1:Middlename> <int1:SeatSelections> <int1:FlightSeatAssignmentPax> <int1:RowNumber>1</int1:RowNumber> <int1:SeatNumber>A</int1:SeatNumber> <int1:Flights> <int1:Flight> <int1:ArrivalAirport> <int1:Code>YYY</int1:Code> </int1:ArrivalAirport> <int1:DepartureAirport> <int1:Code>XXX</int1:Code> </int1:DepartureAirport> <int1:ETDLocal>2016-11-11T18:00:00</int1:ETDLocal> <int1:Number>YY100</int1:Number> </int1:Flight> <int1:Flight> <int1:ArrivalAirport> <int1:Code>ZZZ</int1:Code> </int1:ArrivalAirport> <int1:DepartureAirport> <int1:Code>YYY</int1:Code> </int1:DepartureAirport> <int1:ETDLocal>2016-11-11T18:00:00</int1:ETDLocal> <int1:Number>YY100</int1:Number> </int1:Flight> </int1:Flights> </int1:FlightSeatAssignmentPax> </int1:SeatSelections> <int1:Title>Mr</int1:Title> </int1:BookingPassenger> </int1:Passengers> <int1:Payment> <int1:Amount>1000.00</int1:Amount> <int1:CurrencyCode>USD</int1:CurrencyCode> <int1:PaymentType>Hold</int1:PaymentType> <int1:ProcessingFee>0</int1:ProcessingFee> <int1:ProcessingFeeTax>0</int1:ProcessingFeeTax> </int1:Payment> </int:Query>
Things to consider
- The total seat charge quoted in the seat map response must be taken into consideration while calculating the total for the reservation. Not including these charges as well as any applicable surcharges will cause the booking request to fail.
- Always run GetBookingSeatMaps to view which seats are available to be set. Attempting to set a seat that either does not exist on the seat map or one that is already taken/blocked will cause unexpected results.
If a segment contains multiple flights on different aircraft, a separate <FlightSeatAssignmentPax> entry must be supplied for each.
Example:
We'll use the following fictional segment: YY100 - YY100 - YY200
The <BookingPassenger> node would look as follows:<int1:BookingPassenger> <int1:AgeCategory>Adult</int1:AgeCategory> <int1:DateOfBirth>1989-12-12</int1:DateOfBirth> <int1:DestinationTelephone>1234567891</int1:DestinationTelephone> <int1:Firstname>nigel</int1:Firstname> <int1:Gender>Male</int1:Gender> <int1:Lastname>Martin</int1:Lastname> <int1:Middlename>M</int1:Middlename> <int1:SeatSelections> <int1:FlightSeatAssignmentPax> <int1:RowNumber>1</int1:RowNumber> <int1:SeatNumber>A</int1:SeatNumber> <int1:Flights> <int1:Flight> <int1:ArrivalAirport> <int1:Code>YYY</int1:Code> </int1:ArrivalAirport> <int1:DepartureAirport> <int1:Code>XXX</int1:Code> </int1:DepartureAirport> <int1:ETDLocal>2016-11-11T18:00:00</int1:ETDLocal> <int1:Number>YY100</int1:Number> </int1:Flight> <int1:Flight> <int1:ArrivalAirport> <int1:Code>ZZZ</int1:Code> </int1:ArrivalAirport> <int1:DepartureAirport> <int1:Code>YYY</int1:Code> </int1:DepartureAirport> <int1:ETDLocal>2016-11-11T18:00:00</int1:ETDLocal> <int1:Number>YY100</int1:Number> </int1:Flight> </int1:Flights> </int1:FlightSeatAssignmentPax> <int1:FlightSeatAssignmentPax> <int1:RowNumber>5</int1:RowNumber> <int1:SeatNumber>A</int1:SeatNumber> <int1:Flights> <int1:Flight> <int1:ArrivalAirport> <int1:Code>YYY</int1:Code> </int1:ArrivalAirport> <int1:DepartureAirport> <int1:Code>XXX</int1:Code> </int1:DepartureAirport> <int1:ETDLocal>2016-11-11T18:00:00</int1:ETDLocal> <int1:Number>YY200</int1:Number> </int1:Flight> </int1:Flights> </int1:FlightSeatAssignmentPax> </int1:SeatSelections> <int1:Title>Mr</int1:Title> </int1:BookingPassenger>
Step 4: Review the response
The <InvoiceSegment> node under the <Segments> node in the BookReservation response will show the seats set for each segment:
<b:Segments> <b:InvoiceSegment> <b:AircraftIdent>BE1</b:AircraftIdent> <b:AircraftName>BECH19D</b:AircraftName> <b:ArrivalAirportCode>YYY</b:ArrivalAirportCode> <b:ArrivalAirportName>Some airport</b:ArrivalAirportName> <b:ArrivalLocal>2016-11-14T10:15:00</b:ArrivalLocal> <b:ArrivalZulu>2016-11-14T13:45:00</b:ArrivalZulu> <b:DepartureAirportCode>XXX</b:DepartureAirportCode> <b:DepartureAirportName>Some airport</b:DepartureAirportName> <b:DepartureLocal>2016-11-14T08:30:00</b:DepartureLocal> <b:DepartureZulu>2016-11-14T12:30:00</b:DepartureZulu> <b:Flight>YY100</b:Flight> <b:Gate/> <b:PaxList> <b:InvoiceSegmentPax> <b:Balance>0</b:Balance> <b:BoardingPassNumber/> <b:Charges>0</b:Charges> <b:CheckinStatus>Not Checked-in</b:CheckinStatus> <b:FareIdent>Y-Fare</b:FareIdent> <b:Firstname>nigel</b:Firstname> <b:Lastname>Martin</b:Lastname> <b:Middlename>G</b:Middlename> <b:PaxGroupID>123</b:PaxGroupID> <b:Payments>0</b:Payments> <b:Refunds>0</b:Refunds> <b:RowNumber>1</b:RowNumber> <b:SeatNumber>A</b:SeatNumber> <b:StatusCode>Confirmed</b:StatusCode> </b:InvoiceSegmentPax> </b:PaxList> <b:ReportToGateMinutes>60</b:ReportToGateMinutes> <b:ResStatus>Confirmed</b:ResStatus> <b:SkedDetailStatus>Y</b:SkedDetailStatus> </b:InvoiceSegment> <b:InvoiceSegment> <b:AircraftIdent>BE1</b:AircraftIdent> <b:AircraftName>BECH19D</b:AircraftName> <b:ArrivalAirportCode>ZZZ</b:ArrivalAirportCode> <b:ArrivalAirportName>Some airport</b:ArrivalAirportName> <b:ArrivalLocal>2016-11-14T11:35:00</b:ArrivalLocal> <b:ArrivalZulu>2016-11-14T15:05:00</b:ArrivalZulu> <b:DepartureAirportCode>YYY</b:DepartureAirportCode> <b:DepartureAirportName>Some airport</b:DepartureAirportName> <b:DepartureLocal>2016-11-14T10:35:00</b:DepartureLocal> <b:DepartureZulu>2016-11-14T14:05:00</b:DepartureZulu> <b:Flight>YY100</b:Flight> <b:Gate/> <b:PaxList> <b:InvoiceSegmentPax> <b:Balance>0</b:Balance> <b:BoardingPassNumber/> <b:Charges>0</b:Charges> <b:CheckinStatus>Not Checked-in</b:CheckinStatus> <b:FareIdent>Y-Fare</b:FareIdent> <b:Firstname>nigel</b:Firstname> <b:Lastname>Martin</b:Lastname> <b:Middlename>G</b:Middlename> <b:PaxGroupID>123</b:PaxGroupID> <b:Payments>0</b:Payments> <b:Refunds>0</b:Refunds> <b:RowNumber>1</b:RowNumber> <b:SeatNumber>A</b:SeatNumber> <b:StatusCode>Confirmed</b:StatusCode> </b:InvoiceSegmentPax> </b:PaxList> <b:ReportToGateMinutes>60</b:ReportToGateMinutes> <b:ResStatus>Confirmed</b:ResStatus> <b:SkedDetailStatus>Y</b:SkedDetailStatus> </b:InvoiceSegment> </b:Segments>
For the flight in this example, you can see seat 1A is booked straight through so the request has successfully set the seats.
Other possible scenarios
There are far more complex scenarios involving multi-stop flights and multiple passengers. Here is a sample of how the booking request would look for 2 passengers on a flight with a return trip:
<int:Query> <int1:Legs> <int1:BookingLeg> <int1:AdultFares> <int1:BookingClassCode>Y</int1:BookingClassCode> <int1:CurrencyCode>USD</int1:CurrencyCode> <int1:FareCode>Y</int1:FareCode> <int1:PaxCount>2</int1:PaxCount> <int1:TotalCost>110</int1:TotalCost> </int1:AdultFares> <int1:Segments> <int1:BookingSegment> <int1:ArrivalAirportCode>YHZ</int1:ArrivalAirportCode> <int1:DepartureAirportCode>YQM</int1:DepartureAirportCode> <int1:ETALocal>2016-11-14T05:00:00</int1:ETALocal> <int1:ETDLocal>2016-11-14T04:00:00</int1:ETDLocal> <int1:FlightCode>YY256</int1:FlightCode> </int1:BookingSegment> <int1:BookingSegment> <int1:ArrivalAirportCode>YUL</int1:ArrivalAirportCode> <int1:DepartureAirportCode>YHZ</int1:DepartureAirportCode> <int1:ETALocal>2016-11-14T05:55:00</int1:ETALocal> <int1:ETDLocal>2016-11-14T05:20:00</int1:ETDLocal> <int1:FlightCode>YY836</int1:FlightCode> </int1:BookingSegment> </int1:Segments> </int1:BookingLeg> <int1:BookingLeg> <int1:AdultFares> <int1:BookingClassCode>Y</int1:BookingClassCode> <int1:CurrencyCode>USD</int1:CurrencyCode> <int1:FareCode>Y</int1:FareCode> <int1:PaxCount>2</int1:PaxCount> <int1:TotalCost>110</int1:TotalCost> </int1:AdultFares> <int1:Segments> <int1:BookingSegment> <int1:ArrivalAirportCode>YQM</int1:ArrivalAirportCode> <int1:DepartureAirportCode>YUL</int1:DepartureAirportCode> <int1:ETALocal>2016-11-20T12:00:00</int1:ETALocal> <int1:ETDLocal>2016-11-20T10:00:00</int1:ETDLocal> <int1:FlightCode>YY101010</int1:FlightCode> </int1:BookingSegment> </int1:Segments> </int1:BookingLeg> </int1:Legs> <int1:Passengers> <int1:BookingPassenger> <int1:AgeCategory>Adult</int1:AgeCategory> <int1:DateOfBirth>1989-12-12</int1:DateOfBirth> <int1:DestinationTelephone>1234567891</int1:DestinationTelephone> <int1:Firstname>nigel</int1:Firstname> <int1:Gender>Male</int1:Gender> <int1:Lastname>Martin</int1:Lastname> <int1:Middlename>M</int1:Middlename> <int1:SeatSelections> <int1:FlightSeatAssignmentPax> <int1:RowNumber>6</int1:RowNumber> <int1:SeatNumber>A</int1:SeatNumber> <int1:Flights> <int1:Flight> <int1:ArrivalAirport> <int1:Code>YHZ</int1:Code> </int1:ArrivalAirport> <int1:DepartureAirport> <int1:Code>YQM</int1:Code> </int1:DepartureAirport> <int1:ETDLocal>2016-11-14T04:00:00</int1:ETDLocal> <int1:Number>YY256</int1:Number> </int1:Flight> <int1:Flight> <int1:ArrivalAirport> <int1:Code>YUL</int1:Code> </int1:ArrivalAirport> <int1:DepartureAirport> <int1:Code>YHZ</int1:Code> </int1:DepartureAirport> <int1:ETDLocal>2016-11-14T05:20:00</int1:ETDLocal> <int1:Number>YY836</int1:Number> </int1:Flight> </int1:Flights> </int1:FlightSeatAssignmentPax> <int1:FlightSeatAssignmentPax> <int1:RowNumber>6</int1:RowNumber> <int1:SeatNumber>A</int1:SeatNumber> <int1:Flights> <int1:Flight> <int1:ArrivalAirport> <int1:Code>YQM</int1:Code> </int1:ArrivalAirport> <int1:DepartureAirport> <int1:Code>YUL</int1:Code> </int1:DepartureAirport> <int1:ETDLocal>2016-11-20T10:00:00</int1:ETDLocal> <int1:Number>YY101010</int1:Number> </int1:Flight> </int1:Flights> </int1:FlightSeatAssignmentPax> </int1:SeatSelections> <int1:Title>Mr</int1:Title> </int1:BookingPassenger> <int1:BookingPassenger> <int1:AgeCategory>Adult</int1:AgeCategory> <int1:DateOfBirth>1989-12-12</int1:DateOfBirth> <int1:DestinationTelephone>1234567891</int1:DestinationTelephone> <int1:Firstname>nolan</int1:Firstname> <int1:Gender>Male</int1:Gender> <int1:Lastname>Martin</int1:Lastname> <int1:Middlename>M</int1:Middlename> <int1:SeatSelections> <int1:FlightSeatAssignmentPax> <int1:RowNumber>7</int1:RowNumber> <int1:SeatNumber>A</int1:SeatNumber> <int1:Flights> <int1:Flight> <int1:ArrivalAirport> <int1:Code>YHZ</int1:Code> </int1:ArrivalAirport> <int1:DepartureAirport> <int1:Code>YQM</int1:Code> </int1:DepartureAirport> <int1:ETDLocal>2016-11-14T04:00:00</int1:ETDLocal> <int1:Number>YY256</int1:Number> </int1:Flight> <int1:Flight> <int1:ArrivalAirport> <int1:Code>YUL</int1:Code> </int1:ArrivalAirport> <int1:DepartureAirport> <int1:Code>YHZ</int1:Code> </int1:DepartureAirport> <int1:ETDLocal>2016-11-14T05:20:00</int1:ETDLocal> <int1:Number>YY836</int1:Number> </int1:Flight> </int1:Flights> </int1:FlightSeatAssignmentPax> <int1:FlightSeatAssignmentPax> <int1:RowNumber>7</int1:RowNumber> <int1:SeatNumber>A</int1:SeatNumber> <int1:Flights> <int1:Flight> <int1:ArrivalAirport> <int1:Code>YQM</int1:Code> </int1:ArrivalAirport> <int1:DepartureAirport> <int1:Code>YUL</int1:Code> </int1:DepartureAirport> <int1:ETDLocal>2016-11-20T10:00:00</int1:ETDLocal> <int1:Number>YY101010</int1:Number> </int1:Flight> </int1:Flights> </int1:FlightSeatAssignmentPax> </int1:SeatSelections> <int1:Title>Mr</int1:Title> </int1:BookingPassenger> </int1:Passengers> <int1:Payment> <int1:Amount>756.88</int1:Amount> <int1:CurrencyCode>USD</int1:CurrencyCode> <int1:PaymentType>Hold</int1:PaymentType> <int1:ProcessingFee>0</int1:ProcessingFee> <int1:ProcessingFeeTax>0</int1:ProcessingFeeTax> </int1:Payment> </int:Query>
Related articles