Flight Specific Search Reference Payload API Reference
POST |
catalog/search/catalogproductofferings/buildoptions Base path: Pre-production https://api.pp.travelport.com/11/air/ Production https://api.travelport.com/11/air/ |
Related Content: Air Shopping Guide, Search Workflow Diagrams
Use the Flight Specific Search API reference payload In the JSON APIs, an API call that sends identifers referring to a previous response for the itinerary to be shopped, priced, added, etc. instead of full itinerary details. request to return additional upsells
A fare presented along with the base fare as a higher level of service, usually a branded fare. Returned if filed by the carrier and requested with maxNumberOfUpsellsToReturn in the Search request. (you can set up to 99) for any product or products returned by a Search or Next Leg Search. The reference payload sends an identifier referencing a previous response and the offer
In the JSON Search APIs, an offer is a product available at a specific price under a set of terms and conditions. An offer includes the flight or connecting flights for one leg of the itinerary, plus a service level that includes the cabin class and any fare codes that may apply. At booking, the selected offer from the Search response - including the flight/s, service level, price, terms and conditions, and brand if applicable - is converted into a single Offer object that is subsequently returned for that booking. and product identifiers. The full payload request does not reference a previous Search response.



Request
Also see Authorization and Common Headers.
Query Parameters
None.
Request Body
The Flight Specific Search POST request requires a message payload with identifiers for the transaction, the offer, and the product for which you want to return additional upsells. The following table details the required objects.

Object |
Description |
Required/Optional |
|
---|---|---|---|
CatalogProductOfferingsQueryBuildOptions |
Top level object for request. |
Required |
|
BuildOptions |
Top level object. |
Required |
|
|
Number of upsells to return. Valid values are 0 to 99 inclusive. If the carrier![]() |
Optional | |
BuildFromCatalogProductOfferingsRequest |
Top level object. |
Required |
|
CatalogProductOfferingsIdentifier |
Top level object. Includes Identifier object. |
Required |
|
CatalogProductOfferingsIdentifier/Identifier |
The transaction identifier from the Search or Next Leg Search response. CatalogProductOfferings/Identifier is not returned in the initial Search response if caching is not invoked with offersPerPage in the initial Search request. Without caching, any subsequent reference payload request to those search results will fail.
|
Required |
|
|
Value from CatalogProductOfferingsResponse /CatalogProductOfferings/Identifer/value in the Search response. |
Required |
|
CatalogProductOfferingSelection
|
Array. Each instance is a set of offer and product identifiers that make up one leg GDS only; for NDC you must send identifiers for all legs.
Includes CatalogProductOfferingIdentifier and ProductIdentifier. |
Required |
|
CatalogProductOfferingIdentifier |
Array. Specifies one offer from the Search or Next Leg Search response. Includes Identifier object for offer. |
Required |
|
CatalogProductOfferingIdentifier/ Identifier |
Includes the offer identifier value. |
Required |
|
|
Value from CatalogProductOfferings/CatalogProductOffering/id in the Search or Next Leg Search response for the offer. |
Required |
|
ProductIdentifier |
Array. Specifies one product in the offer from the Search or Next Leg Search response. Includes Identifier object for product. |
Required |
|
ProductIdentifier/ Identifier |
Includes the product identifier value. |
Required |
|
|
Value from CatalogProductOfferings/CatalogProductOffering/ ProductBrandOptions/ ProductBrandOffering/Product/productRef in the Search or Next Leg Search response for the product to request additional upsells for. |
Required |
Response
The Flight Specific Search response uses the same structure and returns the same objects as the Search response. The differences are:
- One instance of CatalogProductOffering (id o1) is returned for each offer sent in the request.
- One instance of ReferenceListProduct/Product is returned for each product sent in the request.
Example Request
The following example request sends offer and product identifiers from each leg (CatalogProductOffering) of the preceding Search request to return all filed upsells for those flights on each leg.

{
"CatalogProductOfferingsQueryBuildOptions": {
"BuildOptions": {
"@type": "BuildOptionsFromCatalogProductOptions",
"maxNumberOfUpsellsToReturn": 99,
"BuildFromCatalogProductOfferingsRequest": {
"@type": "BuildFromCatalogProductOfferingsRequest",
"CatalogProductOfferingsIdentifier": {
"Identifier": {
"value": "d16ea93b-1246-4fd9-900a-8708e81dfe9f"
}
},
"CatalogProductOfferingSelection": [
{
"CatalogProductOfferingIdentifier": {
"Identifier": {
"value": "o1"
}
},
"ProductIdentifier": [
{
"Identifier": {
"value": "p0"
}
}
]
},
{
"CatalogProductOfferingIdentifier": {
"Identifier": {
"value": "o2"
}
},
"ProductIdentifier": [
{
"Identifier": {
"value": "p2"
}
}
]
}
]
}
}
}
}
Example Response
The following example excerpt returns the base fare and 8 upsells (BrandRef values b0-8) for the outbound leg and the base fare and seven upsells (BrandRef values b0-7) for the inbound leg. The base fare and each upsell are each returned in an instance of ProductBrandOffering. The ReferenceList objects consolidating details were removed for brevity; see the developer toolkits for full examples.

