Release Notes 20.3
Schema Version and Retirement
The latest schema, version 52.0, released with Universal API 22.3.
Important!
- Schema version 50 re-released on 03 June 2020 with after initially released with Universal API Release 20.2.2 on 18 May 2020.
- Schema versions 32 (released with 15.2), 33 (released with 15.3), 34 (released with 15.4), 35 (released with 15.5), and 36 (released with 16.1) are set to retire 03 December 2020.
- After the retirement date, transactions that are sent using retired schema versions will fail.
Functional Updates
Release 20.3 indicates content for the upcoming releases.
Update | Provider | Detailed Description | Associated Transactions | Schema Change | Schema Location/XPATH |
---|---|---|---|---|---|
Defect Fixes | |||||
For details, see:
|
|||||
20.3.4 | |||||
Private fares response improves for Shop and Fare Rules | 1G, 1V |
Previously, the error, "RULE NOT FOUND - VERIFY CARRIER" messages often returned in the AirFareRules response instead of the associated rules for Private Fares. This enhancement improves the Fare Rule response so that the error message returns less often, and more rules are returned (e.g., the error message would be received when the matching rule/tariff number is not found). This assists in making an educated decision when selecting fares for booking, and reduces need for a manual process where individuals must validate fare rules via terminal entries versus an automated validation of rules.
|
No |
Air v50.0 AirFareRulesRsp/FareRule |
|
20.3.3 | |||||
Automatically append mandatory SSR for ancillaries at time of booking and fulfillment. |
1G |
Previously, if the @SSRFreeText was not in the booking and/or fulfillment request, that information would not return in the response message, and potentially the booking would fail. This enhancement automatically adds the mandatory @SSRFreeText for the ancillary in the booking so that the ancillary is booked successfully, in both Air Booking and Air Merchandising Fulfillment. This results in a reduced risk of ancillary book requests from being rejected. For example, if an Air Create Reservation request contains an ancillary (e.g. baggage) with an Airline Code and Service Sub-Code, but no SSR Free Text, Universal API automatically appends the mandatory SSR to the booking. This enhancement was a limited-release feature in Universal API 20.2.4. With this release, this functionality is available to all customers. Notes:
|
No |
Universal.xsd OptionalServices/OptionalService @SSRFreeText is automatically appended in:
And returns in UniversalRecord/AirReservation/OptionalServices/OptionalService @SSRFreeText in:
/SSR @FreeText also returns in secondary SSRs like XBAG. For example,
|
|
20.3.2 | |||||
LFS and Price adds ticketing code information to apply commission | 1G |
Previously, for Low Fare Shop and Air Price, the response only included the FareBasisCode, which Online Travel Agencies (OTA's) could use to apply for correct commissions with aggregators. Depending on how fares were filed, this information was not included in Fare Basis Code. This enhancement populates ticketing codes for base fares by adding TicketingCode @Value to the Low Fare Shopping AirPricePoint and AirPricing Solution, and Air Price responses. This enables customers to apply commissions based on Ticket Code instead of Fare Basis Code. For example, <air:FareInfo Key="/TqiYEBAAA/BBCuDAAAAAA==" FareBasis="GAA0ACDN" PassengerTypeCode="CNN" Origin="DEN" Destination="ORD" EffectiveDate="2020-03-29T04:55:00.000+08:00" DepartureDate="2020-04-26" Amount="TWD1380" NegotiatedFare="false" NotValidAfter="2020-05-31"> <air:FareTicketDesignator Value="CH"/>
<air:TicketingCode Value="12345CH"/>
<air:BaggageAllowance> <air:NumberOfPieces>0</air:NumberOfPieces> <air:MaxWeight/> </air:BaggageAllowance> |
No |
Air v50 Add /AirPricingInfo/FareInfo/TicketingCode @Value to:
|
|
Ability to send sell city and/or ticketing city at time of Shop, Price and Book, and UR Modify. |
1G |
This enhancement provides the ability to identify and sell city/ticketing city at time of Shop, Price, Book and UR Modify. This helps to identify cross-boarder sales (e.g. price in PAR ticket in NYC) so that fares are accurate throughout a workflow (e.g. shop, price, book, UR Modify). This functionality is only supported for Galileo (1G). If sent via 1V, 1P, ACH, the warning message returns, “SellCity and TicketingCity modifier(s) not supported by this provider and have been ignored.” <AirPricingInfo ProviderCode="1G" Key="s8+gKLBAAA/B7eWQAAAAAA==" ApproximateTaxes="COP41300" Taxes="COP41300" EquivalentBasePrice="COP249000" ApproximateBasePrice="COP249000" ApproximateTotalPrice="COP290300" BasePrice="USD61.00" TotalPrice="COP290300" ... <AirPricingModifiers TicketingCity="PAR" SellCity="NYC"/> |
No |
Air v50.0 /AirPricingModifiers @SellCity and @TicketingCity can be used together in
|
|
Branded Fares: Support tax data for UPSELL fares in air price response
|
1P |
Previously, messaging customers (e.g. via Travelport Universal API) did not receive specific tax information or details for AirPrice transactions when the response returned Branded (Upsell) Fares. This enhancement returns accurate tax data for upsell fares in the Branded Fares price response, which provides accurate and competitive pricing for travelers. For example: <air:FareInfo Key="kuFeFNAZ3BKA26JAAAAAAA==" FareBasis="LEULGTP2" PassengerTypeCode="ADT" Origin="FRA" Destination="LHR" EffectiveDate="2020-07-13T02:57:01.454-04:00" Amount="USD22.00" TaxAmount="USD66.20"> <air:FareRuleKey FareInfoRef="kuFeFNAZ3BKA26JAAAAAAA==" ProviderCode="1P">bvk/j+2NJnka2m7ED2r2SNHXyx</air:FareRuleKey> <air:Brand Key="kuFeFNAZ3BKA26JAAAAAAA==" BrandID="461423" UpSellBrandFound="false" BrandTier="0002"/> </air:FareInfo> <air:BookingInfo BookingCode="L" CabinClass="Economy" FareInfoRef="kuFeFNAZ3BKA16JAAAAAAA==" SegmentRef="kuFeFNAZ3BKAm6JAAAAAAA==" HostTokenRef="kuFeFNAZ3BKAr6JAAAAAAA=="/> <air:BookingInfo BookingCode="L" CabinClass="Economy" FareInfoRef="kuFeFNAZ3BKA26JAAAAAAA==" SegmentRef="kuFeFNAZ3BKAo6JAAAAAAA==" HostTokenRef="kuFeFNAZ3BKAs6JAAAAAAA=="/> <air:TaxInfo Category="GB" Amount="USD16.40" Key="kuFeFNAZ3BKAu6JAAAAAAA=="/> <air:TaxInfo Category="UB" Amount="USD30.10" Key="kuFeFNAZ3BKAv6JAAAAAAA=="/> <air:TaxInfo Category="DE" Amount="USD11.30" Key="kuFeFNAZ3BKAw6JAAAAAAA=="/> <air:TaxInfo Category="OY" Amount="USD14.60" Key="kuFeFNAZ3BKAx6JAAAAAAA=="/> <air:TaxInfo Category="RA" Amount="USD30.10" Key="kuFeFNAZ3BKAy6JAAAAAAA=="/> <air:TaxInfo Category="YQ" Amount="USD20.40" Key="kuFeFNAZ3BKAz6JAAAAAAA=="/> <air:TaxInfo Category="YR" Amount="USD17.70" Key="kuFeFNAZ3BKA06JAAAAAAA=="/> |
No |
Air.xsd
|
|
Ability to return unmasked credit card information if configured. |
1G, 1V |
A new attribute @ReturnUnmaskedData is added to Universal Record Import and Universal Record Retrieve to allow customers to choose if they want to see Credit Card Details Masked or Un-Masked. This enhancement allows consolidators to have credit card data show unmasked, based on PCC or SON settings, in sessionless workflows. This ensures they can obtain credit card information via PCI secure environment and charge the card via their own payment system, as well as pass credit card data to automated backend systems while remaining PCI compliant. This enhancement allows for a more fluid workflow by not having to switch between sessioned and sessionless environments.
|
No |
Universal 49.0 @ReturnUnmaskedData is added to
|
|
Support baggage details on upsell fares during Air Price processing. |
1G, 1V |
Previously, baggage details in the Air Price response for upsell fares was inaccurate and incomplete. Customers were not receiving information on check-in bag fees (1st , 2nd, etc), carry-on information, and embargo information when sending an Air Price request with the Fare Family modifier. Additionally, when the AirPrice request did not include the Fare Family modifier, the baggage details in the first pricing solution was copied to the baggage details in second pricing solution instead of a seperate calculated baggage price. This enhancement displays the addition of baggage details associated to the upsell fares. This allows a way for Online Travel Agencies (OTA's) and Community-Based Tourism shops (CBT's) to show additional details about the fare to the traveler, which allows travelers to make a more informed choice and not leave the decision to an airline site. |
Air Price | No |
Air.xsd Correct baggage information returns in the following xPath during Air Price: AirPriceRsp/AirPriceResult/AirPricingSolution/AirPricingInfo/BaggageAllowances
|
1G, 1V |
For example, when the switch is on to receive the new details, the response looks similar to: <air:FareRuleCategoryType Value="RR2"> <air:CategoryDetails Name="UniqueKey" Value="0001"/> <air:CategoryDetails Name="QuoteNumber" Value="01"/> <air:CategoryDetails Name=" FareComponentNumber" Value="01"/> <air:CategoryDetails Name="SequenceNumber" Value="4999680"/> <air:CategoryDetails Name="Category" Value="5"/> <air:CategoryDetails Name="Tariff" Value="3"/> <air:CategoryDetails Name="Carrier" Value="DL"/> <air:CategoryDetails Name="RuleNumber" Value="A115"/> <air:VariableCategoryDetail Value="ADV"> <air:CategoryDetails Name="ResPeriodLastTOD" Value="7"/> <air:CategoryDetails Name="ResUnitLastTOD" Value="D"/> <air:CategoryDetails Name="TimeBeforeDept" Value="8"/> <air:VariableCategoryDetail Value="994"> // Table information (993, 994 and 995) <air:CategoryDetails Name="Table Reference" Value="00106428"/> <air:CategoryDetails Name="QuoteNumber" Value="01"/> <air:CategoryDetails Name="FareComponentNumber" Value="01"/> <air:CategoryDetails Name="ParentRecord3TableNumber" Value="00784370"/> <air:CategoryDetails Name="TicketingEffectiveDate" Value="14Mar2019"/> </air:VariableCategoryDetail > </air:VariableCategoryDetail> </air:FareRuleCategoryType > |
Fare Rules | No |
Air v50 Add /CategoryDetails and /VariableCategoryDetails to AirFareRulesRsp/FareRule/StructuredFareRules/FareRuleCategoryType/VariableCategoryDetails/ |
|
Request source currency for Vehicle Search Availability |
1G, 1V |
Previously, when sending a VehicleSearchAvailability request, the Galileo (1G) provider returned a converted rate based on the country of pick-up rather than returning the rate that the vendor provided. Since the rate was converted, it reflected as an approximate rate and did not return the @RateGuaranteed=”True”. This caused a problem for customers who did not display a rate on their website if it was not showing as guaranteed. This caused a loss of sales as certain locations such as MEX always returned with the Galileo (1G) converted currency rather than the guaranteed vendor currency. This enhancement provides the ability to send a VehicleSearchAvailability request with the modifier ReturnSourceCurrency="True" to return the rate details in vendor-filed currency. The modifier defaults to false. When the rate in the response reflects the currency that the vendor provides, it shows RateForPeriod rather than an approximate, and shows RateGuaranteed=”true” : <vehicle:Vehicle VendorCode="ZE" AirConditioning="true" TransmissionType="Automatic" VehicleClass="Fullsize" Category="Car" DoorCount="TwoToFourDoors" VendorLocationKey="hBexw7BAAA/BDSqJAAAAAA==" AcrissVehicleCode="FCAR"> <vehicle:VehicleRate RatePeriod="Daily" UnlimitedMileage="true" Units="KM" RateSource="M" RateAvailability="Available" RateCode="AFLXD1" RateCategory="Promotional" RateGuaranteed="true" DropOffChargesIncluded="true"> <vehicle:SupplierRate RateForPeriod="USD73.81" EstimatedTotalAmount="USD73.81" ExtraMileageCharge="USD0.00"/> <vehicle:RateHostIndicator InventoryToken="E" RateToken="XIMATXW92T"/> </vehicle:VehicleRate> |
Vehicle Search | No |
Vehicle.xsd VehicleSearchAvailabilityReq/VehicleSearchModifiers @ReturnSourceCurrency VehicleSearchAvailabilityRsp/Vehicle/VehicleRate
|
20.3.1 | |||||
Segment association in shop for IN tax on Indigo (6E) |
ACH |
This enhancement provides segment association for total taxes in a shop response for carrier 6E (IndiGo) so that flight options display Total Fare (Base + Total Tax) for both onward and return flight. This allows customers an easier migration from Low Cost Carrier 6E IndiGo direct connection because the content returned is more in-parity with the carriers website. The TaxInfoRef in the BookingInfo element contains the segment association for total taxes, in both AirPricePoints and AirPricingSolution, for direct flights and connecting flights where the respective FareInfo has an associated amount. For example: <air:BookingInfo BookingCode="X" BookingCount="3" CabinClass="Economy" FareInfoRef="cNAtiE/Y3BKA/DBAAAAAAA==" SegmentRef="cNAtiE/Y3BKAj+AAAAAAAA==" HostTokenRef="cNAtiE/Y3BKA3rBAAAAAAA==" TaxInfoRef="cNAtiE/Y3BKAdvBAAAAAAAAA"/> |
ACH | No |
Air.xsd Adding @TaxInfoRef in LowFareSearchRsp in the following xPaths:
|