TUI OTA Content API

Accommodation content companion to the TravelMessage G7 booking interface, described on the portal as OTA content V2.0 and delivered as JSON rather than the G7 XML. Returns the content of a particular accommodation for partners already integrated with the G7 flow.

OpenAPI Specification

tui-group-tui-ota-content-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  version: '2.0'
  title: OTA Content API
  contact:
    name: Sales-OTA-TEAM
    url: 'https://developer.tui/api-catalog/ota-content-api'
    email: SalesOTAsupport@TUIGroup.onmicrosoft.com
  description: |
    Sales API for OTA services
    This API can be used to get content for the hotels for TUI packages in json format.
    This can be used to populate all the content related to hotel, i.e accom name, images, room info, features, facilities etc.
    
    This url is added in Supply file as contentLocation.

    The infomation from the Supply file can be used to get the content for particular hotel using this API
       
    All api's are based on the 3.1 G7 version with a few changes to support TUI packages. The Supply has a 
    custom defined schema.
x-header: |
  This API returns the content for particular hotel for TUI's packages specifically for OTA's according to the G7 standard.
x-summary: |
  This API returns the content for particular hotel for TUI's packages specifically for OTA's according to the G7 standard.
  This API returns content on all the available hotel for tui.nl packages for this specified package. 

# Servers where this API is hosted
servers: 
  - url: https://prod.api.tui/sales-ota-content

paths:

  '/v2/accommodations/{accommodation-code}':
    # This is an HTTP operation
    get:
      # Describe this verb here. Note: you can use markdown
      summary: 'Content API for OTA'
      description: |
        This is the request/response for content API
      # Expected responses for this operation:
      parameters:
        - in: path
          name: accommodation-code
          schema:
            type: string
          description: accommodation code (e.g. A1013029)
          required: true
        - in: query
          name: brand
          schema:
            type: string
          description: brand (e.g. NL)
          required: true
        - in: query
          name: relevantBrand
          schema:
            type: string
          description: brand (e.g. G7_NL) - If you don't pass this param then it would return web content
          required: false
      responses:
        '200':
          description: Successful response
          # Response body content.
          content:
            # JSON response with a schema referenced from the  
            # components object.
            application/json:
              schema:
                $ref: '#/components/schemas/ContentResponse' 
      tags:
        - G7 content


