TUI Group Travel Message API

The TravelMessage API from TUI Group — 10 operation(s) for travelmessage.

Operations 10

POST /travelmessage/v3.1/availabilityrequest Does an AvailabilityRequest
POST /travelmessage/v3.1/receiptrequest Does a ReceiptRequest
POST /travelmessage/v3.1/sellrequest Does a SellRequest
POST /travelmessage/v3.1/assignrequest Does a AssignRequest
POST /travelmessage/v3.1/bookrequest Does a BookRequest
POST /travelmessage/v3.1/breakrequest Does a BreakRequest
POST /travelmessage/v3.1/addproavailabilityrequest Does a AddProAvailabilityRequest
POST /travelmessage/v3.1/addprodetailsrequest Does a AddProDetailsRequest
POST /travelmessage/v3.1/recaprequest Does a RecapRequest
POST /travelmessage/v3.1/cancellationrequest Does a CancellationRequest

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-travelmessage-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-travelmessage-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: .v31 Travel Message API
  version: '3.1'
  contact:
    name: G7-OTA-TEAM
    url: https://prod.api.tui/
    email: b2bota.g7.support@tui.nl
  description: "This API can be used to get availability and create bookings for TUI packages following the ANVR G7 standard.  \n\nWith the Supply feed OTA's get information of all the available TUI packages, along with other relevant details\nsuch as price, extras, etc. For Supply the TravelMessage 3.1 is not used. So this is defined on another page.\nBut it contains the necessary data to continue with the API's described here.  \n\nThe information from the Supply file can be used to do an AvailabilityRequest to get more detailed data. This data can \nbe used for getting a Price breakdown using the ReceiptRequest or start the bookflow transaction using the Sell, \nAssign and BookRequests to create a booking in tui.nl.   \nWith AddProAvailability and AddProDetails information can be requested for available extra's and transportrental \nand added to the Sell, Assign and BookRequests.  \nThe BreakRequest can be used After SellRequest but before BookRequest to cancel the current transaction.\n\nIf a booking is successfully created the RecapRequest can be used to get all information from that booking \nand CancellationRequest can be used to directly cancel a booking.  \n\nThe schema's are based on the travelmessage.xsd and translated to OpenAPI specification. Not all groups and/or \nfields are used in the defined api's. Also it is possible that fields that are **not mandatory** for G7 are in \nfact **mandatory** for TUI.    \nAll api's are based on the 3.1 G7 version with a few changes to support TUI packages. The Supply has a \ncustom defined schema.\n"
servers:
- url: https://prod.api.tui
  description: Production
- url: https://playground.api.tui
  description: Playground for testing
