Release Notes
Looking for the latest features and enhancements to Sabre APIs? You're in the right place.
Service Action Code: ExchangeShoppingRQ
- Added ability to verify refundability/reusability details for all EMD-A associated to the ticket being exchanged. The service also supports the inclusion of additional EMD-A that are not associated to the ticket being exchanged.
- The service response will include a list of ancillaries available for each new itinerary option.
Method/Endpoint: /v1.0.0/fulfillment/document/coupon/association
- REST API to allow the association of EMD and ETKT coupons please reference the materials for details.
Service Action Code: PaymentQueryRQ
- Elements updated for Form of payment and added for Form of payment response
- Attributes added for form of payment validation result
Method/Endpoint: *
- The 18.11-01 update to the Corporate Travel Services adds enhancements around a traveler's personal address, providing a way to determine if a traveler has an address in their profile and allowing this information to be included in booking requests.
- Personal Address. Most Air Connect carriers require a traveler's personal address to complete a booking. This address information is usually in a traveler's profile. But when there is no such address in the profile a booking cannot be made with Air Connect. To allow Air Connect bookings to still be made when there is no personal address in the profile several endpoints have been enhanced:
- * `GET /travelers`. The response to this API now includes the address from the traveler's profile. This allows the Corporate Travel Services client to determine when a traveler needs to provide address information during the checkout process, for inclusion with the booking. A new `address` collection includes elements for `addressLine1`, `addressLine2`, `city`, `stateProvinceCode`, `postalCode`, and `countryCode`. For most of the elements empty strings are returned when there is no value. The exceptions are `addressLine2` and `stateProvinceCode`. If either of these is empty then that element is simply not included. And if there are no values for any of these elements from the traveler's profile, then `address` is not returned in the response.
- * `POST /bookings`. An `address` collection with a traveler's personal address can now be added to the booking request under `travelers`, `personalIdentifiableInformation`. The same elements listed above should be included. For Air Connect bookings all of the elements are required except for `addressLine2`, and none of the elements can be empty. Address information can optionally be included with non-Air Connect bookings too (i.e. bookings through the GDS). In that case all of the elements are required except `addressLine2` and `stateProvinceCode`; and for these types of booking requests empty values are allowed. In addition, validation of the personal address has been added when a booking is for Air Connect. If any required address elements are empty in the traveler's profile and no `address` has been provided in the booking request, then an error is returned with `type` = "INVALID_PROFILE_ADDRESS" under the `category` of "INVALID_DATA". The same error is returned if `address` is in
- * `GET /bookings`. When a personal address is included in a booking request or pulled from the traveler's profile, that information is now included in the `GET /bookings` response in an `address` collection under `travelers`, `personalIdentifiableInformation`. The same elements already mentioned are provided. Most elements will include an empty string if there is no data. As with `GET /travelers`, `addressLine2` and `stateProvinceCode` are optional and will be missing from the response if they are empty.
- Warning! Currently `stateProvinceCode` is a required element for Air Connect bookings when `address` is included in a `POST /bookings` request. For countries that do not have a standard state or province code a value of "XXX" should be submitted. This will be revised In a future update so `stateProvinceCode` is only required when needed - for countries where that information is appropriate.
- Note: Note that the entire block of address information must come from the traveler's profile or be included in the `POST /bookings` request. It is not possible to "override" selected portions of the profile address in the booking request in an attempt to "mix" data from both sources. If an `address` is included in the booking request then it must be complete, with the required elements noted above. The information in the booking `POST /bookings` request will be used whenever it is provided, replacing all of the data from the traveler's profile.
Method/Endpoint: *
- Several customer-requested enhancements are included in this release: * The `GET /travelers` API now supports the new "API Subsite Redirect" feature just added to GetThere. This configuration option - setup in GetThere Site Administration - allows travelers coming in via the Corporate Travel Services to be "redirected" to an alternate subsite, rather than the subsite they normally connect to when logging into the GetThere OBT.
- * The `POST /catalogs` request now supports the ability to search by arrival time instead of departure time. To allow this a few new optional parameters have been added to the API. When shopping for one-way flights the new parameter `dateTimeType` is available. For round-trip shopping there are `departDateTimeType` and `returnDateTimeType`. These new parameters can be set to either `TAKEOFF` (search by departure time) or `LANDING` (search by arrival time). If these optional parameters are not included the shop is treated as `TAKEOFF`.
- * Information about fare type options has been added into the `GET /sites` response. This data identifies which fare types are configured for use on the site-subsite - such as lowest available, no advance purchase, no penalty, or unrestricted. The response includes an array of `shoppableFareTypes` within `airConfiguration`. Each grouping within `shoppableFareTypes` describes a `fareType`, the `label` configured for that `fareType`, and an `isDefault` boolean indicator to identify which `fareType` is to be used as the default.
- Some enhancements and updates have been made to the `GET /bookings` response: * A `siteId` element has been added. This element identifies the site and subsite which "owns" the booking. This information will be needed in the future once bookings can be modified through the Corporate Travel Services. This data will be used to ensure the configuration parameters and messages from the "owning" site-subsite are used in that booking update process.
- * Null values are now returned in place of empty strings within the address elements included with car and hotel components.
- * A `vehicleDetails` array is now included when there is a car component.
- * Rates (quoted and localized) have been added for any car component.
- Note: In this release the `localizedPrice` is using the same currency and value as `quotedPrice`. This will be corrected in an upcoming release.
- Custom Fields (supplementaryDataGroups). The `GET /carts` response has been enhanced to set the `defaultAnswer` for a custom field to the value from a User Profile field, when a custom field is created as both a Profile custom field (assigned to user profile page) as well as an Itinerary custom field (assigned to the itinerary review page) - using the same field name.
- Two new elements named `newAnswer` and `newAnswerId` have been added to the `GET /carts` response. These fields are the first step in a multi-release plan to "swap" the contents in the `answer` and `answerId` elements used with custom fields. Currently `answer` holds the "code" or value associated with a selection choice, while `answerId` has the "label" or text that is shown to the traveler to guide them in making a selection. This is backwards from their intended use.
- * In this release the new fields hold the reverse contents as in the original fields. So the contents of `newAnswerId`=`answer` and `newAnswer`=`answerId`. Clients of the `GET /carts` endpoint need to revise their application so `newAnswer` and `newAnswerId` are used in place of `answer` and `answerId`, but with reverse mapping.
- * In a future release the contents in `answer` and `answerId` will be swapped. At that time clients can stop using `newAnswer` and `newAnswerId`, and return to using `answer` and `answerId` - but in the “correct” manner, where `answer` is "label" shown to the traveler and `answerId` is the "code" or value for the selection.
- * Eventually `newAnswer` and `newAnswerId` will be removed from `GET /carts`.
- Shop by time. Several changes have been made in support of `shopByTime` during the `GET /carts` and `POST /bookings` steps: * A validation has been added so journeys of the same type - those with the same origin-destination - cannot be combined in the cart. This means two outbound journeys cannot be priced together, nor can two inbound journeys . If this is attempted the API will return an `INVALID_SELECTION_OF_JOURNEYS` error.
- * Validation of the `combinabilityKey` between journeys is now done during `GET /carts` processing.
- * An issue has been fixed that prevented `GET /carts` repricing for a round-trip on Air Connect carriers.
- * The validation on `**GET **/carts` has been updated to restrict the maximum number of allowed journeys based on the type of search - only one with `oneWay` and up to two with `roundTrip`.
- * Work was completed to allow Air Connect carriers to be mixed in same `POST /bookings` request. This applies to flights from the same aggregator - Travelfusion or Agentware - but not between aggregators.
- Other updates have been made to improve various Corporate Travel Services: * An inconsistency during `GET /carts` with branded fares has been corrected where a flight was repriced with the lowest available fare brand, even though a different (higher) fare brand was added to the cart. Now the chosen fare brand is correctly re-priced in the cart.
- * Handling of error 917 with "itinerary expired" has been added in `POST /bookings` to return an "unable to price" error. Previously this error handling was only done in `GET /carts` repricing.
- * The calculation of `durationInMinutes` has been fixed when an itinerary has a time more than 24 hours.
- * The currency codes and amounts for `quotedPrice` on Travelfusion carriers (Air Connect) have been corrected in `GET /carts` and `GET /bookings`.
- * An issue with `GET /catalogs` has been addressed where invalid characters inside `operatingAirlineName` caused an Error 500. Now the catalog information is returned without the invalid characters.
- * Error handling has been improved with `POST /bookings` when `isBillingAddressInProfile` is false and invalid values for `billingAddress` are included in the booking request (e.g., empty field, bad credit card number, incorrect CVV).