TUI Group Booking/contacts API

The booking/contacts API from TUI Group — 5 operation(s) for booking/contacts.

Operations 16

GET /api/nsk/v1/booking/contacts Gets all the contacts on the booking. #
POST /api/nsk/v1/booking/contacts Creates a new contact on the booking. #
GET /api/nsk/v1/booking/contacts/{contactTypeCode} Gets a specific contact on the booking. #
PUT /api/nsk/v1/booking/contacts/{contactTypeCode} Updates a specific contact on the booking based on type code. #
PATCH /api/nsk/v1/booking/contacts/{contactTypeCode} Patches a specific contact on the booking based on type code. #
DELETE /api/nsk/v1/booking/contacts/{contactTypeCode} Deletes a specific contact on the booking based on type code. #
GET /api/nsk/v1/booking/contacts/{contactTypeCode}/phoneNumbers Gets the collection of phone number for a specific contact on the booking. #
POST /api/nsk/v1/booking/contacts/{contactTypeCode}/phoneNumbers Creates a new phone number on a specific contact on the booking. #
GET /api/nsk/v1/booking/contacts/{contactTypeCode}/phoneNumbers/{phoneNumberType} Gets the specific phone number from a specific contact on the booking. #
PUT /api/nsk/v1/booking/contacts/{contactTypeCode}/phoneNumbers/{phoneNumberType} Updates a specific phone number on a specific contact on the booking. #
DELETE /api/nsk/v1/booking/contacts/{contactTypeCode}/phoneNumbers/{phoneNumberType} Deletes a specific phone number on a specific contact on the booking. #
GET /api/nsk/v1/booking/contacts/primary Gets the primary contact based on configuration. #
POST /api/nsk/v1/booking/contacts/primary Creates a new primary contact based on configuration. #
PUT /api/nsk/v1/booking/contacts/primary Updates the primary contact. #
PATCH /api/nsk/v1/booking/contacts/primary Patches the primary contact. #
DELETE /api/nsk/v1/booking/contacts/primary Delete the primary contact. #

Documentation

📖
Documentation
https://developer.tui/api-catalog/newskies-digital-api/api-description
📖
Documentation
https://developer.tui/api-catalog/newskies-digital-api/get-started
📖
Documentation
https://developer.tui/api-catalog/newskies-digital-api/simple-workflow
📖
Documentation
https://developer.tui/api-catalog/newskies-digital-api/advanced-workflow
📖
Documentation
https://developer.tui/api-catalog/newskies-digital-api/creditcard-payments
📖
Documentation
https://developer.tui/api-catalog/newskies-digital-api/backwards-compatibility
📖
Documentation
https://developer.tui/api-catalog/newskies-gonow-api/api-description
📖
Documentation
https://developer.tui/api-catalog/newskies-gonow-api/get-started
📖
Documentation
https://developer.tui/api-catalog/newskies-gonow-api/check-workflow
📖
Documentation
https://developer.tui/api-catalog/newskies-gonow-api/backwards-compatibility
📖
Documentation
https://developer.tui/api-catalog/newskies-payment-api/api-description
📖
Documentation
https://developer.tui/api-catalog/newskies-payment-api/booking-flow
📖
Documentation
https://developer.tui/api-catalog/nskcc-availability-search-api/description
📖
Documentation
https://developer.tui/api-catalog/nskcc-availability-search-api/api-details
📖
Documentation
https://developer.tui/api-catalog/nskcc-availability-search-api/technical-integration
📖
Documentation
https://developer.tui/api-catalog/nskcc-availability-search-api/code-examples
📖
Documentation
https://developer.tui/api-catalog/nskcc-availability-search-api/api-onepager
📖
Documentation
https://developer.tui/api-catalog/tui-newskies-pricefile-api/description
📖
Documentation
https://developer.tui/api-catalog/tui-newskies-pricefile-api/technical-integration
📖
Documentation
https://developer.tui/api-catalog/tui-newskies-pricefile-api/data-format
📖
Documentation
https://developer.tui/api-catalog/checkinhandler-service-api/api-description
📖
Documentation
https://developer.tui/api-catalog/checkinhandler-service-api/api-details
📖
Documentation
https://developer.tui/api-catalog/checkinhandler-service-api/technical-integration
📖
Documentation
https://developer.tui/api-catalog/tui-flight-ota-api/api-description
📖
Documentation
https://developer.tui/api-catalog/ota-content-api/api-description
📖
Documentation
https://developer.tui/api-catalog/ota-content-api/technical-details
📖
Documentation
https://developer.tui/api-catalog/ota-content-api/release-notes
📖
Documentation
https://developer.tui/api-catalog/walldy-api/api-description
📖
Documentation
https://developer.tui/api-catalog/walldy-api/api-details
📖
Documentation
https://developer.tui/api-catalog/walldy-api/technical-integration
📖
Documentation
https://developer.tui/api-catalog/walldy-api/api-onepager
📖
Documentation
https://developer.tui/api-catalog/walldy-api/release-notes
📖
Documentation
https://developer.tui/api-catalog/holidayofferscontroller-api/api-description
📖
Documentation
https://developer.tui/api-catalog/holidayofferscontroller-api/technical-integration
📖
Documentation
https://developer.tui/api-catalog/holidayofferscontroller-api/release-notes
📖
Documentation
https://developer.tui/api-catalog/meta-search-generic-api/api-description
📖
Documentation
https://developer.tui/api-catalog/partner-content-api/api-description
📖
Documentation
https://developer.tui/api-catalog/ship-content-api/api-description

