openapi: 3.0.1
info:
title: TUI Flight OTA API
version: '0.9'
contact:
name: OTA-TEAM
email: ota.support@tui.be
description: Flight only OTA Api
servers:
- url: 'https://prod.api.tui'
- url: 'https://playground.api.tui'
paths:
/ota/getflights:
get:
description: Returns all available flight routes and their corresponding flight keys.
security:
- oAuth2ClientCredentials: []
responses:
'200':
description: 200 response
content:
application/json:
schema:
$ref: '#/components/schemas/getflightsResponse'
examples:
getflights:
$ref: '#/components/examples/getflightsExample'
operationId: getflights
/ota/flightavailability:
get:
description: Returns flight availability, pricing and seat information for a given route and travel dates.
security:
- oAuth2ClientCredentials: []
parameters:
- name: departuredate
description: Start date of the journey. Format yyyymmdd
in: query
required: true
example: 20270118
schema:
type: string
format: date
pattern: '^\d{8}$'
- name: departureairport
description: IATA code of the departure location of the outward journey.
in: query
required: true
example: BRU
schema:
type: string
- name: destinationairport
description: IATA code of the destination location of the outward journey.
in: query
example: TFS
required: true
schema:
type: string
- name: returndate
description: Return date of the journey. Format yyyymmdd
in: query
example: 20270125
schema:
type: string
format: date
pattern: '^\d{8}$'
- name: adults
description: Amount of adults.
example: 1
in: query
required: true
schema:
type: number
format: integer
- name: children
description: Amount of children
in: query
example: 0
schema:
type: number
format: integer
- name: infant
description: Amount of infants
in: query
example: 0
schema:
type: number
format: integer
- name: locale
description: Locale to use for the query. en_GB by default.
example: en_GB
in: query
schema:
type: string
responses:
'200':
description: 200 response
content:
application/json:
schema:
$ref: '#/components/schemas/flightavailabilityResponse'
examples:
flightavailability:
$ref: '#/components/examples/flightavailabilityExample'
'404':
description: When there is not a possible route to satisfy the search criteria.
content: {}
operationId: flightavailablity
/ota/includedluggage:
get:
security:
- oAuth2ClientCredentials: []
parameters:
- name: pax
in: query
required: true
description: 'Url encoded list of passenger object, each item with Id and passenger type'
schema:
type: string
format: json+url encode
example: '[{"id":1,"type":"a"},{"id":2,"type":"c"},{"id":3,"type":"i"}]'
- name: flightkey
in: query
required: true
example: BRUTFS20270118202701181751TB
schema:
type: string
format: flightKey
description: Flight key
- name: returnflightkey
in: query
example: TFSBRU20270117202701171752TB
schema:
type: string
format: flightKey
description: Flight key of the return flight
responses:
'200':
description: type H = luggage that customer can carry on board(hand-luggage) - <br />type C = cargo luggage
content:
application/json:
schema:
$ref: '#/components/schemas/includedLuggageResponse'
examples:
includedluggage:
$ref: '#/components/examples/includedluggageExample'
operationId: includdedluggage
description: Luggage that's included
/ota/luggage:
get:
security:
- oAuth2ClientCredentials: []
parameters:
- name: flightkey
in: query
description: Flight key of the selected plane.
required: true
example: BRUTFS20270118202701181751TB
schema:
type: string
format: flightKey
- name: returnflightkey
in: query
description: Return flight key of the selected plane.
example: TFSBRU20270117202701171752TB
schema:
type: string
format: flightKey
- name: locale
in: query
example: en_GB
schema:
$ref: '#/components/schemas/locale'
type: string
description: language code
responses:
'200':
description: List of possible luggage options for the requested flight key.
content:
application/json:
schema:
$ref: '#/components/schemas/luggageResponse'
examples:
luggage:
$ref: '#/components/examples/luggageExample'
operationId: luggage
description: Returns the available checked luggage (hold baggage) options and pricing for a specific flight.
/ota/pricecalculation:
get:
description: Calculates the total price for a flight including selected ancillaries. When the "book" parameter is set to 1, it also creates a reservation.
security:
- oAuth2ClientCredentials: []
parameters:
- name: book
description: Set to 0 for price calculation only. Set to 1 to create a reservation.
in: query
schema:
type: number
format: integer
pattern: '^[0|1]$'
- name: flightkey
in: query
required: true
schema:
$ref: '#/components/schemas/flightkey'
description: Flight key
example: BRUTFS20270118202701181751TB
- name: returnflightkey
in: query
schema:
$ref: '#/components/schemas/flightkey'
description: Return flight key
example: TFSBRU20270117202701171752TB
- name: luggage
in: query
schema:
type: string
description: json object for luggage
example: '[{"paxId":1,"out":20,"ret":20},{"paxId":2,"out":0,"ret":0},{"paxId":3,"out":0,"ret":0}]'
- name: handluggage
in: query
schema:
type: string
description: json object for handluggage
example: '[{"paxId":1,"out":"HBAG","ret":"HBAG"},{"paxId":2,"out":"PBAG","ret":"PBAG"}]'
- name: sports
in: query
schema:
type: string
description: json object for sports equipment
example: '[{"paxId":1,"out":"BICYCLE","ret":"BICYCLE"}]'
- name: assistance
in: query
schema:
type: string
description: json object for assistance options
example: '[{"paxId":1,"out":"WCHR","ret":"WCHR"}]'
- name: pets
in: query
schema:
type: string
description: json object for pet transport
example: '[{"paxId":1,"out":"PETC","ret":"PETC"}]'
- name: pax
in: query
required: true
schema:
type: string
description: json object for pax(a=adult,c=child,i=infant)
example: 'book=0 [{"id":1,"type":"a"},{"id":2,"type":"c"},{"id":3,"type":"i"}]
book=1 [{"id":1,firstname:"John",name:"Doe",title:1,birthday:"19790825","type":"a"},{"id":2,firstname:"Jane",name:"Doe",title:2,birthday:"20150825","type":"c"},{"id":3,firstname:"Marcel",name:"Doe",title:2,birthday:"20210825","type":"i"}]'
- name: name
in: query
schema:
type: string
description: Surname of the customer
example: Doe
- name: firstname
in: query
schema:
type: string
description: Firstname of the customer
example: John
- name: email
in: query
schema:
type: string
format: email
description: Email address of the customer
example: john.doe@gmail.com
- name: phonePrefix
in: query
schema:
type: number
format: integer
description: Phone prefix of the customer
example: 32
- name: phone
in: query
schema:
type: string
description: Phone number of the customer
- name: phonePrefix2
in: query
schema:
type: number
format: integer
description: Second phone prefix of the customer
example: 32
- name: phone2
in: query
schema:
type: string
description: Second phone number of the customer
- name: bus
in: query
schema:
type: string
description: Mailbox of the customer
- name: street
example: Main street
in: query
schema:
type: string
description: Streetname of the address of the customer
- name: streetnr
in: query
example: 14
schema:
type: string
description: House number of the address of the customer
- name: city
in: query
example: Ostend
schema:
type: string
description: City of the address of the customer
- name: countrycode
in: query
example: BE
schema:
type: string
description: Countrycode of the country of the customer(ISO 3166-1 alpha-2 code)
- name: price
in: query
example: 264.99
schema:
type: string
description: Price that you receive when book=0 needs to be sent when book=1 so we are sure you have the same price
- name: zip
in: query
example: 8400
schema:
type: string
description: Zip code(postal code) of the city of the customer
- name: birthday
in: query
schema:
type: string
format: date
pattern: '^\d{8}$'
description: Date of birth of the customer yyyymmdd
example: 19790825
- name: locale
in: query
schema:
$ref: '#/components/schemas/locale'
description: Locale
- name: servicebundle
in: query
example: F
schema:
type: string
description: servicebundle code
responses:
'200':
description: 200 response
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/priceCalculationPrice'
- $ref: '#/components/schemas/priceCalculationBook'
examples:
pricecalculation:
$ref: '#/components/examples/priceCalculationExample'
operationId: pricecalculcation
/ota/pay:
get:
security:
- oAuth2ClientCredentials: []
parameters:
- name: po
in: query
example: 100000599969
required: true
description: The reservation number you want to do a payment for.
schema:
type: string
minLength: 9
maxLength: 12
format: numeric
pattern: '^\d{9,12}$'
- name: cardnumber
example: 4007702835532454
in: query
description: Credit card number or encrypted card, no spaces.
required: true
schema:
type: string
format: numeric
pattern: ^\d+$
- name: cvc
example: 123
in: query
description: Credit card cvc code. Required for standard payment, needs to be removed for encrypted card payment.
schema:
type: string
minLength: 3
maxLength: 4
format: numeric
pattern: '^\d{3,4}$'
- name: expirydate
example: 0128
in: query
description: 'Credit card expire date. Format: mmyy. Required for standard payment, needs to be removed for encrypted card payment.'
schema:
type: string
format: date
- name: locale
example: en_GB
in: query
description: locale
schema:
$ref: '#/components/schemas/locale'
- name: amount
example: 30000
description: Total amount to pay for this reservation. This amount needs to be multiplied by 100.
in: query
required: true
schema:
type: number
format: integer
responses:
'200':
description: When payment details have been received.
content:
application/json:
schema:
$ref: '#/components/schemas/payResponse'
examples:
payment-ok:
$ref: '#/components/examples/payOkExample'
payment-ko:
$ref: '#/components/examples/payKoExample'
operationId: pay
description: >-
Submits a virtual card payment for an existing reservation.
Supports two modes: standard payment (cardnumber, cvc, expirydate) or
encrypted card payment (cardnumber).
post:
security:
- oAuth2ClientCredentials: []
parameters:
- name: po
in: query
required: true
example: 100000599969
description: The reservation number you want to do a payment for.
schema:
type: string
minLength: 9
maxLength: 12
format: numeric
pattern: '^\d{9,12}$'
- name: cardnumber
example: 4007702835532454
in: query
description: Credit card number or encrypted card, no spaces
required: true
schema:
type: string
format: numeric
pattern: ^\d+$
- name: cvc
in: query
example: 123
description: Credit card cvc code. Required for standard payment, needs to be removed for encrypted card payment.
schema:
type: string
minLength: 3
maxLength: 4
format: numeric
pattern: '^\d{3,4}$'
- name: expirydate
example: 0128
in: query
description: 'Credit card expire date. Format: mmyy. Required for standard payment, needs to be removed for encrypted card payment.'
schema:
type: string
format: date
- name: locale
example: en_GB
in: query
description: locale
schema:
$ref: '#/components/schemas/locale'
- name: amount
example: 30000
description: Total amount to pay for this reservation. This amount needs to be multiplied by 100.
in: query
required: true
schema:
type: number
format: integer
responses:
'200':
description: When payment details have been received.
content:
application/json:
schema:
$ref: '#/components/schemas/payResponse'
examples:
payment-ok:
$ref: '#/components/examples/payOkExample'
payment-ko:
$ref: '#/components/examples/payKoExample'
operationId: post_pay
description: >-
Submits a credit card payment for an existing reservation.
Supports two modes: standard payment (cardnumber, cvc, expirydate) or
encrypted card payment (cardnumber).
/ota/bookinfo:
get:
security:
- oAuth2ClientCredentials: []
description: Retrieves information about a specific reservation.
parameters:
- name: po
description: PO number
example: 100000599969
in: query
required: true
schema:
type: string
format: numeric
minLength: 9
maxLength: 12
pattern: '^\d{9,12}$'
responses:
'200':
description: A booking information
content:
application/json:
schema:
$ref: '#/components/schemas/bookinfoResponse'
examples:
bookinfo:
$ref: '#/components/examples/bookinfoExample'
'404':
description: 404 response when booking is not found in the system.
content: {}
operationId: bookinfo
/ota/servicebundle:
get:
security:
- oAuth2ClientCredentials: []
description: Retrieves information about servicebundles.
parameters:
- name: flightkey
in: query
required: true
schema:
$ref: '#/components/schemas/flightkey'
description: Flight key
example: BRUTFS20270118202701181751TB
- name: returnflightkey
in: query
schema:
$ref: '#/components/schemas/flightkey'
description: Return flight key
example: TFSBRU20270117202701171752TB
responses:
'200':
description: Information about a servicebundle for a specific flight or flightcombination
content:
application/json:
schema:
$ref: '#/components/schemas/servicebundleResponse'
examples:
servicebundle:
$ref: '#/components/examples/servicebundleExample'
'404':
description: 404 response when flight or servicebundle is not found in the system.
content: {}
operationId: servicebundle
/ota/handluggage:
get:
security:
- oAuth2ClientCredentials: []
parameters:
- name: flightkey
in: query
description: Flight key of the selected plane.
required: true
example: BRUTFS20270118202701181751TB
schema:
type: string
format: flightKey
- name: returnflightkey
in: query
description: Return flight key of the selected plane.
example: TFSBRU20270117202701171752TB
schema:
type: string
format: flightKey
- name: locale
in: query
example: en_GB
schema:
$ref: '#/components/schemas/locale'
type: string
description: language code
responses:
'200':
description: List of possible handluggage options for the requested flight key.
content:
application/json:
schema:
$ref: '#/components/schemas/handluggageResponse'
examples:
handluggage:
$ref: '#/components/examples/handluggageExample'
operationId: handluggage
description: >-
Returns the possible handluggage options for a specific flight.
Codes: PBAG = Personal bag (max 2kg, 40x30x20 cm),
HBAG = Hand baggage / cabin trolley (max 10kg, 55x40x20 cm).
/ota/sports:
get:
security:
- oAuth2ClientCredentials: []
parameters:
- name: flightkey
in: query
description: Flight key of the selected plane.
required: true
example: BRUTFS20270118202701181751TB
schema:
type: string
format: flightKey
- name: returnflightkey
in: query
description: Return flight key of the selected plane.
example: TFSBRU20270117202701171752TB
schema:
type: string
format: flightKey
- name: locale
in: query
example: en_GB
schema:
$ref: '#/components/schemas/locale'
type: string
description: language code
responses:
'200':
description: List of possible sport options for the requested flight key.
content:
application/json:
schema:
$ref: '#/components/schemas/sportsResponse'
examples:
sports:
$ref: '#/components/examples/sportsExample'
operationId: sports
description: >-
Returns the possible sports equipment options for a specific flight.
Codes: SURFBOARD = Surfboard,
WINTER_SPORTS_EQUIPMENT = Winter sports equipment (skis, snowboard, etc.),
PARAGLIDER_PARACHUTE = Paraglider or parachute,
GOLF = Golf equipment,
DIVE = Diving equipment,
BICYCLE = Bicycle.
/ota/assistance:
get:
security:
- oAuth2ClientCredentials: []
parameters:
- name: flightkey
in: query
description: Flight key of the selected plane.
required: true
example: BRUTFS20270118202701181751TB
schema:
type: string
format: flightKey
- name: returnflightkey
in: query
description: Return flight key of the selected plane.
example: TFSBRU20270117202701171752TB
schema:
type: string
format: flightKey
- name: locale
in: query
example: en_GB
schema:
$ref: '#/components/schemas/locale'
description: language code
responses:
'200':
description: List of possible assistance options for the requested flight key.
content:
application/json:
schema:
$ref: '#/components/schemas/assistanceResponse'
examples:
assistance:
$ref: '#/components/examples/assistanceExample'
operationId: assistance
description: >-
Returns the possible assistance options for a specific flight.
Codes: YPTA = Young passenger travelling alone,
WCHS = Wheelchair - cannot walk long distances or climb stairs but can walk to seat,
WCHR = Wheelchair - cannot walk long distances but can climb stairs and walk to seat,
WCHC = Wheelchair - wheelchair-dependent and unable to walk,
WCH = Wheelchair - assistance for reduced mobility,
UMNR = Unaccompanied minor,
MAAS = Meet and assist at the airport,
DPNA = Passengers with a learning or cognitive impairment,
DEAF = Deaf or hearing impaired passenger,
BLND = Blind or visually impaired passenger.
/ota/pets:
get:
security:
- oAuth2ClientCredentials: []
parameters:
- name: flightkey
in: query
description: Flight key of the selected plane.
required: true
example: BRUTFS20270118202701181751TB
schema:
type: string
format: flightKey
- name: returnflightkey
in: query
description: Return flight key of the selected plane.
example: TFSBRU20270117202701171752TB
schema:
type: string
format: flightKey
- name: locale
in: query
example: en_GB
schema:
$ref: '#/components/schemas/locale'
description: language code
responses:
'200':
description: List of possible pet transport options for the requested flight key.
content:
application/json:
schema:
$ref: '#/components/schemas/petsResponse'
examples:
pets:
$ref: '#/components/examples/petsExample'
operationId: pets
description: 'Returns the possible pet transport options for a specific flight. Codes: PETC = Dog/cat up to 8kg (including bag) in the cabin, AVIH = Dog/cat in the heated cargo hold.'
components:
securitySchemes:
oAuth2ClientCredentials:
type: oauth2
flows:
clientCredentials:
tokenUrl: 'https://prod.api.tui/oauth2/token'
scopes: {}
schemas:
getflightsResponse:
type: object
properties:
flights:
type: array
items:
$ref: '#/components/schemas/flight'
flight:
type: object
properties:
key:
$ref: '#/components/schemas/flightkey'
depcode:
$ref: '#/components/schemas/locationCode'
depdate:
type: string
format: yyyy-mm-dd
deptime:
type: string
format: 'hh:mm'
arrcode:
$ref: '#/components/schemas/locationCode'
arrdate:
type: string
format: yyyy-mm-dd
arrtime:
type: string
format: 'hh:mm'
carrier:
type: string
carriername:
type: string
nr:
type: number
format: integer
stops:
type: number
format: integer
flightavailabilityResponse:
type: object
properties:
flights:
type: object
properties:
OUT:
$ref: '#/components/schemas/direction'
RET:
$ref: '#/components/schemas/direction'
messages:
type: array
items:
type: string
stopPreMeals:
type: object
properties:
OUT:
type: boolean
RET:
type: boolean
example:
$ref: '#/components/examples/flightavailabilityExample'
direction:
type: array
items:
$ref: '#/components/schemas/flightLeg'
flightLeg:
type: object
properties:
aircrafttype:
type: string
key:
$ref: '#/components/schemas/flightkey'
accomodation:
type: object
properties:
date:
type: string
format: yyyy-mm-dd
totalFree:
description: Total number of free seats in the plane.
type: number
format: integer
seatsAtThisPrice:
description: Number of free seats at the given code.
type: number
format: integer
infantsFree:
description: Number of seats free on the infant category
depart:
type: object
properties:
airport:
type: object
properties:
code:
$ref: '#/components/schemas/locationCode'
name:
type: string
datetime:
type: string
arrival:
type: object
properties:
airport:
type: object
properties:
code:
$ref: '#/components/schemas/locationCode'
name:
type: string
datetime:
type: string
via:
type: object
properties:
airport:
type: object
properties:
code:
type: string
departureTime:
type: string
pattern: '^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}:[+|-]\d{2}:\d{2}$'
arrivalTime:
type: string
pattern: '^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}:[+|-]\d{2}:\d{2}$'
carrier:
type: string
carrierOperatorCode:
type: string
number:
type: number
format: integer
fppAvailable:
type: boolean
fppDefault:
type: boolean
daySequence:
type: number
format: integer
price:
type: string
availableMeals:
description: 'Dictionary of available meals, whose key is the meal code associated to the meal object schema, including the code and prices'
type: object
additionalProperties:
type: object
properties:
code:
$ref: '#/components/schemas/mealCode'
price:
type: number
format: double
priceChild:
type: number
format: double
defaultMeal:
$ref: '#/components/schemas/mealCode'
carrierName:
type: string
occupationMatch:
type: number
format: integer
includedLuggageResponse:
type: object
properties:
OUT:
$ref: '#/components/schemas/directionIncludedLuggage'
RET:
$ref: '#/components/schemas/directionIncludedLuggage'
directionIncludedLuggage:
type: array
items:
$ref: '#/components/schemas/includedLuggageInformation'
includedLuggageInformation:
type: object
properties:
paxId:
type: string
included:
type: number
format: integer
maxPerBag:
type: number
format: integer
type:
type: string
price:
type: number
format: double
luggageResponse:
type: object
properties:
OUT:
$ref: '#/components/schemas/directionLuggage'
RET:
$ref: '#/components/schemas/directionLuggage'
ancillariesResponse:
type: object
properties:
OUT:
$ref: '#/components/schemas/directionAncillaries'
RET:
$ref: '#/components/schemas/directionAncillaries'
handluggageResponse:
type: object
properties:
handluggage:
type: object
properties:
OUT:
$ref: '#/components/schemas/directionHandluggage'
RET:
$ref: '#/components/schemas/directionHandluggage'
directionHandluggage:
type: array
items:
$ref: '#/components/schemas/handluggageInformation'
handluggageInformation:
type: object
properties:
price:
type: number
format: double
weight:
type: number
code:
type: string
dimensions:
$ref: '#/components/schemas/dimensions'
dimensions:
type: object
properties:
unit:
type: string
height:
type: number
length:
type: number
width:
type: number
assistanceResponse:
type: object
properties:
assistance:
type: object
properties:
OUT:
$ref: '#/components/schemas/directionAncillaries'
RET:
$ref: '#/components/schemas/directionAncillaries'
sportsResponse:
type: object
properties:
sports:
type: object
properties:
OUT:
$ref: '#/components/schemas/directionAncillaries'
RET:
$ref: '#/components/schemas/directionAncillaries'
petsResponse:
type: object
properties:
pets:
type: object
properties:
OUT:
$ref: '#/components/schemas/directionAncillaries'
RET:
$ref: '#/components/schemas/directionAncillaries'
directionLuggage:
type: array
items:
$ref: '#/components/schemas/luggageInformation'
directionAncillaries:
type: array
items:
$ref: '#/components/schemas/ancillariesInformation'
luggageInformation:
type: object
properties:
price:
type: number
format: double
weight:
type: number
ancil
# --- truncated at 32 KB (69 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/tui-group/refs/heads/main/openapi/tui-group-tui-flight-ota-api-openapi.yml