TUI Flight OTA API

Distribution API for TUI fly Benelux content — the routes and destinations sold on tuifly.be, tui.nl, tuifly.ma and tuifly.fr — offered to third parties who want to resell TUI fly flights. Documented sub-APIs cover flights, price and availability checks with fare basis and fare conditions, baggage allowance and paid extra baggage, and booking plus payment. Access begins with "Step 1: Conclude a contract"; production credentials are only issued after at least one successful test booking on the playground environment.

OpenAPI Specification

tui-group-tui-flight-ota-api-openapi.yml Raw ↑
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