Importing PNRs
UniversalRecordReqRsp.xsd
No previous transactions required.
Import is a feature that creates a Universal Record (UR) from a PNR that was created outside of Universal API, but within a Universal API provider, such as a Terminal data request or another API product. After the Universal API Universal Record is created, it can be serviced or modified using Universal API.
Schema
See the following transactions for Importing a PNR:
How To
The steps below provide a high-level overview of importing a PNR. For a detailed list of required and optional data, refer to UniversalRecordImportReq or UniversalRecordImportRsp for a full schema definition.
- Requests must contain the following information at a minimum:
- Provider's code from the PNR
- Provider's Record Locator code from the PNR
- If the PNR is being imported into an existing Universal Record, the Universal Record Locator Code must also be included.
- Optionally, set @ReturnUnmaskedData="true" Release 20.3
- @ReturnUnmaskedData is added in Universal v49.0 to Universal Record Import and Universal Record Retrieve on Galileo (1G) and Apollo (1V) to allow customers to choose if they want to see Credit Card Details Masked or Un-Masked.
- Return Unmasked Data 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 attribute allows for a more fluid workflow by not having to switch between sessioned and sessionless environments.
-
UniversalRecordImportRsp is returned, which contains a newly created Universal Record with the imported PNR data as part of the UR.
Information Returned Description The ticket number from the PNR is added to UniversalRecord/AirReservation/DocumentInfo/TicketInfo @Number and a reference to the associated pricing information (i.e., the Stored Fare) is added to UniversalRecord/DocumentInfo/TicketInfo @AirPricingInfoRef, if the pricing information has an associated ticket number. If selective access is not present between PCCs, the ticket number can only be viewed in BookingTraveler/SSR/FreeText with type TKNE. E.g., <SSR Key="hfiS40Jj0EEAAAA==" SegmentRef="0Uzj8ZCAAAA==" Status="HK" Type="TKNE" FreeText="2976060991858C1" Carrier="AA" ProviderReservationInfoRef="BUBezbZCAAAA==" /> Additional Net Ticket Details from the PNR are also synchronized and displayed in the Universal Record in UniversalRecord/AirReservation/AirPricingInfo/FareInfo.
Commission (optional)
Only fare-level commissions are supported as ticketing modifiers, so @Level must be "Fare". @Type can be either "Flat" or "PercentBase". If "Flat", @Amount must be present and CommPercentage="9999999". If "PercentBase", @Amount=0 and CommPercentage=1 to 100.
When the ProviderLocatorCode is included in the request:
- For new tickets, Universal API determines the ticket status, and returns the status in the UniversalRecordImportRsp/UniversalRecord/AirReservation/DocumentInfo/TicketInfo @Status.
- For existing tickets, the ticket status, including coupon information, is also returned in TicketInfo @Status.
- For exchanged tickets, along with the status information update, UniversalRecordRetrieveRsp, UniversalRecordImportRsp, and AirRetrieveDocumentRsp retrieves the original ticket number in the path /UniversalRecord/AirReservation/DocumentInfo/TicketInfo/ExchangeTicket @Number.
The status of the new exchanged ticket is ‘O’ – Open for use. But, the retrieve response also contains the original ticket number information.
The status of the original ticket number is ‘E’ – Exchanged.
EMDs When Optional Services are sold through a green screen, Electronic Miscellaneous Documents (EMDs) issued for the Optional Services by the provider are synchronized with the Universal Record (UR) when the UR is retrieved or imported. The issuance number and coupon number from the provider EMD are also stored in the UR in AirReservation/OptionalService/ServiceData in @EMDSummaryRef and @EMDCouponRef.
PNR Data Types Additional types of PNR data are supported.
Show PNR data typesData Schema Location Description Example Ticket number
/UniversalRecord
/DocumentInfo
/TicketInfo @NumberDocument ticket number
<TicketInfo Number="1809010011715" Status="N" BookingTravelerRef="477694">
Accounting data identifiers
/UniversalRecord
/GeneralRemark
Category="Z"
TypeInGDS="Historical"Information such as agent data or rebate code
<GeneralRemark Category="Z" TypeInGds="Historical"> <RemarkData>*M/Y*X/120601*Y/1832 *Z/15523</RemarkData> </GeneralRemark>
Tour codes
/UniversalRecord
/AccountingRemark TypeInGDS="TourCode"Tour associated with the itinerary
<AccountingRemark TypeInGds="TourCode" ProviderCode="1P">ABCDEF</Accounting Remark>
Credit card authorization
/UniversalRecord
/AirReservation
/CreditCardAuth
@Amount
@AuthCode
@AuthResultCodeAuthorized amount, authorization status, and authorization code from the credit card vendor
<CreditCardAuth Number="************1111" Amount="USD981.80" AuthCode="1234" AuthResultCode="approved"/>
Net fare data
Note: Only supported for a Worldspan PNR
/UniversalRecord
/AccountingRemark
TypeInGDS="NetFare/VC/CAR"Data for negotiated fares with a corporation or other organization:
<AccountingRemark TypeInGds="NetFare/VC/CAR" ProviderCode="1P"> <RemarkData>NETXXXXX/ABC123DEF/ 1001002</RemarkData> </AccountingRemark>
Where:
NetXXXX = Net Fare Amount
ABC123DEF = CAR Code
1001002 = The IATA number
automatically assigned by the provider.
FOP comment
Note: Only supported for a Worldspan PNR
/UniversalRecord
/GeneralRemark
TypeInGDS="FOPComment"Free-form text comments about the Form of Payment (FOP)
<GeneralRemark TypeInGds="FOPComment"> <RemarkData>TESTCO</RemarkData> </GeneralRemark>
Unmasked Data Remark
Data from the UX remark in a Worldspan PNR is available in the Unmasked Data Remark element.
Show Unmasked Data Remark elementThe Unmasked Data Remark can contain one to 11 Pseudo City Codes (PCCs). The first PCC in the remark is the Pseudo City Code that owns the PNR. Other PCCs that are allowed to view net fares, and accounting remarks can be added to the PNR by the PCC who owns the PNR.
PCCs that exist in the UnmaskedDataRemark element are able to view data unmasked for net air and net vehicle (e.g., $100.00). If a PCC has a bridge-branch relationship with the owning PCC, but their PCC is not added to the Unmasked Data Remark element, the data displayed in the Universal Record response is masked (e.g., $XXXX).
The Travelport Universal Record History is updated with the UnmaskedDataRemark when a PNR is re-imported or retrieved if there were changes to the data in the existing Universal Record.
An Unmasked Data Remark cannot be added to an existing Universal Record. It cannot be modified or deleted from a Universal Record if it is added during import or retrieval of a PNR.
Group PNR
An existing Group PNR that was created in Worldspan can be imported into Universal API. The Group PNR can be imported into an existing Universal Record or into a new Universal Record. If the Group PNR is imported into an existing UR, the UR is updated and synchronized. Details about the imported Group PNR display in UniversalRecord/Group. Travelport Universal API does not support importing other types of Group PNR, such as World Group, or creating or modifying a Group PNR using Travelport Universal API.
Prior to Universal API release 20.4.2, Galileo via Universal API didn't have the ability to handle group bookings via 1G, and returned the error, "Retrieve of Group bookings is not allowed." Release 20.4
With the release of Universal API Release 20.4.2, Universal API supports Import Booking and Booking Retrieve requests when the booking is a group (e.g., 10 passengers or more). The universal record locator and basic booking details are returned in the response.
Notes:
-
Multiple retrieval of the PNRs is restricted due to the extended time it takes to retrieve group bookings, and an error message displays: "Retrieve Group Booking already in progress. Please try again later."
-
When the UR Import is successful, the associated cache, and expiration timeframe, is cleared.
During a Worldspan (1P) PNR import, if the owning PCC does not exist in Universal API, a dynamic target branch (WAB or Work Area Branch) is automatically created for that PCC.
Show more informationThe dynamic target branch is created under the agency hierarchy named Travelport dynamic skeleton WAB agency. Some required target branch fields are hard coded while others are populated with information from the PNR.
- ProfileType is hard coded to Branch.
- ProfileStatus is hard coded to Active.
- ProfileParent/ProfileID is hard coded to agency Travelport dynamic skeleton WAB agency.
-
ProfileData/BranchInfo@Name is hard coded to Skeleton WAB for PCC/SID XXX. Where XXX is the actual owning PCC/SID in the PNR response.
-
ProfileData/BranchInfo@GeoCityCode is hard coded to ATL.
-
ProfileData/BranchInfo@Control is hard coded to N.
-
ProfileData/BranchInfo@BranchCode is set to a unique, generated code.
-
ProfileData/BranchInfo@Currency is hard coded to USD.
-
ProfileData/BranchInfo/ProviderInfo/ProviderCode is the provider to which the PNR belongs.
-
ProfileData/BranchInfo/ProviderInfo/PseudoCityCode is PCC/SID who is owner of the PNR. Owning PCC/SID is found in the first phone field of the PNR.
The newly created target branch is then assigned as owner of the Universal Record and the underlying reservations.
Hotel information
During a Galileo or Apollo PNR import, if the hotel segment in the host does not have property address, phone number, or property name, Universal API adds these details to the hotel reservation based on the hotel property number in the Universal Record. This information is added in the UniversalRecord/HotelReservation/HotelProperty element.
UniversalRecord/HotelReservation/HotelCommission is used to store the hotel commission for Worldspan reservations.
Credit cards
Credit card form of payment without an associated credit card type (FormOfPayment @Type) is allowed at the PNR level and the stored fare level.
Invoices
During Galileo or Apollo PNR import, if the PNR has an associated invoice, the invoice information is imported into the UniversalRecord/InvoiceData element.
MCOs
During a Galileo or Worldspan PNR import, if the PNR has associated Miscellaneous Change Orders (MCOs), basic MCO information is imported. See Miscellaneous Change Orders for details.
Pricing Type
PricingType (an attribute of UniversalRecordImportRsp/UniversalRecord/AirReservation/AirPricingInfo) stores the pricing type used for the PNR. Worldspan support three different pricing types: TicketRecord, StoredFareQuote, and PricingInstruction. Galileo and Apollo support TicketRecord and StoredFareQuote. PNRs with multiple pricing types can be imported; however, pricing types of TicketRecord and PricingInstruction are not allowed in the same PNR.
OB Fees
If the PNR contains OB fees, they are imported into the Universal Record. Refer to OB Fees for more information.
Residency Type The applied residency type returns in booking and ticketing retrieve responses, so that the nationality from the applied residency type by passenger line or data can be applied in a future exchange. This is useful because of taxes based on nationality. For example, Mexico has a tax for foreigners and Argentina has two taxes for residents.
AirSolutionsChangedInfo/AirPricingSolution/AirPricingInfo/PassengerType @ResidencyTypeApproximate Taxes @ApproximateTaxes returns approximate values in a booking retrieve response so that customer system calculations. which are dependent on the approximate values, don't fail when a booking is retrieved. Release 23.4
/UniversalRecord/AirReservation/AirPricingInfo @ApproximateTaxes
This is limited release functionality. Please contact your Travelport representative to activate this enhancement.
Exceptions
The following provider- or supplier-specific exceptions apply to importing PNRs.
-
Phone numbers and email addresses in Galileo are associated to the booking in general, not a specific traveler. Therefore, this data cannot be imported.
-
Net fare, value code, carrier agreement reference, and form of payment comment remarks are not supported.
-
Does not support UX remarks.
-
Net fare, value code, carrier agreement reference, and form of payment comment remarks are not supported.
-
Does not support UX remarks.
-
Does not support Group PNR import.
-
Phone numbers in a Worldspan PNR are associated to the booking in general, not a specific traveler. Therefore, Universal API must parse phone number data to establish an association to a specific traveler.
-
Stored Fare Quotes from Ticketing Records can be imported by Passenger Type (PTC), or for a specific passenger (Name Select), even if the passenger has the same PTC as other passengers in the PNR. Apollo and Galileo do not support the Name Select functionality.
-
In the provider system, the Owning PCC is the Psuedo City Code (PCC) that owns the PNR. Both the Worldspan providers store the Owning PCC in the first phone field of the PNR. When a PNR is imported into Travelport Universal API, the Owning PCC from the first phone field of the provider reservation is checked.
-
If the PNR does not exist in Universal API, when it is imported—if it is not imported into an existing UR—a new UR and PNR are created and the owning PCC (ProviderReservationInfo @OwningPCC) is set based on the ownership of the PNR in the provider system. The Target Branch (WAB) of the Owning PCC is set as the owner of the UR and the reservation.
-
If the PNR is imported into a UR with existing PNRs, Universal API checks the ownership of the PNRs in the UR against the Owning PCC of the imported PNR. If the ownership matches, the new PNR is imported.
-
If the PNRs in the UR and the imported PNR do not have the same Owning PCC, the ownership of all of the PNRs in a UR is checked against their ownership in the provider system. If the ownership is changed in the provider system and is the same as the ownership of the imported PNR, PNR is imported in the UR and the ownership of UR and all underlying reservations are changed to new ownership.
-
-
One or more passengers can be excluded while ticketing a PNR. The ExcludeTicketing child element of UniversalRecord/AirReservation/TicketingModifiers contains a BookingTravelerRef element, which stores the reference for the excluded passenger. Excluded passenger ticketing functionality is only supported in UniversalRecordRetrieveRsp and UniversalRecordImportRsp services. Therefore, the addition, modification, or deletion of Excluded Passengers is not supported for segments that are created using Universal API services.
-
Credit card form of payment without the credit card type is not supported.
-
Only two formats for Pickup Location are supported and processed. They display in UniversalRecordImportRsp \VehicleReservation \VehicleDateLocation @PickupLocation, @PickupLocationType, and @PickupLocationNumber. Any other formats are ignored and Pickup Location is not populated.
-
LAX
-
LAXC23
-
Errors
If the PCC of a new reservation (PNR) that is being added to an existing UR does not match the Owning PCC of the existing reservations in the UR, Universal API returns an error: PNRs that have different owning PCC’s cannot be mixed in a Universal Record.
If the provider does not allow the PCC in the OverridePCC or TargetBranch of the retrieve or import request to access the PNR, Universal API returns an error: No Agreement Exists.
The Target Branch and PCC should always have one-to-one relationship. If Universal API finds more than one Target Branch for a PCC when checking the ownership on a retrieve or import request, the request fails and Universal API returns an error: Multiple WAB's exist for the PCC - PCC Name.
-
ACH air reservations cannot be imported.
-
Does not support UX remarks.
- Does not support Group PNR import.
-
RCH rail reservations cannot be imported.