TUI Ship Content API v1.0

GraphQL endpoint for ship reference content — cabin types, boards and deck plans — queried for specific information related to a ship. The only GraphQL surface in TUI's published catalog.

OpenAPI Specification

tui-group-tui-ship-content-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Ship Content API
  description: API for querying ship details.
  version: "1.0.0"
  contact:
    email: NRCruiseTeam@TUIGroup.onmicrosoft.com
    name: "Cruise NR API Support"
  x-header: |
    API for querying ship details.
  x-summary: |
    API for querying ship details.

servers:
  - url: https://prod.api.tui/cruises/ship
  - url: https://pre-prod.api.tui/cruises/ship

paths:
  /graphql:
    post:
      summary: Get ship data
      description: Ship Content API provides information about cabin types, boards, and deck plan. This graphQL endpoint can be used to execute queries to fetch the specific information related to ship.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                query:
                  type: string
                  description: GraphQL query string for fetching ship details.
                  example: "query MyQuery { getShip(code: 150103) { boardTypes { code title variants { composition { additionalInformation name type } } } cabins { bathroom { facts { key text } } bedroom { facts { key text } } cabinNumbers { deck { images { caption category order url } number } cabinNumber { number facts { key text } } } code general { facts { key text } occupancy { max } } images { caption category order url } name } code name decks { number } } }"
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      getShip:
                        type: object
                        properties:
                          name:
                            type: string
                          code:
                            type: string
                        
        '400':
          description: Invalid request
        '500':
          description: Server error
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    example: null
                  errors:
                    type: array
                    items:
                      type: object
                      properties:
                        path:
                          type: string
                          example: null
                        locations:
                          type: array
                          items:
                            type: object
                            properties:
                              line:
                                type: string
                                example: 3
                              column:
                                type: string
                                example: 5
                              sourceName:
                                type: string
                                example: null
                        message:
                          type: string
                          example: "error message"

components:
  schemas:
    Ship:
      type: object
      properties:
        code:
          type: string
        name:
          type: string
        boardTypes:
          type: array
          items:
            type: object
            properties:
              code:
                type: string
              title:
                type: string
              variants:
                type: array
                items:
                  type: object
                  properties:
                    composition:
                      type: object
                      properties:
                        additionalInformation:
                          type: string
                        name:
                          type: string
                        type:
                          type: string
        cabins:
          type: array
          items:
            type: object
            properties:
              code:
                type: string
              bathroom:
                type: object
                properties:
                  facts:
                    type: array
                    items:
                      type: object
                      properties:
                        key:
                          type: string
                        text:
                          type: string
              bedroom:
                type: object
                properties:
                  facts:
                    type: array
                    items:
                      type: object
                      properties:
                        key:
                          type: string
                        text:
                          type: string
              cabinNumbers:
                type: array
                items:
                  type: object
                  properties:
                    cabinNumber:
                      type: array
                      items:
                        type: object
                        properties:
                          number:
                            type: integer
                          facts:
                            type: array
                            items:
                              type: object
                              properties:
                                key:
                                  type: string
                                text:
                                  type: string
                    deck:
                      type: object
                      properties:
                        number:
                          type: string
                        images:
                          type: array
                          items:
                            type: object
                            properties:
                              caption:
                                type: string
                              category:
                                type: string
                              url:
                                type: string
                              order:
                                type: integer
              general:
                type: object
                properties:
                  occupancy:
                    type: object
                    properties:
                      max:
                        type: integer
                  facts:
                    type: array
                    items:
                      type: object
                      properties:
                        key:
                          type: string
                        text:
                          type: string
              images:
                type: array
                items:
                  type: object
                  properties:
                    caption:
                      type: string
                    category:
                      type: string
                    order:
                      type: integer
                    url:
                      type: string
              name:
                type: string
        decks:
          type: array
          items:
            type: object
            properties:
              number:
                type: string
              images:
                type: array
                items:
                  type: object
                  properties:
                    caption:
                      type: string
                    order:
                      type: integer
                    url:
                      type: string
                    category:
                      type: string