tags:
- name: TravelMessage
paths:
  /travelmessage/v3.1/availabilityrequest:
    post:
      tags:
      - TravelMessage
      summary: Does an AvailabilityRequest
      description: "The availability of a journey can be requested with the dialogue Availability.  \nFor this API the \"*Package approach*\" is used. This means that filling the \"*PackageDetails*\" in the request \nwill return a complete package (Transport, accommodation and/or additional products) in the response. These\ncomponents must be used in the next steps of the booking process\n\n**Request:** Besides the mandatory fields only filtering is possible for:\n * DeparturePoint\n * BoardType \n\n**Response:**\n * Happy flow: Transport, Accommodation and AdditionalProducts data for chosen product\n * No availability: Error message given \"No data found\"\n * Error: Response has an errormessage\n"
      security:
      - oAuth2ClientCredentials: []
      requestBody:
        required: true
        content:
          application/xml:
            schema:
              $ref: '#/components/schemas/AvailabilityRequestTree'
            examples:
              AvailabilityRequest:
                $ref: '#/components/examples/AvailabilityRequestExample'
      responses:
        '200':
          description: AvailabilityRequest Handled
          content:
            application/xml:
              schema:
                $ref: '#/components/schemas/AvailabilityResponseTree'
              examples:
                AvailabilityResponse:
                  $ref: '#/components/examples/AvailabilityResponseExample'
                AvailabilityResponse(no availability):
                  $ref: '#/components/examples/AvailabilityResponseNaExample'
                AvailabilityResponse (error):
                  $ref: '#/components/examples/ErrorMessageExample'
        '400':
          description: Missing elements in Request
          content:
            application/xml:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '500':
          description: Server Error
          content:
            application/xml:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /travelmessage/v3.1/receiptrequest:
    post:
      tags:
      - TravelMessage
      summary: Does a ReceiptRequest
      description: "The ReceiptRequest message can be done to get an actual price of a chosen package and components. It's a kind \nof combination of Sell- and AssignRequest but without starting a transaction.\nThe response contains only a price breakdown for each passenger. If no prices are found an errormessage\nwill be returned with the message \"no data found\".\n\nThe price description can contain only a description or a description plus additional information. If a price\ncomponent relates to the package itself only a description is given, for example \"reissom\". If a price is related\nto a specific component additional information is given to trace the price back to the component. This information\nis in the following format seperated with a pipe \"|\":\n  1. Description\n  2. Type (T = Transport, A = Accommodation/Unit, TE = Transport Extra, E = Extra)\n  3. Relation (depending on type)  \n    T = TransportID  \n    A = AccommodationID, UnitID and ArrivalDate  \n    TE = TransportID, GroupID, ExtraID, StartDate  \n    E = GroupID, ExtraID, startDate  \n\nExamples:\n  - Package: \"Reissom\"\n  - Transport (T) : \"Luchthaventoeslag|T|f36627fe-b3ec-4a08-afba-820ff267a7e5#20231103 OR 503 AMSMBJ\"\n  - Accommodation(A): \"Vroegboekkorting|A|A0192836|2919b8e9-7ae3-4883-9ecf-0377d8a8d202|11/03/2023\"\n  - Transport Extra (TE): \"Klasse (PWIM)|TE|f36627fe-b3ec-4a08-afba-820ff267a7e5#20231103 OR 503 AMSMBJ|SEAT|PWIM|2023-11-03\"\n  - Extra (E): \"Transfer (TXX)|E|Transfer|TXX|2023-11-03\"\n\nFor this Request/Response the v3.1.xsd is changed to fit the needs for TUI. \n\n**Response:**\n * Happy flow: Price breakdown for each passenger\n * No data found: response has an errormessage with type info  \n * Error: response has an errormessage        \n"
      security:
      - oAuth2ClientCredentials: []
      requestBody:
        required: true
        content:
          application/xml:
            schema:
              $ref: '#/components/schemas/ReceiptRequestTree'
            examples:
              ReceiptRequest:
                $ref: '#/components/examples/ReceiptRequestExample'
      responses:
        '200':
          description: ReceiptRequest Handled
          content:
            application/xml:
              schema:
                $ref: '#/components/schemas/ReceiptResponseTree'
              examples:
                ReceiptResponse:
                  $ref: '#/components/examples/ReceiptResponseExample'
                ReceiptResponse (no data found):
                  $ref: '#/components/examples/ReceiptResponseNaExample'
                ReceiptResponse (error):
                  $ref: '#/components/examples/ErrorMessageExample'
        '400':
          description: Missing elements in Request
          content:
            application/xml:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '500':
          description: Server Error
          content:
            application/xml:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /travelmessage/v3.1/sellrequest:
    post:
      tags:
      - TravelMessage
      summary: Does a SellRequest
      description: "The dialogue of Sell aims at indicating the package parts which have been selected for the subsequent\ndialogue. The message contains package information and optional information relating to Transport, \nAccommodation and Additional products (Roundtrip and Cruise information are not implemented yet).  \nFor TUI the SellRequest is used to create a new session. Some basic validation is taking place, \nand the response is more or less a copy of the request. It is important to put all the parts in the \nSellRequest, because they will be checked in the next step, the AssignRequest.  \nWhen parts are changed (for example rooms) or added (for example extra's) a new SellRequest has to be \ndone.  \n\n**Response:**\n * Happy flow: copy of request with status = \"OK\" \n * Error: response has an errormessage        \n"
      security:
      - oAuth2ClientCredentials: []
      requestBody:
        required: true
        content:
          application/xml:
            schema:
              $ref: '#/components/schemas/SellRequestTree'
            examples:
              SellRequest:
                $ref: '#/components/examples/SellRequestExample'
      responses:
        '200':
          description: SellRequest Handled
          content:
            application/xml:
              schema:
                $ref: '#/components/schemas/SellResponseTree'
              examples:
                SellResponse:
                  $ref: '#/components/examples/SellResponseExample'
                SellResponse (error):
                  $ref: '#/components/examples/ErrorMessageExample'
        '400':
          description: Missing elements in Request
          content:
            application/xml:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '500':
          description: Server Error
          content:
            application/xml:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /travelmessage/v3.1/assignrequest:
    post:
      tags:
      - TravelMessage
      summary: Does a AssignRequest
      description: "In the AssignRequest the passengers and there assignments to the package parts are given. The \"*SenderSessionID*\" \nof the SellResponse must be used as \"*ReceiverSessionID*\" in the AssignRequest to use the session created during\nthe SellRequest. Validation is done to check if the same parts are used as in SellRequest.  \nThe response may contain more elements then assigned (extras). These are default components which do not \ninfluence the price, like flight extra's as SeatsType, Meals, Luggage or default transfers. Usually upgrades \nfor these components are available. Because AssignResponse gives no description of these default components (just \nand ID and dates) the Extras itself will also be returned in te response. The means that the TResponse also \ncontains AdditionalProducts and Transport.TransportTo[From].AdditionalProducts.\n\nBesides these components also a price breakdown is returned. \nThe price description can contain only a description or a description plus additional information. If a price \ncomponent relates to the package itself only a description is given, for example \"reissom\". If a price is related \nto a specific component additional information is given to trace the price back to the component. This information \nis in the following format seperated with a pipe \"|\":\n1. Description \n2. Type (T = Transport, A = Accommodation/Unit, TE = Transport Extra, E = Extra)\n3. Relation (depending on type)  \n  T = TransportID  \n  A = AccommodationID, UnitID and ArrivalDate  \n  TE = TransportID, GroupID, ExtraID, StartDate  \n  E = GroupID, ExtraID, startDate  \n\nExamples:  \n  - Package: \"Reissom\"  \n  - Transport (T) : \"Luchthaventoeslag|T|f36627fe-b3ec-4a08-afba-820ff267a7e5#20231103 OR 503 AMSMBJ\"    \n  - Accommodation(A): \"Vroegboekkorting|A|A0192836|2919b8e9-7ae3-4883-9ecf-0377d8a8d202|11/03/2023\"    \n  - Transport Extra (TE): \"Klasse (PWIM)|TE|f36627fe-b3ec-4a08-afba-820ff267a7e5#20231103 OR 503 AMSMBJ|SEAT|PWIM|2023-11-03\"    \n  - Extra (E): \"Transfer (TXX)|E|Transfer|TXX|2023-11-03\"  \n\nChanges for passenger information (for example name) or a different assignment can be done without doing a new \nSellRequest.  \n\n**Response:**\n * Happy flow: Copy of assignment plus price breakdown \n * Error: response has an errormessage\n"
      security:
      - oAuth2ClientCredentials: []
      requestBody:
        required: true
        content:
          application/xml:
            schema:
              $ref: '#/components/schemas/AssignRequestTree'
            examples:
              AssignRequest:
                $ref: '#/components/examples/AssignRequestExample'
      responses:
        '200':
          description: AssignRequest Handled
          content:
            application/xml:
              schema:
                $ref: '#/components/schemas/AssignResponseTree'
              examples:
                AssignResponse:
                  $ref: '#/components/examples/AssignResponseExample'
                AssignResponse (error):
                  $ref: '#/components/examples/ErrorMessageExample'
        '400':
          description: Missing elements in Request
          content:
            application/xml:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '500':
          description: Server Error
          content:
            application/xml:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /travelmessage/v3.1/bookrequest:
    post:
      tags:
      - TravelMessage
      summary: Does a BookRequest
      description: "There can be made a booking with the dialogue of BookRequest. Although the xml data of the BookRequest is \nthe same as the AssignRequest and required in the G7 XML for TUI only the confirmation counts. So using \nthe same \"*ReceiverSessionID*\" as in the AssignRequest is enough. Changes made to passengers and assignments \nat this stage will be ignored. The information that was in the Assign stage will be used.\n\n**Request:**\n  * Same as AssignRequest, but changes are ignored. \n\n**Response:**\n * Happy flow: Confirmed Booking (with BookID) \n * Error: response has an errormessage        \n"
      security:
      - oAuth2ClientCredentials: []
      requestBody:
        required: true
        content:
          application/xml:
            schema:
              $ref: '#/components/schemas/BookRequestTree'
            examples:
              BookRequest:
                $ref: '#/components/examples/BookRequestExample'
      responses:
        '200':
          description: BookRequest Handled
          content:
            application/xml:
              schema:
                $ref: '#/components/schemas/BookResponseTree'
              examples:
                BookResponse:
                  $ref: '#/components/examples/BookResponseExample'
                BookResponse (error):
                  $ref: '#/components/examples/ErrorMessageExample'
        '400':
          description: Missing elements in Request
          content:
            application/xml:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '500':
          description: Server Error
          content:
            application/xml:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /travelmessage/v3.1/breakrequest:
    post:
      tags:
      - TravelMessage
      summary: Does a BreakRequest
      description: "The Break-dialogue allows the OTA to cut off a session between the travel agent and the tour operator decently.\nA new session can be started by sending a new SellRequest.                  \n\n**Response:**\n * Happy flow : Only a Control group is returned   \n * Error: response has an errormessage        \n"
      security:
      - oAuth2ClientCredentials: []
      requestBody:
        required: true
        content:
          application/xml:
            schema:
              $ref: '#/components/schemas/BreakRequestTree'
            examples:
              BreakRequest:
                $ref: '#/components/examples/BreakRequestExample'
      responses:
        '200':
          description: BreakRequest Handled
          content:
            application/xml:
              schema:
                $ref: '#/components/schemas/BreakResponseTree'
              examples:
                BreakResponse:
                  $ref: '#/components/examples/BreakResponseExample'
                BreakResponse (error):
                  $ref: '#/components/examples/ErrorMessageExample'
        '400':
          description: Missing elements in Request
          content:
            application/xml:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '500':
          description: Server Error
          content:
            application/xml:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /travelmessage/v3.1/addproavailabilityrequest:
    post:
      tags:
      - TravelMessage
      summary: Does a AddProAvailabilityRequest
      description: "AddProAvailability is used to acquire summary information about additional products.  \nThere a two approaches defined in the ANVR documentation. With **overview** response, ResponseID is filled \nwith AvailabilityResponse. Only minimum information, ID and description are given in the response.   \nIf a **detailed** response is necessary ResponseID will be filled with AvailabilityDetailsResponse. Detailed \ninformation is given like prices, age restrictions allotment etc.  \n\nFor TUI both approaches are not implemented (yet) but a third approach is done.\nIf as RequestID/ResponseID \"*AddProAvailabilityTransportRequest/Response*\" is given with a Transportgroup \nthen detailed information is returned for extra's that are transport dependent. For example if flights \nare given extra's can be returned like luggage upgrades, meals upgrades and so on.  \n\nThe returned information can be used in the ReceiptRequest and the bookflow in Sell, Assign and BookRequest.  \n\n**Request:** \n * Overview, request only contains PackageDetails section and ResponseID is \"*AvailabilityResponse*\"  (not implemented)\n * Details, request only contains PackageDetails section and ResponseID is \"*AvailabilityDetailsResponse*\" (not implemented)\n * Transport, request contains PackageDetails and Transport section and RequestID/ResponseID is \n\"*AddProAvailabilityTransportRequest/Response*\"        \n\n**Response:** \n * Overview, only basic information is returned\n * Details, detailed information is returned \n * Transport, detailed information is returned for the given transports  \nThis information is grouped in Transport-AdditionalProducts-Extras and is related with the given transports \nby the group RelatedTransport\n"
      security:
      - oAuth2ClientCredentials: []
      requestBody:
        required: true
        content:
          application/xml:
            schema:
              $ref: '#/components/schemas/AddProAvailabilityRequestTree'
            examples:
              AddProAvailabilityRequest (Transport):
                $ref: '#/components/examples/AddProAvailabilityRequestTransportExample'
              AddProAvailabilityRequest:
                $ref: '#/components/examples/AddProAvailabilityRequestExample'
      responses:
        '200':
          description: AddProAvailabilityRequest Handled
          content:
            application/xml:
              schema:
                $ref: '#/components/schemas/AddProAvailabilityResponseTree'
              examples:
                AddProAvailabilityResponse (Transport):
                  $ref: '#/components/examples/AddProAvailabilityResponseTransportExample'
                AddProAvailabilityResponse (error):
                  $ref: '#/components/examples/ErrorMessageExample'
                AddProAvailabilityResponse:
                  value: <TravelMessage>NOT IMPLEMENTED</TravelMessage>
        '400':
          description: Missing elements in Request
          content:
            application/xml:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '500':
          description: Server Error
          content:
            application/xml:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /travelmessage/v3.1/addprodetailsrequest:
    post:
      tags:
      - TravelMessage
      summary: Does a AddProDetailsRequest
      description: "AddProDetails is used to acquire detailed information about additional products. It is a continuation of the  AddProAvailability overview request. It is possible to get separate information for each extra or transport  rental, just by adding the extra or transport rental in the request.  \n  **NOT IMPLEMENTED (YET)**\n"
      security:
      - oAuth2ClientCredentials: []
      requestBody:
        required: true
        content:
          application/xml:
            schema:
              $ref: '#/components/schemas/AddProDetailsRequestTree'
            examples:
              AddProDetailsRequest:
                $ref: '#/components/examples/AddProDetailsRequest'
      responses:
        '200':
          description: AddProDetailsRequest Handled
          content:
            application/xml:
              schema:
                $ref: '#/components/schemas/AddProDetailsResponseTree'
              examples:
                AddProDetailsResponse:
                  $ref: '#/components/examples/AddProDetailsResponse'
        '400':
          description: Missing elements in Request
          content:
            application/xml:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '500':
          description: Server Error
          content:
            application/xml:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /travelmessage/v3.1/recaprequest:
    post:
      tags:
      - TravelMessage
      summary: Does a RecapRequest
      description: "With the dialogue of Recap a recapitulation from the data stored at the Touroperator concerning the \ncurrent session or currently booked trip can be requested.     \n\nFor TUI only getting the requested booking is implemented.  \n\n**Request:**\n* Only \"*BookID*\" is required in the SecurityInfo group.  \n\n**Response:**\n* All information concerning the given booking like Passenger info, Transport, Accommodation Extra's, and Prices. \n* Error: if booking cannot be found with given request data\n\nThe price description can contain only a description or a description plus additional information. If a price\ncomponent relates to the package itself only a description is given, for example \"reissom\". If a price is related\nto a specific component additional information is given to trace the price back to the component. This information\nis in the following format seperated with a pipe \"|\":\n  1. Description\n  2. Type (T = Transport, A = Accommodation/Unit, TE = Transport Extra, E = Extra)\n  3. Relation (depending on type)  \n    T = TransportID  \n    A = AccommodationID, UnitID and ArrivalDate  \n    TE = TransportID, GroupID, ExtraID, StartDate  \n    E = GroupID, ExtraID, startDate  \n\nExamples:\n  - Package: \"Reissom\"\n  - Transport (T) : \"Luchthaventoeslag|T|f36627fe-b3ec-4a08-afba-820ff267a7e5#20231103 OR 503 AMSMBJ\"\n  - Accommodation(A): \"Vroegboekkorting|A|A0192836|2919b8e9-7ae3-4883-9ecf-0377d8a8d202|11/03/2023\"\n  - Transport Extra (TE): \"Klasse (PWIM)|TE|f36627fe-b3ec-4a08-afba-820ff267a7e5#20231103 OR 503 AMSMBJ|SEAT|PWIM|2023-11-03\"\n  - Extra (E): \"Transfer (TXX)|E|Transfer|TXX|2023-11-03\"        \n"
      security:
      - oAuth2ClientCredentials: []
      requestBody:
        required: true
        content:
          application/xml:
            schema:
              $ref: '#/components/schemas/RecapRequestTree'
            examples:
              RecapRequestExample:
                $ref: '#/components/examples/RecapRequestExample'
      responses:
        '200':
          description: RecapRequest Handled
          content:
            application/xml:
              schema:
                $ref: '#/components/schemas/RecapResponseTree'
              examples:
                RecapResponseExample:
                  $ref: '#/components/examples/RecapResponseExample'
                RecapResponse (error):
                  $ref: '#/components/examples/ErrorMessageExample'
        '400':
          description: Missing elements in Request
          content:
            application/xml:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '500':
          description: Server Error
          content:
            application/xml:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /travelmessage/v3.1/cancellationrequest:
    post:
      tags:
      - TravelMessage
      summary: Does a CancellationRequest
      description: "Two messages will be send by cancelling a booking; a CancellationRequest followed by a CancellationConfirmedRequest. \nThis is because of the possible cancellation costs which require confirmation.\n\nFor TUI now only CancellationConfirmedRequest is implemented. No check yet for getting the cancellation cost \nfirst. \n\n**Request:**\n* \"*BookID*\", \"*DepartureDate*\" and \"*ContactName*\" are required in the SecurityInfo group.  \n\n**Response:**\n* Given back cancellation costs when cancellation is done. \n* Error: If booking is not found or booking is already cancelled\n"
      security:
      - oAuth2ClientCredentials: []
      requestBody:
        required: true
        content:
          application/xml:
            schema:
              $ref: '#/components/schemas/CancellationRequestTree'
            examples:
              CancellationRequestExample:
                $ref: '#/components/examples/CancellationConfirmedRequestExample'
      responses:
        '200':
          description: CancellationRequest Handled
          content:
            application/xml:
              schema:
                $ref: '#/components/schemas/CancellationResponseTree'
              examples:
                CancellationResponse:
                  $ref: '#/components/examples/CancellationConfirmedResponseExample'
                CancellationResponse (Already Cancelled):
                  $ref: '#/components/examples/CancellationConfirmedResponseAcExample'
                CancellationResponse (error):
                  $ref: '#/components/examples/ErrorMessageExample'
        '400':
          description: Missing elements in Request
          content:
            application/xml:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '500':
          description: Server Error
          content:
            application/xml:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
