Modifying Air Bookings

An existing Universal Record can be modified to add, update, or delete booked air segment data or cancel air segments through the following child elements of UniversalRecordModifyReq/UniversalModifyCmd:

This request can also be used to store a price for a booking.

Schema

Located in Universal.xsd:

How To

UniversalRecordModifyReq/UniversalModifyCmd is used to modify Universal Record data for traveler information, general UR information, and segment-related data. If multiple modifications are made to a Universal Record, an instance of UniversalModifyCmd must be associated with each change request.

Note: If Routehappy amenities were used in creating the Universal Record, Routehappy amenities return for each flight when modifying a booking to offer customers a detailed view of the amenities for the flights previously selected. N

xPath: UniversalRecordModifyRsp/UniversalRecord/AirReservation/AirPricingInfo/BookingInfo

Adding Air Segments

Note: When adding Segment Data on Apollo (1V), the provider does not have Auto Sort functionality. See Auto Sort for more details.

  1. Use the AirAdd child of UniversalModifyCmd to add an air segment or additional details about an existing air segment to an existing Universal Record.

  2. Include the required @ReservationLocatorCode to identify the PNR to which the travel segment is added. This ReservationLocatorCode is assigned by the provider and is distinct from the identifier for the UniversalRecord that is issued by Universal API.

  3. Include the required BookingTravelerRef to identify the primary traveler for an air segment. This reference is cross-checked with the Reservation Locator Code by Universal API.

  4. Add Manual Fares.

  5. Add a loyalty card to an existing booking.

  6. Add a seat assignment to an existing booking.

  7. Add open segments to an existing reservation.

  8. Store redistributed fares in an existing Universal Record.

  9. Add MIRC number to Check form of payment.

  10. Add Rich Content and Branding details.

  11. Add Special Service Requests (SSRs).

  12. Restrict or allow flexibility in the fare type.

  13. Ticketing modifiers must be updated using AirUpdate.

Storing a Price

The Store Price procedure includes obtaining a fare quote for a booked itinerary, which is the lowest fare for the booking code, origin/destination, and dates, and then storing the fare quote in the PNR. The Galileo (1G), Apollo (1V), and Worldspan (1P) providers support storing a price.

  1. We recommend sending a Universal Record Import or Retrieve first to get the complete PNR details with segments and other information.

  2. Send an Air Price request.

  3. Send the entire AirPricingInfo returned in the response to UniversalRecordModifyReq/UniversalModifyCmd/AirAdd/AirPricingInfo.

  4. With Air v35.0 and later, for 1P only, a value of either NetFaresOnly or AllFares can be sent in the existing @FaresIndicator attribute to specify pricing either for net fares only or for a combination of public, private, and net fares. Two possible scenarios where net fares can be returned in AirPricingModifiers@FaresIndicator are:

    • Pure Private and/or Net fares – FaresIndicator as "NetFaresOnly"
    • Public and/or private and net fares combinations - FaresIndicator as "AllFares"

    With Air v50.0 and later, an 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). /AirPricingModifiers @SellCity and @TicketingCity can be used together. Release 20.3

    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.” For example:
    <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"/>

     

Updating Air Segments

Notes: 

  1. Use the AirUpdate child of UniversalModifyCmd to modify an existing air segment in a Universal Record.

  2. Ensure ReservationLocatorCode and BookingTravelerRef are included in the request to identify the PNR. 

Notes: 

Deleting Air Segment Data

  1. Use the AirDelete child of UniversalModifyCmd to delete existing data from an air segment or to delete an entire air segment from an existing Universal Record.
  2. Notes:

  3. Enter required data:
    • The ReservationLocatorCode attribute identifies the PNR with the associated air segments.
    • The Element attribute indicates the type of data to be deleted.
      • If Element is set to "AirSegment", the entire air segment is canceled. See Canceling Travel Segments via the UR for more information on deleting entire air segments from an existing Universal Record.
      • Because the Element attribute is shared by several segment types, not all enumerations are used by air segments.
    • A Key from the PNR uniquely identifies the specific item to be deleted based on the unique key assigned to that item.
    • The BookingTravelerRef identifies the primary traveler for an air segment. This reference is cross-checked with the Reservation Locator Code by Universal API.
  4. Notes:

    If other deletions were successful, a warning message is returned in UniversalRecordModifyRsp. If no deletions were successful, an error is returned. The error/warning message is the same:

    ASVC delete not allowed - delete assigned seat.

    If the SSR code in the ASVC SSR FreeText is not a paid seat SSR and does not have a dual SSR, Universal API deletes the non-paid seat ASVC SSR.

Auto Sort, Travel Order, and Provider Segment Order

Universal API builds segment reorder request based on the TravelOrder attribute while modifying the PNR when the segments not in Chronological order.

Galileo (1G)

Galileo has auto sort (ASP) setting on the Agency Action Table (AAT), which, when enabled, allows the agent to enter segments in any order and the provider reorders the segments to automatically be in chronological order. Thus, when Universal API, on Galileo, adds a segment to an existing PNR, the new segment is added to the bottom of the itinerary, and the provider puts it into the correct chronological order. However, when ASP is turned off on AAT, automatic re-ordering doesn't place.

Apollo (1V)

On Apollo, the ASP setting does not exist, and thus segments are never re-ordered. This may create confusion when modifying or deleting segments. Following are examples of the Apollo provider responses where TravelOrder and ProviderSegmentOrder are highlighted to demonstrate possible complications.

1V – PNR – Not in chronological order

Request