components:

  schemas:
    

    ContentResponse:
      type: object
      properties:
        code:
          type: string
          description: >-
            Accommodation code
          example: "A0376761"
        accommodationType:
          type: string
          description: >-
            Accommodation type
          example: "HOTEL"
        featureCodesAndValues:
          $ref: '#/components/schemas/AccomFeatures'
        galleryImages:
          $ref: '#/components/schemas/GalleryMediaData'
        roomsData:
          type: array
          items:
            $ref: '#/components/schemas/RoomData'
        boardBasis:
          type: array
          items:
            $ref: '#/components/schemas/BoardBasisData'
        geoHierarchy:
          type: object
          properties:
            geoHierarchy:
              $ref: '#/components/schemas/ContentGeoHierarchy'
        facilities:
          type: array
          items:
            $ref: '#/components/schemas/FacilityData'
        review:
          type: array
          items:
            $ref: '#/components/schemas/ReviewData'
    BoardBasisData:
      properties:
        boardbasisCode:
          type: string
          example: GT06-FB
        name:
          type: string
          example: Volpension
        featureCodesAndValues:
          $ref: '#/components/schemas/BoardBasisFeatures'
    BoardBasisFeatures:
      type: object
      properties:
        lunch_included:
          type: array
          items:
            type: string
            example: "true"
        dinner_included:
          type: array
          items:
            type: string
            example: "true"
        drinks_included:
          type: array
          items:
            type: string
            example: "true"
        snacks_included:
          type: array
          items:
            type: string
            example: "true"
        breakfast_included:
          type: array
          items:
            type: string
            example: "true"
    AccomFeatures:
      properties:
        introduction:
          type: array
          items: {}
          example:
          - Er heerst een levendige sfeer in hotel Gala dat populair is bij de Belgen. De centrale ligging, vlak bij het strand en de levendige uitgaansbuurt van Playa de la Americas is een van de pluspunten van dit hotel. Wil je je vakantie dat tikkeltje meer geven? Kies dan voor een verblijf in een superieure kamer met lekkere Nespresso koffie en één keer per dag gratis toegang tot het 'Spa circuit'.
        latitude:
          type: array
          items: {}
          example:
            - 28.066465
        locationInformation:
          type: array
          items: {}
          example:
            - centrum Playa las Americas op ca. 100 m 
        longitude:
          type: array
          items: {}
          example:
            - -16.73017
        name:
          type: array
          items: {}
          example:
            - lti Gala
        freeWifi:
          type: array
          items: {}
          example:
            - "true"
        officialRating:
          type: array
          items: {}
          example:
            - "5"
        tuinlId:
          type: array
          items: {}
          example:
            - "647319"
        noOfLifts:
          type: array
          items: {}
          example:
            - "1"
        accommodationType:
          type: array
          items: {}
          example:
            - "hotel"
        tRating:
          type: array
          items: {}
          example:
            - "5"
        noOfrooms:
          type: array
          items: {}
          example:
            - "121"
        usps:
          type: array
          items: {}
          example:
            - "seaview"
    GalleryMediaData:  
      type: array
      items:
        type: object
        properties:
          mainSrc:
            type: string
            example: "https://tui-sit-images.imgix.net/869a453196a5cbbae3fe908d7968e53b.jpg?&w=1080&h=608&fm=jpg&fl=progressive"
          mime:
            type: string
            example: "image/jpeg"
          size:
            type: string 
            example: "large"
          description:
            type: string 
          caption:
            type: string 
    FacilityData:
      type: object
      properties:
        code:
          type: string
          example: FACILITIES_A0376761_TUI_NL
        title:
          type: string
          example: Faciliteiten
        description:
          type: array
          items:
            type: string
          example:
            - "fitnessruimte, tafeltennis"
        suppliments:
          type: array
          items:
            type: object
            properties:
              code:
                type: string
                example: FACILITIES_ON_PAYMENT_A0376761_TUI_NL
              title:
                type: string
                example: Faciliteiten
              description:
                type: array
                items:
                  type: string
                  example: 
                    - "massage"
                    - "spa"
    ReviewData:
      type: object
      properties:
        source:
          type: string
          example: "TUI"
        averageRating:
          type: number
          example: 3.5
        tRating:
          type: number
          example: 5
        reviewsCount:
          type: number
          example: 200
        ratingBar:
          type: string
        ratingReviewsUrl:
          type: string
    ContentGeoHierarchy:
      type: array
      items:
        type: object
        properties:
          code:
            type: string
            example: "21bcba21-288b-5336-8298-b17883011f2f"
          name:
            type: string
            example: Spanje
          locationType:
            type: string
            example: COUNTRY 
          locationLevel:
            type: string
            example: 1
          subCategories:
            type: array
            items:
              type: object
              properties:
                code:
                  type: string
                  example: "62f3df64-e9f4-4c27-a06d-d3612c3f7f9b"
                name:
                  type: string
                  example: Gran Canaria
                locationType:
                  type: string
                  example: DESTINATION 
                locationLevel:
                  type: string
                  example: 2
                subCategories:
                  type: array  
                  items:
                    type: object
                    properties:
                      code:
                        type: string
                        example: "62f3df64-e9f4-4c27-a06d-d3612c3f7f9b"
                      name:
                        type: string
                        example: Meloneras
                      locationType:
                        type: string
                        example: RESORT 
                      locationLevel:
                        type: string
                        example: 3
                      subCategories:
                        type: array  
                        items: {}
    RoomData:
      type: object
      properties:
        roomtypeCode:
          type: string
          example: "af7fd41d-f507-4098-90b8-0c2b5dbc4e5f"
        roomType:
          type: string
          example: "tweepersoonskamer"
        roomTitle:
          type: string
          example: "tweepersoonskamer, 1-2 pers."
        occupancy:
          type: object
          properties:
            minOccupancy:
              type: number
              example: 1
            maxOccupancy:
              type: number
              example: 1
        usps:
          type: array
          items: {}
        description:
          type: string
        galleryImages:
          $ref: '#/components/schemas/GalleryMediaData'
        featureCodesAndValues:
          type: object
          properties:
            general:
              type: array
              items:
                type: string
            tuinlId:
              type: array
              items:
                type: string
            roomFullTitle:
              type: array
              items:
                type: string
            roomTypeName:
              type: array
              items:
                type: string
            kitchen:
              type: array
              items:
                type: string
            roomTitle:
              type: array
              items:
                type: string
            bathroom:
              type: array
              items:
                type: string
            bedroom:
              type: array
              items:
                type: string
            outside:
              type: array
              items:
                type: string