swagger: '2.0'
info:
version: 1.2.0
title: Branded Fares Upsell Display SeatMaps Shopping API
x-tags:
- '#quick-connect'
- '#online-retail'
- '#mobile-services'
- '#ama-for-dev'
x-status: validated
x-release-note:
1.2.0:
- Add chargeableSeat element
- Add lastTicketingDateTime
1.1.0:
- Add Margins and Discounts content from Margin Manager product - **only available in Enterprise**
1.0.0:
- First version of Branded Fares Upsell
description: "\nBefore using this API, we recommend you read our **[Authorization Guide](https://developers.amadeus.com/self-service/apis-docs/guides/authorization-262)** for more information on how to generate an access token. \n\nPlease also be aware that our test environment is based on a subset of the production, if you are not returning any results try with big cities/airports like LON (London) or NYC (New-York)."
host: test.api.amadeus.com
basePath: /v1
schemes:
- https
consumes:
- application/vnd.amadeus+json
produces:
- application/vnd.amadeus+json
tags:
- name: Shopping
paths:
/shopping/flight-offers/upselling:
post:
tags:
- Shopping
operationId: upsellAirOffers
summary: Amadeus Return a List of Upsell Flight Offers Based on Given Flight Offers
parameters:
- $ref: '#/parameters/getOverride'
- name: upsellFlightOffersBody
description: list of criteria to upsell a dedicated flight-offers
in: body
required: true
schema:
title: Get_Upsell_Query
required:
- data
properties:
data:
$ref: '#/definitions/FlightOfferUpsellIn'
example:
data:
type: flight-offers-upselling
flightOffers:
- type: flight-offer
id: '1'
source: GDS
instantTicketingRequired: false
nonHomogeneous: false
oneWay: false
lastTicketingDate: '2021-07-04'
numberOfBookableSeats: 2
itineraries:
- duration: PT2H5M
segments:
- departure:
iataCode: CDG
terminal: 2F
at: '2021-07-04T09:30:00'
arrival:
iataCode: MAD
terminal: '2'
at: '2021-07-04T11:35:00'
carrierCode: AF
number: '1300'
aircraft:
code: '321'
operating:
carrierCode: AF
duration: PT2H5M
id: '2'
numberOfStops: 0
blacklistedInEU: false
- duration: PT1H55M
segments:
- departure:
iataCode: MAD
terminal: '2'
at: '2021-07-11T18:35:00'
arrival:
iataCode: ORY
terminal: '1'
at: '2021-07-11T20:30:00'
carrierCode: AF
number: '9433'
aircraft:
code: '318'
operating:
carrierCode: AF
duration: PT1H55M
id: '14'
numberOfStops: 0
blacklistedInEU: false
price:
currency: EUR
total: '410.86'
base: '240.00'
fees:
- amount: '0.00'
type: SUPPLIER
- amount: '0.00'
type: TICKETING
grandTotal: '410.86'
additionalServices:
- amount: '60.00'
type: CHECKED_BAGS
pricingOptions:
fareType:
- PUBLISHED
includedCheckedBagsOnly: false
validatingAirlineCodes:
- AF
travelerPricings:
- travelerId: '1'
fareOption: STANDARD
travelerType: ADULT
price:
currency: EUR
total: '201.96'
base: '126.00'
fareDetailsBySegment:
- segmentId: '2'
cabin: ECONOMY
fareBasis: AS50OALG
brandedFare: LIGHT1
class: A
includedCheckedBags:
quantity: 0
- segmentId: '14'
cabin: ECONOMY
fareBasis: VS50OALG
brandedFare: LIGHT1
class: V
includedCheckedBags:
quantity: 0
- travelerId: '2'
fareOption: STANDARD
travelerType: CHILD
price:
currency: EUR
total: '176.96'
base: '101.00'
fareDetailsBySegment:
- segmentId: '2'
cabin: ECONOMY
fareBasis: AS50OALG
brandedFare: LIGHT1
class: A
- segmentId: '14'
cabin: ECONOMY
fareBasis: VS50OALG
brandedFare: LIGHT1
class: V
- travelerId: '3'
fareOption: STANDARD
travelerType: HELD_INFANT
associatedAdultId: '1'
price:
currency: EUR
total: '31.94'
base: '13.00'
fareDetailsBySegment:
- segmentId: '2'
cabin: ECONOMY
fareBasis: AS50OALG
brandedFare: LIGHT1
class: A
- segmentId: '14'
cabin: ECONOMY
fareBasis: VS50OALG
brandedFare: LIGHT1
class: V
fareRules:
rules:
- category: EXCHANGE
maxPenaltyAmount: '0.00'
- category: REVALIDATION
notApplicable: true
payments:
- brand: VISA_IXARIS
binNumber: 123456
flightOfferIds:
- 1
responses:
'200':
$ref: '#/responses/returnUpsell'
'400':
$ref: '#/responses/400_Upsell'
default:
$ref: '#/responses/500'
description: ''
/shopping/flight-offers/pricing:
post:
tags:
- Shopping
operationId: quoteAirOffers
summary: Amadeus Confirm Pricing of Given FlightOffers.
parameters:
- $ref: '#/parameters/getOverride'
- name: priceFlightOffersBody
description: list of criteria to confirm the price of a dedicated flight-offers
in: body
required: true
schema:
title: Get_Price_Query
required:
- data
properties:
data:
$ref: '#/definitions/FlightOfferPricingIn'
example:
data:
type: flight-offers-pricing
flightOffers:
- type: flight-offer
id: '1'
source: GDS
instantTicketingRequired: false
nonHomogeneous: false
oneWay: false
lastTicketingDate: '2020-08-04'
numberOfBookableSeats: 9
itineraries:
- duration: PT32H15M
segments:
- departure:
iataCode: SYD
terminal: '1'
at: '2021-02-01T19:15:00'
arrival:
iataCode: SIN
terminal: '1'
at: '2021-02-02T00:30:00'
carrierCode: TR
number: '13'
aircraft:
code: '789'
operating:
carrierCode: TR
duration: PT8H15M
id: '1'
numberOfStops: 0
blacklistedInEU: false
- departure:
iataCode: SIN
terminal: '1'
at: '2021-02-02T22:05:00'
arrival:
iataCode: DMK
terminal: '1'
at: '2021-02-02T23:30:00'
carrierCode: TR
number: '868'
aircraft:
code: '788'
operating:
carrierCode: TR
duration: PT2H25M
id: '2'
numberOfStops: 0
blacklistedInEU: false
- duration: PT15H
segments:
- departure:
iataCode: DMK
terminal: '1'
at: '2021-02-05T23:15:00'
arrival:
iataCode: SIN
terminal: '1'
at: '2021-02-06T02:50:00'
carrierCode: TR
number: '867'
aircraft:
code: '788'
operating:
carrierCode: TR
duration: PT2H35M
id: '5'
numberOfStops: 0
blacklistedInEU: false
- departure:
iataCode: SIN
terminal: '1'
at: '2021-02-06T06:55:00'
arrival:
iataCode: SYD
terminal: '1'
at: '2021-02-06T18:15:00'
carrierCode: TR
number: '12'
aircraft:
code: '789'
operating:
carrierCode: TR
duration: PT8H20M
id: '6'
numberOfStops: 0
blacklistedInEU: false
price:
currency: EUR
total: '546.70'
base: '334.00'
fees:
- amount: '0.00'
type: SUPPLIER
- amount: '0.00'
type: TICKETING
grandTotal: '546.70'
pricingOptions:
fareType:
- PUBLISHED
includedCheckedBagsOnly: true
validatingAirlineCodes:
- HR
travelerPricings:
- travelerId: '1'
fareOption: STANDARD
travelerType: ADULT
price:
currency: EUR
total: '546.70'
base: '334.00'
fareDetailsBySegment:
- segmentId: '1'
cabin: ECONOMY
fareBasis: O2TR24
class: O
includedCheckedBags:
weight: 20
weightUnit: KG
- segmentId: '2'
cabin: ECONOMY
fareBasis: O2TR24
class: O
includedCheckedBags:
weight: 20
weightUnit: KG
- segmentId: '5'
cabin: ECONOMY
fareBasis: X2TR24
class: X
includedCheckedBags:
weight: 20
weightUnit: KG
- segmentId: '6'
cabin: ECONOMY
fareBasis: H2TR24
class: H
includedCheckedBags:
weight: 20
weightUnit: KG
- name: include
description: "Sub-resources to be included:\n * **credit-card-fees** to get the credit card fee applied on the booking\n * **bags** to get extra bag options\n * **other-services** to get services options\n * **detailed-fare-rules** to get detailed fare rules options\n"
in: query
type: array
items:
type: string
enum:
- credit-card-fees
- bags
- other-services
- detailed-fare-rules
collectionFormat: csv
- name: forceClass
description: 'parameter to force the usage of booking class for pricing
- **true**, to for pricing with the specified booking class
- **false**, to get the best available price
'
in: query
type: boolean
default: false
responses:
'200':
$ref: '#/responses/returnQuotation'
'400':
$ref: '#/responses/400_Prices'
default:
$ref: '#/responses/500'
description: ''
/shopping/flight-offers:
post:
tags:
- Shopping
operationId: searchFlightOffers
summary: Amadeus Return List of Flight Offers Based on Posted Searching Criteria.
parameters:
- $ref: '#/parameters/getOverride'
- name: getFlightOffersBody
description: list of criteria to retrieve a list of flight offers
in: body
required: true
schema:
$ref: '#/definitions/GetFlightOffersQuery'
responses:
'200':
$ref: '#/responses/returnAirOffers'
'400':
$ref: '#/responses/400_Search'
default:
$ref: '#/responses/500'
description: ''
get:
tags:
- Shopping
operationId: getFlightOffers
summary: Amadeus Return List of Flight Offers Based on Searching Criteria.
parameters:
- name: originLocationCode
in: query
description: city/airport [IATA code](http://www.iata.org/publications/Pages/code-search.aspx) from which the traveler will depart, e.g. BOS for Boston
required: true
type: string
pattern: '[A-Z]{3}'
x-example: SYD
- name: destinationLocationCode
in: query
description: city/airport [IATA code](http://www.iata.org/publications/Pages/code-search.aspx) to which the traveler is going, e.g. PAR for Paris
required: true
type: string
pattern: '[A-Z]{3}'
x-example: BKK
- name: departureDate
in: query
description: the date on which the traveler will depart from the origin to go to the destination. Dates are specified in the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) YYYY-MM-DD format, e.g. 2017-12-25
required: true
type: string
format: date
x-example: '2023-05-02'
- name: returnDate
in: query
description: the date on which the traveler will depart from the destination to return to the origin. If this parameter is not specified, only one-way itineraries are found. If this parameter is specified, only round-trip itineraries are found. Dates are specified in the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) YYYY-MM-DD format, e.g. 2018-02-28
required: false
type: string
format: date
- name: adults
in: query
description: 'the number of adult travelers (age 12 or older on date of departure).
The total number of seated travelers (adult and children) can not exceed 9.'
required: true
type: integer
minimum: 1
maximum: 9
default: 1
- name: children
in: query
description: 'the number of child travelers (older than age 2 and younger than age 12 on date of departure) who will each have their own separate seat. If specified, this number should be greater than or equal to 0
The total number of seated travelers (adult and children) can not exceed 9.'
required: false
type: integer
minimum: 0
maximum: 9
- name: infants
in: query
description: the number of infant travelers (whose age is less or equal to 2 on date of departure). Infants travel on the lap of an adult traveler, and thus the number of infants must not exceed the number of adults. If specified, this number should be greater than or equal to 0
required: false
type: integer
minimum: 0
maximum: 9
- name: travelClass
in: query
description: most of the flight time should be spent in a cabin of this quality or higher. The accepted travel class is economy, premium economy, business or first class. If no travel class is specified, the search considers any travel class
required: false
type: string
enum:
- ECONOMY
- PREMIUM_ECONOMY
- BUSINESS
- FIRST
- name: includedAirlineCodes
in: query
description: 'This option ensures that the system will only consider these airlines. This can not be cumulated with parameter excludedAirlineCodes.
Airlines are specified as [IATA airline codes](http://www.iata.org/publications/Pages/code-search.aspx) and are comma-separated, e.g. 6X,7X,8X
'
required: false
type: string
collectionFormat: csv
pattern: '[0-9A-Z]{2}'
- name: excludedAirlineCodes
in: query
description: 'This option ensures that the system will ignore these airlines. This can not be cumulated with parameter includedAirlineCodes.
Airlines are specified as [IATA airline codes](http://www.iata.org/publications/Pages/code-search.aspx) and are comma-separated, e.g. 6X,7X,8X
'
required: false
type: string
collectionFormat: csv
pattern: '[0-9A-Z]{2}'
- name: nonStop
in: query
description: if set to true, the search will find only flights going from the origin to the destination with no stop in between
required: false
type: boolean
default: false
- name: currencyCode
in: query
description: the preferred currency for the flight offers. Currency is specified in the [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) format, e.g. EUR for Euro
required: false
type: string
pattern: '[A-Z]{3}'
- name: maxPrice
in: query
description: maximum price per traveler. By default, no limit is applied. If specified, the value should be a positive number with no decimals
required: false
type: integer
minimum: 1
- name: max
in: query
description: maximum number of flight offers to return. If specified, the value should be greater than or equal to 1
required: false
type: integer
minimum: 1
default: 250
responses:
'200':
$ref: '#/responses/GETAirOffersReply'
'400':
$ref: '#/responses/400_Search'
default:
$ref: '#/responses/500'
description: ''
definitions:
ContactPurpose:
description: the purpose for which this contact is to be used
type: string
enum:
- STANDARD
- INVOICE
- STANDARD_WITHOUT_TRANSMISSION
DiscountType:
description: type of discount applied
type: string
enum:
- SPANISH_RESIDENT
- AIR_FRANCE_DOMESTIC
- AIR_FRANCE_COMBINED
- AIR_FRANCE_METROPOLITAN
example: SPANISH_RESIDENT
Coverage:
description: part of the trip covered by the travel class restriction (ALL_SEGMENTS if ommited)
type: string
enum:
- MOST_SEGMENTS
- AT_LEAST_ONE_SEGMENT
- ALL_SEGMENTS
example: MOST_SEGMENTS
TermAndCondition:
properties:
category:
type: string
description: This defines what type of modification is concerned in this rule.
enum:
- REFUND
- EXCHANGE
- REVALIDATION
- REISSUE
- REBOOK
- CANCELLATION
example: EXCHANGE
circumstances:
type: string
notApplicable:
type: boolean
maxPenaltyAmount:
type: string
descriptions:
type: array
items:
title: Description
properties:
descriptionType:
type: string
text:
type: string
FlightOfferUpsellIn:
title: FlightOfferUpsell-Input
type: object
description: input parameter to upsell flight offers element
required:
- type
- flightOffers
properties:
type:
description: the resource name
type: string
example: flight-offer-upsell
flightOffers:
description: list of flight offer to price
type: array
minItems: 1
maxItems: 6
items:
$ref: '#/definitions/FlightOffer'
payments:
description: payment information for retrieve eventual credit card fees
type: array
maxItems: 6
items:
$ref: '#/definitions/Payment'
ContactDictionary:
description: represents a contact
type: object
properties:
addresseeName:
description: the name of the person addressed by these contact details
$ref: '#/definitions/Name'
address:
$ref: '#/definitions/Address'
language:
description: the preferred language of communication with this Contact
type: string
purpose:
$ref: '#/definitions/ContactPurpose'
Contact:
description: contact information
allOf:
- $ref: '#/definitions/ContactDictionary'
- type: object
properties:
phones:
description: Phone numbers
type: array
maxItems: 3
items:
$ref: '#/definitions/Phone'
companyName:
description: Name of the company
type: string
example: AMADEUS
emailAddress:
type: string
description: Email address (e.g. john@smith.com)
example: support@mail.com
Extended_PricingOptions:
title: pricingOptions
description: fare filter options
type: object
properties:
includedCheckedBagsOnly:
type: boolean
description: If true, returns the flight-offers with included checked bags only
example: true
refundableFare:
type: boolean
description: If true, returns the flight-offers with refundable fares only
example: true
noRestrictionFare:
type: boolean
description: If true, returns the flight-offers with no restriction fares only
example: true
noPenaltyFare:
type: boolean
description: If true, returns the flight-offers with no penalty fares only
example: true
Phone:
type: object
description: phone information
properties:
deviceType:
$ref: '#/definitions/PhoneDeviceType'
countryCallingCode:
type: string
description: Country calling code of the phone number, as defined by the International Communication Union. Examples - "1" for US, "371" for Latvia.
pattern: '[0-9+]{2,5}'
number:
type: string
description: Phone number. Composed of digits only. The number of digits depends on the country.
pattern: '[0-9]{1,15}'
ChargeableCheckdBags:
description: Details of chargeable checked bags
allOf:
- $ref: '#/definitions/BaggageAllowance'
- type: object
properties:
id:
description: Id of the chargeable bag
type: string
example: '1'
CarrierRestrictions:
description: Restriction towards carriers.
type: object
properties:
blacklistedInEUAllowed:
description: This flag enable/disable filtering of blacklisted airline by EU. The list of the banned airlines is published in the Official Journal of the European Union, where they are included as annexes A and B to the Commission Regulation. The blacklist of an airline can concern all its flights or some specific aircraft types pertaining to the airline
type: boolean
default: false
excludedCarrierCodes:
description: This option ensures that the system will only consider these airlines.
type: array
minItems: 1
maxItems: 99
items:
type: string
includedCarrierCodes:
description: This option ensures that the system will only consider these airlines.
type: array
minItems: 1
maxItems: 99
items:
type: string
CreditCardFee:
title: creditCardFee
type: object
properties:
brand:
$ref: '#/definitions/PaymentBrand'
amount:
type: string
example: '1'
currency:
type: string
example: USD
flightOfferId:
description: Id of the flightOffer concerned by the credit card fee
type: string
example: '1'
Fee:
description: a fee
properties:
amount:
type: string
example: '332.70'
type:
$ref: '#/definitions/FeeType'
Document:
type: object
description: the information that are found on an ID document
properties:
number:
type: string
description: The document number (shown on the document) . E.g. QFU514563221J
issuanceDate:
type: string
description: Date at which the document has been issued.
format: date
expiryDate:
type: string
description: Date after which the document is not valid anymore.
format: date
issuanceCountry:
type: string
description: '[ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) of the country that issued the document'
pattern: '[a-zA-Z]{2}'
issuanceLocation:
type: string
description: A more precise information concerning the place where the document has been issued, when available. It may be a country, a state, a city or any other type of location. e.g. New-York
nationality:
type: string
description: '[ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) of the nationality appearing on the document'
pattern: '[a-zA-Z]{2}'
birthPlace:
type: string
description: Birth place as indicated on the document
TravelerInfo:
type: object
properties:
id:
type: string
example: 1
travelerType:
$ref: '#/definitions/TravelerType'
associatedAdultId:
type: string
description: if type="HELD_INFANT", corresponds to the adult travelers's id who will share the seat
required:
- id
- travelerType
DocumentType:
type: string
description: the nature/type of the document
enum:
- VISA
- PASSPORT
- IDENTITY_CARD
- KNOWN_TRAVELER
- REDRESS
example: VISA
ElementaryPrice:
description: elementaryPrice
type: object
properties:
amount:
type: string
description: Amount of the fare. could be alpha numeric. Ex- 500.20 or 514.13A, 'A'signifies additional collection.
currencyCode:
type: string
description: Currency type of the fare.
Segment:
allOf:
- type: object
properties:
id:
description: Id of the segment
type: string
example: 1
numberOfStops:
description: Number of stops
type: integer
example: 0
blacklistedInEU:
description: "When the flight has a marketing or/and operating airline that is identified as blacklisted by the European Commission. \n\nTo improve travel safety, the European Commission regularly updates the list of the banned carriers from operating in Europe. It allows any Travel Agency located in the European Union to easily identify and hide any travel recommendation based on some unsafe airlines. \nThe [list of the banned airlines](https://ec.europa.eu/transport/sites/transport/files/air-safety-list_en.pdf) is published in the Official Journal of the European Union, where they are included as annexes A and B to the Commission Regulation. The blacklist of an airline can concern all its flights or some specific aircraft types pertaining to the airline \n"
type: boolean
example: false
co2Emissions:
description: Co2 informations
type: array
minItems: 1
items:
title: Co2Emission
$ref: '#/definitions/Co2Emission'
- $ref: '#/definitions/FlightSegment'
ChargeableSeat:
description: Details of chargeable seat
type: object
properties:
id:
description: Id of the chargeable seat
type: string
example: '1'
number:
type: string
description: seat number
example: 33D
pattern: '[1-9][0-9]{0,2}[A-Z]?'
TravelerType:
type: string
description: 'traveler type
age restrictions : CHILD < 12y, HELD_INFANT < 2y, SEATED_INFANT < 2y, SENIOR >=60y
'
enum:
- ADULT
- CHILD
- SENIOR
- YOUNG
- HELD_INFANT
- SEATED_INFANT
- STUDENT
example: ADULT
TravelClass:
description: quality of service offered in the cabin where the seat is located in this flight. Economy, premium economy, business or first class
type: string
enum:
- ECONOMY
- PREMIUM_ECONOMY
- BUSINESS
- FIRST
example: PREMIUM_ECONOMY
PhoneDeviceType:
type: string
description: Type of the device (Landline, Mobile or Fax)
enum:
- MOBILE
- LANDLINE
- FAX
OriginDestination:
allOf:
- $ref: '#/definitions/OriginDestinationLight'
- type: object
properties:
originRadius:
description: 'Include other possible locations around the point, located less than this distance in kilometers away. Max:300
Can not be combined with "dateWindow" or "timeWindow".
'
type: number
example: 200
alternativeOriginsCodes:
type: array
description: Set of alternative origin location, such as a city or an airport. Currently, only the locations defined in [IATA](http://www.iata.org/publications/Pages/code-search.aspx) are supported.
minItems: 1
maxItems: 2
items:
title: code
type: string
example:
- LON
- MUC
destinationRadius:
description: 'Include other possible locations around the point, located less than this distance in kilometers away. Max:300
Can not be combined with "dateWindow" or "timeWindow".
'
type: number
example: 200
alternativeDestinationsCodes:
type: array
description: Set of alternative destination location, such as a city or an airport. Currently, only the locations defined in [IATA](http://www.iata.org/publications/Pages/code-search.aspx) are supported.
minItems: 1
maxItems: 2
items:
title: code
type: string
departureDateTimeRange:
description: Approximate date and time of departure, specified as a local date and time range.
$ref: '#/definitions/DateTimeRange'
arrivalDateTimeRange:
description: Approximate date and time of arrival, specified as a local date and time range.
$ref: '#/definitions/DateTimeRange'
LoyaltyProgram:
title: LoyaltyProgram
description: loyalty program information
type: object
properties:
programOwner:
type: string
description: loyalty program airline code
example: AF
id:
type: string
description: loyalty program number
example: '12357466574'
OriginalFlightStop:
description: details of stops for direct or change of gauge flights
type: object
properties:
iataCode:
description: '[IATA airline codes](http://www.iata.org/publications/Pages/code-search.aspx)'
type: string
example: JFK
duration:
type: string
description: stop dur
# --- truncated at 32 KB (160 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/amadeus-solutions/refs/heads/main/openapi/amadeus-solutions-shopping-api-openapi.yml