{
"CatalogProductOfferingsResponse": {
"@type": "CatalogProductOfferingsResponse",
"transactionId": "c974d270-2c49-477d-9421-4661eb90a41b:ppnd1002",
"CatalogProductOfferings": {
"@type": "CatalogProductOfferings",
"Identifier": {
"value": "b749fcb6-4cdf-4285-ae8e-12fd317244a6"
},
"CatalogProductOffering": [
{
"@type": "CatalogProductOffering",
"sequence": 1,
"id": "o1",
"Departure": "ORD",
"Arrival": "ATL",
"Brand": [
{
"@type": "BrandID",
"BrandRef": "b0"
},
{
"@type": "BrandID",
"BrandRef": "b1"
},
{
"@type": "BrandID",
"BrandRef": "b2"
},
{
"@type": "BrandID",
"BrandRef": "b3"
},
{
"@type": "BrandID",
"BrandRef": "b4"
},
{
"@type": "BrandID",
"BrandRef": "b5"
},
{
"@type": "BrandID",
"BrandRef": "b6"
},
{
"@type": "BrandID",
"BrandRef": "b7"
},
{
"@type": "BrandID",
"BrandRef": "b8"
}
],
"ProductBrandOptions": [
{
"@type": "ProductBrandOptions",
"ProductBrandOffering": [
{
"@type": "ProductBrandOffering",
"Price": {
"@type": "PriceDetail",
"CurrencyCode": {
"decimalPlace": 2,
"value": "AUD"
},
"Base": 2214,
"TotalTaxes": 197.51,
"TotalFees": 0,
"TotalPrice": 2411.51,
"PriceBreakdown": [
{
"@type": "PriceBreakdownAir",
"quantity": 1,
"requestedPassengerType": "ADT",
"Amount": {
"@type": "Amount",
"CurrencyCode": {
"decimalPlace": 2,
"value": "AUD"
},
"Base": 2214,
"Taxes": {
"@type": "TaxesDetail",
"TotalTaxes": 197.51,
"Tax": [
{
"taxCode": "AY",
"value": 7.5
},
{
"taxCode": "US",
"value": 166.01
},
{
"taxCode": "XF",
"value": 12
},
{
"taxCode": "ZP",
"value": 12
}
]
},
"Fees": {
"@type": "FeesDetail",
"TotalFees": 0
},
"Total": 2411.51
}
}
]
},
"Brand": {
"@type": "BrandID",
"BrandRef": "b0"
},
"Product": [
{
"@type": "ProductID",
"productRef": "p0"
}
],
"TermsAndConditions": {
"@type": "TermsAndConditionsID",
"termsAndConditionsRef": "T0"
},
"CombinabilityCode": [
"j1"
],
"BestCombinablePrice": {
"@type": "BestCombinablePriceDetail",
"CurrencyCode": {
"decimalPlace": 2,
"value": "AUD"
},
"Base": 3405,
"TotalTaxes": 312.4,
"TotalPrice": 3717.4,
"PriceBreakdown": [
{
"@type": "PriceBreakdownAir",
"quantity": 1,
"requestedPassengerType": "ADT",
"Amount": {
"@type": "Amount",
"CurrencyCode": {
"decimalPlace": 2,
"value": "AUD"
},
"Base": 3405,
"Taxes": {
"@type": "TaxesDetail",
"TotalTaxes": 312.4,
"Tax": [
{
"taxCode": "AY",
"value": 15
},
{
"taxCode": "US",
"value": 255.4
},
{
"taxCode": "XF",
"value": 12
},
{
"taxCode": "ZP",
"value": 30
}
]
},
"Total": 3717.4
}
}
]
}
},
{
"@type": "ProductBrandOffering",
"Price": {
"@type": "PriceDetail",
"CurrencyCode": {
"decimalPlace": 2,
"value": "AUD"
},
"Base": 2462,
"TotalTaxes": 216.34,
"TotalFees": 0,
"TotalPrice": 2678.34,
"PriceBreakdown": [
{
"@type": "PriceBreakdownAir",
"quantity": 1,
"requestedPassengerType": "ADT",
"Amount": {
"@type": "Amount",
"CurrencyCode": {
"decimalPlace": 2,
"value": "AUD"
},
"Base": 2462,
"Taxes": {
"@type": "TaxesDetail",
"TotalTaxes": 216.34,
"Tax": [
{
"taxCode": "AY",
"value": 7.5
},
{
"taxCode": "US",
"value": 184.84
},
{
"taxCode": "XF",
"value": 12
},
{
"taxCode": "ZP",
"value": 12
}
]
},
"Fees": {
"@type": "FeesDetail",
"TotalFees": 0
},
"Total": 2678.34
}
}
]
},
"Brand": {
"@type": "BrandID",
"BrandRef": "b8"
},
"Product": [
{
"@type": "ProductID",
"productRef": "p1"
}
],
"TermsAndConditions": {
"@type": "TermsAndConditionsID",
"termsAndConditionsRef": "T1"
},
"CombinabilityCode": [
"j10"
],
"BestCombinablePrice": {
"@type": "BestCombinablePriceDetail",
"CurrencyCode": {
"decimalPlace": 2,
"value": "AUD"
},
"Base": 5839,
"TotalTaxes": 495,
"TotalPrice": 6334,
"PriceBreakdown": [
{
"@type": "PriceBreakdownAir",
"quantity": 1,
"requestedPassengerType": "ADT",
"Amount": {
"@type": "Amount",
"CurrencyCode": {
"decimalPlace": 2,
"value": "AUD"
},
"Base": 5839,
"Taxes": {
"@type": "TaxesDetail",
"TotalTaxes": 495,
"Tax": [
{
"taxCode": "AY",
"value": 15
},
{
"taxCode": "US",
"value": 438
},
{
"taxCode": "XF",
"value": 12
},
{
"taxCode": "ZP",
"value": 30
}
]
},
"Total": 6334
}
}
]
}
}
]
}
]
},
{
"@type": "CatalogProductOffering",
"sequence": 2,
"id": "o2",
"Departure": "ATL",
"Arrival": "DEN",
"Brand": [
{
"@type": "BrandID",
"BrandRef": "b0"
},
{
"@type": "BrandID",
"BrandRef": "b1"
},
{
"@type": "BrandID",
"BrandRef": "b2"
},
{
"@type": "BrandID",
"BrandRef": "b3"
},
{
"@type": "BrandID",
"BrandRef": "b4"
},
{
"@type": "BrandID",
"BrandRef": "b5"
},
{
"@type": "BrandID",
"BrandRef": "b6"
},
{
"@type": "BrandID",
"BrandRef": "b7"
}
],
"ProductBrandOptions": [
{
"@type": "ProductBrandOptions",
"ProductBrandOffering": [
{
"@type": "ProductBrandOffering",
"Price": {
"@type": "PriceDetail",
"CurrencyCode": {
"decimalPlace": 2,
"value": "AUD"
},
"Base": 1191,
"TotalTaxes": 114.89,
"TotalFees": 0,
"TotalPrice": 1305.89,
"PriceBreakdown": [
{
"@type": "PriceBreakdownAir",
"quantity": 1,
"requestedPassengerType": "ADT",
"Amount": {
"@type": "Amount",
"CurrencyCode": {
"decimalPlace": 2,
"value": "AUD"
},
"Base": 1191,
"Taxes": {
"@type": "TaxesDetail",
"TotalTaxes": 114.89,
"Tax": [
{
"taxCode": "AY",
"value": 7.5
},
{
"taxCode": "US",
"value": 89.39
},
{
"taxCode": "ZP",
"value": 18
}
]
},
"Fees": {
"@type": "FeesDetail",
"TotalFees": 0
},
"Total": 1305.89
},
"Surcharges": {
"@type": "SurchargesDetail",
"approximateInd": true,
"TotalSurcharges": 26,
"Surcharge": [
{
"currencyCode": "AUD",
"purpose": "Other",
"decimalPlace": 2,
"value": 13
},
{
"currencyCode": "AUD",
"purpose": "Other",
"decimalPlace": 2,
"value": 13
}
]
}
}
]
},
"Brand": {
"@type": "BrandID",
"BrandRef": "b6"
},
"Product": [
{
"@type": "ProductID",
"productRef": "p2"
}
],
"TermsAndConditions": {
"@type": "TermsAndConditionsID",
"termsAndConditionsRef": "T2"
},
"CombinabilityCode": [
"j1"
],
"BestCombinablePrice": {
"@type": "BestCombinablePriceDetail",
"CurrencyCode": {
"decimalPlace": 2,
"value": "AUD"
},
"Base": 3405,
"TotalTaxes": 312.4,
"TotalPrice": 3717.4,
"PriceBreakdown": [
{
"@type": "PriceBreakdownAir",
"quantity": 1,
"requestedPassengerType": "ADT",
"Amount": {
"@type": "Amount",
"CurrencyCode": {
"decimalPlace": 2,
"value": "AUD"
},
"Base": 3405,
"Taxes": {
"@type": "TaxesDetail",
"TotalTaxes": 312.4,
"Tax": [
{
"taxCode": "AY",
"value": 15
},
{
"taxCode": "US",
"value": 255.4
},
{
"taxCode": "XF",
"value": 12
},
{
"taxCode": "ZP",
"value": 30
}
]
},
"Total": 3717.4
}
}
]
}
}
]
}
]
}
]
},
"Result": {
"@type": "Result"
},
"ReferenceList": [
{...},
{...},
{...},
{...}
]
}
}