Exchanging Rail Bookings

Rail bookings cannot be canceled because they are ticketed immediately after booking. Therefore, rail bookings must be refunded or exchanged. To exchange a rail booking:

  1. Quote the exchange using RailExchangeQuoteReq.

  2. Process the exchange using RailExchangeReq.

Quote Request

Minimum Data

LocatorCode provides the unique identifier for the rail reservation.

SearchRailLeg contains the time and location data for one or more legs to be searched. The minimum required data for a Rail Search request are:

For the SearchOrigin and SearchDestination elements:

A Rail Exchange request can be sent with the following data to request fares for specified train segments:

This functionality is provided for rail distributors that recommend a second Rail Availability or Exchange Quote request to confirm fares as part of their business processes. Currently, these distributors include Amtrak.

Optional Data

Quote Response

RailExchangeSolution contains information about the rail booking and exchange.

If a FareClass is not returned in the response, CabinClass="Economy" is returned. In earlier schemas, CabinClass= "Standard" is returned.

Universal API compares the corporate DiscountCode values in a RailAvailabiltySearchReq with the DiscountCode values returned in RCS:

Errors and Warnings

If Universal API does not recognize TrainTypeCode(the train service type), a value of "UNKNOWN is returned for the description in the TrainType attribute.

Exchange Request

RailExchangeReq/Rsp was in the Universal schema in v34.0 and earlier. With Rail v35.0 and later, RailExchangeReq/Rsp is in the Rail schema.

At least one IATA or UCode must be sent in the exchange request in the attributes: Origin, Destination, RailLocOrigin, or RailLocDestination in the RailExchangeSolution/RailJourney, RailJourney/RailSegment, or RailPricingInfo/RailFare elements or an error is returned in the response and the request fails.

A mandatory Booking Action Type attribute must be added to Rail Exchange requests. This attribute allows the same @BookingActionType values that are available in the Rail Booking except "Ticket". If RailExchangeReq omits @BookingActionType, the request fails and an error is returned. There is no change to the Rail Exchange response. Enumerated values are:

Note: The Universal Record History captures changes to: 

 

Exchange Response

Universal API compares the corporate DiscountCode values in a RailAvailabiltySearchReq with the DiscountCode values returned in RCS:

Canceled segments are removed from the UR and all changed/cancelled segments are recorded to the UR History.

Errors and Warnings

If Universal API does not recognize TrainTypeCode(the train service type), a value of "UNKNOWN is returned for the description in the TrainType attribute.

If "Business" is returned in the CabinClass attribute of RailFare or RailAvailInfo, it is ignored and a warning is returned.

Exceptions