Specifications

Other Resources

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/tui-group-booking-contacts-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

tui-group-booking-contacts-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: NewSkies-Digital-Api Booking/contacts API
  version: 4.8.6.23
  description: Navitaire Digital Api
servers:
- url: https://prod.api.tui/flight/newskies/rest
  description: TUI Prod
- url: https://playground.api.tui/flight/newskies/rest
  description: TUI Playground
security:
- JWT: []
tags:
- name: booking/contacts
paths:
  /api/nsk/v1/booking/contacts:
    get:
      tags:
      - booking/contacts
      summary: Gets all the contacts on the booking.
      description: Gets all the contacts on the booking.
      operationId: nsk_v1_booking_contacts_get
      responses:
        '200':
          description: OK. Request completed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IJsonResponseOfIDictionaryOfCharAndContact'
        '404':
          description: The item was not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IJsonResponse'
    post:
      tags:
      - booking/contacts
      summary: Creates a new contact on the booking.
      description: '`IMPORTANT: This endpoint should NOT be called concurrently using the same session token to avoid performance

        problems.`

        Note: New Skies does not support the Mobile phone number type for booking contacts.


        GraphQL endpoint: contactsAdd'
      operationId: nsk_v1_booking_contacts_post
      requestBody:
        x-name: request
        description: The new contact.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Contact'
        required: true
        x-position: 1
      responses:
        '201':
          description: The item was created successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IJsonResponse'
              examples:
                Created contact:
                  description: A contact was created and added to the booking.
                  value:
                    data: null
        '400':
          description: There was a problem with the request and it could not be completed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IJsonResponse'
              examples:
                With Invalid Contact Type Code:
                  description: The contact type code is invalid or not configured in the system. The list of valid contact type codes can be retrieved using the GET api/nsk/v1/resources/ContactTypes endpoint.
                  value:
                    errors:
                    - id: 12bd2c3d-ddd4-5844-3sz5-3cg52c2e13n1
                      code: nsk:Contact:InvalidContactTypeCode
                      message: The contact type code 'S' is invalid.
                      type: Validation
                      details:
                        contactTypeCode: S
                      rawMessage: The contact type code 'S' is invalid.
                      exception: null
                      debugMode: The API is currently running in debug mode. In production the 'rawMessage' and 'exception' nodes will not be returned. These are for troubleshooting development issues only.
                With Duplicate Contact Type Code:
                  description: The contact type code already exists in the booking.
                  value:
                    errors:
                    - id: 99cd1b2b-ccc3-4733-7fa4-2bf49b1d98c0
                      code: nsk:Contact:DuplicateTypeCode
                      message: Duplicate contact type 'P' detected.
                      type: Validation
                      details:
                        contactTypeCode: P
                      rawMessage: Duplicate contact type 'P' detected.
                      exception: null
                      debugMode: The API is currently running in debug mode. In production the 'rawMessage' and 'exception' nodes will not be returned. These are for troubleshooting development issues only.
                With No Contact Type Code:
                  description: The contact type code in the request is not populated.
                  value:
                    errors:
                    - id: 5f490eab-3a4d-a783-14ed-25456aecf82f
                      code: Contact.ContactTypeCode:RequiredAttribute
                      message: The Contact field is required.
                      type: Validation
                      details: null
                      rawMessage: The Contact field is required.
                      exception: null
                      debugMode: The API is currently running in debug mode. In production the 'rawMessage' and 'exception' nodes will not be returned. These are for troubleshooting development issues only.
                With Incomplete Booking Contact Info:
                  description: The booking contact info provided is incomplete.
                  value:
                    errors:
                    - id: 666e7592-c107-3812-46e6-f7147dd3c5cd
                      code: nsk-server:BookingContactInfoIncomplete
                      message: Missing or invalid GST Registration Number.
                      type: Validation
                      details: null
                      rawMessage: Missing or invalid GST Registration Number.
                      exception: null
                      debugMode: The API is currently running in debug mode. In production the 'rawMessage' and 'exception' nodes will not be returned. These are for troubleshooting development issues only.
                With No Booking in State:
                  description: No booking was put into state before creating a contact.
                  value:
                    errors:
                    - id: 505b55d3-cac8-93a9-4d25-131256cdd551
                      code: nsk:Booking:NoBookingInState
                      message: No booking was found in session, cannot perform operation.
                      type: Validation
                      details: null
                      rawMessage: No booking was found in session, cannot perform operation.
                      exception: null
                      debugMode: The API is currently running in debug mode. In production the 'rawMessage' and 'exception' nodes will not be returned. These are for troubleshooting development issues only.
                With Null Request:
                  description: The contact request field is null
                  value:
                    errors:
                    - id: 292fcb67-e1de-eb62-3d1a-123a586b03a9
                      code: core:Validation:NullRequest
                      message: The request is null or couldn't be converted to the expected data type.
                      type: Error
                      details: null
                      rawMessage: The request is null or couldn't be converted to the expected data type.
                      exception: null
                      debugMode: The API is currently running in debug mode. In production the 'rawMessage' and 'exception' nodes will not be returned. These are for troubleshooting development issues only.
                    data: null
        '403':
          description: Role permissions are not met.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IJsonResponse'
        '409':
          description: Concurrent changes were being made in the same session.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IJsonResponse'
  /api/nsk/v1/booking/contacts/{contactTypeCode}:
    get:
      tags:
      - booking/contacts
      summary: Gets a specific contact on the booking.
      description: 'GraphQL endpoint: contacts'
      operationId: nsk_v1_booking_contacts_contactTypeCode_get
      parameters:
      - name: contactTypeCode
        in: path
        required: true
        description: The unique contact type code. Please note that this should be a char and not a string.
        schema:
          type: string
          maxLength: 1
        x-position: 1
      responses:
        '200':
          description: OK. Request completed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IJsonResponseOfContact'
        '404':
          description: The item was not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IJsonResponse'
    put:
      tags:
      - booking/contacts
      summary: Updates a specific contact on the booking based on type code.
      description: 'GraphQL endpoint: contactsSet'
      operationId: nsk_v1_booking_contacts_contactTypeCode_put
      parameters:
      - name: contactTypeCode
        in: path
        required: true
        description: The unique type code. Please note that this should be a char and not a string.
        schema:
          type: string
          maxLength: 1
        x-position: 1
      requestBody:
        x-name: request
        description: The modified contact.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ContactRequest'
        required: true
        x-position: 2
      responses:
        '200':
          description: OK. Request completed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IJsonResponse'
        '500':
          description: A server error occurred.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IJsonResponse'
    patch:
      tags:
      - booking/contacts
      summary: Patches a specific contact on the booking based on type code.
      description: 'GraphQL endpoint: contactsModify'
      operationId: nsk_v1_booking_contacts_contactTypeCode_patch
      parameters:
      - name: contactTypeCode
        in: path
        required: true
        description: The unique type code. Please note that this should be a char and not a string.
        schema:
          type: string
          maxLength: 1
        x-position: 1
      requestBody:
        x-name: request
        description: The patched contact request.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeltaMapperOfContactBase'
        required: true
        x-position: 2
      responses:
        '200':
          description: OK. Request completed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IJsonResponse'
        '500':
          description: A server error occurred.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IJsonResponse'
    delete:
      tags:
      - booking/contacts
      summary: Deletes a specific contact on the booking based on type code.
      description: '`IMPORTANT: This endpoint should NOT be called concurrently using the same session token to avoid performance

        problems.`


        GraphQL endpoint: contactsDelete'
      operationId: nsk_v1_booking_contacts_contactTypeCode_delete
      parameters:
      - name: contactTypeCode
        in: path
        required: true
        description: The unique type code. Please note that this should be a char and not a string.
        schema:
          type: string
          maxLength: 1
        x-position: 1
      responses:
        '200':
          description: OK. Request completed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IJsonResponse'
        '409':
          description: Concurrent changes were being made in the same session.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IJsonResponse'
  /api/nsk/v1/booking/contacts/{contactTypeCode}/phoneNumbers:
    get:
      tags:
      - booking/contacts
      summary: Gets the collection of phone number for a specific contact on the booking.
      description: Gets the collection of phone number for a specific contact on the booking.
      operationId: nsk_v1_booking_contacts_contactTypeCode_phoneNumbers_get
      parameters:
      - name: contactTypeCode
        in: path
        required: true
        description: The unique contact type code. Please note that this should be a char and not a string.
        schema:
          type: string
          maxLength: 1
        x-position: 1
      responses:
        '200':
          description: OK. Request completed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IJsonResponseOfIListOfPhoneNumber'
        '404':
          description: The item was not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IJsonResponse'
    post:
      tags:
      - booking/contacts
      summary: Creates a new phone number on a specific contact on the booking.
      description: 'GraphQL endpoint: contactsPhoneAdd'
      operationId: nsk_v1_booking_contacts_contactTypeCode_phoneNumbers_post
      parameters:
      - name: contactTypeCode
        in: path
        required: true
        description: The unique contact type code. Please note that this should be a char and not a string.
        schema:
          type: string
          maxLength: 1
        x-position: 1
      requestBody:
        x-name: request
        description: The new phone number.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PhoneNumber'
        required: true
        x-position: 2
      responses:
        '201':
          description: The item was created successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IJsonResponse'
  /api/nsk/v1/booking/contacts/{contactTypeCode}/phoneNumbers/{phoneNumberType}:
    get:
      tags:
      - booking/contacts
      summary: Gets the specific phone number from a specific contact on the booking.
      description: 'GraphQL endpoint: contactsPhone'
      operationId: nsk_v1_booking_contacts_contactTypeCode_phoneNumbers_phoneNumberType_get
      parameters:
      - name: contactTypeCode
        in: path
        required: true
        description: The unique contact type code. Please note that this should be a char and not a string.
        schema:
          type: string
          maxLength: 1
        x-position: 1
      - name: phoneNumberType
        in: path
        required: true
        description: "The phone number type. \nEnumeration values: 0 = Other, 1 = Home, 2 = Work, 3 = Mobile, 4 = Fax"
        schema:
          $ref: '#/components/schemas/PhoneNumberType'
        x-position: 2
      responses:
        '200':
          description: OK. Request completed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IJsonResponseOfPhoneNumber'
        '404':
          description: The item was not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IJsonResponse'
    put:
      tags:
      - booking/contacts
      summary: Updates a specific phone number on a specific contact on the booking.
      description: 'GraphQL endpoint: contactsPhoneSet'
      operationId: nsk_v1_booking_contacts_contactTypeCode_phoneNumbers_phoneNumberType_put
      parameters:
      - name: contactTypeCode
        in: path
        required: true
        description: The unique contact type code. Please note that this should be a char and not a string.
        schema:
          type: string
          maxLength: 1
        x-position: 1
      - name: phoneNumberType
        in: path
        required: true
        description: "The phone number type. \nEnumeration values: 0 = Other, 1 = Home, 2 = Work, 3 = Mobile, 4 = Fax"
        schema:
          $ref: '#/components/schemas/PhoneNumberType'
        x-position: 2
      requestBody:
        x-name: request
        description: The modified phone number.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PhoneNumberBase'
        required: true
        x-position: 3
      responses:
        '200':
          description: OK. Request completed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IJsonResponse'
        '500':
          description: A server error occurred.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IJsonResponse'
    delete:
      tags:
      - booking/contacts
      summary: Deletes a specific phone number on a specific contact on the booking.
      description: 'GraphQL endpoint: contactsPhoneDelete'
      operationId: nsk_v1_booking_contacts_contactTypeCode_phoneNumbers_phoneNumberType_delete
      parameters:
      - name: contactTypeCode
        in: path
        required: true
        description: The unique contact type code. Please note that this should be a char and not a string.
        schema:
          type: string
          maxLength: 1
        x-position: 1
      - name: phoneNumberType
        in: path
        required: true
        description: "The phone number type. \nEnumeration values: 0 = Other, 1 = Home, 2 = Work, 3 = Mobile, 4 = Fax"
        schema:
          $ref: '#/components/schemas/PhoneNumberType'
        x-position: 2
      responses:
        '200':
          description: OK. Request completed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IJsonResponse'
  /api/nsk/v1/booking/contacts/primary:
    get:
      tags:
      - booking/contacts
      summary: Gets the primary contact based on configuration.
      description: 'GraphQL endpoint: primaryContact'
      operationId: nsk_v1_booking_contacts_primary_get
      responses:
        '200':
          description: OK. Request completed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IJsonResponseOfContact'
        '404':
          description: The item was not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IJsonResponse'
    post:
      tags:
      - booking/contacts
      summary: Creates a new primary contact based on configuration.
      description: '`IMPORTANT: This endpoint should NOT be called concurrently using the same session token to avoid performance

        problems.`


        GraphQL endpoint: primaryContactAdd'
      operationId: nsk_v1_booking_contacts_primary_post
      requestBody:
        x-name: request
        description: The new contact.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ContactRequest'
        required: true
        x-position: 1
      responses:
        '201':
          description: The item was created successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IJsonResponse'
        '409':
          description: Concurrent changes were being made in the same session.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IJsonResponse'
    put:
      tags:
      - booking/contacts
      summary: Updates the primary contact.
      description: 'GraphQL endpoint: primaryContactSet'
      operationId: nsk_v1_booking_contacts_primary_put
      requestBody:
        x-name: request
        description: The modified contact request.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ContactRequest'
        required: true
        x-position: 1
      responses:
        '200':
          description: OK. Request completed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IJsonResponse'
        '500':
          description: A server error occurred.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IJsonResponse'
    patch:
      tags:
      - booking/contacts
      summary: Patches the primary contact.
      description: 'GraphQL endpoint: primaryContactModify'
      operationId: nsk_v1_booking_contacts_primary_patch
      requestBody:
        x-name: request
        description: The patched contact request.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeltaMapperOfContactBase'
        required: true
        x-position: 1
      responses:
        '200':
          description: OK. Request completed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IJsonResponse'
        '500':
          description: A server error occurred.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IJsonResponse'
    delete:
      tags:
      - booking/contacts
      summary: Delete the primary contact.
      description: '`IMPORTANT: This endpoint should NOT be called concurrently using the same session token to avoid performance

        problems.`


        GraphQL endpoint: primaryContactDelete'
      operationId: nsk_v1_booking_contacts_primary_delete
      responses:
        '200':
          description: OK. Request completed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IJsonResponse'
        '409':
          description: Concurrent changes were being made in the same session.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IJsonResponse'
components:
  schemas:
    IJsonResponseOfContact:
      type: object
      description: "Defines the JSON response contract.\n            "
      additionalProperties: false
      properties:
        data:
          description: "The payload data.\n            "
          $ref: '#/components/schemas/Contact'
        errors:
          type:
          - array
          - 'null'
          description: "The collection of errors being thrown.\n            "
          items:
            $ref: '#/components/schemas/ErrorResponse'
        messages:
          type:
          - array
          - 'null'
          description: "The collection of informational messages.\n            "
          items:
            $ref: '#/components/schemas/Message'
    IJsonResponseOfIDictionaryOfCharAndContact:
      type: object
      description: "Defines the JSON response contract.\n            "
      additionalProperties: false
      properties:
        data:
          type:
          - object
          - 'null'
          description: "The payload data.\n            "
          additionalProperties:
            $ref: '#/components/schemas/Contact'
        errors:
          type:
          - array
          - 'null'
          description: "The collection of errors being thrown.\n            "
          items:
            $ref: '#/components/schemas/ErrorResponse'
        messages:
          type:
          - array
          - 'null'
          description: "The collection of informational messages.\n            "
          items:
            $ref: '#/components/schemas/Message'
    IJsonResponseOfPhoneNumber:
      type: object
      description: "Defines the JSON response contract.\n            "
      additionalProperties: false
      properties:
        data:
          description: "The payload data.\n            "
          $ref: '#/components/schemas/PhoneNumber'
        errors:
          type:
          - array
          - 'null'
          description: "The collection of errors being thrown.\n            "
          items:
            $ref: '#/components/schemas/ErrorResponse'
        messages:
          type:
          - array
          - 'null'
          description: "The collection of informational messages.\n            "
          items:
            $ref: '#/components/schemas/Message'
    Exception:
      type: object
      additionalProperties: false
      properties:
        Message:
          type: string
        InnerException:
          $ref: '#/components/schemas/Exception'
        Source:
          type:
          - string
          - 'null'
        StackTrace:
          type:
          - string
          - 'null'
    MessageStatus:
      type: integer
      description: "Defines the message status.\n            \n\n0 = General\n1 = Warning\n2 = Critical"
      x-enumNames:
      - General
      - Warning
      - Critical
      enum:
      - 0
      - 1
      - 2
    PhoneNumber:
      type: object
      description: "Defines a common phone number.\n            "
      additionalProperties: false
      required:
      - number
      - type
      properties:
        number:
          type: string
          description: "The phone number without any formatting characters.\n            "
          maxLength: 20
          minLength: 0
        type:
          description: "The phone number type.\n            "
          $ref: '#/components/schemas/PhoneNumberType'
    Name:
      type: object
      description: "Defines a common name.\n            "
      additionalProperties: false
      properties:
        first:
          type:
          - string
          - 'null'
          description: "The given first name.\n            "
          maxLength: 32
          minLength: 0
        middle:
          type:
          - string
          - 'null'
          description: "The given middle name.\n            "
          maxLength: 32
          minLength: 0
        last:
          type:
          - string
          - 'null'
          description: "The given last name.\n            "
          maxLength: 32
          minLength: 0
        title:
          type:
          - string
          - 'null'
          description: "The title.\n            "
          maxLength: 6
          minLength: 0
        suffix:
          type:
          - string
          - 'null'
          description: "The suffix.\n            "
          maxLength: 6
          minLength: 0
    PhoneNumberBase:
      type: object
      description: "Defines a common phone number base.\n            "
      additionalProperties: false
      required:
      - number
      properties:
        number:
          type: string
          description: "The phone number without any formatting characters.\n            "
          maxLength: 20
          minLength: 0
    Address:
      type: object
      description: "Defines a common address.\n            "
      additionalProperties: false
      properties:
        lineOne:
          type:
          - string
          - 'null'
          description: "The address line one.\n            "
          maxLength: 128
          minLength: 0
        lineTwo:
          type:
          - string
          - 'null'
          description: "The address line two.\n            "
          maxLength: 128
          minLength: 0
        lineThree:
          type:
          - string
          - 'null'
          description: "The address line 3.\n            "
          maxLength: 128
          minLength: 0
        countryCode:
          type:
          - string
          - 'null'
          description: "The country code.\n            "
          maxLength: 2
          minLength: 0
        provinceState:
          type:
          - string
          - 'null'
          description: "The province state.\n            "
          maxLength: 3
          minLength: 0
        city:
          type:
          - string
          - 'null'
          description: "The city.\n            "
          maxLength: 32
          minLength: 0
        postalCode:
          type:
          - string
          - 'null'
          description: "The postal code.\n            "
          maxLength: 10
          minLength: 0
    PhoneNumberType:
      type: integer
      description: "Defines the types of phone numbers. Note: New Skies does not support Mobile for booking contacts.\n            \n\n0 = Other\n1 = Home\n2 = Work\n3 = Mobile\n4 = Fax"
      x-enumNames:
      - Other
      - Home
      - Work
      - Mobile
      - Fax
      enum:
      - 0
      - 1
      - 2
      - 3
      - 4
    Contact:
      type: object
      description: "Contact model describing a person contact information.\n            "
      additionalProperties: false
      required:
      - contactTypeCode
      properties:
        phoneNumbers:
          type:
          - array
          - 'null'
          description: "The collection of phone numbers.\nSupported types: Home, Work, Fax, Other.\nThis collections can only contain one number for each supported type.\n            "
          items:
            $ref: '#/components/schemas/PhoneNumber'
        cultureCode:
          type:
          - string
          - 'null'
          description: "The culture code.\n            "
          maxLength: 17
          minLength: 0
        address:
          description: "The contact address.\n            "
          $ref: '#/components/schemas/Address'
        emailAddress:
          type:
          - string
          - 'null'
          description: "The email address of the contact.\n            "
        customerNumber:
          type:
          - string
          - 'null'
          description: "The customer number.\n            "
          maxLength: 20
          minLength: 0
        sourceOrganization:
          type:
          - string
          - 'null'
          description: "Source organization.\n            "
          maxLength: 10
          minLength: 0
        distributionOption:
          description: "The contact distribution option.\n            "
          $ref: '#/components/schemas/DistributionOption'
        notificationPreference:
          description: "The notification preference of the contact.\n            "
          $ref: '#/components/schemas/NotificationPreference'
        companyName:
          type:
          - string
          - 'null'
          description: "The company name.\n            "
          maxLength: 64
          minLength: 0
        name:
          description: "The contact's name.\n            "
          $ref: '#/components/schemas/Name'
        contactTypeCode:
          type: string
          description: "The contact type code. There can only be one contact of a specific type on the booking.\nTypically only one contact is used. Null values will be replaced by the primary contact type code.\nPlease note that this should be a char and not a string.\n            "
          maxLength: 1
          minLength: 1
    ErrorResponse:
      type: object
      description: "Defines a unique error response.\n            "
      additionalProperties: false
      properties:
        exception:
          description: "The original exception that was thrown and all the exception details.\n            "
          $ref: '#/components/schemas/Exception'
        rawMessage:
          type:
          - string
          - 'null'
          description: "The original raw message set (non-localized).\n            "
        code:
          type:
          - string
          - 'null'
          description: "The unique error code. The primary value used to match against a unique message localized for the end user in the\nchosen language.\n            "
        message:
          type:
          - string
          - 'null'
          description: "The error message. Deprecated: Please use the Code instead.\n            "
        type:
          type:
          - string
          - 'null'
          description: "The error type showing severity. Values: Critical, Error, Validation, Information.\n            "
        number:
          type:
          - integer
          - 'null'
          description: "A unique identifier in numeric form. This is required for Splunk logging. If none is provided a number will be\ngenerated based on code and typ

# --- truncated at 32 KB (41 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/tui-group/refs/heads/main/openapi/tui-group-booking-contacts-api-openapi.yml