NMQZVE/85 XDBKR C737685 AG 10559146 16DEC

1.1WHIT/STE

1 . AA 1736 O 14JAN CLTBDL HK1 734A 930A * E TU

2. CCR ZI HK1 BDL 14JAN-15JAN ECAR

/PUP-BDLT01/RQ-USD30.00DY-UNL FM XH 22.51 UNL FM/BS-10559146/ARR

-0930-AA 1736/RC-IJ/DT-0930/NM-WHIT STE/CF-34705681US3*

3. HHL MC HK 1 HFD 14JAN-15JAN 1NT 39855 MARRIOTT HARTFORDWI

1 A00REGA -1 /RG-USD209.00/AGT10559146/G-VI4XXXXXXXXXXX5111EXP1128

/NM-WHIT STE/CF-30041914*

4 . UA 1304 N 16JAN BDLORD HK1 605A 752A * E TH

5. HHL XV HK 1 CHI 14JAN-16JAN 2NT 26048 SPRINGHILL STES ELM

1 A00SM3A -1 /RG-USD107.10/AGT10559146/NM-WHIT STE/G-DPSTVI4XXXXXX

XXXXX5111EXP1128/CF-30041924*

 

Response

TravelOrder is 1, 5, 3, 4, 2, whereas ProviderSegmentOrder is 1, 4, 3, 5, 2.

<air:AirSegment Key="kRD37OUqWDK==" Group="0" Carrier="AA" CabinClass="Economy" FlightNumber="1736" 
ProviderCode="1V" Origin="CLT" Destination="" TravelOrder="1" ProviderSegmentOrder="1" > 
<air:AirSegment Key="kRD37OUqWDKA8k76A==" Group="1" Carrier="UA" CabinClass="Economy" FlightNumber="1304" 
ProviderCode="1V" Origin="BDL" Destination=""TravelOrder="5" ProviderSegmentOrder="4" > 
<hotel:HotelReservation  BookingConfirmation="30041914" LocatorCode="01Q0LWVK" 
CreateDate="2024-12-16T07:52:50.873+00:00" ModifiedDate="2" TravelOrder="3" ProviderSegmentOrder="3"> 
<hotel:HotelReservation BookingConfirmation="30041924" LocatorCode="01Q0LYQX" 
ProviderReservationInfoRef="kRD37OUqWDKAzk76FAAAAA==" TravelOrder="4" ProviderSegmentOrder="5"> 
<vehicle:VehicleReservation  SupplierCode="ZI" BookingConfirmation="34705681US3" LocatorCode="01Q0M19W" 
Status="HK" TravelOrder="2" ProviderSegmentOrder="2"> 

UR Modify: Delete Accounting remarks from the Existing PNR

Request

When the segment number order on the provider system is 1, 2, 3, 5, 4, the delete response returns the TravelOrder and ProviderSegmentOrder return the matching order in 1, 5, 3, 4, 2

NMQZVE/85 XDBKR C737685 AG 10559146 16DEC

1.1WHIT/STE

1 . AA 1736 O 14JAN CLTBDL HK1 734A 930A * E TU

2. CCR ZI HK1 BDL 14JAN-15JAN ECAR

/PUP-BDLT01/RQ-USD30.00DY-UNL FM XH 22.51 UNL FM/BS-10559146/ARR

-0930-AA 1736/RC-IJ/DT-0930/NM-WHIT STE/CF-34705681US3*

3. HHL MC HK 1 HFD 14JAN-15JAN 1NT 39855 MARRIOTT HARTFORDWI

1 A00REGA -1 /RG-USD209.00/AGT10559146/G-VI4XXXXXXXXXXX5111EXP1128

/NM-WHIT STE/CF-30041914*

4. HHL XV HK 1 CHI 14JAN-16JAN 2NT 26048 SPRINGHILL STES ELM

1 A00SM3A -1 /RG-USD107.10/AGT10559146/NM-WHIT STE/G-DPSTVI4XXXXXX

XXXXX5111EXP1128/CF-30041924*

5 . UA 1304 N 16JAN BDLORD HK1 605A 752A * E TH

Response

<air:AirSegment Key="kRD37OUqWDKA6k76FAAAAA==" Group="0" Carrier="AA" CabinClass="Economy" 
FlightNumber="1736" ProviderCode="1V" Origin="CLT" Destination="BDL"  TravelOrder="1" 
ProviderSegmentOrder="1" >
<air:AirSegment Key="kRD37OUqWDKA8k76FAAAAA==" Group="1" Carrier="UA" CabinClass="Economy" 
FlightNumber="1304" ProviderCode="1V" Origin="BDL" Destination="ORD"  TravelOrder="5" 
ProviderSegmentOrder="5" >
<hotel:HotelReservation BookingConfirmation="30041914" LocatorCode="01Q0LWVK" 
CreateDate="2024-12-16T07:52:50.873+00:00"  TravelOrder="3" ProviderSegmentOrder="3">
<hotel:HotelReservation  BookingConfirmation="30041924" LocatorCode="01Q0LYQX" 
ProviderReservationInfoRef="kRD37OUqWDKAzk76FAAAAA==" TravelOrder="4" ProviderSegmentOrder="4">
<vehicle:VehicleReservation  BookingConfirmation="34705681US3" LocatorCode="01Q0M19W" 
TravelOrder="2" ProviderSegmentOrder="2">

This functionality is working as designed. Ensure you develop your application to consider the TravelOrder and ProviderSegmentOrder when using Apollo (1V) as your provider.

Exceptions