BargainFinderMax NDC Guide 2020
BargainFinderMax NDC Guide 2020
Schema Version 2
Release 2020.04
(May 2020)
Schema version 2.0.0
Sabre and Sabre Dev Studio are trademarks and/or service marks
of an affiliate of Sabre Corporation. All other trademarks, service
marks, and trade names are the property of their respective
owners.
5 GLOSSARY ............................................................................................................................................. 37
• • •
1
API Overview
Bargain Finder Max (BFM), our best-in-class low fare search product, is used to search for the lowest
available priced itineraries based upon a specific date. Bargain Finder Max is an interface into the Air
Shopping engine through a Universal Service Gateway (USG) and 2nd Generation Services Gateway
(2SG) that allows users to use the shopping engine without a traditional Sabre terminal. Users of
Bargain Finder Max are developers, business analysts, and customer service agents. When a shopper
searches for low fares, the JSON (JavaScript Object Notation) within Bargain Finder Max
communicates with the shopping engine and returns the appropriate response. Sometimes, settings
within the JSON request or response do not find the expected fares, and to troubleshoot these
situations you may need to make changes to the preferences set in the JSON request or response.
NDC Update
New enhancements to our shopping capabilities were made so Bargain Finder Max searches for air
offers distributed through the NDC (New Distribution Capability) standard. The new capability
allows a Sabre agency to shop for NDC content (both hosted and non-hosted carriers), XML content
(LCC), and traditionally filed content (ATPCO), in one transaction. The returned content now
contains one integrated shopping response from all sources.
This guide provides information on the enhancements made to the Bargain Finder Max API that
allows users to search for air offers distributed through the NDC (New Distribution Capability)
standard. Each chapter is as follows:
• Chapter 1, “API Reference” describes the changes and new parameters added to the schemas.
• Chapter 2, “Quick Start Guide” describes the details of the Product Usage and Examples.
• Chapter 3, “Introduction API Specific Errors Introduction API Specific Errors” describes the
error messages for Bargain Finder Max functionality.
• Glossary, provides a glossary of terms used in this document.
Getting Started
This documentation is the confidential and proprietary product of Sabre Inc. Any unauthorized use,
reproduction, or transfer of this documentation, in any medium, or incorporation of this
software/documentation into any system or publication, is strictly prohibited. © 2008-2018 Sabre Inc.
All rights reserved.
API Information
This service requires activation, please contact your Sabre Account Representative for assistance.
1.4.2 Authentication
Sessionless Token
https://api-
crt.cert.havail.sabre.com/v2/offers/shop
1.4.5 Methods/Endpoints
POST /v2/offers/shop
Description
POST: Creates offers from the NDC, ATPCO, and LCC content sources.
1.4.6 Technology / Language
REST/JSON
Email: [email protected]
Url: https://developer.sabre.com
The purpose of this guide is to describe the NDC (New Distribution Capability) within the Bargain
FinderSM Max (BFM) API.
What is it?
The NDC Standard enhances the capability of communications between airlines and travel agents.
This capability enables Sabre to transform the way air products are retailed to corporations, as well as
leisure and business travelers, by addressing the industry’s current distribution limitations:
This section includes instructions on how to enable and get shopping offers with the different content
sources in the Bargain Finder Max API request and response.
Use the API Explorer on Sabre Dev Studio to explore Sabre REST APIs by making calls to the test
environment. Please note that you first need to sign in before testing our APIs. You can also view
our written documentation.
{
"OTA_AirLowFareSearchRQ": {
"Version": "2",
"POS": {
"Source": [
{
"PseudoCityCode": "PCCX",
"RequestorID": {
"Type": "1",
"ID": "1",
"CompanyName": {
"Code": "TN"
}
}
}
]
},
"OriginDestinationInformation": [
{
"RPH": "1",
"DepartureDateTime": "2020-07-20T00:00:00",
"OriginLocation": {
"LocationCode": "DEN"
},
"DestinationLocation": {
"LocationCode": "ABQ"
}
},
{
"RPH": "2",
"DepartureDateTime": "2020-07-25T00:00:00",
"OriginLocation": {
"LocationCode": "ABQ"
},
"DestinationLocation": {
"LocationCode": "DEN"
}
}
],
"TravelPreferences": {
"TPA_Extensions": {
"NumTrips": {
"Number": 10
},
"DataSources": {
"NDC": "Enable",
"ATPCO": "Disable",
"LCC": "Disable"
},
"PreferNDCSourceOnTie": {
"Value": true
}
}
},
"TravelerInfoSummary": {
"AirTravelerAvail": [
{
"PassengerTypeQuantity": [
{
"Code": "ADT",
"Quantity": 1
}
]
}
]
},
"TPA_Extensions": {
"IntelliSellTransaction": {
"RequestType": {
"Name": "200ITINS"
}
}
}
}
}
{
"id": 1,
"pricingSource": "ADVJR1",
"legs": [
{
"id": 3,
"schedules": [
{
"ref": 8
}
]
},
{
"id": 6,
"schedules": [
{
"ref": 7
}
]
}
],
"pricingInformation": [
{
"pricingSubsource": "NDC_CONNECTOR",
"offer": {
"offerId": "cg07zp24hjwwjimfq0-1",
"timeToLive": 1140,
"source": "NDC"
},
"fare": {
"validatingCarrierCode": "UA",
"eTicketable": true,
"passengerInfoList": [
{
"passengerInfo": {
"offerItemId": "cg07zp24hjwwjimfq0-1-1",
"mandatoryInd": true,
"serviceId": "cg07zp24hjwwjimfq0-1-1-1",
"passengerType": "ADT",
"passengerNumber": 1,
"fareComponents": [
{
"ref": 1,
"segments": [
{
"segment": {
"bookingCode": "N",
"cabinCode": "Y"
}
}
]
},
{
"ref": 6,
"segments": [
{
"segment": {
"bookingCode": "N",
"cabinCode": "Y"
}
}
]
}
],
"passengerTotalFare": {
"totalFare": 171.6,
"totalTaxAmount": 38.58,
"currency": "USD",
"baseFareAmount": 133.02,
"baseFareCurrency": "USD",
"equivalentAmount": 133.02,
"equivalentCurrency": "USD"
},
"baggageInformation": [
{
"provisionType": "A",
"airlineCode": "UA",
"segments": [
{
"id": 0
},
{
"id": 1
}
],
"allowance": {
"ref": 1
}
}
]
}
}
],
"totalFare": {
"totalPrice": 171.6,
"totalTaxAmount": 38.58,
"currency": "USD",
"baseFareAmount": 133.02,
"baseFareCurrency": "USD",
"equivalentAmount": 133.02,
"equivalentCurrency": "USD"
}
}
}
],
"itinGrp": 0
}
USE CASE 2 (Bargain Finder Max request and response for round-trip itinerary with ATPCO offer
returned.)
OTA BFM JSON sample request:
{
"OTA_AirLowFareSearchRQ": {
"Version": "2",
"POS": {
"Source": [
{
"PseudoCityCode": "PCCX",
"RequestorID": {
"Type": "1",
"ID": "1",
"CompanyName": {
"Code": "TN"
}
}
}
]
},
"OriginDestinationInformation": [
{
"RPH": "1",
"DepartureDateTime": "2020-07-20T00:00:00",
"OriginLocation": {
"LocationCode": "DEN"
},
"DestinationLocation": {
"LocationCode": "ABQ"
}
},
{
"RPH": "2",
"DepartureDateTime": "2020-07-25T00:00:00",
"OriginLocation": {
"LocationCode": "ABQ"
},
"DestinationLocation": {
"LocationCode": "DEN"
}
}
],
"TravelPreferences": {
"TPA_Extensions": {
"NumTrips": {
"Number": 10
},
"DataSources": {
"NDC": " Disable ",
"ATPCO": "Enable",
"LCC": "Disable"
},
"PreferNDCSourceOnTie": {
"Value": true
}
}
},
"TravelerInfoSummary": {
"AirTravelerAvail": [
{
"PassengerTypeQuantity": [
{
"Code": "ADT",
"Quantity": 1
}
]
}
]
},
"TPA_Extensions": {
"IntelliSellTransaction": {
"RequestType": {
"Name": "200ITINS"
}
}
}
}
}
{
"id": 4,
"pricingSource": "ADVJR1",
"legs": [
{
"id": 7,
"schedules": [
{
"ref": 20
}
]
},
{
"id": 11,
"schedules": [
{
"ref": 5
}
]
}
],
"pricingInformation": [
{
"pricingSubsource": "MIP",
"offer": {
"offerId": "cg07zp24hjwwjimfq0-4",
"timeToLive": 1200,
"source": "ATPCO"
},
"fare": {
"validatingCarrierCode": "UA",
"vita": true,
"eTicketable": true,
"lastTicketDate": "2020-06-15",
"governingCarriers": "UA UA",
"passengerInfoList": [
{
"passengerInfo": {
"offerItemId": "cg07zp24hjwwjimfq0-1-1",
"mandatoryInd": true,
"serviceId": "cg07zp24hjwwjimfq0-1-1-1",
"passengerType": "ADT",
"passengerNumber": 1,
"nonRefundable": true,
"fareComponents": [
{
"ref": 4,
"segments": [
{
"segment": {
"bookingCode": "N",
"cabinCode": "Y",
"mealCode": "R",
"seatsAvailable": 9,
"availabilityBreak": true
}
}
]
},
{
"ref": 3,
"segments": [
{
"segment": {
"bookingCode": "N",
"cabinCode": "Y",
"mealCode": "R",
"seatsAvailable": 9,
"availabilityBreak": true
}
}
]
}
],
"taxes": [
{
"ref": 5
},
{
"ref": 10
},
{
"ref": 4
},
{
"ref": 7
},
{
"ref": 8
},
{
"ref": 6
},
{
"ref": 2
}
],
"taxSummaries": [
{
"ref": 2
},
{
"ref": 7
},
{
"ref": 6
},
{
"ref": 1
}
],
"currencyConversion": {
"from": "USD",
"to": "USD",
"exchangeRateUsed": 1
},
"fareMessages": [
{
"type": "X",
"code": "0",
"info": "ASL"
},
{
"type": "N",
"code": "0",
"carrier": "UA",
"info": "NONREF/NOCHGS/NOCBBG/NOASR"
},
{
"type": "W",
"code": "0",
"info": "VALIDATING CARRIER - UA"
},
{
"type": "W",
"code": "0",
"info": "CAT 15 SALES RESTRICTIONS FREE TEXT
FOUND - VERIFY RULES"
}
],
"passengerTotalFare": {
"totalFare": 209.65,
"totalTaxAmount": 40.67,
"currency": "USD",
"baseFareAmount": 168.98,
"baseFareCurrency": "USD",
"equivalentAmount": 168.98,
"equivalentCurrency": "USD",
"constructionAmount": 168.98,
"constructionCurrency": "USD",
"commissionPercentage": 0,
"commissionAmount": 0,
"exchangeRateOne": 1
},
"baggageInformation": [
{
"provisionType": "A",
"airlineCode": "UA",
"segments": [
{
"id": 0
}
],
"allowance": {
"ref": 2
}
},
{
"provisionType": "A",
"airlineCode": "UA",
"segments": [
{
"id": 1
}
],
"allowance": {
"ref": 2
}
}
]
}
}
],
"totalFare": {
"totalPrice": 209.65,
"totalTaxAmount": 40.67,
"currency": "USD",
"baseFareAmount": 168.98,
"baseFareCurrency": "USD",
"constructionAmount": 168.98,
"constructionCurrency": "USD",
"equivalentAmount": 168.98,
"equivalentCurrency": "USD"
},
"validatingCarriers": [
{
"ref": 2
}
]
}
}
],
"diversitySwapper": {
"weighedPrice": 20.965
},
"itinGrp": 0
}
3 API Reference 3
The beginner’s guide to Air Shopping
Schema definitions
For information about parameter types and constraints, please refer to this file
BFM_NDC_REST_Reference included in the Test Package.
3.3.1 D a t a S o u r c e s : object
A parameter to choose which content source to drive at the request level. You will be able to drive all
content source ATPCO/LCC/NDC, NDC Only, or ATPCO Only, or any combination of them,
overriding current default.
ATPCO: string (the allowed strings are "Enable” and "Disable")
LCC: string
NDC: string
Select the NDC content source in case of identical offers (i.e. O&D, dates, times, flight and same
price) returned from ATPCO and NDC content sources, this will avoid duplicated content.
Example: "Value": true
Combines solutions from different services, sources as additional fares. You can specify what to do if
the same journey is returned from ATPCO and NDC source path. In case of the same price the
PreferNDCSourceOnTie value will decide. With this attribute, you can tell, show me everything,
combine ATPCO and NDC fares as additional fares, no matter if the same price or not.
Example: "Value": true
NDCIndicators:
The NDC specific section, to nest attributes unique only for the NDC path. The other new attributes
and functionalities presented in this release and listed below, fall under this section.
NDCIndicators/MaxNumberOfUpsells/@Value: boolean (required)
New parameter to limit the number of upsells solutions presented in the response.
Example: "Value": 5
NOTE: Default value is equal "0". If not present, the standard BFM LowFareSearch logic applies.
Works only with MultipleBrandedFares enabled.
New parameter to request "branded options per itinerary" - branded description, which for the NDC
offers is equivalent to the price class information. Each returned offer will be decorated with price
class information if provided by the supplier.
Example: "Value": true
New parameter to request multiple additional fares (upsells) for each NDC sourced itineraries.
Shopping returns multiple fare options with brands/price classes associated with each. The number of
the returned options depends only on the carrier providing those and can be limited by separate
request attribute.
Example: "Value": true
New parameter to control what type of combination of the price classes are allowed in multi-leg
journeys. "Leg" is the default mode and allows any combination of price classes. "Itin" allows only
offers with the same price class used across the whole journey (all legs).
Example: "Mode": "Leg"
NOTE: Leg relates to a single O&D portion of travel including all connections.
NDCIndicators/CarrierSpecificQualifiers: complexType
Carrier specific qualifiers for NDC content only. If an attribute is specified in both, this and the
general section described below, the general qualifier will be overwritten with the carrier-specific
value. This object includes the carrier code attribute (required), maximum 1 account code, and
multiple Qualifier.
Example:
{
"NDCIndicators": {
"CarrierSpecificQualifiers": [
{
"CarrierCode": "YY",
"AccountCode": {
"Code": "TST01"
},
"Qualifier": [{
"Name": "ABN",
"Value": 12345678901
}]
NDCIndicators/Qualifier: complexType
NDC specific qualifiers, general section. To be applied for all NDC content, without CarrierSpecific
override.
The use of a qualifier requires to input Name and Value.
Example:
{
"NDCIndicators": {
"Qualifier": [{
"Name": "QCI",
"Value": "XYZ"
}]
NOTE: Currently supported qualifiers are: ABN and QCI.
NOTE: In the future, new qualifiers will be included also under this section.
NOTE: The ABN and QCI qualifiers are not allowed to be used together, but they don't require an
associated Account Code.
NOTE: Schema snippets for all new parameters are available in the Release Notes and full
schema documentation (Swagger) is available at Sabre Developer Studio.
},
"DataSources": {
"NDC": "Enable",
"ATPCO": "Disable",
"LCC": "Disable"
}
Time to Live in minutes. Specifies how log an offer is stored, currently the timeToLive ( TTL) for all
offers is at most 1200 seconds but can be shorter if the NDC provider will limit the time of the offer.
Example: 1200
NOTE: In the new release (/v2/offers/shop), the parameter name has been changed to timeToLive
and the value is displayed now in seconds. Pattern: "^[0-9] $" Example : "1200'".
offerItemId: string
The unique identifier of the OfferItem instance. OfferItem is a priceable chunk of services.
Example: "cdjnxalksm0-1-1"
NOTE: Now the offerItemId is returned at the passengerInfo level for most of the NDC content
providers, however the previous section (fare level) remains valid as well.
serviceId: string
The unique identifier of a service within the context of one message. A service is a feature/service
included in a given flight.
Example: "cdjnxalksm0-1-1-1"
NOTE: Now the serviceId is returned at the passengerInfo level for most of the NDC content
providers, however the previous section (fare level) remains valid as well.
When set to ‘true’ indicates mandatory Offer Items, which cannot be removed from the Offer.
Mandatory Offer Item transition into Order Items. If not present or ‘false’, the Offer item is optional.
Example: "true”:
NOTE: This parameter can be returned in two sections of the response, at fare and passengerInfo
level, depending on which level the Offer is returned.
elapsedTime: integer
This information allows customers to display travel time for NDC Offers. The value is displayed in
minutes.
Example: " 390"
NOTE: This parameter is present at scheduleDescs and legDescs level. It is available on both, NDC
and ATPCO path.
NumberOfOccurences: positiveInteger
The message count to inform if the message occurs more than once. Some of the messages from NDC
providers are duplicated, parameter provides their number to decrease the payload of duplicated
messages.
Example: "@NumberOfOccurences": "0"
NOTE: Schema snippets for all new parameters are available in the Release Notes and full
schema documentation (Swagger) is available at Sabre Developer Studio.
Below a snipped from the Offer node in the BFM GIR JSON, for ATPCO content offer. Currently the
ATPCO Time To Live is set to 1200 seconds.
"pricingInformation": [
{
"pricingSubsource": "MIP",
"offer": {
"offerId": "cg07zp24hjwwjimfq0-4",
"timeToLive": 1200,
"source": "ATPCO"
},
"fare": {
"offerItemId": "cg07zp24hjwwjimfq0-4-1",
"validatingCarrierCode": "UA",
"vita": true,
"eTicketable": true,
"lastTicketDate": "2020-06-15",
"governingCarriers": "UA UA",
"serviceId": "cg07zp24hjwwjimfq0-4-1-1",
[…]
Below a snipped from the Offer node in the BFM GIR JSON, for ATPCO content offer. Currently the
NDC Time To Live is set to 1140 seconds.
"pricingInformation": [
{
"pricingSubsource": "NDC_CONNECTOR",
"offer": {
"offerId": "cg07zp24hjwwjimfq0-1",
"timeToLive": 1140,
"source": "NDC"
},
"fare": {
"offerItemId": "cg07zp24hjwwjimfq0-1-1",
"validatingCarrierCode": "UA",
"eTicketable": true,
"serviceId": "cg07zp24hjwwjimfq0-1-1-1",
[…]
Baggage Allowance and Charges (INFO) Yes Yes DOESN'T BLOCK NDC CONTENT
Baggage Allowance (RequestedPiece INFO) Yes Yes DOESN'T BLOCK NDC CONTENT
Baggage Free Piece Required (Filter) Yes 4Q19 BLOCKS NDC CONTENT
Branded Fares (multiple brands) Yes Yes DOESN'T BLOCK NDC CONTENT
Branded Fares (single brand) Yes Yes DOESN'T BLOCK NDC CONTENT
Branded Fares Brand Filters (Brand ID) Yes 4Q19 BLOCKS NDC CONTENT
Changes and Refunds Request INFO Yes 4Q19 DOESN'T BLOCK NDC CONTENT
NDC Configuration (select preferred source for tie) Yes Yes SUPPORTED
NDC Limitations (more than two legs) Yes No DOESN'T BLOCK NDC CONTENT
NDC Limitations (only one leg) Yes No DOESN'T BLOCK NDC CONTENT
NDC Limitations (passanger type not ADT) Yes No BLOCKS NDC CONTENT
For a complete list of the errors for each NDC API please see the following Dev Studio location:
https://beta.developer.sabre.com/guides/travel-agency/reference/errors#/offers/price
HTTP
Statu
s
# Code Message Text Resolution
3 401 Unauthoriz Not authorized to make this request. Check access Verify your
ed level and refer to API documentation for access token
information. credentials.
5 401 Unauthoriz Credentials are missing or the syntax is not correct Verify your
ed base64-
encoded token
credentials
were
constructed
properly.
1 404 Not Found Response does not contain any data 1. No data
2 found to fulfill
the request.
You might to
consider using
fewer
parameters/filte
rs.
2. URL has
missing
segments,
such as a
version
number. Check
API
documentation.
3. Verify URL
is valid. Check
API
documentation.
2 503 Service Server is currently unavailable. Please try again later Wait at least
6 Unavailabl and report if problem persists. 500
e milliseconds
and resend the
request.
2 504 Gateway Server timed out trying to fulfill request. Please try Wait at least
7 Timeout again later and report if problem persists. 500
milliseconds
and resend the
request.
Status Codes
RESTful services use HTTP status codes to provide the result status of the executed service. For
example, 200 for success, 404 when a resource is not found.
HTTP status codes are defined by section 10 of RFC 2616, the Internet Assigned Numbers Authority
(IANA) maintains the official registry of HTTP status codes.
Range Meaning
Term Description
37