Release Notes 20.3

Schema Version and Retirement

The latest schema, version 52.0, released with Universal API 22.3.

Important!

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.

 

Fair 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:

  • If the request contains SSR free text, it passes the value.
  • If the request is missing SSR text:
    • For booking and fulfillment, if the request contains AirlineCode and ServiceSubCode values, but no SSR free text, Universal API adds text from cached data.
    • If SSR free text is null, and Universal API does not have an associated value in cached data that correlates with AirlineCode, ServiceSubcode the request passes blank (null) data.
    • The response populates missing SSR text from the request to add in the fee text field in the response (if text is available) to accompany the explanation.
  • If Universal API appends an SSRFreeText value to a request, the appended SSRFreeText returns in the booking or fulfilment response.
    • As of this release, an appended SSR Free Text value is sent in the response in the OptionalService @SSRFreeText
    • /SSR @FreeText also returns in secondary SSRs like XBAG, in /UniversalRecord/BookingTraveler.

Air Booking

No

Universal.xsd

OptionalServices/OptionalService @SSRFreeText is automatically appended in:

  • AirCreateReservationReq/AirPricingSolution/
  • AirMerchandisingFulfillmentReq/

And returns in UniversalRecord/AirReservation/OptionalServices/OptionalService @SSRFreeText in:

  • AirCreateReservationRsp/
  • AirMerchandisingFulfillmentRsp/

/SSR @FreeText also returns in secondary SSRs like XBAG. For example,

  • AirCreateReservationRsp/UniversalRecord/BookingTraveler/SSR @FreeText
  • AirMerchandisingFulfillmentRsp/UniversalRecord/BookingTraveler/SSR @FreeText

 

 

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>

Low Fare Shopping

Air Pricing

No

Air v50

Add /AirPricingInfo/FareInfo/TicketingCode @Value to:

  • LowFareSearchRsp/AirPricePointList/AirPricePoint
  • LowFareSearchRsp/AirPricingSolution
  • AirPriceRsp/AirPriceResult/AirPricingSolution

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"
PlatingCarrier="AA" ETicketability="Yes" IncludesVAT="false" PricingMethod="Guaranteed" LatestTicketingTime="2020-06-24T23:59:00.000-05:00">

...

<AirPricingModifiers TicketingCity="PAR" SellCity="NYC"/>

Low Fare Shopping

Air Pricing

Air Booking

UR Modify

No

Air v50.0

/AirPricingModifiers @SellCity and @TicketingCity can be used together in

  • LowFareSearchReq
  • AirPriceReq
  • AirCreateReservationReq/AirPricingSolution/AirPricingInfo
  • UniversalRecordModifyReq/UniversalModifyCmd/AirAdd/AirPricingInfo

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=="/>

Branded Fares

No

Air.xsd

  • AirPriceRsp/AirPriceResult/AirPricingSolution/AirPricingInfo @TaxInfo

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.

 

UR Import

UR Retrieve

No

Universal 49.0

@ReturnUnmaskedData is added to

  • UniversalRecordImportReq
  • UniversalRecordRetrieveReq

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

  • /BaggageAllowanceInfo
  • /CarryonAllowanceDetails/BagDetails
  • /EmbargoInfo

 

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

  • @RateGuaranteed
  • /SupplierRate @RateForPeriod
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:

  • AirSearchRsp/AirPricingSolution/AirPricingInfo/BookingInfo
  • AirPricePointsList/AirPricePoint/AirPricingInfo/FlightOptionsList/FlightOption/Option/BookingInfo