components:
  schemas:
    UnitType:
      type: string
      pattern: (\d+pk)|(\d+PK)|(\d+ka)|(\d+KA)|(\d+kb)|(\d+KB)|(\d+kw)|(\d+KW)|(\d+kv)|(\d+KV)|(\d+ph)|(\d+PH)|(\d+pt)|(\d+PT)|(\d+pc)|(\d+PC)|(\d+ks)|(\d+KS)|(\d+pl)|(\d+PL)|(\d+ps)|(\d+PS)|(\d+pz)|(\d+PZ)|(\d+gk)|(\d+GK)|(\d+tc)|(\d+TC)|(div)|(DIV)|(stn)|(STN)
    Accommodation:
      title: Accommodation
      type: object
      properties:
        AccommodationID:
          type: string
        ComponentID:
          type: string
        AccommodationType:
          $ref: '#/components/schemas/AccommodationType'
        Name:
          type: string
        Address:
          type: string
        ZipCode:
          type: string
        Place:
          type: string
        CountryID:
          $ref: '#/components/schemas/ISOCountry'
        GPSCode:
          $ref: '#/components/schemas/GPSCode'
        Telephone:
          type: string
        ArrivalDate:
          type: string
          format: YYYY-MM-DD
        DepartureDate:
          type: string
          format: YYYY-MM-DD
        Duration:
          $ref: '#/components/schemas/Duration'
        Unit:
          type: array
          title: Unit
          items:
            $ref: '#/components/schemas/Unit'
        Arrangement:
          type: array
          title: Arrangement
          items:
            $ref: '#/components/schemas/Arrangement'
        Extras:
          type: array
          title: Extras
          items:
            $ref: '#/components/schemas/Extras'
        MultiMedia:
          type: array
          title: MultiMedia
          items:
            $ref: '#/components/schemas/MultiMedia'
      required:
      - AccommodationID
      - ArrivalDate
      - Duration
      - Unit
    PaxDetailsReceipt:
      type: object
      properties:
        PaxID:
          $ref: '#/components/schemas/PaxID'
        DateOfBirth:
          $ref: '#/components/schemas/Date'
        Discounts:
          $ref: '#/components/schemas/Discounts'
    BookResponse:
      type: object
      properties:
        BookID:
          type: string
        BookEmployeeID:
          type: string
        Date:
          type: string
          format: YYYY-MM-DD
        Time:
          $ref: '#/components/schemas/Time'
        OptionDate:
          type: string
          format: YYYY-MM-DD
        Status:
          $ref: '#/components/schemas/Status'
        BookInfo:
          $ref: '#/components/schemas/BookInfo'
        Responsibilities:
          $ref: '#/components/schemas/Responsibilities'
      required:
      - BookID
      - Date
      - Time
      - Status
      - OptionDate
    PointType:
      type: string
      enum:
      - IATAcode
      - Postcode
      - Internal
      - ANVRLandStreek
      xml:
        attribute: true
    MutationType:
      type: string
      enum:
      - Deletion
      - Mutation
      - New
      - Reset
    AvailabilityResponseTree:
      type: object
      title: Travelmessage (AvailabilityResponse)
      xml:
        name: TravelMessage
      allOf:
      - $ref: '#/components/schemas/TravelMessage'
      properties:
        TResponse:
          type: object
          title: TResponse
          properties:
            Transport:
              type: array
              title: Transport
              items:
                $ref: '#/components/schemas/Transport'
            Accommodation:
              type: array
              title: Accommodation
              items:
                $ref: '#/components/schemas/Accommodation'
            AdditionalProducts:
              $ref: '#/components/schemas/AdditionalProducts'
            Messages:
              type: array
              title: Messages
              items:
                $ref: '#/components/schemas/Messages'
    BookInfo:
      type: object
      properties:
        InvoiceID:
          type: string
        InvoiceDate:
          type: string
          format: YYYY-MM-DD
        InvoiceStatus:
          type: string
        TravelDocumentsStatus:
          type: string
    Carrier:
      type: object
      properties:
        CarrierID:
          type: string
        Description:
          type: string
        FlightNumber:
          type: string
        Stopovers:
          type: object
          properties:
            NumberOfStops:
              type: number
              xml:
                attribute: true
            Stop:
              type: object
              properties:
                Index:
                  type: number
                  xml:
                    attribute: true
                Arrival:
                  allOf:
                  - $ref: '#/components/schemas/DateAndTime'
                  required:
                  - Date
                Departure:
                  allOf:
                  - $ref: '#/components/schemas/DateAndTime'
                  required:
                  - Date
                Point:
                  $ref: '#/components/schemas/Point'
                Checkin:
                  $ref: '#/components/schemas/YesNoValue'
                LeaveFlight:
                  $ref: '#/components/schemas/YesNoValue'
          required:
          - NumberOfStops
      required:
      - CarrierID
      - Stopovers
    APAssignment:
      type: object
      properties:
        ExtrasAssignment:
          type: array
          title: ExtrasAssignment
          items:
            $ref: '#/components/schemas/ExtrasAssignment'
        TRentalAssignment:
          type: array
          title: TRentalAssignment
          items:
            $ref: '#/components/schemas/TRentalAssignment'
    AccommodationType:
      type: string
      enum:
      - alb
      - apo
      - app
      - bnb
      - bng
      - bry
      - cam
      - car
      - cha
      - cpr
      - cru
      - est
      - ghf
      - gue
      - hos
      - hot
      - hui
      - kas
      - mai
      - mot
      - pen
      - pou
      - res
      - rh
      - ron
      - sch
      - tnt
      - vak
      - vil
      - wng
      - ALB
      - APO
      - APP
      - BNB
      - BNG
      - BRY
      - CAM
      - CAR
      - CHA
      - CPR
      - CRU
      - EST
      - GHF
      - GUE
      - HOS
      - HOT
      - HUI
  

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