{"openapi":"3.0.1","info":{"title":"TourRadar Partner API","description":"# Overview\n\nWelcome to the TourRadar Partner API documentation!\n\nThe TourRadar Partner API comprises a set of endpoints that can connect any partner to TourRadar’s global network of operators, providing the ability to search, view, and book adventures. You can use TourRadar's entire inventory or only the operators with whom you have direct commercial agreements.\n\nThe API provides a simple and modern REST interface to facilitate the integration work.\n\n> **⚠ Please note:** the work on the API and the integration is still in progress. As the integration work continues, this documentation will be updated as well.\n\n## Who is the API for?\n\nThe current iteration of the API is designed to be used by various types of partners who signed up with TourRadar, partners like OTAs, GDSs, travel content providers, travel agencies, B2B marketplaces.\n\nIf you want to sign up with TourRadar, you can use the following **[link](https://www.tourradar.com/distribution-api)**.\n\n## Typical use cases of the TourRadar Partner API\n\nThe TourRadar Partner API can be used to carry out the following tasks:\n\n### Search for tours\n\nThe **[search endpoint](#tag/Tours/paths/~1v1~1tours~1search/get)** will provide you with the functionality to replicate the filters on the **[TourRadar platform](https://www.tourradar.com/)** and find the right adventure. For an example of the search capabilities, you can look at the filters on the following [page](https://www.tourradar.com/d/europe).\n\n### Get tour details\n\nTo get more information about a tour, you can use the **[tour detail endpoint](#tag/Tours/paths/~1v1~1tours~1{tourId}/get)** – it will return the high-level information with topics like itinerary, what's included and country-specific information.\n\n### Get pricing details and calculate the price\n\nYou can use the **[prices endpoint](#tag/Pricing-and-Availability/paths/~1v1~1tours~1{tourId}~1departures~1{departureId}~1price/post)** to get more information about the price of a specific departure date but also to understand any other optional extras(e.g. excursions) or accommodations.\n\n### Departures and availability\n\n**[Departures endpoint](#tag/Pricing-and-Availability/paths/~1v1~1tours~1{tourId}~1departures/get)** retrieves all available departure dates for the specified tour. Every item will contain: departure date, departure type, guide languages offered and the price breakdown. A departure date can be one of the following types: guaranteed, scheduled and request.\n\n### Create booking\n\nYou can create a booking by using the **[bookings endpoint](#tag/Bookings/paths/~1v1~1bookings/post)** and adding all the required entities to the request.\n\n### Check booking status\n\nSome bookings are not automatically confirmed, some are canceled afterwards or declined – so it's useful to retrieve the **[status of a booking](#tag/Bookings/paths/~1v1~1bookings~1{bookingId}~1status/get)**.\n\n### Download bulk data\n\nThere are 2 endpoints that can be used to synchronize content and other data in a “bulk” way:\n**[all tours from an operator](#tag/Bulk/paths/~1v1~1operators~1{operator}~1bulk~1tours/get)** and **[all the available departure dates for all tours from a single tour operator](#tag/Bulk/paths/~1v1~1operators~1{operator}~1bulk~1departures/get)**.\n\nThis data can be downloaded and then imported into the partner’s own database or system. While we recommend updating the departures and availability daily - the tour content can be cached for a longer time (for example, one week).\n\n\n### Booking Retrieval (Fetch)\n\nAgents can use the booking endpoint to retrieve (Fetch) detailed information about bookings directly created on the operator systems. Based on a set of request parameters, the API allows for retrieval of bookings from all operators in the scope of the project, using a uniform request/response schema that is largely based on the Open Travel Alliance standard (OTA).\n\n## Rate limits\n\nA rate limit is a restriction that an API imposes on the number of times a user or client can access the server within a specified period of time. Rate limits are introduced to protect the system from receiving more data than it can handle.\n\nOur API has a rate limit of **10 requests per second**, exceeding this limit will return an error `429 Too Many Requests`.","version":"2025-08-11T15:08:05Z","x-logo":{"url":"https://assets.api.sandbox.b2b.tourradar.com/logo/tourradar.svg","altText":"TourRadar Partner API"}},"servers":[{"url":"https://api.sandbox.b2b.tourradar.com"}],"tags":[{"name":"oAuth 2.0","description":"## POST /oauth2/token\nThe /oauth2/token endpoint only supports HTTPS POST. The partners app client makes requests to this endpoint directly and not through the system browser.\n\nFor more information on the specification see [Token Endpoint](https://openid.net/specs/openid-connect-core-1_0.html#TokenEndpoint).\n\n### Request Parameters in Header\n#### Authorization\nIf the client was issued a secret, the client must pass its client_id and client_secret in the authorization header through [Basic](https://en.wikipedia.org/wiki/Basic_access_authentication#Client_side) HTTP authorization. The secret is Basic Base64Encode(client_id:client_secret).\n\n#### Content-Type\nMust always be `'application/x-www-form-urlencoded'`.\n\n\n### Request Parameters in Body\n\n#### grant_type\nRequired. Grant type. Must be `client_credentials`.\n\n#### scope\nOptional. You can specify a list of scopes (permissions) associated to the authentication token. If not specified, all available permissions will be assigned.\n\nYou should use the `scope` parameter only to restrict permissions for specific usage. If multiple scopes are needed, these must be separated by space.\n\n### Exchanging Client Credentials for an Access Token\n- ClientId:  `7817mgzzf3idtkfekag69udlhr`\n- App Client Secret: `5sg3g3fsase0hlqipp5tv077d5f52g1hh2s7rsvo8hgkdvg`\n- Authorization code: ` Base64Encode(client_id:client_secret)` = `NzgxN21nenpmM2lkdGtmZWthZzY5dWRsaHI6NXNnM2czZnNhc2UwaGxxaXBwNXR2MDc3ZDVmNTJnMWhoMnM3cnN2bzhoZ2tkdmc=`\n\n> **⚠ Please note:** all the above client credentials are just examples. If you do not know the client credentials for your account, please reach out to us and we will share these details with you.\n\n#### Sample Request\n\n```\nPOST https://oauth.api.sandbox.b2b.tourradar.com/oauth2/token >\nContent-Type='application/x-www-form-urlencoded'\nAuthorization=Basic NzgxN21nenpmM2lkdGtmZWthZzY5dWRsaHI6NXNnM2czZnNhc2UwaGxxaXBwNXR2MDc3ZDVmNTJnMWhoMnM3cnN2bzhoZ2tkdmc=\ngrant_type=client_credentials\n```\n\n#### Sample response\n\n```json\nHTTP/1.1 200 OK\nContent-Type: application/json\n\n{\n    access_token: \"eyJraWQiOiJCdHhZVUR4d0k......l4xXhV40gBH6vxvBg\"\n}\n```\n\n> **⚠ Please note:** you are responsible and should take every possible attention to not make your credentials known to anybody else. In particular, if you're developing a website, credentials should not be used in the front-end code of your application. As a general rule, not having hard-coded credentials in the application code is a good practice.\n\n"},{"name":"Versioning","description":"In order to ensure compatibility and consistence of the implemented software with the future development of this API, all endpoints are prefixed with a **version identifier** path component.\n\nThe current version identifier is `v1`. When breaking changes are introduced in an endpoint, a new iteration of that specific endpoint will be created with increased identifier (`v2`, `v3`, etc.), while the existing one will continue working with unchanged request, and response, definition and behaviour.\n\n#### Deprecation Strategy\n\nThe previous version of an API endpoint will be marked as deprecated, and ultimately sunset, over a specified period of time, usually 12 months (unless special business or security requirements demand a different strategy).\n\n#### Example\n\nAll requests to the endpoints present in this documentation will be composed of:\n\n* base URL\n* version identifier\n* endpoint path\n\nFor example, to access the `/bookings/operator/{operator}/{bookingCode}` endpoint in the sandbox environment, the request will be:\n\n* base URL: `https://api.sandbox.b2b.tourradar.com`\n* version identifier: `v1`\n* endpoint path: `/bookings/operator/{operator}/{bookingCode}`\n\nResulting example request path:\n\n```\nGET https://api.sandbox.b2b.tourradar.com/v1/bookings/operator/406/IVSYDS-A339296\n```\n#### Production URLs\n\nOnce you are ready to go live, please use the following production URLs:\n\n* API base URL: `https://api.b2b.tourradar.com`\n* OAuth URL: `https://oauth.api.sandbox.b2b.tourradar.com/oauth2/token`\n"},{"name":"Error Codes","description":"| Error code | Service | Meaning |\n| ------ | ----- | ----- |\n| `ACCESS_DENIED` | _All_ | Authentication is not valid |\n| `BAD_REQUEST_PARAMETERS` | _All_ | The request parameters are invalid |\n| `BAD_REQUEST_BODY` | _All_ | The body of the request is invalid |\n| `BOOKING_NOT_CREATED` | _All_ | The booking could not be created |\n| `BOOKING_NOT_CONFIRMED` | _All_ | The booking could not be confirmed |\n| `BOOKING_NOT_DECLINED` | _All_ | The booking could not be declined |\n| `BOOKING_NOT_FOUND` | **[/booking/{operator}/{bookingCode}](#tag/Bookings/paths/~1v1~1bookings~1{operator}~1{bookingCode}/get)** | Booking not found |\n| `DEPARTURE_UNAVAILABLE` | _All_ | The booked departure is not available |\n| `DEPARTURE_NOT_FOUND` | **[/tours/{tourId}/departures/{departureId}](#tag/Pricing-and-Availability/paths/~1v1~1tours~1{tourId}~1departures~1{departureId}/get)** | Departure could not be found |\n| `EXPIRED_TOKEN` | _All_ | The authentication token is not valid anymore |\n| `HOLD_NOT_CREATED` | _All_ | The hold could not be created |\n| `INVALID_API_KEY` | _All_ | Authentication is not valid |\n| `INVALID_CLIENT` | **[/oauth2/token](#tag/oAuth-2.0)** | Invalid client id provided |\n| `INVALID_REQUEST` | _All_ | Operation not supported |\n| `INVALID_SIGNATURE` | _All_ | Authentication is not valid |\n| `INVALID_SCOPE` | **[/oauth2/token](#tag/oAuth-2.0)** | Invalid scope provided |\n| `MISSING_AUTHENTICATION_TOKEN` | _All_ | Authentication is not valid |\n| `NOT_FOUND` | _All_ | Resource not found |\n| `OPERATOR_NOT_FOUND` | **[/booking/{operator}/{bookingCode}](#tag/Bookings/paths/~1v1~1bookings~1{operator}~1{bookingCode}/get)** | Invalid operator name |\n| `OPERATOR_TIMEOUT` | **[/bookings](#tag/Bookings/paths/~1v1~1bookings/get)** | The request to the operator has timed out |\n| `QUOTA_EXCEEDED` | _All_ | Too many requests have been made |\n| `REQUEST_FAILED` |  **[/booking/{operator}/{bookingCode}](#tag/Bookings/paths/~1v1~1bookings~1{operator}~1{bookingCode}/get)**  | Operator server failure |\n| `REQUEST_TIMEOUT` | _All_ | Request took too long |\n| `REQUEST_TOO_LARGE` | _All_ | The maximum size for a request has been exceeded |\n| `RESOURCE_NOT_FOUND` | _All_ | The API endpoint URL is incorrect |\n| `TOO_MANY_REQUESTS` | _All_ | Too many requests have been made in a given amount of time |\n| `TOUR_NOT_ACTIVE` | **[/tours/{tourId}/departures](#tag/Pricing-and-Availability/paths/~1v1~1tours~1{tourId}~1departures/get)** | Tour is not active |\n| `TOUR_NOT_FOUND` | **[/tours/{tourId}](#tag/Tours/paths/~1v1~1tours~1{tourId}/get)** | Tour could not be found |\n| `UNAUTHORIZED` | **[/booking/{operator}/{bookingCode}](#tag/Bookings/paths/~1v1~1bookings~1{operator}~1{bookingCode}/get)** | Invalid operator credentials |\n| `UNAUTHORIZED_CLIENT` | **[/oauth2/token](#tag/oAuth-2.0)** | Invalid client credentials |\n| `UNKNOWN_ERROR` | _All_ | Server failure or unexpected error condition |\n| `UNSUPPORTED_MEDIA_TYPE` | _All_ | The media attached to the request is not supported |\n| `VALIDATION_ERROR` | _All_ | Parameter missing or invalid |\n"},{"name":"Taxonomy","description":""},{"name":"Operators","description":""},{"name":"Tours","description":""},{"name":"Pricing & Availability","description":""},{"name":"Bookings","description":""},{"name":"Bulk","description":""}],"paths":{"/v1/bookings":{"get":{"tags":["Bookings"],"summary":"/v1/bookings","description":"Returns a list of all the bookings created in the TourRadar system by your partner account.\n\n#### Response formats\n\nYou can set the `Accept` header to define the response format you need.\nThe available values are:\n- `application/json` (default). It will return an array of **BookingSearch** objects;\n\n- `text/csv`, if this format is requested the `limit` query parameter is ignored. It will contain these fields:\n\n| field         | type    | notes |\n| ---------------   | ------- | ----- |\n| booking_id        | integer | Unique identifier of the booking in the TourRadar system. |\n| tour_id           | integer | Unique identifier for the tour in the TourRadar system. |\n| tour_name         | string  | Name of the tour. |\n| operator_id       | integer | Unique identifier for the tour operator in the TourRadar system.  |\n| operator_name     | string  | Name of the tour operator. |\n| tour_length_days  | integer | Length of the tour, expressed in number of days. |\n| passengers        | integer | Number of passengers. |\n| departure_date    | string  | Departure date that was booked, in the format `YYYY-MM-DD`. |\n| return_date       | string  | Return date that was booked, in the format `YYYY-MM-DD`. |\n| created_at        | string  | Exact timestamp of when the booking was created, in the ISO 8601 format. |\n| confirmed_at      | string  | Exact timestamp of when the booking was confirmed, in the ISO 8601 format. Empty if it is not confirmed. |\n| hold_expire_at    | string  | Exact timestamp of when the the hold will expire, in the ISO 8601 format. |\n| type              | string  | Type of this booking record. Expected values: `booking`, `question`, `hold`. |\n| status            | string  | Status of the booking. Expected values: `open_question`, `open_hold`, `pending`, `confirmed`, `declined`, `cancelled`, `hold_expired`, `hold_declined` |\n| currency          | string  | Currency of the booking. |\n| total_value       | number  | Total amount of the booking. |","parameters":[{"name":"sort_by","in":"query","description":"Field by which the results will be sorted. Possible values: `id`, `departure_date`,  `created_at`, `status`. Default is `id`.","schema":{"type":"string"}},{"name":"Accept","in":"header","description":"Defines the response format. Current available values are `application/json` and `text/csv`.","schema":{"type":"string"}},{"name":"updated_range","in":"query","description":"Get the bookings that are updated in a certain date range. Valid formats are: `YYYYMMDD-YYYYMMDD` and `YYYYMMDD`. Using the single date format, it will retrieve the bookings updated in that day.","schema":{"type":"string"}},{"name":"limit","in":"query","description":"Number of items per page of results (default is 20, max 100).","schema":{"type":"string"}},{"name":"Accept-Language","in":"header","description":"Defines in which language the resources are returned. Use ISO-639 language or locale codes (example: `en`, `en-US`).","schema":{"type":"string"}},{"name":"agent_id","in":"query","description":"Filter bookings by agent id.","schema":{"type":"string"}},{"name":"page","in":"query","description":"Number of page to return (default is 1).","schema":{"type":"string"}},{"name":"sort_order","in":"query","description":"Direction of the sorting (ascending or descending). Possible values: `asc`, `desc`.","schema":{"type":"string"}},{"name":"date_range","in":"query","description":"Date range in which to search for bookings. Valid formats are: `YYYYMMDD-YYYYMMDD` and `YYYYMMDD`. Using the single date format, it will retrieve the bookings created in that day.","schema":{"type":"string"}}],"responses":{"200":{"description":"200 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BookingSearchPagination"}}}},"401":{"description":"This status code indicates that the credentials used for the request are not valid.\n\nThe error code is `UNAUTHORIZED`. An additional message may provide more information about the error.\n\nCauses for this error may be:\n\n- invalid authorization token\n- operation not allowed by authorization scope\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DefaultError401"}}}},"500":{"description":"This status code indicates that there was an unmanaged error.\n\nThe error code is `UNKNOWN_ERROR`. An additional message may provide more information about the error.\n\nCauses for this error may be:\n\n- failure on the TourRadar system\n- unexpected conditions\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DefaultError500"}}}}},"security":[{"application":["com.tourradar.bookings/read"]}]},"post":{"tags":["Bookings"],"summary":"/v1/bookings","description":"Creates a booking in the TourRadar system.\n\nThe payload must be sent as JSON in the request body.\nThe required entries are:\n\n* `departure_id`: this is the unique identifier of the wanted departure date for the desired tour. To retrieve departure dates, use the **[/tours/{tourId}/departures](#tag/Pricing-and-Availability/paths/~1v1~1tours~1{tourId}~1departures/get)** endpoint.\n* `currency`: the currency that will be used for payments.\n* `passengers`: the list of passengers in the booking.\n* `email`: email used for communications regarding the booking (partner support email). Please be aware that this email is different than the one from passengers definition.\n\nFurthermore, it's possible to add the following sections, if needed:\n\n* `accommodations`: defines the desired accommodation types (if the tour offers them), and which passengers will use them.\n* `optional_extras`: optional extra items that can be booked together with the tour.\n\nThis is an example of how the payload for a booking looks like:\n\n```json\n{\n  \"departure_id\": 123,\n  \"currency\": \"EUR\",\n  \"email\": \"dummy@mail.org\",\n  \"passengers\": [\n    {\n      \"pax_number\": 1,\n      \"price_category_id\": 1,\n      \"fields\" : {\n        \"first_name\": \"John\",\n        \"last_name\": \"Doe\",\n        \"email\": \"dummy@mail.org\",\n        \"phone_number\": \"+431245678853\",\n        \"date_of_birth\": \"21/05/2019\",\n        \"nationality\": \"Germany\",\n        \"gender\": \"male\"\n      }\n    },\n    {\n      \"pax_number\": 2,\n      \"price_category_id\": 2,\n      \"fields\" : {\n        \"first_name\": \"John\",\n        \"last_name\": \"Doe\",\n        \"email\": \"dummy@mail.org\",\n        \"phone_number\": \"+431245678853\",\n        \"date_of_birth\": \"21/05/2019\",\n        \"nationality\": \"Germany\",\n        \"gender\": \"female\"\n      }\n    }\n  ],\n  \"accommodations\": [\n    {\n      \"id\": 345,\n      \"passengers\": [1, 2]\n    }\n  ],\n  \"optional_extras\": [\n    {\n      \"id\": 456,\n      \"passengers\": [2]\n    }\n  ],\n}\n```\n\n#### Passengers definition\n\nFor each entry in the `passengers` array, these are the required fields:\n\n* `pax_number`: this is the index of the passenger, starting with 1. The passenger number will be used in the accommodation and extras sections of the request, to assign specific passengers to elements of the booking.\n* `price_category_id`: this defines the category of the passenger. To retrieve price categories, use the **[/tours/{tourId}/prices](#tag/Pricing-and-Availability/paths/~1v1~1tours~1{tourId}~1prices/get)** endpoint.\n* `fields`: this is the passenger information, as requested by the operator. To retrieve a list of fields, and if they are required or optional, use the **[/operator/{operatorId}/booking-fields](#tag/Operators/paths/~1v1~1operators~1{operator}~1booking-fields/get)** endpoint. Some examples of these fields:\n  * `title`: title of the passenger, possible values: `Mr.`, `Ms.`, `Mrs.`, `Miss`.\n  * `gender`: gender of the passenger, possible values: `male`, `female`.\n  * `date_of_birth`: date of birth of the passenger, format needed: `DD/MM/YYYY`.\n  * `email`: the passenger's email address.\n  * `bed_preference`: the passenger's bed preference, possible values: `Single Bed`, `Twin Bed`.\n  * `nationality`: nationality of the passenger, please use country names from the taxonomy endpoint **[/taxonomy/destinations/country](#tag/Taxonomy/paths/~1v1~1taxonomy~1destinations~1{type}/get)**, some examples: `Argentina`, `Austria`, `Bahrain`, `Belgium`, `Australia`. \n\n\n#### Accommodation\n\nIn the `accommodations` section, it's possible to specify the identifier of an accommodation option, and which passenger numbers should make use of it.\n\nTo retrieve a list of accommodation options available for the desired departure, use the **[/tours/{tourId}/departures/{departureId}](#tag/Pricing-and-Availability/paths/~1v1~1tours~1{tourId}~1departures~1{departureId}/get)** endpoint.\n\n#### Optional extras\n\nThe `optional_extras` section works exactly like the `accommodations` section.\n\nTo retrieve a list of the optional extra items available for the desired departure, use the **[/tours/{tourId}/departures/{departureId}](#tag/Pricing-and-Availability/paths/~1v1~1tours~1{tourId}~1departures~1{departureId}/get)** endpoint.\n\n#### Booking conversation page\n\nAfter the creation of the booking, you will receive in the response a link that leads to the booking conversation page. The link will be available in the `links` object in the response and it will have the type `booking-page`. This page is where all the communication happens between travelers and TourRadar, or the adventure operator. It shows details about the tour booked and has a price breakdown.\n\nAn example of a booking conversation page link is:\n\n```json\n  \"links\": [\n    {\n      \"type\": \"booking-page\",\n      \"url\": \"https://www.tourradar.com/booking/12345?enquiryCode=fvwffws8hgqqz4blyh13icbyldjqhp6d\"\n    }\n  ],\n```\n\n#### Additional information\n\nIn the request, it is possible to add these additional fields:\n\n* `partner_booking_code`: the booking code, or reference number, in your system. This will be stored with the booking, and returned with the booking detail request (**[/bookings/{bookingId}](#tag/Bookings/paths/~1v1~1bookings~1{bookingId}/get)** endpoint).\n* `store_id`: this is the name or identifier of the store, or agent, that made the booking. It will also be stored and returned.\n* `custom_data`: an object containing additional info from your side, stored and retrieved too. Up to 5 string properties can be set in it.\n\n#### Testing payments\n\nIn our sandbox environment, you can use one of the Braintree test credit cards. More information about this can be found **[here](https://developer.paypal.com/braintree/docs/reference/general/testing#valid-card-numbers)**.\n\nPlease be aware that using one of these valid card numbers does not necessarily mean that the transaction will be successful in the sandbox environment. For example, a transaction with amount between 2000-2999 will cause a payment failure. All the details about transaction amounts and responses can be found **[here](https://developer.paypal.com/braintree/docs/reference/general/testing#transaction-amounts)**.\n\n\n#### Pending status reason\n\nIf there were some errors on the operator side when a booking is created, that booking will have the pending status and the error message received from the operator stored in the field called `status_reason_text`.\nBelow, you will find an example of this situation:\n\n```json\n{\n  ...\n  \"status\": \"pending\",\n  \"status_reason\": \"BOOKING_NOT_CONFIRMED\",\n  \"status_reason_text\": \"Booking could not be confirmed - Missing mandatory fields\"\n}\n```\n\nThese fields can be used to understand why there was a problem with the booking and can be leveraged by your CS team to try and make the booking confirmed.\n","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BookingInput"}}},"required":true},"responses":{"200":{"description":"200 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Booking"}}}},"401":{"description":"This status code indicates that the credentials used for the request are not valid.\n\nThe error code is `UNAUTHORIZED`. An additional message may provide more information about the error.\n\nCauses for this error may be:\n\n- invalid authorization token\n- operation not allowed by authorization scope\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DefaultError401"}}}},"500":{"description":"This status code indicates that there was an unmanaged error.\n\nThe error code is `UNKNOWN_ERROR`. An additional message may provide more information about the error.\n\nCauses for this error may be:\n\n- failure on the TourRadar system\n- unexpected conditions\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DefaultError500"}}}}},"security":[{"application":["com.tourradar.bookings/write"]}]}},"/v1/bookings/affiliate":{"get":{"tags":["Bookings"],"summary":"/v1/bookings/affiliate","description":"Booking listing endpoint - list only bookings created by affiliate partner. This endpoint have limited amount of exposed data.","parameters":[{"name":"sort_by","in":"query","description":"Field by which the results will be sorted. Possible values: `id`, `departure_date`,  `created_at`, `status`. Default is `id`.","schema":{"type":"string"}},{"name":"Accept","in":"header","description":"Defines the response format. Current available values are `application/json` and `text/csv`.","schema":{"type":"string"}},{"name":"updated_range","in":"query","description":"Get the bookings that are updated in a certain date range. Valid formats are: `YYYYMMDD-YYYYMMDD` and `YYYYMMDD`. Using the single date format, it will retrieve the bookings updated in that day.","schema":{"type":"string"}},{"name":"limit","in":"query","description":"Number of items per page of results (default is 20, max 100).","schema":{"type":"string"}},{"name":"Accept-Language","in":"header","description":"Defines in which language the resources are returned. Use ISO-639 language or locale codes (example: `en`, `en-US`).","schema":{"type":"string"}},{"name":"page","in":"query","description":"Number of page to return (default is 1).","schema":{"type":"string"}},{"name":"sort_order","in":"query","description":"Direction of the sorting (ascending or descending). Possible values: `asc`, `desc`.","schema":{"type":"string"}},{"name":"date_range","in":"query","description":"Date range in which to search for bookings. Valid formats are: `YYYYMMDD-YYYYMMDD` and `YYYYMMDD`. Using the single date format, it will retrieve the bookings created in that day.","schema":{"type":"string"}}],"responses":{"200":{"description":"200 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BookingSearchPagination"}}}},"401":{"description":"This status code indicates that the credentials used for the request are not valid.\n\nThe error code is `UNAUTHORIZED`. An additional message may provide more information about the error.\n\nCauses for this error may be:\n\n- invalid authorization token\n- operation not allowed by authorization scope\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DefaultError401"}}}},"500":{"description":"This status code indicates that there was an unmanaged error.\n\nThe error code is `UNKNOWN_ERROR`. An additional message may provide more information about the error.\n\nCauses for this error may be:\n\n- failure on the TourRadar system\n- unexpected conditions\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DefaultError500"}}}}},"security":[{"application":["com.tourradar.bookings.affiliate/read"]}]}},"/v1/bookings/operator/{operator}/{bookingCode}":{"get":{"tags":["Bookings"],"summary":"/v1/bookings/operator/{operator}/{bookingCode}","description":"\nThis endpoint returns detailed information about a booking, retrieved directly from the operator system.\n\nThe call expects two parameters as part of the request path:\n\n- the operator ID\n- the booking code (in the operator system)\n\nAdditionally, the following query string parameters are supported:\n\n- `currency`: the currency in which the booking was made (use 3-letter ISO 4217 codes, for example `USD` for US Dollars)\n- `surname`: the last name of one passenger in the booking\n- `next_id`: if the booking has multiple tours, the index of the tour to retrieve\n\nThe parameters `currency` and `surname` are required by some operators in order to successfully retrieve a booking.\n\nA full example of a call to this endpoint could be:\n\n```\nGET /bookings/operator/406/IVSYDS-A339296?surname=Davis&currency=USD\n```\n\nAdditional parameters may be added in a future revision, for example the identifier of the agent (store ID) who made the booking.\n\n#### Retrieving operator ID\n\nTo retrieve the operator ID for a specific operator, it's possible to use the call [/operators](#tag/Operators/paths/~1v1~1operators/get), which will return a list of all available operators with ID, name, and code.\n\n#### Output definition\n\nThe output format is JSON, and the data structure follows closely the OTA standard. In particular, the response is based on the [OTA_TourActivityBookRS.ReservationDetails schema](https://modelviewers.pilotfishtechnology.com/modelviewers/OTA/model/Format.OTA_TourActivityBookRS.ReservationDetails.html).\n\nUnlike OTA, identifiers use the `snake_case` (lowercase, underscore between words) notation, instead of `PascalCase` (first letter of each word capitalized). Furthermore, some fields have been added to the existing schema to support the variety of data returned by operators.\n\nIt should be noted that not all operators return all information for bookings. Where possible, data have been structured to minimize the difference between different operators' implementations. The list of fields provided by **all operators** is defined as follows:\n\n| object | field | notes |\n| ------ | ----- | ----- |\n| confirmation | id | |\n| confirmation | status | |\n| basic_info | name | Name of the tour/activity |\n| basic_info | tour_activity_id | Operator code of the tour/activity |\n| schedule | duration | |\n| schedule | start | |\n| schedule | end | |\n| participant_info.individual | given_name | |\n| participant_info.individual | surname | |\n| participant_info.individual | birth_date | |\n| pricing.summary | amount | |\n| commission_info | commission_payable_amount | |\n\n> ⚠ **WARNING**: the list is not final in this version\n\n#### Error codes\n\nEvery failed request will result in a HTTP status code in the 400 or 500 range. The JSON element `error` in the response will identify the error condition.\n\nThis is a list of the possible error codes returned by this API:\n\n| Error code | HTTP Status code | Meaning |\n| ------ | ----- | ----- |\n| `UNAUTHORIZED` | 401 | Invalid operator credentials |\n| `BOOKING_NOT_FOUND` | 404 | Booking not found |\n| `OPERATOR_NOT_FOUND` | 412 | Invalid operator ID |\n| `INVALID_REQUEST` | 405 | Operation not supported |\n| `VALIDATION_ERROR` | 422 | Parameter missing or invalid |\n| `UNKNOWN_ERROR` | 500 | Server failure or unexpected error condition |\n| `REQUEST_FAILED` | 502 | Operator server failure |\n\n#### Booking status\n\nThe booking status (response field `booking.status`) from different operators is mapped to one of the following values:\n\n- `pending`: the booking has not been confirmed yet\n- `confirmed`: the booking has been confirmed\n- `declined`: the booking has been cancelled by the operator\n- `cancelled`: the booking has been cancelled by the customer or agent\n\nIn the event of a status response not recognised by the system, this field will contain `unknown`.\nIn this case, another response field `booking.operator_status` will contain the original status information provided by the operator.\n\n#### Bookings with multiple tours\n\nSome operators include several tours/activities inside the same booking. In this case, a call to the booking code will return only the first tour/activity (together with their extras, payment information, and so on).\n\nThe response, however, will contain an attribute `next_id`, whose value can be added to the query parameters in order to retrieve the next tour/activity in the booking.\n\nThe call can be repeated as long as the attribute `next_id` in the response has a value, to get additional components of the booking. When the attribute `next_id` doesn't have a value, the last of the tours/activities in this booking has been reached.\n\n##### Example:\n\nFirst request:\n\n```\nGET /bookings/operator/204/6180043\n```\n\nResponse:\n\n```\n{\n    \"reservation_details\": {\n        \"basic_info\": {\n            \"name\": \"4WD Broome to Darwin Overland\",\n            ....\n        }\n    },\n    \"next_id\": \"1\"\n}\n```\n\nThe value `1` for the attribute `next_id` means that there is another component in the same booking, so we can perform the second request:\n\n```\nGET /bookings/operator/204/6180043?next_id=1\n```\n\nResponse:\n\n```\n{\n    \"reservation_details\": {\n        \"basic_info\": {\n            \"name\": \"Kakadu, Katherine & Litchfield Adventure\",\n            ....\n        }\n    }\n}\n```\n\nThis time, the response doesn't contain a `next_id` attribute, which means this booking only has 2 tours/activities in it.\n","parameters":[{"name":"bookingCode","in":"path","description":"Operator's unique booking code (note: special characters must be URL-encoded)","required":true,"schema":{"type":"string"}},{"name":"currency","in":"query","schema":{"type":"string"}},{"name":"operator","in":"path","description":"Operator ID","required":true,"schema":{"type":"string"}},{"name":"surname","in":"query","schema":{"type":"string"}},{"name":"next_id","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"200 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BookingResponse"}}}},"401":{"description":"This status code indicates that the credentials used for the fetch request are not valid.\n\nThe error code is `UNAUTHORIZED`. An additional message may provide more information about the error.\n\nCauses for this error may be:\n\n- invalid authorization token\n- wrong configuration\n- outdated operator credentials\n","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"The error code","enum":["UNAUTHORIZED","UNKNOWN_ERROR"]},"message":{"type":"string","description":"The error message, if available"},"context":{"type":"object","description":"Additional data relative to the error condition"},"validation_errors":{"type":"array","description":"In case of validation error, all the elements that didn't pass validation","items":{"type":"string"}}}}}}},"404":{"description":"This status code indicates that the operator or booking was not found.\n\nThe error code is `BOOKING_NOT_FOUND` or `OPERATOR_NOT_FOUND`. An additional message may provide more information about the error.\n\nCauses for this error may be:\n\n- the booking code is invalid\n- one of the required parameters (surname, currency, etc.) is wrong\n- the operator parameter is wrong\n","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"The error code","enum":["OPERATOR_NOT_FOUND","BOOKING_NOT_FOUND","UNKNOWN_ERROR"]},"message":{"type":"string","description":"The error message, if available"},"context":{"type":"object","description":"Additional data relative to the error condition"},"validation_errors":{"type":"array","description":"In case of validation error, all the elements that didn't pass validation","items":{"type":"string"}}}}}}},"405":{"description":"This status code indicates that the operation is not supported for the given operator.\n\nThe error code is `INVALID_REQUEST`. An additional message may provide more information about the error.\n\nCauses for this error may be:\n\n- the operator doesn't support booking creation\n- the operator id is not integer\n","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"The error code","enum":["INVALID_REQUEST","UNKNOWN_ERROR"]},"message":{"type":"string","description":"The error message, if available"},"context":{"type":"object","description":"Additional data relative to the error condition"},"validation_errors":{"type":"array","description":"In case of validation error, all the elements that didn't pass validation","items":{"type":"string"}}}}}}},"422":{"description":"This status code indicates that there was a validation error in the request parameters.\n\nThe error code is `VALIDATION_ERROR`. An additional `validation_errors` element will list all the parameters which were invalid.\n\nCauses for this error may be:\n\n- required parameters are missing\n- some parameters have the wrong type\n","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"The error code","enum":["VALIDATION_ERROR","UNKNOWN_ERROR"]},"message":{"type":"string","description":"The error message, if available"},"context":{"type":"object","description":"Additional data relative to the error condition"},"validation_errors":{"type":"array","description":"In case of validation error, all the elements that didn't pass validation","items":{"type":"string"}}}}}}},"500":{"description":"This status code indicates that there was an unmanaged error.\n\nThe error code is `UNKNOWN_ERROR`. An additional message may provide more information about the error.\n\nCauses for this error may be:\n\n- failure on the TourRadar system\n- unexpected conditions\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DefaultError500"}}}},"502":{"description":"This status code indicates that there was a failure on the operator's system.\n\nThe error code is `REQUEST_FAILED`. An additional message may provide more information about the error.\n\nCauses for this error may be:\n\n- network connectivity issue to the operator's system\n- operator's system failing\n- operator's system responding with an invalid response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"The error code","enum":["REQUEST_FAILED","OPERATOR_TIMEOUT","UNKNOWN_ERROR"]},"message":{"type":"string","description":"The error message, if available"},"context":{"type":"object","description":"Additional data relative to the error condition"},"validation_errors":{"type":"array","description":"In case of validation error, all the elements that didn't pass validation","items":{"type":"string"}}}}}}}},"security":[{"application":["com.tourradar.bookings/read"]}]}},"/v1/bookings/{bookingId}":{"get":{"tags":["Bookings"],"summary":"/v1/bookings/{bookingId}","description":"Retrieves details about a booking created in the TourRadar system.\n\n","parameters":[{"name":"bookingId","in":"path","description":"Booking ID","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"200 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Booking"}}}},"401":{"description":"This status code indicates that the credentials used for the request are not valid.\n\nThe error code is `UNAUTHORIZED`. An additional message may provide more information about the error.\n\nCauses for this error may be:\n\n- invalid authorization token\n- operation not allowed by authorization scope\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DefaultError401"}}}},"500":{"description":"This status code indicates that there was an unmanaged error.\n\nThe error code is `UNKNOWN_ERROR`. An additional message may provide more information about the error.\n\nCauses for this error may be:\n\n- failure on the TourRadar system\n- unexpected conditions\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DefaultError500"}}}}},"security":[{"application":["com.tourradar.bookings/read"]}]}},"/v1/bookings/{bookingId}/status":{"get":{"tags":["Bookings"],"summary":"/v1/bookings/{bookingId}/status","description":"Retrieves the status of a booking created in the TourRadar system.\n\nTo get the full details about a booking, use the **[/bookings/{bookingId}](#tag/Bookings/paths/~1v1~1bookings~1{bookingId}/get)** endpoint.\n\nThe primary scope of this endpoint is to check the status of a `pending` booking, to verify if it has been confirmed by the operator.\n\n","parameters":[{"name":"bookingId","in":"path","description":"Booking ID","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"200 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BookingStatus"}}}},"401":{"description":"This status code indicates that the credentials used for the request are not valid.\n\nThe error code is `UNAUTHORIZED`. An additional message may provide more information about the error.\n\nCauses for this error may be:\n\n- invalid authorization token\n- operation not allowed by authorization scope\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DefaultError401"}}}},"500":{"description":"This status code indicates that there was an unmanaged error.\n\nThe error code is `UNKNOWN_ERROR`. An additional message may provide more information about the error.\n\nCauses for this error may be:\n\n- failure on the TourRadar system\n- unexpected conditions\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DefaultError500"}}}}},"security":[{"application":["com.tourradar.bookings/read"]}]}},"/v1/operators":{"get":{"tags":["Operators"],"summary":"/v1/operators","description":"Returns a list of all operators for which the TourRadar system has content, or can retrieve bookings.\n","responses":{"200":{"description":"200 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperatorList"}}}},"401":{"description":"This status code indicates that the credentials used for the request are not valid.\n\nThe error code is `UNAUTHORIZED`. An additional message may provide more information about the error.\n\nCauses for this error may be:\n\n- invalid authorization token\n- operation not allowed by authorization scope\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DefaultError401"}}}},"500":{"description":"This status code indicates that there was an unmanaged error.\n\nThe error code is `UNKNOWN_ERROR`. An additional message may provide more information about the error.\n\nCauses for this error may be:\n\n- failure on the TourRadar system\n- unexpected conditions\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DefaultError500"}}}}},"security":[{"application":["com.tourradar.operators/read"]}]}},"/v1/operators/{operator}":{"get":{"tags":["Operators"],"summary":"/v1/operators/{operator}","description":"This endpoint can be used to retrieve information about a single operator.\n\n#### Terms and conditions of each operator\n\nThe endpoint contains information about terms and conditions for each operator (if they are available) in the following 2 fields:\n\n* `terms_text`: full text for the terms and conditions of the operator (please be aware that it may contain HTML).\n* `terms_url`: link to the terms and conditions page from the operator website, if available.\n\nPlease see below an example of a response from this endpoint:\n```json\n{\n    \"id\": 9,\n    \"name\": \"Contiki\",\n    \"code\": \"contiki\",\n    \"terms_text\": \"This is an example of terms and conditions for the operator Contiki.\",\n    \"has_integration\": true,\n    \"terms_url\": \"http://www.contiki.com/booking-conditions\"\n}\n```\n","parameters":[{"name":"operator","in":"path","description":"Operator integer ID","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"200 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Operator"}}}},"401":{"description":"This status code indicates that the credentials used for the request are not valid.\n\nThe error code is `UNAUTHORIZED`. An additional message may provide more information about the error.\n\nCauses for this error may be:\n\n- invalid authorization token\n- operation not allowed by authorization scope\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DefaultError401"}}}},"500":{"description":"This status code indicates that there was an unmanaged error.\n\nThe error code is `UNKNOWN_ERROR`. An additional message may provide more information about the error.\n\nCauses for this error may be:\n\n- failure on the TourRadar system\n- unexpected conditions\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DefaultError500"}}}}},"security":[{"application":["com.tourradar.operators/read"]}]}},"/v1/operators/{operator}/booking-fields":{"get":{"tags":["Operators"],"summary":"/v1/operators/{operator}/booking-fields","description":"Retrieve booking fields for this operator.\n\nThis is the list of fields that will need to be passed to the create booking request (**[/bookings](#)**). For each field, the name, label, group, and value type are returned.\n\n#### Mandatory fields\n\nSome operators have their own requirements about which fields are considered mandatory, and which are optional.\n\nFurthermore, fields can be mandatory for the lead passenger (the first passenger in the booking), but not for additional passengers. Two fields in the response define if a field is mandatory or not: `main_pax` and `additional_pax`.\n\nThe possible values for those fields are:\n\n* `mandatory`: the field is always mandatory, booking will fail if the field is not provided.\n* `optional`: the field is always optional.\n* `mandatory_post_booking`: the field is optional to create a booking, but will have to be provided to the operator before the tour's departure date (examples of such fields may include passport number, proof of insurance, etc.).\n\n","parameters":[{"name":"operator","in":"path","description":"Operator integer ID","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"200 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BookingFields"}}}},"401":{"description":"This status code indicates that the credentials used for the request are not valid.\n\nThe error code is `UNAUTHORIZED`. An additional message may provide more information about the error.\n\nCauses for this error may be:\n\n- invalid authorization token\n- operation not allowed by authorization scope\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DefaultError401"}}}},"500":{"description":"This status code indicates that there was an unmanaged error.\n\nThe error code is `UNKNOWN_ERROR`. An additional message may provide more information about the error.\n\nCauses for this error may be:\n\n- failure on the TourRadar system\n- unexpected conditions\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DefaultError500"}}}}},"security":[{"application":["com.tourradar.operators/read"]}]}},"/v1/operators/{operator}/bulk/departures":{"get":{"tags":["Bulk"],"summary":"/v1/operators/{operator}/bulk/departures","description":"Downloads an operator's available departure dates in bulk.\n\nThis endpoint is supposed to be used to download large amount of data, and import them into the partner's own database or system for faster access.\n\nThe response of this endpoint will be a list of URLs.\nEach one of them points to a (gzip-compressed) JSON file containing up to 500 tours.\nFor each tour, all available departure dates will be listed. \n\nThe URLs are signed for download, and are only valid for a limited amount of time (10 minutes).\nAfter the expiration, the links will not be valid anymore, and a new request to this endpoint has to be made to obtain new download links.\n\nAn example of the response for this call could be:\n\n```json\n{\n  \"urls\": [\n    \"https://s3.us-east-1.amazonaws.com/tour-inventory.b2b.tourradar.com/bulk_data/operators/operator_id%3D204/locale_id%3D1/tour_departures.2021-11-03.13-29-08.229377.0.json.gz?X-Amz-Algorithm=AWS4-HMAC-SHA256[...]&x-id=GetObject\",\n    \"https://s3.us-east-1.amazonaws.com/tour-inventory.b2b.tourradar.com/bulk_data/operators/operator_id%3D204/locale_id%3D1/tour_departures.2021-11-03.13-29-08.229377.1.json.gz?X-Amz-Algorithm=AWS4-HMAC-SHA256[...]x-id=GetObject\",\n    \"https://s3.us-east-1.amazonaws.com/tour-inventory.b2b.tourradar.com/bulk_data/operators/operator_id%3D204/locale_id%3D1/tour_departures.2021-11-03.13-29-08.229377.2.json.gz?X-Amz-Algorithm=AWS4-HMAC-SHA256[...]&x-id=GetObject\"\n  ],\n  \"expires_in\": 600\n}\n```\n\nThe content of the files that will be downloaded will look like this:\n\n```json\n[\n  {\n    \"tour_id\": 1492,\n    \"departure_dates\": [\n      {\n        \"id\": 722685916,\n        \"date\": \"2022-05-07\",\n        \"type\": \"scheduled\",\n        \"guide_languages\": [\n          1\n        ]\n      },\n      {\n        \"id\": 722685917,\n        \"date\": \"2022-05-21\",\n        \"type\": \"scheduled\",\n        \"guide_languages\": [\n          1\n        ]\n      }\n    ]\n  },\n  {\n    \"tour_id\": 1493,\n    \"departure_dates\": [\n      {\n        \"id\": 722685694,\n        \"date\": \"2022-04-23\",\n        \"type\": \"scheduled\",\n        \"guide_languages\": [\n          1\n        ]\n      }\n    ]\n  }\n]\n```\n\nFor each departure, the file contains the identifier, date, type, and languages the tour is offered in.\nThose data are the same available in the **[tours/{tourId}/departures](#tag/Pricing-and-Availability/paths/~1v1~1tours~1{tourId}~1departures/get)** endpoint.\n\nBulk data is updated regularly at least once per day (schedule may vary for different operators).","parameters":[{"name":"Accept-Language","in":"header","schema":{"type":"string"}},{"name":"operator","in":"path","description":"Operator integer ID","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"200 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperatorBulkFiles"}}}},"401":{"description":"This status code indicates that the credentials used for the request are not valid.\n\nThe error code is `UNAUTHORIZED`. An additional message may provide more information about the error.\n\nCauses for this error may be:\n\n- invalid authorization token\n- operation not allowed by authorization scope\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DefaultError401"}}}},"404":{"description":"404 response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"The error code","enum":["UNKNOWN_ERROR","UNKNOWN_ERROR"]},"message":{"type":"string","description":"The error message, if available"},"context":{"type":"object","description":"Additional data relative to the error condition"},"validation_errors":{"type":"array","description":"In case of validation error, all the elements that didn't pass validation","items":{"type":"string"}}}}}}},"500":{"description":"This status code indicates that there was an unmanaged error.\n\nThe error code is `UNKNOWN_ERROR`. An additional message may provide more information about the error.\n\nCauses for this error may be:\n\n- failure on the TourRadar system\n- unexpected conditions\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DefaultError500"}}}}},"security":[{"application":["com.tourradar.operators/read"]}]}},"/v1/operators/{operator}/bulk/tours":{"get":{"tags":["Bulk"],"summary":"/v1/operators/{operator}/bulk/tours","description":"Downloads an operator's tour data in bulk.\n\nThis endpoint is supposed to be used to download large amount of data, and import them into the partner's own database or system for faster access.\n\nThe response of this endpoint will be a list of URLs.\nEach one of them points to a (gzip-compressed) JSON file containing up to 500 tours.\nThe schema for each tour is exactly the one used in the **[/tours/{tourId}](#tag/Tours/paths/~1v1~1tours~1{tourId}/get)** endpoint.\n\nThe URLs are signed for download, and are only valid for a limited amount of time (10 minutes).\nAfter the expiration, the links will not be valid anymore, and a new request to this endpoint has to be made to obtain new download links.\n\nAn example of the response for this call could be:\n\n```json\n{\n  \"urls\": [\n    \"https://s3.us-east-1.amazonaws.com/tour-inventory.b2b.tourradar.com/bulk_data/operators/operator_id%3D204/locale_id%3D1/tour_data.2021-11-03.13-29-08.229377.0.json.gz?X-Amz-Algorithm=AWS4-HMAC-SHA256[...]&x-id=GetObject\",\n    \"https://s3.us-east-1.amazonaws.com/tour-inventory.b2b.tourradar.com/bulk_data/operators/operator_id%3D204/locale_id%3D1/tour_data.2021-11-03.13-29-08.229377.1.json.gz?X-Amz-Algorithm=AWS4-HMAC-SHA256[...]x-id=GetObject\",\n    \"https://s3.us-east-1.amazonaws.com/tour-inventory.b2b.tourradar.com/bulk_data/operators/operator_id%3D204/locale_id%3D1/tour_data.2021-11-03.13-29-08.229377.2.json.gz?X-Amz-Algorithm=AWS4-HMAC-SHA256[...]&x-id=GetObject\"\n  ],\n  \"expires_in\": 600\n}\n```\n\nBulk data is updated regularly at least once per day (schedule may vary for different operators).","parameters":[{"name":"Accept-Language","in":"header","schema":{"type":"string"}},{"name":"operator","in":"path","description":"Operator integer ID","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"200 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperatorBulkFiles"}}}},"401":{"description":"This status code indicates that the credentials used for the request are not valid.\n\nThe error code is `UNAUTHORIZED`. An additional message may provide more information about the error.\n\nCauses for this error may be:\n\n- invalid authorization token\n- operation not allowed by authorization scope\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DefaultError401"}}}},"404":{"description":"404 response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"The error code","enum":["UNKNOWN_ERROR","UNKNOWN_ERROR"]},"message":{"type":"string","description":"The error message, if available"},"context":{"type":"object","description":"Additional data relative to the error condition"},"validation_errors":{"type":"array","description":"In case of validation error, all the elements that didn't pass validation","items":{"type":"string"}}}}}}},"500":{"description":"This status code indicates that there was an unmanaged error.\n\nThe error code is `UNKNOWN_ERROR`. An additional message may provide more information about the error.\n\nCauses for this error may be:\n\n- failure on the TourRadar system\n- unexpected conditions\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DefaultError500"}}}}},"security":[{"application":["com.tourradar.operators/read"]}]}},"/v1/taxonomy/currencies":{"get":{"tags":["Taxonomy"],"summary":"/v1/taxonomy/currencies","description":"This endpoint returns the list of all currencies supported by the TourRadar system.\n\nThe following attributes will be returned for each item:\n\n- `code`: three-letter currency code in the ISO 4217 format.\n- `name`: name of the currency.\n- `symbol`: short symbol used to describe the currency in reference to amounts of money (example: `€` for Euro).\n","parameters":[{"name":"Accept-Language","in":"header","schema":{"type":"string"}}],"responses":{"200":{"description":"200 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaxonomyCurrenciesList"}}}},"401":{"description":"This status code indicates that the credentials used for the request are not valid.\n\nThe error code is `UNAUTHORIZED`. An additional message may provide more information about the error.\n\nCauses for this error may be:\n\n- invalid authorization token\n- operation not allowed by authorization scope\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DefaultError401"}}}},"500":{"description":"This status code indicates that there was an unmanaged error.\n\nThe error code is `UNKNOWN_ERROR`. An additional message may provide more information about the error.\n\nCauses for this error may be:\n\n- failure on the TourRadar system\n- unexpected conditions\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DefaultError500"}}}}},"security":[{"application":[]}]}},"/v1/taxonomy/destinations/{type}":{"get":{"tags":["Taxonomy"],"summary":"/v1/taxonomy/destinations/{type}","description":"This endpoint returns a list of all destinations in the TourRadar system.\n\nEach destination type can be requested. \n\nThese are the available query parameters:\n- `country_id`: filter destinations by country ID. It can be a single integer or a comma-separated list of integers. It is available for all types but country and continent. E.g. `?country_id=1,2,3`\n\nIn general, the following attributes will be returned:\n\n- `id`: this is the unique identifier of this destination in the system. The value is immutable, and can be used to setup a mapping between TourRadar destination and the partner's own destinations, or in search requests where a destination ID is needed.\n- `name`: the name of the destination.\n- `parent_ids`: unique identifiers of this destination's parent destinations. Usually, this will be one value; for example, cities have a state ID as parent, states have a country ID as parent, and so on. There are destination types, for example rivers or national parks, that can belong to more than one country.\n- `latitude` and `longitude`: coordinates of the destination. This mostly applies to countries, states, and cities. Other types may not have geographical information.\n- `geoname_id`: available for countries and cities, this is the identifier of the destination in the GeoNames geographical database (http://www.geonames.org/). The identifier can be used to facilitate the mapping. *Note*: not 100% of the entries are mapped to a GeoNames entity. TourRadar is committed to constantly improve the data quality, but can't guarantee a perfect match all of the times.\n- `country_id`: available for all types but country and continent, this is the identifier of the country the destination belongs to.\n\nIn addition, countries have the following additional information:\n\n- `country_code`: two-letter country code in the ISO 3316-1 alpha-2 format.\n- `currency_code`: three-letter currency code used in the country in the ISO 4217 format.\n- `currency_name`: name of the currency used in the country.\n- `electricity_outlets`: an array of one-letter electrical plug types used in the country, as defined by IEC (https://www.iec.ch/world-plugs).\n\nResults will be paginated (1000 elements at a time). If the response contains the `next_page` element, it's possible to access the next 1000 elements by repeating the request with the `page` parameter.\n\nExample: `/v1/taxonomy/destinations/city?page=2`\n\n\n","parameters":[{"name":"type","in":"path","description":"Possible values: \n`continent`, \n`country`,\n`state`,\n`region`,\n`city`,\n`national-park`,\n`island`,\n`mountain`,\n`ocean`,\n`river`,\n`lake`\n","required":true,"schema":{"type":"string"}},{"name":"Accept-Language","in":"header","schema":{"type":"string"}},{"name":"country_id","in":"query","schema":{"type":"string"}},{"name":"limit","in":"query","schema":{"type":"string"}},{"name":"page","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"200 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaxonomyDestinationPagination"}}}},"401":{"description":"This status code indicates that the credentials used for the request are not valid.\n\nThe error code is `UNAUTHORIZED`. An additional message may provide more information about the error.\n\nCauses for this error may be:\n\n- invalid authorization token\n- operation not allowed by authorization scope\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DefaultError401"}}}},"422":{"description":"destination type not found.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"The error code","enum":["VALIDATION_ERROR","UNKNOWN_ERROR"]},"message":{"type":"string","description":"The error message, if available"},"context":{"type":"object","description":"Additional data relative to the error condition"},"validation_errors":{"type":"array","description":"In case of validation error, all the elements that didn't pass validation","items":{"type":"string"}}}}}}},"500":{"description":"This status code indicates that there was an unmanaged error.\n\nThe error code is `UNKNOWN_ERROR`. An additional message may provide more information about the error.\n\nCauses for this error may be:\n\n- failure on the TourRadar system\n- unexpected conditions\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DefaultError500"}}}}},"security":[{"application":[]}]}},"/v1/taxonomy/languages":{"get":{"tags":["Taxonomy"],"summary":"/v1/taxonomy/languages","description":"This endpoint returns the list of all guided languages of the tours from TourRadar system.\n\nThe following attributes will be returned for each item:\n\n- `id`: this is the unique identifier of this language in the system.\n- `code`: 2-letter language code in the ISO 639-1 standard.\n- `name`: name of the language.\n","parameters":[{"name":"Accept-Language","in":"header","schema":{"type":"string"}}],"responses":{"200":{"description":"200 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaxonomyLanguagesList"}}}},"401":{"description":"This status code indicates that the credentials used for the request are not valid.\n\nThe error code is `UNAUTHORIZED`. An additional message may provide more information about the error.\n\nCauses for this error may be:\n\n- invalid authorization token\n- operation not allowed by authorization scope\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DefaultError401"}}}},"500":{"description":"This status code indicates that there was an unmanaged error.\n\nThe error code is `UNKNOWN_ERROR`. An additional message may provide more information about the error.\n\nCauses for this error may be:\n\n- failure on the TourRadar system\n- unexpected conditions\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DefaultError500"}}}}},"security":[{"application":[]}]}},"/v1/taxonomy/tours/types":{"get":{"tags":["Taxonomy"],"summary":"/v1/taxonomy/tours/types","description":"This endpoint returns a list of all tour types supported by the TourRadar system.\n\nTour types are categories associated to a tour. One tour can belong to different categories. Furthermore, tour types are organized in groups.\n\nThe following attributes will be returned for each item:\n\n- `id`: this is the unique identifier of the type in the system. It can be used in a search request when a tour type ID is needed.\n- `name`: name of the tour type.\n- `group_id`: unique identifier of the group this tour type belongs to.\n- `group_name`: name of the group this tour type belongs to.\n","parameters":[{"name":"Accept-Language","in":"header","schema":{"type":"string"}}],"responses":{"200":{"description":"200 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaxonomyToursTypesList"}}}},"401":{"description":"This status code indicates that the credentials used for the request are not valid.\n\nThe error code is `UNAUTHORIZED`. An additional message may provide more information about the error.\n\nCauses for this error may be:\n\n- invalid authorization token\n- operation not allowed by authorization scope\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DefaultError401"}}}},"500":{"description":"This status code indicates that there was an unmanaged error.\n\nThe error code is `UNKNOWN_ERROR`. An additional message may provide more information about the error.\n\nCauses for this error may be:\n\n- failure on the TourRadar system\n- unexpected conditions\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DefaultError500"}}}}},"security":[{"application":[]}]}},"/v1/tours/search":{"get":{"tags":["Tours"],"summary":"/v1/tours/search","description":"\nReturns a list of tours based on a number of search criteria.\n\n#### Search parameters\n\nThe call has a number of optional parameters, that will help you find the perfect tour for your customer.\n\n- `operator`: the ID of the tour operator that operates the tour. Operator IDs can be obtained from the  **[/operators](#tag/Operators/paths/~1v1~1operators/get)** endpoint.\n- `currency`: the prices will be returned in the specified currency. Use 3 letter codes, example: `AUD`, `EUR`, `USD`.\n- `start_city`: the ID for the start city of the tour. City IDs can be obtained from the **[/taxonomy/destinations/city](#tag/Taxonomy/paths/~1v1~1taxonomy~1destinations~1{type}/get)** endpoint.\n- `end_city`: the ID for the end city of the tour. City IDs can be obtained from the same endpoint mentioned before.\n- `city`: the ID for any city included on the tour itinerary. City IDs can be obtained from the same endpoint mentioned before. Multiple values are allowed, if you are looking for tours that have in itinerary both London and Paris you can make the call `GET /tours/search?city=11149&city=5781`. If you need tours that have in itinerary either London or Paris you can make the call `GET /tours/search?city=11149%2C5781`.\n- `country`: the ID for any country included on the tour itinerary. Country IDs can be obtained from the **[/taxonomy/destinations/country](#tag/Taxonomy/paths/~1v1~1taxonomy~1destinations~1{type}/get)** endpoint.\n- `user_country`: the ID for the country of the passenger's residence. Country IDs can be obtained from the same endpoint mentioned before.\n- `primary_country`: the ID for the country in which at least 2/3rd of the tour destinations are located. Country IDs can be obtained from the **[/taxonomy/destinations/country](#tag/Taxonomy/paths/~1v1~1taxonomy~1destinations~1{type}/get)** endpoint.\n- `continent`: the ID for any continent included on the tour itinerary. Continent IDs can be obtained from the **[/taxonomy/destinations/continent](#tag/Taxonomy/paths/~1v1~1taxonomy~1destinations~1{type}/get)** endpoint.\n- `natural_destination`: the ID for any natural destination included on the tour itinerary. Natural destination IDs can be obtained from **[/taxonomy/destinations/{type}](#tag/Taxonomy/paths/~1v1~1taxonomy~1destinations~1{type}/get)** endpoint (type can be `mountain`, `national_park`, `river`, etc).\n- `age`: age range the tour is suitable for, expressed as _min-max_. Using this parameter, all tours that include the desired range will be returned. For example, if `age=18-35`, tours that accepts from 18 to 60 years old will be included in the search result. To only search for an exact age range, use the parameter `exact_age` instead.\n- `exact_age`: exact age range the tour is suitable for, expressed as _min-max_ or just _max_. Example: `12-40` meaning the tour is suitable for and accepts 12 to 40 years old passengers.\n- `duration`: tour duration in numbers of days, expressed as _min-max_. Example: `5-7` meaning tours between 5 and 7 days of duration.\n- `date_range`: range of the desired departure date, expressed as _min-max_. For dates, use the format `YYYYMMDD`, where `YYYY` is the year, `MM` the month, `DD` the day. Example: `20211001-20211030` meaning tours departing in November 2021 (2021-11-01 to 2021-11-30).\n- `price`: desired price range for the tour, expressed as _min-max_. Example: `1000-1500` meaning tours between 1000 and 1500 units (in the currency specified by the `currency` parameter).\n- `price_per_day`: same as `price`, but using the price per day as value.\n- `group_size`: maximum desired group size. Example: `10` will only return tours with a maximum group size of 10 persons.\n- `guide_language`: the ID of the language the tour is operated in. Language IDs can be obtained from the **[/taxonomy/languages](#tag/Taxonomy/paths/~1v1~1taxonomy~1languages/get)** endpoint.\n- `tour_type`: the ID of the tour type you would like to use as a filter. Tour type IDs can be obtained from the **[/taxonomy/tours/types](#tag/Taxonomy/paths/~1v1~1taxonomy~1tours~1types/get)** endpoint. For example, looking at the taxonomy endpoint, the tour type **Sightseeing** has ID 76. If you want to search for tours with this type, the request will look like this: `GET /tours/search?tour_type=76`.\n- `is_instant_confirmable`: if true, only tours that can be automatically confirmed will be returned, if false only non instant confirmable.\n- `fields`: using this parameter it's possible to restrict the number of fields in the response. Use field names separated by commas. For example, the request `GET /tours/search?fields=tour_id,tour_name,operator` will return just the tour_id, tour_name and operator.\n\n#### Sorting\n\nYou can get the results sorted by passing some additional parameters:\n- `sort_by`: one of `score`, `price`, or `price_per_day`.\n- `sort_order`: `asc` or `desc` for ascending or descending sort order.\n\nThe default sort order, if not specified, is by popularity (`score`).\n\n\n#### Pagination\n\nThe search endpoints returns 20 results at a time.\n\nIf the response contains the `next_page` element, it's possible to access the next 20 elements by repeating the request with the `page` parameter.\n\nThe `limit` parameter can be used to change the number of results per page from the default of 20.\n\n#### Example\n\nA full example of a call to this endpoint could be:\n\n```\nGET /tours/search?country=84&tour_type=7&operator=3086&limit=1&page=1\n```\n\nAdditional parameters may be added in a future revision.\n\n#### Output definition\n\nThe list of tours is contained in the `items` array.\n\nThe data for each tour will include the ID, the name, images, list of destinations, and categorization.\n\nTo retrieve more detailed content about the tour, including itinerary and services, the tour identifier can be used for the **[/tours/{tourId}](#tag/Tours/paths/~1v1~1tours~1{tourId}/get)** endpoint.\n","parameters":[{"name":"exact_age","in":"query","description":"Exact age range the tour is suitable for, expressed as _min-max_ or just _max_. The tour is returned only if its age range exactly matches the input values.","schema":{"type":"string"}},{"name":"start_city","in":"query","description":"The ID for the start city of the tour.","schema":{"type":"string"}},{"name":"primary_country","in":"query","description":"The ID for the country in which at least 2/3rd of the tour destinations are located.","schema":{"type":"string"}},{"name":"price_per_day","in":"query","description":"Desired tour price per day range, expressed as _min-max_.","schema":{"type":"string"}},{"name":"city","in":"query","description":"The ID for any city included on the tour itinerary.","schema":{"type":"string"}},{"name":"Accept-Language","in":"header","schema":{"type":"string"}},{"name":"sort_order","in":"query","description":"Direction of the sorting (ascending or descending). Possible values: `asc`, `desc`.","schema":{"type":"string"}},{"name":"tour_type","in":"query","description":"The ID of the tour type you would like to use as a filter.","schema":{"type":"string"}},{"name":"limit","in":"query","description":"Number of items per page of results (default is 20).","schema":{"type":"string"}},{"name":"natural_destination","in":"query","description":"The ID for any natural destination included on the tour itinerary.","schema":{"type":"string"}},{"name":"continent","in":"query","description":"The ID for any continent included on the tour itinerary.","schema":{"type":"string"}},{"name":"sort_by","in":"query","description":"Field by which the results will be sorted. Possible values: `score`, `price`, `price_per_day`. Default is `score`, a measure of the tour popularity.","schema":{"type":"string"}},{"name":"age","in":"query","description":"Age range the tour is suitable for, expressed as _min-max_. Using this parameter, all tours that include the desired range will be returned. For example, if `age=18-35`, tours that accepts from 18 to 60 years old will be included in the search result. To only search for an exact age range, use the parameter `exact_age` instead.","schema":{"type":"string"}},{"name":"duration","in":"query","description":"Tour duration in numbers of days, expressed as _min-max_.","schema":{"type":"string"}},{"name":"group_size","in":"query","description":"Maximum desided group size.","schema":{"type":"string"}},{"name":"currency","in":"query","description":"The currency desired for the prices returned. Use 3 letter codes, like `AUD`, `EUR`, `USD`, etc. ","schema":{"type":"string"}},{"name":"user_country","in":"query","description":"The ID for the country of the passenger's residence.","schema":{"type":"string"}},{"name":"date_range","in":"query","description":"Range of the desired departure date, expressed as _min-max_.","schema":{"type":"string"}},{"name":"guide_language","in":"query","description":"The ID of the language the tour is operated in.","schema":{"type":"string"}},{"name":"end_city","in":"query","description":"The ID for the end city of the tour.","schema":{"type":"string"}},{"name":"price","in":"query","description":"Desired tour price range, expressed as _min-max_.","schema":{"type":"string"}},{"name":"country","in":"query","description":"The ID for any country included on the tour itinerary.","schema":{"type":"string"}},{"name":"operator","in":"query","description":"The ID of the tour operator that operates the tour.","schema":{"type":"string"}},{"name":"is_instant_confirmable","in":"query","description":"If true will only return tours that can be automatically confirmed, if false only tours that cannot be instantly booked.","schema":{"type":"string"}},{"name":"page","in":"query","description":"Number of page to return (default is 1).","schema":{"type":"string"}}],"responses":{"200":{"description":"200 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ToursListPagination"}}}},"401":{"description":"This status code indicates that the credentials used for the request are not valid.\n\nThe error code is `UNAUTHORIZED`. An additional message may provide more information about the error.\n\nCauses for this error may be:\n\n- invalid authorization token\n- operation not allowed by authorization scope\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DefaultError401"}}}},"500":{"description":"This status code indicates that there was an unmanaged error.\n\nThe error code is `UNKNOWN_ERROR`. An additional message may provide more information about the error.\n\nCauses for this error may be:\n\n- failure on the TourRadar system\n- unexpected conditions\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DefaultError500"}}}}},"security":[{"application":["com.tourradar.tours/read"]}]}},"/v1/tours/{tourId}":{"get":{"tags":["Tours"],"summary":"/v1/tours/{tourId}","description":"\nReturns detailed information about a single tour.\n\nThe call expects one parameter as part of the request path, the unique identifier of the tour in the TourRadar system.\n\nTo retrieve a list of tour identifiers, use the **[/tours/search](#tag/Tours/paths/~1v1~1tours~1search/get)** endpoint.\n\n#### Output definition\n\nIt should be noted that the following identifiers are present:\n\n| field | notes |\n| ----- | ----- |\n| `tour_id` | TourRadar identifier for the tour, always present and unique across all tours from all tour operators. |\n| `codes` | Identifiers provided by the tour operator for the tour. It can be null, and codes might not be unique. |\n","parameters":[{"name":"Accept-Language","in":"header","schema":{"type":"string"}},{"name":"currency","in":"query","schema":{"type":"string"}},{"name":"user_country","in":"query","schema":{"type":"string"}},{"name":"tourId","in":"path","description":"Tour's unique ID.","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"200 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Tour"}}}},"401":{"description":"This status code indicates that the credentials used for the request are not valid.\n\nThe error code is `UNAUTHORIZED`. An additional message may provide more information about the error.\n\nCauses for this error may be:\n\n- invalid authorization token\n- operation not allowed by authorization scope\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DefaultError401"}}}},"404":{"description":"Tour not found. Please check tour ID.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"The error code","enum":["TOUR_NOT_FOUND","UNKNOWN_ERROR"]},"message":{"type":"string","description":"The error message, if available"},"context":{"type":"object","description":"Additional data relative to the error condition"},"validation_errors":{"type":"array","description":"In case of validation error, all the elements that didn't pass validation","items":{"type":"string"}}}}}}},"500":{"description":"This status code indicates that there was an unmanaged error.\n\nThe error code is `UNKNOWN_ERROR`. An additional message may provide more information about the error.\n\nCauses for this error may be:\n\n- failure on the TourRadar system\n- unexpected conditions\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DefaultError500"}}}}},"security":[{"application":["com.tourradar.tours/read"]}]}},"/v1/tours/{tourId}/departures":{"get":{"tags":["Pricing & Availability"],"summary":"/v1/tours/{tourId}/departures","description":"Retrieves all available departure dates for the specified tour.\n\nEvery item will contain:\n\n* Departure date, in the format `YYYY-MM-DD`.\n* Departure type, as explained below.\n* Guide languages offered.\n* The price breakdown, using the *default* options for each departure date, comprised of:\n  * `price_base`: base price of the tour, also referenced as brochure price.\n  * `price_addons`: sum of the mandatory addons that the passenger will have to pay (both upfront and local payments).\n  * `price_promotion`: discounted price, it’s equal with price_base – promotion discount.\n  * `price_total_upfront`: total price without local payments, it’s equal with price_base – promotion discount + upfront payments.\n  * `price_total`: final sale price, it’s equal with price_base – promotion discount + local payments + upfront payments.\n  * `promotion`: details about the promotion applied, if available.\n  * `mandatory_addons`: list of the mandatory addons (upfront and local payments). \n  \n#### Departure types\n\nA departure date can have one of the following types:\n\n* `guaranteed`: the tour will depart regardless of how many people books.\n* `scheduled`: the tour will depart provided that a suitable minimum number of participants is reached. Confirmation will be given usually 4-6 weeks before the travel date.\n* `request`: if a tour is close to departure, or almost at capacity, the tour operator cannot immediately guarantee all the components of the tour are available to book (accommodation, activities, etc.).\n","parameters":[{"name":"Accept-Language","in":"header","schema":{"type":"string"}},{"name":"currency","in":"query","description":"The currency desired for the prices returned. Use 3 letter codes, like `AUD`, `EUR`, `USD`, etc.","schema":{"type":"string"}},{"name":"page","in":"query","description":"Number of page to return (default is 1).","schema":{"type":"string"}},{"name":"user_country","in":"query","description":"Country ID of the passenger's residence, if known. This will be used to apply location-specific promotions, e.g. particular discounts that are available only to some markets. To retrieve the country IDs, use the **[/taxonomy/destinations/country](#tag/Taxonomy/paths/~1v1~1taxonomy~1destinations~1{type}/get)** endpoint.","schema":{"type":"string"}},{"name":"tourId","in":"path","description":"The ID of the tour for which departure dates are to be returned.","required":true,"schema":{"type":"string"}},{"name":"date_range","in":"query","description":"If provided, returns only departure dates in the desired range. Format is `YYYYMMDD-YYYYMMDD`, where `YYYY` is the year, `MM` the month, `DD` the day. Example: `20211001-20211030` searches for departure dates in November 2021 (2021-11-01 to 2021-11-30).","schema":{"type":"string"}}],"responses":{"200":{"description":"200 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TourDeparturesPagination"}}}},"401":{"description":"This status code indicates that the credentials used for the request are not valid.\n\nThe error code is `UNAUTHORIZED`. An additional message may provide more information about the error.\n\nCauses for this error may be:\n\n- invalid authorization token\n- operation not allowed by authorization scope\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DefaultError401"}}}},"404":{"description":"Tour not found. Please check tour ID.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"The error code","enum":["TOUR_NOT_FOUND","UNKNOWN_ERROR"]},"message":{"type":"string","description":"The error message, if available"},"context":{"type":"object","description":"Additional data relative to the error condition"},"validation_errors":{"type":"array","description":"In case of validation error, all the elements that didn't pass validation","items":{"type":"string"}}}}}}},"500":{"description":"This status code indicates that there was an unmanaged error.\n\nThe error code is `UNKNOWN_ERROR`. An additional message may provide more information about the error.\n\nCauses for this error may be:\n\n- failure on the TourRadar system\n- unexpected conditions\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DefaultError500"}}}}},"security":[{"application":["com.tourradar.tours/read"]}]}},"/v1/tours/{tourId}/departures/{departureId}":{"get":{"tags":["Pricing & Availability"],"summary":"/v1/tours/{tourId}/departures/{departureId}","description":"Retrieve detailed information about a single departure date.\n\nIn addition to the information returned when listing departure dates, this endpoint will include:\n\n* accommodation options\n* mandatory addons\n* optional extras\n\nFor each element, all available price categories (adult, child, etc.) will be returned.\n\nTo get a list of available price categories, and their properties, use the **[/tours/{tourId}/prices](#tag/Pricing-and-Availability/paths/~1v1~1tours~1{tourId}~1prices/get)** endpoint.","parameters":[{"name":"Accept-Language","in":"header","schema":{"type":"string"}},{"name":"currency","in":"query","description":"The currency desired for the prices returned. Use 3 letter codes, like `AUD`, `EUR`, `USD`, etc.","schema":{"type":"string"}},{"name":"user_country","in":"query","description":"Country ID of the passenger's residence, if known. This will be used to apply location-specific promotions, e.g. particular discounts that are available only to some markets. To retrieve the country IDs, use the **[/taxonomy/destinations/country](#tag/Taxonomy/paths/~1v1~1taxonomy~1destinations~1{type}/get)** endpoint.","schema":{"type":"string"}},{"name":"tourId","in":"path","description":"The ID of the tour.","required":true,"schema":{"type":"string"}},{"name":"departureId","in":"path","description":"The ID of the departure date.","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"200 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TourDeparture"}}}},"401":{"description":"This status code indicates that the credentials used for the request are not valid.\n\nThe error code is `UNAUTHORIZED`. An additional message may provide more information about the error.\n\nCauses for this error may be:\n\n- invalid authorization token\n- operation not allowed by authorization scope\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DefaultError401"}}}},"404":{"description":"Departure not found. Please check tour ID and departure ID.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"The error code","enum":["TOUR_NOT_FOUND","TOUR_DEPARTURE_NOT_FOUND","UNKNOWN_ERROR"]},"message":{"type":"string","description":"The error message, if available"},"context":{"type":"object","description":"Additional data relative to the error condition"},"validation_errors":{"type":"array","description":"In case of validation error, all the elements that didn't pass validation","items":{"type":"string"}}}}}}},"500":{"description":"This status code indicates that there was an unmanaged error.\n\nThe error code is `UNKNOWN_ERROR`. An additional message may provide more information about the error.\n\nCauses for this error may be:\n\n- failure on the TourRadar system\n- unexpected conditions\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DefaultError500"}}}}},"security":[{"application":["com.tourradar.tours/read"]}]}},"/v1/tours/{tourId}/departures/{departureId}/price":{"post":{"tags":["Pricing & Availability"],"summary":"/v1/tours/{tourId}/departures/{departureId}/price","description":"Calculates the price for a booking, given departure date, number and type of passengers, and selected options.\n\nThe payload must be sent as a JSON in the request body.\nThe required entries are:\n\n* `currency`: the currency that will be used for payments.\n* `passengers`: the list of passengers in the booking.\n\nFurthermore, it's possible to add the following sections, if needed:\n\n* `accommodations`: defines the desired accommodation types (if the tour offers them), and which passengers will use them.\n* `optional_extras`: optional extra items that can be booked together with the tour.\n\nThis is an example of how the payload for a price calculation request looks like:\n\n```json\n{\n  \"currency\": \"EUR\",\n  \"passengers\": [\n    {\n      \"pax_number\": 1,\n      \"price_category_id\": 1\n    },\n    {\n      \"pax_number\": 2,\n      \"price_category_id\": 2\n    }\n  ],\n  \"accommodations\": [\n    {\n      \"id\": 345,\n      \"passengers\": [1, 2]\n    }\n  ],\n  \"optional_extras\": [\n    {\n      \"id\": 456,\n      \"passengers\": [2]\n    }\n  ],\n}\n```\n\n#### Passengers definition\n\nFor each entry in the `passengers` array, these are the required fields:\n\n* `pax_number`: this is the index of the passenger, starting with 1. The passenger number will be used in the accommodation and extras sections of the request, to assign specific passengers to elements of the booking.\n* `price_category_id`: this defines the category of the passenger. To retrieve price categories, use the **[/tours/{tourId}/prices](#tag/Pricing-and-Availability/paths/~1v1~1tours~1{tourId}~1prices/get)** endpoint.\n\n#### Accommodation\n\nIn the `accommodations` section, it's possible to specify the identifier of an accommodation option, and which passenger numbers should make use of it.\n\nTo retrieve a list of accommodation options available for the desired departure, use the **[/tours/{tourId}/departures/{departureId}](#tag/Pricing-and-Availability/paths/~1v1~1tours~1{tourId}~1departures~1{departureId}/get)** endpoint.\n\n#### Optional extras\n\nThe `optional_extras` section works exactly like the `accommodations` section.\n\nTo retrieve a list of the optional extra items available for the desired departure, use the **[/tours/{tourId}/departures/{departureId}](#tag/Pricing-and-Availability/paths/~1v1~1tours~1{tourId}~1departures~1{departureId}/get)** endpoint.\n\n#### Response\n\nThe response will contain a price breakdown:\n\n  * `price_base`: base price of the tour, also referenced as brochure price.\n  * `price_addons`: sum of the mandatory addons that the passenger will have to pay (both upfront and local payments).\n  * `price_promotion`: discounted price, it’s equal with price_base – promotion discount.\n  * `price_total_upfront`: total price without local payments, it’s equal with price_base – promotion discount + upfront payments. This is the actual price that the customer needs to pay when making a booking.\n  * `price_total`: final sale price, it’s equal with price_base – promotion discount + local payments + upfront payments. This contains the price that customer needs to pay and the local payments that will be paid in cash on the tour.\n  * `promotion`: details about the promotion applied, if available.\n  * `mandatory_addons`: list of the mandatory addons (upfront and local payments). \n\nLocal payments are shared with the customer before making the booking but they are paid only when they reach the destination, in cash.\nUpfront payments are mandatory payments made at the time of the booking.","parameters":[{"name":"Accept-Language","in":"header","schema":{"type":"string"}},{"name":"currency","in":"query","description":"The currency desired for the prices returned. Use 3 letter codes, like `AUD`, `EUR`, `USD`, etc.","schema":{"type":"string"}},{"name":"user_country","in":"query","description":"Country ID of the passenger's residence, if known. This will be used to apply location-specific promotions, e.g. particular discounts that are available only to some markets. To retrieve the country IDs, use the **[/taxonomy/destinations/country](#tag/Taxonomy/paths/~1v1~1taxonomy~1destinations~1{type}/get)** endpoint.","schema":{"type":"string"}},{"name":"tourId","in":"path","description":"The ID of the tour.","required":true,"schema":{"type":"string"}},{"name":"departureId","in":"path","description":"The ID of the departure date.","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TourDeparturePriceInput"}}},"required":true},"responses":{"200":{"description":"200 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TourDeparturePrice"}}}},"401":{"description":"This status code indicates that the credentials used for the request are not valid.\n\nThe error code is `UNAUTHORIZED`. An additional message may provide more information about the error.\n\nCauses for this error may be:\n\n- invalid authorization token\n- operation not allowed by authorization scope\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DefaultError401"}}}},"404":{"description":"Departure not found. Please check tour ID and departure ID.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"The error code","enum":["TOUR_NOT_FOUND","TOUR_DEPARTURE_NOT_FOUND","UNKNOWN_ERROR"]},"message":{"type":"string","description":"The error message, if available"},"context":{"type":"object","description":"Additional data relative to the error condition"},"validation_errors":{"type":"array","description":"In case of validation error, all the elements that didn't pass validation","items":{"type":"string"}}}}}}},"500":{"description":"This status code indicates that there was an unmanaged error.\n\nThe error code is `UNKNOWN_ERROR`. An additional message may provide more information about the error.\n\nCauses for this error may be:\n\n- failure on the TourRadar system\n- unexpected conditions\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DefaultError500"}}}}},"security":[{"application":["com.tourradar.tours/read"]}]}},"/v1/tours/{tourId}/prices":{"get":{"tags":["Pricing & Availability"],"summary":"/v1/tours/{tourId}/prices","description":"Retrieves all price categories available for a tour.\n\nPrice categories correspond to passenger types. \nThose are configured by the operator for each tour, and may vary for different tours.\nThe main categories recognised by the TourRadar system are:\n\n* `adult`\n* `child`\n* `infant` (usually don't count towards max occupancy)\n* `senior`\n* `student`\n* `military`\n* `other`\n\nThe age limits, if any, are returned by this endpoint for all configured price categories.\n","parameters":[{"name":"tourId","in":"path","description":"The ID of the tour for which price categories are to be returned.","required":true,"schema":{"type":"string"}},{"name":"Accept-Language","in":"header","schema":{"type":"string"}}],"responses":{"200":{"description":"200 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TourPriceCategories"}}}},"401":{"description":"This status code indicates that the credentials used for the request are not valid.\n\nThe error code is `UNAUTHORIZED`. An additional message may provide more information about the error.\n\nCauses for this error may be:\n\n- invalid authorization token\n- operation not allowed by authorization scope\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DefaultError401"}}}},"404":{"description":"Tour not found. Please check tour ID.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"The error code","enum":["TOUR_NOT_FOUND","UNKNOWN_ERROR"]},"message":{"type":"string","description":"The error message, if available"},"context":{"type":"object","description":"Additional data relative to the error condition"},"validation_errors":{"type":"array","description":"In case of validation error, all the elements that didn't pass validation","items":{"type":"string"}}}}}}},"500":{"description":"This status code indicates that there was an unmanaged error.\n\nThe error code is `UNKNOWN_ERROR`. An additional message may provide more information about the error.\n\nCauses for this error may be:\n\n- failure on the TourRadar system\n- unexpected conditions\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DefaultError500"}}}}},"security":[{"application":["com.tourradar.tours/read"]}]}}},"components":{"schemas":{"PartnerAdminMergePartnerOutput":{"type":"object","required":["message"],"properties":{"message":{"type":"string","description":"Amount of moved users","example":"10 users were moved to partner tourradar"}}},"PartnersDomainInput":{"type":"object","required":["type","subdomain","host"],"properties":{"type":{"type":"string","description":"The type of the partner domain","enum":["whitelabel","agent-portal","shop"],"example":"whitelabel"},"subdomain":{"type":"string","enum":["whitelabel","travel","trips","explore","agents","secure"],"description":"The subdomain part of the domain partner","example":"travel"},"host":{"type":"string","description":"The host part of the domain partner, ideally same as the partner ID, but can be different. [a-z0-9-]","example":"llama-travel"}}},"OperatorCredentialsSchema":{"type":"object","description":"Schema of credentials response.","properties":{"$schema":{"type":"string","example":"http://json-schema.org/draft-04/schema#"},"title":{"type":"string","description":"Name of operator","example":"Travcorp credentials"},"type":{"type":"string","example":"array"},"items":{"type":"object","properties":{"properties":{"type":"object","properties":{"currency":{"type":"string","example":"eur"}},"additionalProperties":{"type":"object","properties":{"type":{"type":"string","example":"string"}}}},"required":{"type":"array","description":"List of required fields","items":{"type":"string","example":"currency"}},"type":{"type":"string","example":"object"}}}}},"ToursPromotion":{"type":["object","null"],"description":"Details about the promotion applied, if available.","properties":{"id":{"type":"integer","description":"Unique identifier of the promotion in the TourRadar system.","example":9990067},"discount":{"type":"number","description":"Amount of the promotion (to subtract from the base price).","example":845},"name":{"type":"string","description":"Promotion name.","example":"Special deal"},"type":{"type":"string","description":"Type of the promotion (percentage discount, or 2-for-1 offer).","example":"discount"},"percentage":{"type":["number","null"],"description":"Amount of the promotion, when promotion is based on percentage discount.","example":30},"pax_restriction":{"type":["number","null"],"description":"Maximum pax number to apply this promotion. If null - no limit.","example":30},"value_type":{"type":"string","enum":["percent","absolute"],"description":"Type of the value, can be absolute or percent.","example":"percent"},"valid_to":{"type":["string","null"],"description":"Validity definition.","example":"2024-10-16"}}},"PartnerPaymentsMethods":{"type":"array","items":{"$ref":"#/components/schemas/PartnerPaymentsMethodsMethod"}},"OperatorCredentials":{"type":"object","description":"Store list credentials","properties":{"store_id":{"type":"string","description":"Store ID in your system. If not needed, use `default`.","example":"default"},"operator_store_id":{"type":"string","description":"Store ID in the operator's system.","example":"3125"},"last_checked_at":{"type":"string","description":"Validation date of the credential item in the ATOM format","example":"2021-06-25T15:08:40+02:00"},"credentials":{"type":"array","description":"List of credentials items","items":{"type":"object","properties":{"currency":{"type":"string","description":"For which currency is the credential item. If any value is empty, fallbacks to `default` credential item's value.","example":"default"},"status":{"type":"string","description":"For which currency is the credential item. If any value is empty, fallbacks to `default` credential item's value.","enum":["pending","valid","invalid"],"example":"pending"}}}}}},"PartnerInfo":{"type":"object","required":["partner","user"],"properties":{"partner":{"$ref":"#/components/schemas/Partner"},"user":{"$ref":"#/components/schemas/PartnerUser"},"scopes":{"type":"string","description":"List of allowed user scopes separated by space","example":"com.tourradar.tours/read com.tourradar.bookings/read email openid profile"}}},"TaxonomyLinks":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","description":"Type of link","example":"serp","enum":["serp"]},"url":{"type":"string","description":"URL to www.tourradar.com website","example":"https://www.tourradar.com/d/europe?utm_source=partner-12345&utm_medium=api&utm_campaign=destinations"}}}},"PartnerPaymentsMethodsMethod":{"type":"object","properties":{"address":{"type":"string","description":"Method owner address + street number","example":"USD"},"city":{"type":"string","description":"Method owner city name","example":"Vienna"},"country":{"type":"string","description":"Method owner country name","example":"AT"},"currency":{"type":"string","description":"Method currency","example":"EUR"},"customer_id":{"type":"string","description":"Payments API customer id","example":"167435518"},"default":{"type":"boolean","description":"True if method is selected as default","example":true},"email":{"type":"string","description":"Method owner email","example":"contact@tourradar.com"},"expired":{"type":"boolean","description":"True if method is expired/no active","example":true},"first_name":{"type":"string","description":"Method owner fist name","example":"Joe"},"last_name":{"type":"string","description":"Method owner last name","example":"Doe"},"id":{"type":"string","description":"Unique ID of payment","example":"cc255bd0-04a3-41e4-9130-af4202c29ab8"},"phone_number":{"type":"string","description":"Method owner phone number","example":"+43555666777"},"provider":{"type":"string","description":"Payment provider. Always Braintree","example":"Braintree"},"zip_code":{"type":"string","description":"Method owner city zip code","example":"1010"},"method":{"type":"object","properties":{"bin":{"type":"string","description":"First 7 symbols of credit card","example":"411111"},"card_type":{"type":"string","description":"Card type","example":"Visa"},"customer_token":{"type":"string","description":"Payments API customer token","example":"167435518"},"expiration":{"type":"string","description":"Expiration of credit card","example":"02/2025"},"holder_name":{"type":"string","description":"Credit card holder name","example":"Joe Doe"},"last4":{"type":"string","description":"Last 4 symbols of credit card","example":"1111"},"masked_number":{"type":"string","description":"Credit card masked number","example":"411111******1111"},"token":{"type":"string","description":"Payments API token","example":"mtgz321"},"type":{"type":"string","description":"Method type","example":"card"}}}}},"TourDeparturePriceTiers":{"type":"array","items":{"type":"object","properties":{"price_category_id":{"type":"number","description":"Price category id.","example":1634},"pax_min":{"type":["number","null"],"description":"Minimum number of passengers needed to have access to this tier.","example":1},"pax_max":{"type":["number","null"],"description":"Maximum number of passengers that allows access to this tier.","example":1},"value":{"type":"number","description":"Value of the tier.","example":189},"value_promotion":{"type":["number","null"],"description":"Value of the tier.","example":189}}}},"TourDeparturePriceInput":{"type":"object","properties":{"user_country":{"type":"integer","description":"User country ID. List of available countries you can find in `/v1/taxonomy/destinations/country` endpoint.","example":139},"currency":{"description":"Currency code.","enum":["USD","AUD","GBP","NZD","EUR","CAD"],"example":"EUR"},"passengers":{"type":"array","description":"List of the passengers. Each row represents one passenger.","items":{"type":"object","properties":{"pax_number":{"type":"integer","description":"Pax number, starting from 1. If you are calculating price for 5 people, the values should be from 1 to 5."},"price_category_id":{"type":"integer","description":"Price category ID from `/v1/tours/{tourId}/prices` endpoint."}}},"example":[{"pax_number":1,"price_category_id":1634},{"pax_number":2,"price_category_id":1634},{"pax_number":3,"price_category_id":1634},{"pax_number":4,"price_category_id":1634}]},"accommodations":{"type":"array","description":"Mapping of passengers to accommodations.","items":{"type":"object","properties":{"id":{"type":"integer","description":"ID of selected accommodation taken from `/v1/tours/{tourId}/departures/{departureId}` endpoint."},"passengers":{"type":"array","description":"List of pax_number what should be suite to selected accommodation.","items":{"type":"integer"}}}},"example":[{"id":396410,"passengers":[1,2]},{"id":856733,"passengers":[3,4]}]},"optional_extras":{"type":"array","description":"Mapping of passengers to optional extras.","items":{"type":"object","properties":{"id":{"type":"integer","description":"ID of selected extra option taken from `/v1/tours/{tourId}/departures/{departureId}` endpoint."},"passengers":{"type":"array","description":"List of pax_number what should be suite to selected accommodation.","items":{"type":"integer"}}}},"example":[{"id":794595,"passengers":[1,2]}]}}},"PartnerUser":{"type":"object","required":["email","scopes","first_name","last_name"],"properties":{"username":{"type":"string","description":"Unique ID of user","example":"1a0b97be-df52-4ed4-bbaa-368026392b87"},"partner_id":{"type":"string","description":"Unique ID of partner","example":"1a0b91be-df52-4ed4-bbaa-3680f6392b87"},"email":{"type":"string","description":"Email of user","example":"joe.doe@tourradar.com"},"first_name":{"type":"string","description":"First name","example":"Joe"},"last_name":{"type":"string","description":"Last name","example":"Doe"},"scopes":{"type":"array","description":"When user.role === custom, list of user allowed scopes","items":{"type":"string","description":"Scope name","example":"com.tourradar.tours/read"}},"notes":{"type":"string","description":"Notes about user","example":"Some note"},"status":{"enum":["invited","active","inactive"],"description":"User status. Invited - waiting for first login, active - user already signed in. Inactive - disabled by administrator","example":"active"},"attributes":{"type":"array","description":"List of user attributes","items":{"type":"object","description":"Attribute representation","properties":{"name":{"type":"string","description":"Attribute name","example":"source"},"value":{"type":["string","number","boolean"],"description":"Attribute value","example":true}}}}}},"BookingSearchPagination":{"required":["current_page","items"],"type":"object","properties":{"current_page":{"type":"integer","description":"Current page number"},"items":{"type":"array","items":{"$ref":"#/components/schemas/BookingSearch"}},"next_page":{"type":"integer","description":"If this attribute exists, then another page is available. To get more results, repeat the request with the number specified in the `page` parameter. If this attribute is not part of the response, then the last page has been reached."}}},"PartnerAdminMergePartnerInput":{"type":"object","required":["source_id","destination_id"],"properties":{"source_id":{"type":"string","description":"Source Partner ID","example":"tourradar1"},"destination_id":{"type":"string","description":"Destination Partner ID","example":"tourradar"}}},"PartnerRolesList":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Name of the role","example":"admin"},"label":{"type":"string","description":"Label of the role","example":"Admin"}}}},"TourDepartures":{"type":"object","properties":{"id":{"type":"integer","description":"Identifier of the departure date (must be used for price calculation and booking creation).","example":740389663},"date":{"type":"string","description":"Date of the departure, in the format `YYYY-MM-DD`.","example":"2024-03-24"},"availability":{"type":"integer","description":"Number of available seats for the specific departure.","example":5},"departure_type":{"type":"string","description":"Type of departure.","enum":["guaranteed","scheduled","request"],"example":"guaranteed"},"is_instant_confirmable":{"type":"boolean","description":"If true, bookings related to this departure can be instantly confirmed by the operator.","example":true},"guide_languages":{"type":"array","description":"List of languages this tour is offered in (for their meaning, see **[/taxonomy/languages](#tag/Taxonomy/paths/~1v1~1taxonomy~1languages/get)**).","items":{"type":"integer","example":1}},"links":{"$ref":"#/components/schemas/ToursLinks"},"prices":{"type":"object","description":"Pricing information.","properties":{"currency":{"type":"string","description":"Currency code for the reported prices.","example":"USD"},"price_base":{"type":"number","description":"Base price of the tour, also referenced as brochure price.","example":2990},"price_addons":{"type":"number","description":"Sum of the mandatory addons that the passenger will have to pay (both upfront and local payments).","example":180},"price_promotion":{"type":"number","description":"Discounted price, or base price minus the promotion.","example":2145},"price_total":{"type":"number","description":"Final sale price, composed by the base price, minus the applied promotion, plus the mandatory local and upfront addons.","example":2325},"price_total_upfront":{"type":"number","description":"Final sale price, composed by the base price, minus the applied promotion, plus the upfront addons.","example":2145},"promotion":{"$ref":"#/components/schemas/ToursPromotion"},"based_on":{"type":["string","null"],"description":"If available, the type of accommodation that the base price refers to.","example":"Base price"},"mandatory_addons":{"type":"array","description":"List of the mandatory addons (extra price elements).","items":{"type":"object","properties":{"value":{"type":"number","description":"Price for this addon. Note that, in case of local payments, this is `local_value` converted in the currency of the booking.","example":180},"name":{"type":"string","description":"Name of the addon.","example":"Domestic flights"},"description":{"type":"string","description":"Description of the addon.","example":"Amsterdam - Paris flight fare approx USD 180 per person in economy class."},"payment_type":{"type":"string","enum":["upfront","local"],"description":"The payment type (upfront or local).","example":"local"},"local_currency":{"type":["string","null"],"description":"For local payments, the currency this payment must be executed in.","example":"USD"},"local_value":{"type":["number","null"],"description":"The price of the addon in the local currency.","example":180}}}}}}}},"BookingSummary":{"type":"object","properties":{"commission":{"type":"array","items":{"type":"object","properties":{"contract_type":{"type":"string","description":"Contract type that was applied for this booking.","enum":["wholesale","organiser","affiliate","direct"]},"currency":{"type":"string","description":"Currency","enum":["USD","EUR","AUD","GBP","CAD","NZD"],"example":"EUR"},"bookings":{"type":["integer"],"description":"Number of bookings","example":1},"pending":{"type":"number","description":"Total amount of commission pending","example":52.12},"earned":{"type":"number","description":"Total amount of commission earned","example":53.16},"cancelled":{"type":"number","description":"Total amount of commission cancelled","example":123.16},"paid_out":{"type":"number","description":"Total amount of commission paid out","example":1052.12}}}}}},"ScopeList":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"The name of the scope","example":"com.tourradar.credentials/read"},"description":{"type":"string","description":"Client ID","example":"A description of the scope"},"server":{"type":"string","description":"The name of the resource server","example":"com.tourradar.credentials"}}}},"ToursDeparturePromotion":{"type":["object","null"],"description":"Details about the promotion applied, if available.","properties":{"id":{"type":"integer","description":"Unique identifier of the promotion in the TourRadar system.","example":9990067},"discount":{"type":"number","description":"Amount of the promotion (to subtract from the base price).","example":845},"name":{"type":"string","description":"Promotion name.","example":"Special deal"},"type":{"type":"string","description":"Type of the promotion (percentage discount, or 2-for-1 offer).","example":"discount"},"percentage":{"type":["number","null"],"description":"Amount of the promotion, when promotion is based on percentage discount.","example":30},"pax_restriction":{"type":["number","null"],"description":"Maximum pax number to apply this promotion. If null - no limit.","example":30},"value_type":{"type":"string","enum":["percent","absolute"],"description":"Type of the value, can be absolute or percent.","example":"percent"},"valid_to":{"type":["string","null"],"description":"Validity definition.","example":"2024-10-16"}}},"PartnerList":{"type":"array","items":{"$ref":"#/components/schemas/Partner"}},"AdminPartnersDomainInput":{"type":"object","required":["domain","partner_id","type"],"properties":{"partner_id":{"type":"string","description":"The id of the partner","example":"llama-travel"},"type":{"type":"string","description":"The type of the partner domain","enum":["whitelabel","agent-portal","shop"],"example":"whitelabel"}}},"PartnersAppsClientList":{"type":"array","items":{"type":"object","properties":{"partner_id":{"type":"string","description":"Partner ID","example":"1a0b91be-df52-4ed4-bbaa-3680f6392b87"},"client_id":{"type":"string","description":"Client ID","example":"1fqplo8mtmpd5sqsis9nmo5umb"},"name":{"type":"string","description":"Name of Application","example":"My Application"}}}},"PartnerRegisterInvitePartnerInfo":{"type":"object","required":["invite_token"],"properties":{"token":{"type":"string","description":"Token for partner users invite","example":"GYW9qfFPQGNy9JtF!+ssa="}}},"OptionalExtraItem":{"type":["object","null"],"description":"An item of the pricing data.","properties":{"id":{"type":"integer","description":"Unique identifier of the price item in the TourRadar system.","example":547121},"value":{"type":"number","description":"Value of the price item.","example":180},"code":{"type":["string","null"],"description":"Code of the item.","example":"376058"},"name":{"type":"string","description":"Name of the item.","example":"Day 2 Helicopter Ride"},"description":{"type":"string","description":"Description of the item.","example":"Day 2 Helicopter Ride"},"payment_type":{"type":["string","null"],"description":"Payment type.","enum":["upfront","local"],"example":"upfront"},"pax_restriction":{"type":["number","null"],"description":"Maximum pax number to apply this promotion. If null - no limit.","example":30},"price_tiers":{"$ref":"#/components/schemas/TourDeparturePriceTiers"},"allocation":{"type":"string","enum":["per_passenger","per_booking"],"description":"The allocation of this addon. If 'per_booking', the optional extra must be assigned to all the passengers","example":"per_passenger"}}},"PartnersAppsClient":{"type":"object","required":["name","description","scopes"],"properties":{"client_id":{"type":"string","description":"Client ID","example":"1fqplo8mtmpd5sqsis9nmo5umb"},"client_secret":{"type":"string","description":"Client secret id","example":"1c8v1h4oek8nle3nbhm6nfckt779tpcg2ek5opnbsmeie2392ko7"},"name":{"type":"string","description":"Name of Application","example":"My Application"},"description":{"type":"string","description":"Description of application","example":"Some description"},"scopes":{"type":"array","description":"List of application scopes","items":{"type":"string","description":"Scope name","example":"com.tourradar.tours/read"}}}},"PartnerRegisterUsersInvite":{"type":"object","required":["user","resend_token"],"properties":{"user":{"$ref":"#/components/schemas/PartnerUser"},"resend_token":{"type":"string","description":"Token to be able call resend email endpoint","example":"GYW9qfFPQGNy9JtF!+ssa="}}},"PartnersAdminEnquiriesEnquiryId":{"type":"object","description":"Updates enquiry's partner_id","required":["partner_id"],"items":{"type":"object","properties":{"partner_id":{"type":"string"}}}},"PartnersDomain":{"type":"object","required":["domain","type","status"],"properties":{"domain":{"type":"string","description":"The domain url","example":"llama-travel.whitelabel.tourradar.com"},"type":{"type":"string","description":"The type of the domain","enum":["whitelabel","agent-portal","shop"],"example":"whitelabel"},"status":{"type":"string","description":"The current status of the domain","enum":["pending-activation","activation-in-progress","active","deprecated"],"example":"pending-activation"}}},"AdminPartnersDomain":{"type":"object","required":["domain","type","status"],"properties":{"domain":{"type":"string","description":"The domain url","example":"llama-travel.whitelabel.tourradar.com"},"type":{"type":"string","description":"The type of the domain","enum":["whitelabel","agent-portal","shop"],"example":"whitelabel"},"status":{"type":"string","description":"The current status of the domain","enum":["pending-activation","activation-in-progress","active","deprecated"],"example":"pending-activation"}}},"BookingTransfer":{"type":"object","properties":{"partner_id":{"type":"string","description":"Unique identifier of the partner in the TourRadar system."},"contract_type":{"type":"string","description":"Contract type that was applied for this booking.","enum":["marketplace","wholesale","organiser","affiliate","direct","shop"]},"agent_email":{"type":"string","description":"Email of the agent that exists in the TourRadar system to transfer the booking."}}},"PartnerCustomFields":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Name of field. Should be unique. Allows only a-z, 0-9, and _-. Max length 64 characters.","example":"my-custom-field"},"label":{"type":"string","description":"Label for custom field. Max length 64 characters.","example":"My Custom Field."},"position":{"type":"number","description":"Order of the field. Starting from 0. Max 100","example":0},"type":{"type":"string","description":"Type of field. Can be one of: text, textarea","enum":["text","textarea"],"example":"text"},"required":{"type":"boolean","description":"If set to true, field will be required","example":false},"properties":{"type":"object","description":"Additional properties for the field depends on the field type"}}}},"Booking":{"type":"object","properties":{"id":{"type":"integer","description":"Unique identifier of the booking in the TourRadar system.","example":892000},"tour_id":{"type":"integer","description":"Deprecated. Moved to `$.tour.tour_id`.","example":14263},"tour":{"type":"object","description":"Information about the tour that was booked.","properties":{"tour_id":{"type":"integer","description":"Unique identifier for the tour in the TourRadar system.","example":14263},"tour_name":{"type":"string","description":"Name of the tour.","example":"Europe Escape - 12 Days"},"tour_length_days":{"type":"integer","description":"Length of the tour, expressed in number of days.","example":12},"operator":{"type":"object","properties":{"id":{"type":"integer","description":"Unique identifier for the tour operator in the TourRadar system.","example":1170},"name":{"type":"string","description":"Name of the tour operator.","example":"Expat Explore Travel"}}}}},"departure_date":{"type":"string","description":"Departure date that was booked, in the format `YYYY-MM-DD`.","example":"2024-01-02"},"return_date":{"type":"string","description":"Return date from the tour, in the format `YYYY-MM-DD`.","example":"2024-01-14"},"email":{"type":"string","description":"Email used for communications regarding the booking (agent or lead passenger).","example":"test@gmail.com"},"created_at":{"type":"string","description":"Exact timestamp of when the booking was created, in the ISO 8601 format.","example":"2023-05-01"},"type":{"type":"string","description":"Type of this booking record.","enum":["booking","question","hold"],"example":"booking"},"hold_expire_at":{"type":["string","null"],"description":"If the booking record is a `hold`, this will be the exact timestamp of when the hold expires, in the ISO 8601 format.","example":"null"},"status":{"type":"string","description":"Status of the booking.","enum":["open_question","open_hold","pending","confirmed","declined","cancelled","hold_expired","hold_declined"],"example":"confirmed"},"currency":{"type":"string","description":"Currency used for payments.","example":"USD"},"total_value":{"type":"number","description":"Total amount of the booking.","example":2564},"main_passenger":{"type":"object","properties":{"name":{"type":"string","description":"Name of the main passenger.","example":"Jane Doe"}}},"passengers":{"type":"array","description":"List of passengers.","items":{"type":"object","properties":{"id":{"type":"integer","description":"Unique identifier of the passenger.","example":1568},"price_category":{"type":"object","description":"Defines the price category applied for this passenger.","properties":{"id":{"type":"integer","description":"Identifier of the passenger category.","example":1633},"title":{"type":"string","description":"Name of the passenger category (for example: adult, child).","example":"adult"},"age_min":{"type":["number","null"],"description":"Minimum age requirement for this category, if applicable.","example":18},"age_max":{"type":["number","null"],"description":"Maximum age requirement for this category, if applicable.","example":39}}},"fields":{"type":"object","description":"Passenger data. A list of all possible field names and properties can be obtained using the **[/operators/{operatorId}/booking-fields](#tag/Operators/paths/~1v1~1operators~1{operator}~1booking-fields/get)** endpoint."}}}},"confirmed_at":{"type":["string","null"],"description":"Exact timestamp of when the booking was confirmed, in the ISO 8601 format. If the status of the booking is not `confirmed`, this field will be `null`.","example":"2023-05-01"},"locale_code":{"type":"string","description":"Identifier of the guide language for this booking.","example":"en_US"},"last_message":{"type":["object","null"],"description":"Information relative to the last message in this booking's conversation channel. Messages are not available for direct bookings.","properties":{"author":{"type":"string","description":"Author type of the message. `system` is for automatically generated notification messages, the other types reflect the role of the user who posted the message.","enum":["operator","agent","traveller","system"],"example":"operator"},"created_at":{"type":"string","description":"Exact timestamp of when the message was sent, in the ISO 8601 format.","example":"2022-01-08T12:05:20.000Z"}}},"partner_info":{"type":"object","description":"Information relative to the partner that made the booking.","properties":{"id":{"type":"string","description":"Unique identifier of the partner in the TourRadar system.","example":"87894"},"agent_id":{"type":["string","null"],"description":"Identifier of the agent (user) that made the booking. Note: this is only relevant for bookings made on the TourRadar website.","example":"569"},"store_id":{"type":["string","null"],"description":"Identifier of the store, or agency, that made the booking. Note: this is only relevant for bookings made via the TourRadar Partner API.","example":"878"},"contract_type":{"type":"string","description":"Contract type that was applied for this booking.","enum":["wholesale","organiser","affiliate","direct","shop"],"example":"wholesale"},"calculation_base":{"type":"string","enum":["accommodation","all_extras"],"description":"Definition of the amount used as reference for the commission calculation.","example":"accommodation"},"commission_rate":{"type":"number","description":"The commission rate, expressed as multiplier. For example, a commission of 5% would be represented by `0.05`. If no commission will be paid for booking this tour, this will be `0`.","example":0},"commission_value":{"type":"number","description":"The actual commission value, calculated on the price reported in this section.","example":0},"commission_status":{"type":["string","null"],"description":"Commission withdrawal status.","enum":["paid_out","earned","cancelled","pending"],"example":"paid_out"},"booking_fee_rate":{"type":"number","description":"The booking fee rate, if any, expressed as multiplier. For example, a booking fee of 5% would be represented by `0.05`. If no booking fee will be due for booking this tour, this will be `0`.","example":0},"booking_fee_value":{"type":"number","description":"The actual booking fee value, calculated on the price reported in this section.","example":0},"booking_fee_status":{"type":["string","null"],"description":"Booking fee payment status.","enum":["paid","requested","cancelled","pending"],"example":"paid"}}},"operator_booking_code":{"type":["string","null"],"description":"Booking code or reference number in the operator system.","example":"19584564"},"partner_booking_code":{"type":["string","null"],"description":"Booking code or reference number set by the partner when creating the booking.","example":"654654"},"custom_data":{"type":"object","description":"Additional info set by the partner when creating the booking. Up to 5 string properties can be set in it."},"links":{"$ref":"#/components/schemas/BookingLinks"},"status_reason":{"$ref":"#/components/schemas/BookingDeclineReason"},"status_reason_text":{"type":["string","null"],"description":"The full description of the declination reason, if set.","example":"Received error response from operator: Failed service status transition."},"status_reason_context":{"type":["object","null"],"description":"Additional information related to the current status, if set."},"accommodations":{"description":"The accommodations related to the booking.","type":"array","items":{"$ref":"#/components/schemas/BookingExtra"}},"optional_extras":{"description":"The optional extras related to the booking.","type":"array","items":{"$ref":"#/components/schemas/BookingExtra"}},"mandatory_addons":{"description":"The mandatory addons related to the booking.","type":"array","items":{"$ref":"#/components/schemas/BookingExtra"}},"other_items":{"description":"Related items with miscellaneous categories.","type":"array","items":{"$ref":"#/components/schemas/BookingExtra"}},"promotions":{"description":"Promotions applied to the booking.","type":"array","items":{"$ref":"#/components/schemas/BookingExtra"}}}},"TourDeparturesPagination":{"required":["current_page","items"],"type":"object","properties":{"current_page":{"type":"integer","description":"Current page number"},"items":{"type":"array","items":{"$ref":"#/components/schemas/TourDepartures"}},"next_page":{"type":"integer","description":"If this attribute exists, then another page is available. To get more results, repeat the request with the number specified in the `page` parameter. If this attribute is not part of the response, then the last page has been reached."}}},"ToursLinks":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","description":"Type of link","example":"tour-page","enum":["tour-page","book-now"]},"url":{"type":"string","description":"URL to www.tourradar.com website","example":"https://www.tourradar.com/t/1234?utm_source=partner-12345&utm_medium=api&partner=12345&utm_campaign=tour"}}}},"PartnerPaymentsMethodsInfo":{"type":"object","required":["currency","methods","token"],"properties":{"currency":{"type":"string","description":"Currency what user will be charged","example":"USD"},"methods":{"type":"array","items":{"type":"object","properties":{"id":{"type":"number","description":"Payment method local id","example":"1"},"group":{"type":"string","description":"Payment group","example":"cards"},"label":{"type":"string","description":"Name of payment method","example":"American Express"},"order":{"type":"number","description":"Display order of payment","example":"3"},"fields":{"type":"array","description":"3D Secure additional input fields","items":{"type":"object","properties":{"id":{"type":"string","description":"ID of custom field","example":"givenName"},"label":{"type":"string","description":"Label of custom field","example":"First Name"},"required":{"type":"boolean","description":"Is this field required?","example":true},"type":{"type":"string","description":"Type of field","example":"custom"}}}}}}},"token":{"type":"string","description":"Braintree authorization token","example":"eyJ2ZXJzaW9uIjoyLCJhdXRob3JpemFVNkMiIsImN1cnJlbmN5SXNvQ29kZSI6IlVTRCJ9fQ"}}},"PartnersPartnerCustomizationsBranding":{"type":"object","description":"Partner branding customizations","properties":{"header_logo":{"type":"object","description":"The logo to be displayed in the header.","properties":{"url":{"type":"string","description":"The URL of the image to be displayed.","example":"http://www.example.com/image.png"},"width":{"type":"number","description":"The width of the image in pixels.","example":256},"height":{"type":"number","description":"The height of the image in pixels.","example":144}}}}},"TaxonomyDestination":{"type":"object","properties":{"id":{"type":"integer","description":"Unique identifier of the destination","example":11},"name":{"type":"string","description":"Destination name","example":"Austria"},"latitude":{"type":"number","description":"Latitude of the destination","example":47.333332},"longitude":{"type":"number","description":"Longitude of the destination","example":13.333333},"geoname_id":{"type":"integer","description":"Geoname ID (from http://www.geonames.org/)","example":2782113},"country_code":{"type":"string","description":"Country code","example":"AT"},"currency_code":{"type":"string","description":"Local currency code","example":"EUR"},"currency_name":{"type":"string","description":"Local currency name","example":"Euro"},"electricity_outlets":{"type":"array","description":"Electrical plug types","example":["C","E","F"],"items":{"type":"string"}},"country_id":{"type":"integer","description":"The id of the country related to this destination, when available","example":123},"parent_ids":{"type":"array","description":"Parent destination IDs","items":{"type":"integer"},"example":[201]},"links":{"$ref":"#/components/schemas/TaxonomyLinks"}}},"BookingExtra":{"type":"object","properties":{"id":{"type":"number","description":"Id of the extra.","example":"123"},"type":{"type":"string","description":"Type of the extra.","example":"mandatoryAddon"},"currency":{"type":"string","description":"Currency of the extra.","example":"EUR"},"payment_type":{"type":"string","description":"Requested payment type.","example":"upfront"},"name":{"type":"string","description":"Name of the extra.","example":"Galapagos National Park Fee"},"description":{"type":["string","null"],"description":"Optional description of the extra.","example":"Free for kids"},"prices":{"type":"array","items":{"type":"object","properties":{"price_category_id":{"type":"number","description":"Id of the price category related to the price.","example":"321"},"pax_count":{"type":"number","description":"Number of passenger for which this price is applied.","example":"2"},"price_per_pax":{"type":"number","description":"Price of the extra for each passenger.","example":"10"}}}},"passengers":{"type":"array","items":{"type":"object","properties":{"price_category_id":{"type":"number","description":"Id of the price category related to the passenger.","example":"321"},"passenger_id":{"type":"number","description":"Id of the passenger related to the extra.","example":"3121"}}}}}},"TaxonomyCurrenciesList":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string","description":"Currency code.","example":"AUD"},"name":{"type":"string","description":"Currency name.","example":"Australian Dollar"},"symbol":{"type":"string","description":"Currency symbol.","example":"$"}}}},"TourDeparturePrice":{"type":"object","properties":{"id":{"type":"integer","description":"Identifier of the departure date.","example":736283495},"tour_id":{"type":"integer","description":"Identifier of the tour.","example":5113},"date":{"type":"string","example":"2024-12-28"},"departure_type":{"type":"string","description":"Type of departure.","enum":["guaranteed","scheduled","request"],"example":"guaranteed"},"prices":{"type":"object","description":"Pricing information.","properties":{"currency":{"type":"string","description":"Currency code for the reported prices.","example":"EUR"},"price_base":{"type":"number","description":"Base price of the tour, also referenced as brochure price, for all passengers.","example":9214},"price_addons":{"type":"number","description":"Sum of the addons that the passenger will have to pay.","example":438},"price_promotion":{"type":"number","description":"Discounted price, or base price minus the promotion.","example":9214},"price_total":{"type":"number","description":"Final sale price, composed by the base price, minus the applied promotion, plus the local and upfront addons.","example":9652},"price_total_upfront":{"type":"number","description":"Final sale price, composed by the base price, minus the applied promotion, plus the upfront addons.","example":9652},"promotion":{"$ref":"#/components/schemas/ToursPromotion"},"payment_schedule":{"type":["object","null"],"description":"Defines how the payment for the tour must be performed (deposit, pay by installments, final payment date).","properties":{"deposit":{"type":["number","null"],"description":"The amount that must be paid as deposit. If no deposit is required for this tour, the value will be `null`.","example":1930.4},"pay_by_installments":{"type":"boolean","description":"Indicates if pay by installments is available for this tour.","example":false},"final_payment_date":{"type":["string","null"],"description":"Date by which the price must be paid in full.","example":"2024-11-13"}}},"based_on":{"type":["string","null"],"description":"If available, the type of accommodation that the base price refers to.","example":"Standard"},"mandatory_addons":{"type":"array","description":"Mandatory addons (extra price elements).","items":{"type":"object","properties":{"id":{"type":"integer","description":"Identifier of the addon in the TourRadar system.","example":589},"name":{"type":"string","description":"Name of the addon.","example":"Domestic flights"},"description":{"type":"string","description":"Description of the addon.","example":"Ghanzi - Maun flight fare approx USD 180 per person in economy class."},"payment_type":{"type":"string","enum":["upfront","local"],"description":"The payment type (upfront or local).","example":"local"},"code":{"type":["string","null"],"description":"If available, the operator code associated with this item.","example":"96565"},"prices":{"type":"array","description":"Price information for this item.","items":{"type":"object","properties":{"value":{"type":"number","description":"Price for this item.","example":180},"price_category_id":{"type":"integer","description":"Identifier of the price category.","example":1634},"quantity":{"type":"integer","description":"Number of passengers for which this item was requested.","example":2},"local_currency":{"type":["null","string"],"description":"Local currency, if set.","example":"EUR"},"local_value":{"type":["null","number"],"description":"Value for local currency, if set.","example":180}}}}}}},"accommodations":{"type":"array","description":"Accommodation items.","items":{"type":"object","properties":{"id":{"type":"integer","description":"Identifier of the accommodation option in the TourRadar system.","example":396410},"name":{"type":"string","description":"Name of the accommodation option.","example":"Standard"},"description":{"type":"string","description":"Description of the accommodation option.","example":"Standard accommodation"},"payment_type":{"type":"string","enum":["upfront","local"],"description":"The payment type (upfront or local).","example":"upfront"},"beds_number":{"type":["integer","null"],"description":"Number of beds.","example":2},"is_shared":{"type":["boolean","null"],"description":"If true, this accommodation is shared with other participants of the tour.","example":1},"code":{"type":["string","null"],"description":"If available, the operator code associated with this item.","example":"STANDARD"},"prices":{"type":"array","description":"Price information for this item.","items":{"type":"object","properties":{"value":{"type":"number","description":"Price for this item.","example":2199},"price_category_id":{"type":"integer","description":"Identifier of the price category.","example":1634},"quantity":{"type":"integer","description":"Number of passengers for which this item was requested.","example":2},"local_currency":{"type":["null","string"],"description":"Local currency, if set.","example":"EUR"},"local_value":{"type":["null","number"],"description":"Value for local currency, if set.","example":2199}}}}}}},"optional_extras":{"type":"array","description":"Optional extra items.","items":{"type":"object","properties":{"id":{"type":"integer","description":"Identifier of the optional extra in the TourRadar system.","example":794595},"name":{"type":"string","description":"Name of the optional extra.","example":"Okavango Delta Flight - Day 3"},"description":{"type":"string","description":"Description of the optional extra.","example":"Get a fresh perspective on the vast wilderness of Africa with a once-in-a-lifetime view only a select few will ever see. Enjoy the hippos in the waterways and elephants and buffalo in the tree line. Gaze at the winding water channels as they make their way through the Delta."},"payment_type":{"type":"string","enum":["upfront","local"],"description":"The payment type (upfront or local).","example":"upfront"},"code":{"type":["string","null"],"description":"If available, the operator code associated with this item.","example":"446070"},"allocation":{"type":"string","enum":["per_passenger","per_booking"],"description":"The allocation of this addon. If 'per_booking', the optional extra must be assigned to all the passengers","example":"per_passenger"},"prices":{"type":"array","description":"Price information for this item.","items":{"type":"object","properties":{"value":{"type":"number","description":"Price for this item.","example":219},"price_category_id":{"type":"integer","description":"Identifier of the price category.","example":1634},"quantity":{"type":"integer","description":"Number of passengers for which this item was requested.","example":2},"local_currency":{"type":["null","string"],"description":"Local currency, if set.","example":"EUR"},"local_value":{"type":["null","number"],"description":"Value for local currency, if set.","example":219}}}}}}},"partner_info":{"type":["object","null"],"properties":{"calculation_base":{"type":["null","string"],"description":"Calculation base.","example":"accommodation"},"contract_type":{"type":"string","description":"Contract type.","example":"direct"},"commission_rate":{"type":"number","description":"Commission rate of the partner.","example":0.08},"commission_value":{"type":"number","description":"Commission value of the partner.","example":772.16},"booking_fee_rate":{"type":"number","description":"Booking fee rate of the partner.","example":0.03},"booking_fee_value":{"type":"number","description":"Booking fee value of the partner.","example":289.56}}}}}}},"ToursListPagination":{"required":["current_page","items"],"type":"object","properties":{"current_page":{"type":"integer","description":"Current page number"},"items":{"type":"array","items":{"$ref":"#/components/schemas/ToursList"}},"next_page":{"type":"integer","description":"If this attribute exists, then another page is available. To get more results, repeat the request with the number specified in the `page` parameter. If this attribute is not part of the response, then the last page has been reached."}}},"PartnersOperatorsCommission":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/PartnersOperatorsInfo"}}}},"OperatorCredentialsList":{"type":"array","description":"List of credentials entries.","items":{"$ref":"#/components/schemas/OperatorCredentials"}},"BookingInput":{"type":"object","properties":{"tour_id":{"type":"integer","description":"Unique identifier for the tour in the TourRadar system.","example":5113},"departure_id":{"type":"integer","description":"Unique identifier of the departure date. For a list of departure dates, use the **[/tours/{tourId}/departures](#tag/Pricing-and-Availability/paths/~1v1~1tours~1{tourId}~1departures/get)** endpoint.`","example":736283495},"currency":{"description":"Currency code for the booking. The default is `USD`.","enum":["USD","AUD","GBP","NZD","EUR","CAD"],"example":"EUR"},"email":{"description":"Email address for the lead passenger.","type":"string","example":"jane.doe@tourradar.com"},"user_country":{"description":"Identifier for the country of residence of the main passenger. Country IDs can be obtained from the **[/taxonomy/destinations/country](#tag/Taxonomy/paths/~1v1~1taxonomy~1destinations~1{type}/get)** endpoint.","type":"integer","example":139},"passengers":{"type":"array","description":"List of passengers. Each entry represents one passenger.","items":{"type":"object","properties":{"pax_number":{"type":"integer","description":"Passenger identifier, starting from 1. If the booking contains 5 passengers, the values must be from 1 to 5."},"price_category_id":{"type":"integer","description":"Price category ID retrieved from the **[/tours/{tourId}/prices](#tag/Pricing-and-Availability/paths/~1v1~1tours~1{tourId}~1prices/get)** endpoint."},"fields":{"type":"object","description":"A set of key-value pairs containing passenger information. For a list of the available and mandatory keys, use the **[/operators/{operatorId}/booking-fields](#tag/Operators/paths/~1v1~1operators~1{operator}~1booking-fields/get)** endpoint."}},"example":[{"pax_number":1,"price_category_id":1634,"fields":{"title":"Mr.","first_name":"John","last_name":"Doe","email":"john.doe@tourradar.com","phone_number":"+46 029 01920 028","date_of_birth":"11/06/1993","gender":"male","address":"Kartner Ring 5-7 Top 304-306","city":"Vienna","postal_code":"1010","state":"Vienna","country":"Austria","nationality":"Austria","pre_existing_medical_conditions":"none"}},{"pax_number":2,"price_category_id":1634,"fields":{"title":"Ms.","first_name":"Jane","last_name":"Doe","email":"jane.doe@tourradar.com","date_of_birth":"25/05/1994","nationality":"Austria","gender":"female","pre_existing_medical_conditions":"none"}}]}},"accommodations":{"type":"array","description":"Accommodation requested, and assignment to passengers.","items":{"type":"object","properties":{"id":{"type":"integer","description":"Unique identifier of the selected accommodation, taken from the **[/tours/{tourId}/departures/{departureId}](#tag/Pricing-and-Availability/paths/~1v1~1tours~1{tourId}~1departures~1{departureId}/get)** endpoint."},"passengers":{"type":"array","description":"List of `pax_number` identifiers that should be placed in the selected accommodation.","items":{"type":"integer"}}}},"example":[{"id":396410,"passengers":[1,2]}]},"optional_extras":{"type":"array","description":"Optional extras requested, and assignment to passengers.","items":{"type":"object","properties":{"id":{"type":"integer","description":"Unique identifier of an optional extra, taken from the **[/tours/{tourId}/departures/{departureId}](#tag/Pricing-and-Availability/paths/~1v1~1tours~1{tourId}~1departures~1{departureId}/get)** endpoint."},"passengers":{"type":"array","description":"List of `pax_number` identifiers for which this optional extra is being booked.","items":{"type":"integer"}}}},"example":[{"id":644520,"passengers":[1,2]}]},"partner_booking_code":{"description":"the booking code, or reference number, in your system. This will be stored with the booking, and returned with the booking detail request.","type":"string","example":"the_code_value"},"custom_data":{"description":"Additional info set by the partner when creating the booking. Up to 5 string properties can be set in it.","type":"object","example":{"custom_attribute":"custom value","custom_date":"Tuesday"}},"store_id":{"type":["string","null"],"description":"Identifier of the store, or agency, that made the booking. Note: this is only relevant for bookings made via the TourRadar Partner API.","example":"878"}},"required":["departure_id","email","passengers","user_country"]},"OpenAPI":{"type":"object","additionalProperties":true},"PartnerRegisterInput":{"type":"object","required":["name","email","captcha_token"],"properties":{"name":{"type":"string","description":"Company name","example":"Tourradar GMBH"},"email":{"type":"string","description":"Email","example":"contact@tourradar.com"},"captcha_token":{"type":"string","description":"Captcha token given by reCaptcha v2","example":"5LYAsJfUJ3V5eT8mN9DZTyVCg"}}},"TourDestinations":{"description":"List of all destinations included in the tour.","type":"object","properties":{"cities":{"type":"array","description":"List of all cities.","items":{"$ref":"#/components/schemas/TourCity"}},"countries":{"type":"array","description":"List of all countries.","items":{"type":"object","properties":{"location_id":{"type":"integer","description":"Unique identifier for the country in the TourRadar system.","example":"IT"},"country_name":{"type":"string","description":"Name of the country.","example":"Italy"},"country_code":{"type":"string","description":"ISO country code.","example":"IT"},"currency_code":{"type":"string","description":"Code for the country (primary) currency.","example":"EUR"},"currency_name":{"type":"string","description":"Name of the (primary) currency used in the country.","example":"Euro"},"electricity_outlets":{"type":"array","description":"The electrical outlet types used in the country.","items":{"type":"string","example":"C"}}}}},"natural_destinations":{"type":"array","description":"List of the natural destinations related to the tour.","items":{"type":"object","properties":{"location_id":{"type":"integer","description":"Unique identifier for the natural destination in the TourRadar system.","example":234},"natural_destination_name":{"type":"string","description":"Name of the natural destination.","example":"Alps"},"country_code":{"type":["null","string"],"description":"ISO country code.","example":"IT"},"type":{"type":"string","description":"Type of the natural destination.","example":"river","enum":["continent","country","state","region","city","national-park","island","mountain","ocean","river","lake"]},"latitude":{"type":["null","number"],"description":"Latitude of the natural destination, if available.","example":"48.208176"},"longitude":{"type":["null","number"],"description":"Longitude of the natural destination, if available.","example":"16.373819"}}}}}},"BookingSearch":{"type":"object","properties":{"id":{"type":"integer","description":"Unique identifier of the booking in the TourRadar system.","example":892000},"tour":{"type":"object","description":"Metadata about tour that was booked.","properties":{"tour_id":{"type":"integer","description":"Unique identifier for the tour in the TourRadar system.","example":14263},"tour_name":{"type":"string","description":"Name of the tour.","example":"Europe Escape - 12 Days"},"tour_length_days":{"type":"integer","description":"Length of the tour, expressed in number of days.","example":12},"operator":{"type":"object","properties":{"id":{"type":"integer","description":"Unique identifier for the tour operator in the TourRadar system.","example":1170},"name":{"type":"string","description":"Name of the tour operator.","example":"Expat Explore Travel"}}}}},"departure_date":{"type":"string","description":"Departure date that was booked, in the format `YYYY-MM-DD`.","example":"2024-01-02"},"return_date":{"type":"string","description":"Return date from the tour, in the format `YYYY-MM-DD`.","example":"2024-01-14"},"created_at":{"type":"string","description":"Exact timestamp of when the booking was created, in the ISO 8601 format.","example":"2023-05-01"},"type":{"type":"string","description":"Type of this booking record.","enum":["booking","question","hold"],"example":"booking"},"hold_expire_at":{"type":["string","null"],"description":"Exact timestamp of when the hold will expire, in the ISO 8601 format.","example":"null"},"status":{"type":"string","description":"Status of the booking.","enum":["open_question","open_hold","pending","confirmed","declined","cancelled","hold_expired","hold_declined"],"example":"confirmed"},"total_value":{"type":"number","description":"Total amount of the booking.","example":2564},"pax":{"type":"integer","description":"Number of passengers.","example":2},"main_passenger":{"type":"object","properties":{"name":{"type":"string","description":"Name of the main passenger.","example":"Jane"}}},"confirmed_at":{"type":["string","null"],"description":"Exact timestamp of when the booking was confirmed, in the ISO 8601 format. If the status of the booking is not `confirmed`, this field will be `null`.","example":"2023-05-01"},"last_message":{"type":["object","null"],"description":"Information relative to the last message in this booking's conversation channel. Messages are not available for direct bookings.","properties":{"author":{"type":"string","description":"Author type of the message. `system` is for automatically generated notification messages, the other types reflect the role of the user who posted the message.","enum":["operator","agent","traveller","system"],"example":"operator"},"created_at":{"type":"string","description":"Exact timestamp of when the message was sent, in the ISO 8601 format.","example":"2023-05-01T12:05:20.000Z"}}},"partner_info":{"type":"object","description":"Information relative to the partner that made the booking.","properties":{"id":{"type":"string","description":"Unique identifier of the partner in the TourRadar system.","example":"189764"},"agent_id":{"type":["string","null"],"description":"Identifier of the agent (user) that made the booking. Note: this is only relevant for bookings made on the TourRadar website.","example":"98789"},"store_id":{"type":["string","null"],"description":"Identifer of the store, or agency, that made the booking. Note: this is only relevant for bookigs made via API.","example":"678"},"contract_type":{"type":"string","description":"Contract type that was applied for this booking.","enum":["wholesale","organiser","affiliate","direct"],"example":"wholesale"},"calculation_base":{"type":"string","enum":["accommodation","all_extras"],"description":"Definition of the amount used as reference for the commission calculation.","example":"accommodation"},"commission_rate":{"type":"number","description":"The commission rate, expressed as multiplier. For example, a commission of 5% would be represented by `0.05`. If no commission will be paid for booking this tour, this will be `0`.","example":0},"commission_value":{"type":"number","description":"The actual commission value, calculated on the price reported in this section.","example":0},"commission_status":{"type":"string","description":"Commission withdrawal status.","enum":["paid_out","earned","cancelled","pending"],"example":"paid_out"},"booking_fee_rate":{"type":"number","description":"The booking fee rate, if any, espressed as multiplier. For example, a booking fee of 5% would be represented by `0.05`. If no booking fee will be due for booking this tour, this will be `0`.","example":0},"booking_fee_value":{"type":"number","description":"The actual booking fee value, calculated on the price reported in this section.","example":0},"booking_fee_status":{"type":"string","description":"Booking fee payment status.","enum":["paid","requested","cancelled","pending"],"example":"paid"}}},"links":{"$ref":"#/components/schemas/BookingLinks"},"status_reason":{"$ref":"#/components/schemas/BookingDeclineReason"},"status_reason_text":{"type":["string","null"],"description":"The full description of the declination reason, if set.","example":"Received error response from operator: Failed service status transition."},"status_reason_context":{"type":["object","null"],"description":"Additional information related to the current status, if set."}}},"Operator":{"type":"object","properties":{"id":{"type":"integer","description":"Unique identifier of the operator in the TourRadar system.","example":"204"},"name":{"type":"string","description":"Name of the operator.","example":"Intrepid Travel"},"code":{"type":"integer","description":"Operator code.","example":"intrepid"},"has_integration":{"type":"boolean","description":"True if the operator has an integration system.","example":true},"terms_url":{"type":"string","description":"Address of the terms and conditions page from the operator website, if available.","example":"https://www.tourradar.com/terms-conditions"},"terms_text":{"type":"string","description":"Full text for the terms and conditions of the operator (note: may contain HTML).","example":"<p>Updated on January 20, 2020:</p>\\n<p>Once the Operators, as detailed in Clause 13 below, (hereinafter referred to as “the Operator”), [...]"}}},"TourCity":{"type":"object","properties":{"location_id":{"type":"integer","description":"Unique identifier for the city in the TourRadar system.","example":1938},"city_name":{"type":"string","description":"Name of the city.","example":"Rome"},"country_code":{"type":"string","description":"ISO code for the country where the city is located.","example":"IT"},"latitude":{"type":"number","description":"Geographic latitude.","example":41.901766},"longitude":{"type":"number","description":"Geographic longitude.","example":12.496777}}},"TourItinerary":{"description":"Details the itinerary of the tour, with day-by-day description of the activities and the destinations visited.","type":["array","null"],"items":{"type":"object","properties":{"order":{"type":"integer","description":"The order of the itinerary item.","example":1},"duration":{"type":["integer","null"],"description":"The duration of this item in number of days.","example":1},"title":{"type":"string","description":"Title of the itinerary item.","example":"Day 1: Start of tour in Rome - Venice"},"description":{"type":"string","description":"Description of the itinerary item.","example":"Welcome to your first day on tour! After meeting up with your tour leader and group it’s time to hit the road! Sit back and enjoy the scenery as we make our way from Rome to Venice! Vineyards and orchards flash in front of a majestic mountain backdrop as we drive. The diversity of the Italian landscapes will continue to impress. Venice is an unique city, perched across 118 islands, and known for its canals, gondolas, Venetian masks, piazzas, art and traditional glass and lace making. Your tour leader will introduce you to the city with an orientation walk so you can use your free time in the early evening to explore. See the world-famous St Mark's Square, Grand Canal and Rialto Bridge. The evening is yours to enjoy authentic Italian delights, with hundreds of fantastic local restaurants and bars to choose from. After an espresso, explore Venice the traditional way - from the canals. Take a gondola ride optional which gives you a completely different perspective and appreciation for the amazing structure of this supremely unique location. Please note - for 2021 departures the Rome Optional Free Day takes place at the beginning of the tour, rather than end."},"locations":{"type":"array","description":"Locations visited in this itinerary item.","items":{"$ref":"#/components/schemas/TourCity"}}}}},"PartnersPresetStatus":{"type":"object","required":["status"],"properties":{"status":{"type":"string","description":"The status of the partner preset workflow","enum":["PENDING","RUNNING","FAILED","SUCCEEDED"],"example":"PENDING"}}},"OperatorBulkFiles":{"type":"object","properties":{"urls":{"type":"array","description":"List of files that can be downloaded for this data set.","items":{"type":"string","format":"uri","description":"File URL containing requested data in compressed JSON format."}},"expires_in":{"type":"integer","description":"Validity, in seconds, of the URLS. For example, the value `600` indicates that the URL will expire in 10 minutes from the time the response was generated.","example":600}}},"TourPrice":{"type":"object","properties":{"partner_info":{"type":"object","description":"Information about the partner-specific component of the price, including commission.","properties":{"booking_fee_value":{"type":"number","description":"The actual booking fee value, calculated on the price reported in this section.","example":0},"booking_fee_rate":{"type":"number","description":"The booking fee rate, if any, espressed as multiplier. For example, a booking fee of 5% would be represented by `0.05`. If no booking fee will be due for booking this tour, this will be `0`.","example":0},"commission_rate":{"type":"number","description":"The commission rate, expressed as multiplier. For example, a commission of 5% would be represented by `0.05`. If no commission will be paid for booking this tour, this will be `0`.","example":0},"commission_value":{"type":"number","description":"The actual commission value, calculated on the price reported in this section.","example":0},"contract_type":{"type":"string","enum":["direct","wholesale","affiliate","organiser"],"description":"The contract type your partner account is operating with for this operator.","example":"marketplace"},"calculation_base":{"type":"string","enum":["accommodation","all_extras"],"description":"Definition of the amount used as reference for the commission calculation.","example":"accommodation"}}},"based_on":{"type":["string","null"],"description":"If available, the type of accommodation that the base price refers to.","example":"Base price"},"price_base":{"type":"number","description":"Base price of the tour, also referenced as brochure price. Note this is the lowest price among the possible departure dates (some departure dates may be more expensive than this).","example":2990},"price_addons":{"type":"number","description":"Sum of the mandatory addons that the passenger will have to pay (both upfront and local payments).","example":180},"price_promotion":{"type":"number","description":"Discounted price, or base price minus the promotion.","example":2145},"price_total_upfront":{"type":"number","description":"Final sale price, composed by the base price, minus the applied promotion, plus the upfront addons.","example":2145},"price_total":{"type":"number","description":"Final sale price, composed by the base price, minus the applied promotion, plus the mandatory local and upfront addons.","example":2325},"currency":{"type":"string","description":"Currency code for the reported prices.","example":"USD"},"promotion":{"$ref":"#/components/schemas/ToursPromotion"},"mandatory_addons":{"type":"array","description":"List of the mandatory addons (extra price elements).","items":{"type":"object","properties":{"price":{"type":"number","description":"Price for this addon.","example":180},"name":{"type":"string","description":"Name of the addon.","example":"Domestic flight"},"payment_type":{"type":"string","enum":["upfront","local"],"description":"The payment type (upfront or local).","example":"local"},"local_currency":{"type":["null","string"],"description":"For local payments, the currency this payment must be executed in.","example":"USD"},"local_value":{"type":["null","number"],"description":"The price of the addon in the local currency.","example":180}}}}}},"PartnersOperatorsPermissionsList":{"type":"array","items":{"$ref":"#/components/schemas/PartnersOperatorsInfo"}},"PartnersUsagePlans":{"type":"array","description":"List of available usage plans","items":{"type":"object","description":"Attribute representation","properties":{"id":{"type":"string","description":"Usage plan id","example":"7ww3b6"},"name":{"type":"string","description":"Usage plan name","example":"Basic"},"description":{"type":"string","description":"Usage plan description"}}}},"PartnerByAccreditation":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"The name of the Partner","example":"Some Partner"},"description":{"type":"string","description":"The Partner ID","example":"some-partner"}}}},"PartnerUpdateInput":{"type":"object","required":["id","name","role","status"],"properties":{"id":{"type":"string","description":"Partner ID","example":"4d353262-f2e8-4de6-8585-9e813e187c60"},"name":{"type":"string","description":"Partner name","example":"TourRadar GmbH"},"status":{"enum":["active","inactive"],"description":"Status of partner","example":"inactive"},"role":{"type":"string","description":"Partner role","example":"api"},"notes":{"type":"string","description":"Internal notes about partner","example":"Some note"},"payout_terms":{"type":"object","description":"The commission payout terms","properties":{"terms_days":{"type":"integer","description":"Describe margin days when payout will be made","example":-5},"base_date":{"enum":["tour_start_date","tour_end_date"],"description":"Describe when commission will be payout","example":"tour_end_date"}}},"attributes":{"type":"array","description":"List of partner attributes","items":{"type":"object","description":"Attribute representation","properties":{"name":{"type":"string","description":"Attribute name","example":"registration_completed"},"value":{"type":["string","number","boolean"],"description":"Attribute value","example":true}}}},"is_whitelabel":{"type":"boolean","description":"Determine if partner has whitelabel domain or not","example":true}}},"PartnerUsersInviteToken":{"type":"object","required":["token"],"properties":{"token":{"type":"string","description":"Token for partner users invite","example":"GYW9qfFPQGNy9JtF!+ssa="}}},"TourDepartureMandatoryAddon":{"type":["object","null"],"description":"Mandatory addon.","properties":{"id":{"type":"integer","description":"Unique identifier of the price item in the TourRadar system.","example":999},"value":{"type":"number","description":"Value of the price item.","example":180},"code":{"type":["string","null"],"description":"Code of the item.","example":""},"name":{"type":"string","description":"Name of the item.","example":"Domestic flight"},"description":{"type":"string","description":"Description of the item.","example":"Domestic flight"},"payment_type":{"type":["string","null"],"description":"Payment type.","enum":["upfront","local"],"example":"local"},"pax_restriction":{"type":["number","null"],"description":"Maximum pax number to apply this promotion. If null - no limit.","example":30},"price_tiers":{"$ref":"#/components/schemas/TourDeparturePriceTiers"},"local_currency":{"type":["string","null"],"description":"The used currency.","example":"USD"},"local_value":{"type":["number","null"],"description":"The value in local currency.","example":180}}},"PartnersOperatorsInfo":{"type":"object","properties":{"operator_code":{"type":"string","description":"Operator code","example":"topdeck"},"operator_id":{"type":"integer","description":"Operator ID","example":"204"},"calculation":{"type":"array","items":{"type":"object","properties":{"contract_type":{"enum":["direct","wholesale","affiliate","marketplace","organiser"],"description":"The contract type partner account is operating with for this operator.","example":"direct"},"commission_rate":{"type":"number","description":"The commission rate, expressed as multiplier. For example, a commission of 5% would be represented by `0.05`. If no commission will be paid for booking this tour, this will be `0`.","example":"0.025"},"booking_fee_rate":{"type":"number","description":"The booking fee rate, if any, espressed as multiplier. For example, a booking fee of 5% would be represented by `0.05`. If no booking fee will be due for booking this tour, this will be `0`.","example":"0.25"},"is_default":{"type":"boolean","description":"True, if is default method","example":true}}}},"calculation_base":{"enum":["accommodation","all_extras"],"description":"Definition of the amount used as reference for the commission calculation.","example":"accommodation"},"type":{"enum":["included","excluded"],"description":"Type of rule","example":"included"},"permissions":{"type":"array","description":"List of permissions","items":{"enum":["tours/read","bookings/write","bookings/read"],"description":"Permissions name","example":"bookings/write"}}}},"OperatorList":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","description":"Unique identifier of the operator in the TourRadar system.","example":"204"},"name":{"type":"string","description":"Name of the operator.","example":"Intrepid Travel"},"code":{"type":"integer","description":"Operator code.","example":"intrepid"},"has_integration":{"type":"boolean","description":"True if the operator has an integration system.","example":true},"terms_url":{"type":"string","description":"Address of the terms and conditions page from the operator website, if available.","example":"https://www.tourradar.com/terms-conditions"}}}},"PartnersPayoutFields":{"type":"object","properties":{"AUD":{"type":"array","description":"Set of payout fields for Australia","items":{"type":"string","description":"field name","example":"bank_code"}},"CAD":{"type":"array","description":"Canadian regions fieldset","items":{"type":"string","description":"field name","example":"bank_code"}},"GBP":{"type":"array","description":"Pound Sterling regions field-set","items":{"type":"string","description":"field name","example":"bank_code"}},"EUR":{"type":"array","description":"EU regions bank details fields","items":{"type":"string","description":"field name","example":"bank_code"}},"USD":{"type":"array","description":"USA bank data field-set","items":{"type":"string","description":"field name","example":"bank_code"}}}},"PartnerUserList":{"type":"array","items":{"$ref":"#/components/schemas/PartnerUser"}},"PartnersPartnerBookings":{"type":"object","description":"List of partner's bookings","required":["partner_id"],"items":{"type":"object","properties":{"partner_id":{"type":"string"}}}},"PartnersRelatedPartners":{"type":"array","items":{"type":"object","properties":{"partner_id":{"type":"string"},"related_partner_id":{"type":"string"},"is_default":{"type":"boolean"}}}},"Empty":{"title":"Empty Schema","type":"object"},"BookingLinks":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","description":"Type of link","example":"booking-page","enum":["booking-page"]},"url":{"type":"string","description":"Url","example":"https://www.tourradar.com/booking/12345?enquiryCode=fvwffws8hgqqz4blyh13icbyldjqhp6d"}}}},"BookingStatus":{"type":"object","properties":{"id":{"type":"integer","description":"Unique identifier of the booking in the TourRadar system.","example":892000},"tour_id":{"type":"integer","description":"Deprecated. Moved to `$.tour.tour_id`.","example":14263},"tour":{"type":"object","description":"Metadata about tour that was booked.","properties":{"tour_id":{"type":"integer","description":"Unique identifier for the tour in the TourRadar system.","example":14263},"tour_name":{"type":"string","description":"Name of the tour.","example":"Europe Escape - 12 Days"},"tour_length_days":{"type":"integer","description":"Length of the tour, expressed in number of days.","example":12},"operator":{"type":"object","properties":{"id":{"type":"integer","description":"Unique identifier for the tour operator in the TourRadar system.","example":1170},"name":{"type":"string","description":"Name of the tour operator.","example":"Expat Explore Travel"}}}}},"departure_date":{"type":"string","description":"Departure date that was booked, in the format `YYYY-MM-DD`.","example":"2023-06-25"},"created_at":{"type":"string","description":"Exact timestamp of when the booking was created, in the ISO 8601 format.","example":"2023-05-01"},"confirmed_at":{"type":["string","null"],"description":"Exact timestamp of when the booking was confirmed, in the ISO 8601 format. If the status of the booking is not `confirmed`, this field will be `null`.","example":"2023-05-01"},"type":{"type":"string","description":"Type of this booking record.","enum":["booking","question","hold"],"example":"booking"},"status":{"type":"string","description":"Status of the booking.","enum":["open_question","open_hold","pending","confirmed","declined","cancelled","hold_expired","hold_declined"],"example":"pending"},"links":{"$ref":"#/components/schemas/BookingLinks"},"status_reason":{"$ref":"#/components/schemas/BookingDeclineReason"},"status_reason_text":{"type":["string","null"],"description":"The full description of the declination reason, if set.","example":"Received error response from operator: Failed service status transition."},"status_reason_context":{"type":["object","null"],"description":"Additional information related to the current status, if set."}}},"TaxonomyLanguagesList":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","description":"Language ID.","example":"1"},"code":{"type":"string","description":"Language code.","example":"en"},"name":{"type":"string","description":"Language name.","example":"English"}}}},"BookingFields":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Name of the field (must be used when creating bookings).","example":"first_name"},"label":{"type":"string","description":"Descriptive name of the field.","example":"First Name"},"group":{"type":"string","description":"Category of the fields (can be used to group together similar fields).","example":"Contact"},"type":{"type":"string","description":"Type of data expected for this field.","example":"string","enum":["string","number","email","phone","date"]},"main_pax":{"type":"string","description":"Defines if this field is mandatory for the lead passenger (first passenger in the booking).","example":"mandatory","enum":["mandatory","optional","mandatory_post_booking"]},"additional_pax":{"type":"string","description":"Defines if this field is mandatory for additional passengers.","example":"mandatory","enum":["mandatory","optional","mandatory_post_booking"]}}}},"BookingResponse":{"type":"object","properties":{"reservation_details":{"type":"object","description":"Detailed reservation information for one matching reservation.","properties":{"confirmation":{"type":"object","properties":{"id":{"type":"string","description":"A unique identifying value assigned by the creating system. The ID attribute may be used to reference a primary-key value within a database or in a particular implementation.","example":"TTCXXX-X123456"},"status":{"type":["null","string"],"description":"Status of the booking. Note this is mapped from the operator values to a TourRadar internal state. In case of status `unknown`, the original value provided by the operator is available in the field `operator_status`.","enum":["pending","confirmed","cancelled","declined","unknown"],"example":"confirmed"},"operator_status":{"type":["string","null"],"description":"Status of the booking, as provided by the operator.","example":"onHold"}}},"basic_info":{"type":"object","description":"Core information about the booked tour and/or activity, including ID(s) and name.","properties":{"name":{"type":"string","description":"The name of the tour and/or activity.","example":"Canada Rockies"},"tour_activity_id":{"type":"string","description":"A unique ID that identifies this tour and/or activity that may be referenced elsewhere in this message.","example":"82014275"},"booking_date":{"type":["string","null"],"format":"date","example":"2021-04-06"},"edocs":{"type":["boolean","null"],"example":true},"booking_version":{"type":["string","null"],"example":"4"},"problem_note":{"type":["boolean","null"],"example":false},"booking_type":{"type":["string","null"],"example":"travelAgent"},"type":{"type":["string","null"],"example":"Explorer"},"region":{"type":["string","null"],"example":"Middle East & North Africa"}}},"schedule":{"type":"object","description":"The departure or tour/activity start date/time.","properties":{"duration":{"type":"integer","example":10},"start":{"type":["null","string"],"format":"date","description":"The starting value of the time span, in ISO 8601 prescribed format.","example":"2021-08-02"},"end":{"type":["null","string"],"format":"date","description":"The ending value of the time span, in ISO 8601 prescribed format.","example":"2021-08-06"}}},"pickup_dropoff":{"type":"array","description":"The pickup and/or dropoff information if transportation is provided to/ from the tour/activity location.","items":{"type":"object","properties":{"datetime":{"type":["string","null"],"description":"The date and time for the pickup or dropoff.","example":"TODO"},"dropoff_ind":{"type":"boolean","description":"If true, this is dropoff information.","example":false},"pickup_ind":{"type":"boolean","description":"If true, this is pickup information.","example":true},"location_name":{"type":["string","null"],"description":"The name of the pickup/ dropoff location.","example":"Pick Up: Hotel Mogador Opera @ 18:00"},"person_qty":{"type":["integer","null"],"description":"The quantity of persons to be picked up or dropped off.","example":1},"id":{"type":["string","null"],"example":"91178"},"address":{"type":"object","description":"Information about an address that identifies a location for a specific purposes.","properties":{"address_line":{"type":["string","null"],"description":"Free form address details.","example":"Avenue du Président Kennedy"},"postal_code":{"type":["string","null"],"description":"Post Office Code number.","example":"40000"},"city_name":{"type":["string","null"],"description":"City (e.g., Dublin), town, or postal station (i.e., a postal service territory, often used in a military address).","example":"Marrakesh"}}},"telephone":{"type":"object","description":"Information about a telephone number, including the actual number and its usage.","properties":{"phone_number":{"type":["string","null"],"description":"Telephone number assigned to a single location.","example":"+212 1234-56789"}}}}}},"participant_info":{"type":"array","description":"Individual participant, participant category and group details.","items":{"type":"object","properties":{"category":{"type":"object","description":"Information for a participant category.","properties":{"qualifier_info":{"type":["string","null"],"description":"A specific type of age and/or group qualifier, such as adult.","example":"adult"},"quantity":{"type":"integer","description":"Used to define the quantity of participants for the specified information.","example":1}}},"individual":{"type":"object","description":"Name and other information for known participants.","properties":{"participant_id":{"type":["string","null"],"description":"A unique identifier for a known participant that may be referenced elsewhere in this message.","example":"1"},"lead_customer_ind":{"type":"boolean","description":"When `true`, indicates that this is the 'lead' participant (i.e., the primary contact making the booking).","example":true},"name_prefix":{"type":["string","null"],"description":"Salutation of honorific (e.g. Mr., Mrs., Ms., Miss, Dr.)","example":"Mr"},"given_name":{"type":"string","description":"Given name, first name or names.","example":"Max"},"surname":{"type":"string","description":"Family name, last name. May also be used for full name if the sending system does not have the ability to separate a full name into its parts, e.g. the surname element may be used to pass the full name.","example":"Mustermann"},"middle_name":{"type":["string","null"],"description":"The middle name of the person name.","example":"William"},"gender":{"type":["string","null"],"description":"Identifies the gender.","example":"male"},"birth_date":{"type":["string","null"],"format":"date","description":"Indicates the date of birth as indicated in the document, in ISO 8601 prescribed format.","example":"1982-02-02"},"contact":{"type":"array","description":"Contact information. Name of an individual and appropriate contact information. May be contact information for the customer or someone affiliated with the customer.","items":{"type":"object","properties":{"email":{"type":["string","null"],"description":"Electronic email address, in IETF specified format.","example":"email@tourradar.io"},"address":{"type":["object","null"],"description":"Information about an address that identifies a location for a specific purposes.","properties":{"address_line":{"type":"string","description":"Free form address details.","example":"216 Wolverine Drive"},"city_name":{"type":"string","description":"City (e.g., Dublin), town, or postal station (i.e., a postal service territory, often used in a military address).","example":"Fort mcmurray"},"county":{"type":"string","description":"County or Region Name (e.g., Fairfax).","example":"Alberta"},"postal_code":{"type":"string","description":"Post Office Code number.","example":"T9H4M2"},"country_name":{"type":"string","description":"Country name (e.g., Ireland).The name or code of a country (e.g. as used in an address or to specify citizenship of a traveller).","example":"Canada"},"country_code":{"type":["string","null"],"example":"CA"}}},"emergency_flag":{"type":"boolean","description":"Indicates if this contact should be used in the case of an emergency.","example":false},"person_name":{"type":"object","description":"This provides name information for a person.","properties":{"given_name":{"type":["string","null"],"description":"Given name, first name or names.","example":"Max"},"surname":{"type":["string","null"],"description":"Family name, last name. May also be used for full name if the sending system does not have the ability to separate a full name into its parts, e.g. the surname element may be used to pass the full name.","example":"Mustermann"},"relationship":{"type":["string","null"],"example":"Daughter"}}},"telephone":{"type":"object","description":"Information about a telephone number, including the actual number and its usage.","properties":{"phone_number":{"type":["string","null"],"description":"Telephone number assigned to a single location.","example":"+0000000000"},"country_access_code":{"type":["string","null"],"description":"Code assigned by telecommunications authorities for international country access identifier.","example":"+212"}}}}}},"document":{"type":["object","null"],"description":"Document information for verification purposes and also used for additional filtering for common names.","properties":{"doc_type":{"type":"string","description":"Indicates the type of document (e.g. Passport, Military ID, Drivers License, national ID, Vaccination Certificate).","example":"passport"},"doc_id":{"type":["string","null"],"description":"Unique number assigned by authorities to document.","example":"XX123456"},"place_of_issue":{"type":["string","null"],"example":"Australia"},"date_of_issue":{"type":["string","null"],"format":"date","example":"2015-03-17"},"date_of_expiry":{"type":["string","null"],"format":"date","example":"2025-03-17"}}},"nationality":{"type":["string","null"],"description":"The nationality of a participant, if known. Uses ISO 3166 Country Codes.","example":"AU"},"status":{"type":["string","null"],"example":"complete"},"restricted":{"type":["boolean","null"],"example":false}}},"insurance":{"type":["object","null"],"description":"Required and/or provided insurance for groups and/or individuals.","properties":{"provided":{"type":"object","description":"Third party insurance provided by a group and/or individual.","properties":{"participant_id":{"type":["number","null"],"description":"A unique ID (that is assigned elsewhere in the message) that associates a participant with other information.","example":"1"},"plan_id":{"type":["string","null"],"description":"The third-party insurance plan ID.","example":"XXX-XXXX-XXX"},"provider_name":{"type":["null","string"],"description":"The name of the insurer provider company. Identifies a company by name.","example":"Ins. Company"},"telephone":{"type":"object","properties":{"phone_number":{"type":["string","null"],"description":"Telephone number assigned to a single location.","example":"+0000000000"}}}}}}},"special_need":{"type":["array","null"],"description":"The name and/or code for a special need requirement, such as a wheelchair or vegetarian meal.","items":{"type":"object","properties":{"participant_id":{"type":["string","null"],"description":"A unique identifier for a known participant that may be referenced elsewhere in this message.","example":"1"},"code":{"type":["string","null"],"description":"A code known between trading partners for a special needs item.","example":"dietary"},"description":{"type":["string","null"],"description":"Allergic to seafood"}}}},"lodging_info":{"type":"array","items":{"type":"object","description":"Lodging information for the participant and/or group.","properties":{"room_number":{"type":["string","null"],"description":"The room number in the hotel and/or other lodging facility.","example":"40842462"},"room_type":{"type":["string","null"],"example":"twin"},"bed_preference":{"type":["string","null"],"example":"TOGETHER"}}}}}}},"pricing":{"type":"object","description":"Pricing information for the tour/ activity that may be broken down by participant category and/or a group.","properties":{"summary":{"type":"object","description":"Pricing information for the tour/ activity that is not assciated with participant category(s) and/or group(s).","properties":{"currency_code":{"type":"string","description":"An ISO 4217 (3) alpha character code that specifies a monetary unit.","example":"AUD"},"amount":{"type":["null","number"],"description":"A monetary amount.","example":"4390.00"},"final_payment_due_date":{"type":["string","null"],"format":"date","example":"2021-04-06"},"deposit_amount":{"type":["number","null"],"example":"3160.80"},"deposit_due_date":{"type":["string","null"],"format":"date","example":"2020-09-21"},"outstanding_balance":{"type":["number","null"],"example":"0.00"},"gross_outstanding_balance":{"type":["number","null"],"example":"790.20"},"net_outstanding_balance":{"type":["number","null"],"example":"0.00"},"net_amount":{"type":"number","example":"4013.35"}}},"participant_category":{"type":"array","description":"Pricing for one or more participant category(s).","items":{"type":"object","properties":{"qualifier_info":{"type":["string","null"],"description":"A specific type of age and/or group qualifier, such as `adult`.","example":"adult"},"price":{"type":"object","description":"Pricing for the specified participant category information.Base price and taxes associated with the tour and/or activity.","properties":{"currency_code":{"type":"string","description":"An ISO 4217 (3) alpha character code that specifies a monetary unit.","example":"AUD"},"amount":{"type":["null","number"],"description":"A monetary amount.","example":"1195.00"},"full":{"type":["number","null"],"example":"1195.00"},"tax_inclusive":{"type":"boolean","description":"If TRUE, taxes are included in this charge.","example":"true"},"tax_amounts":{"type":"array","description":"A collection of one or more taxes associated with a specific charge.","items":{"type":"object","properties":{"tax_amount":{"type":"object","description":"Detailed information on one specific tax associated with a specific charge","properties":{"total":{"type":"number","description":"The total amount of the tax.","example":"790.20"}}}}}}}}}}}}},"commission_info":{"type":"object","description":"Commission information.Contains details pertaining to commissions.","properties":{"currency_code":{"type":"string","example":"AUD"},"commission_payable_amount":{"type":["null","number"],"description":"The amount of commission to be paid.","example":"412.2"},"tax_amount":{"type":["number","null"],"example":"0"}}},"supplier_operator":{"type":"object","description":"Information about the supplier/ operator of the tour/ activity.","properties":{"name":{"type":"string","description":"Company name information. Identifies a company by name.","example":"COSMOS"},"operator_ind":{"type":"boolean","description":"","example":"true"}}},"payment_info":{"type":"array","description":"Payment details that may be associated with an individual participant, a participant category and/or a group.","items":{"type":"object","properties":{"amount":{"type":["null","number"],"description":"A monetary amount.","example":"75"},"currency_code":{"type":["null","string"],"description":"An ISO 4217 (3) alpha character code that specifies a monetary unit.","example":"USD"},"participant_id":{"type":["string","null"],"description":"A unique identifier for a known participant that may be referenced elsewhere in this message.","example":"1"},"credit_card_fee":{"type":["number","null"],"example":"0.0000"},"commission":{"type":["number","null"],"example":"0.0"},"payment_status":{"type":["string","null"],"example":"Authorised"},"payment_method":{"type":["string","null"],"example":"creditAgreement, creditCard"},"description":{"type":["string","null"],"description":"A description of the charge.","example":"Deposit"},"payment_due_date":{"type":["string","null"],"format":"date","example":"2020-12-24"},"payment_identifier":{"type":["string","null"],"example":"1B814FFF-6621-30FB-ABE2-E184FE7B13FE"},"date_made":{"type":["string","null"],"format":"date-time","example":"2020-04-07T17:05:29+01:00"},"net_gross":{"type":["string","null"],"example":"Nett Payment"},"detail":{"type":"object","description":"Detailed information for the payment form.","properties":{"payment_transaction_type_code":{"type":["string","null"],"description":"This is used to indicate either a charge, reserve (deposit) or refund.","example":"refund"}}}}}},"extra":{"type":"array","description":"Extra amenities that were requested and/or reserved.","items":{"type":"object","properties":{"name":{"type":"string","description":"The extra amenity name.","example":"Arrival Transfer Nice Airport to Hotel"},"status":{"type":"string","example":"confirmed"},"type":{"type":"string","example":"miscellaneous"},"quantity":{"type":"integer","description":"The quantity of this extra required.","example":"2"},"other_code":{"type":["string","null"],"description":"The trading partner code that uniquely identifies the extra and is associated with the supplier code.","example":"91075"},"start_date":{"type":["string","null"],"format":"date","example":"2021-03-13"},"end_date":{"type":["string","null"],"format":"date","example":"2021-03-13"},"pricing":{"type":"object","description":"Summary and detailed pricing.","properties":{"summary":{"type":"object","description":"Summary pricing that is not associated with a participant category and/or group.Base price and taxes associated with the tour and/or activity.","properties":{"amount":{"type":"number","description":"A monetary amount.","example":"4390.00"},"net_amount":{"type":"number","description":"The monetary net amount.","example":"4390.00"},"commission":{"type":["number","null"],"example":"376.65"}}}}}}}},"discount":{"type":"array","description":"Promotion code and discount program information that may be associated with an individual participant, a participant category and/or a group.","items":{"type":"object","properties":{"discount_program":{"type":"object","description":"Discount program details.","properties":{"detail":{"type":"object","description":"Details about a discount program.","properties":{"program_id":{"type":["string","null"],"description":"A unique ID for this program that may be referenced elsewhere in this message.","example":"traveltalk"},"name":{"type":["string","null"],"description":"The name of a discount program, e.g. 'Day Pass' or 'Gold Card'.","example":"Travel Talk"}}},"amount":{"type":["null","number"],"example":"100"},"quantity":{"type":["integer","null"],"example":"2"},"percentage":{"type":["number","null"],"example":"0.0"}}},"participant_id":{"type":["string","null"],"description":"A unique identifier for a known participant that may be referenced elsewhere in this message.","example":"1"},"promotion":{"type":"object","description":"Code for promotional pricing.","properties":{"code":{"type":["string","null"],"description":"A promotion code.","example":""}}}}}},"itinerary":{"type":["array","null"],"items":{"type":"object","description":"An item of package itinerary - typically a flight, accommodation or car rental arrangement.","properties":{"start":{"type":"object","properties":{"city_name":{"type":["string","null"],"example":"Athens"},"city_id":{"type":["integer","null"],"example":"2385"},"country_name":{"type":["string","null"],"example":"Greece"},"country_code":{"type":["string","null"],"example":"GR"}}},"end":{"type":"object","properties":{"city_name":{"type":["string","null"],"example":"Athens"},"city_id":{"type":["integer","null"],"example":"2385"},"country_name":{"type":["string","null"],"example":"Greece"},"country_code":{"type":["string","null"],"example":"GR"}}}}}},"agent":{"type":["object","null"],"properties":{"email":{"type":["string","null"],"example":"booking@tourradar.com"},"buying_agent_name":{"type":["string","null"],"example":"Tour Radar - Vienna"},"travel_consultant_first_name":{"type":["string","null"],"example":"Richard"},"travel_consultant_surname":{"type":["string","null"],"example":"Welch"},"app_id":{"type":["string","null"],"example":"82b6dd76-8199-4bc9-8381-e05beebf23de"}}}}}}},"TourDeparture":{"type":"object","properties":{"id":{"type":"integer","description":"Identifier of the departure date (must be used for price calculation and booking creation).","example":740389663},"date":{"type":"string","description":"Date of the departure, in the format `YYYY-MM-DD`.","example":"2024-03-24"},"departure_type":{"type":"string","description":"Type of departure.","enum":["guaranteed","scheduled","request"],"example":"guaranteed"},"is_instant_confirmable":{"type":"boolean","description":"If true, bookings related to this departure can be instantly confirmed by the operator.","example":true},"availability":{"type":"integer","description":"Availability.","example":5},"guide_languages":{"type":"array","description":"List of languages this tour is offered in (for their meaning, see **[/taxonomy/languages](#tag/Taxonomy/paths/~1v1~1taxonomy~1languages/get]**).","items":{"type":"integer","example":[1]}},"links":{"$ref":"#/components/schemas/ToursLinks"},"prices":{"type":"object","description":"Pricing information.","properties":{"currency":{"type":"string","description":"Currency code for the reported prices.","example":"USD"},"price_base":{"type":"number","description":"Base price of the tour, also referenced as brochure price.","example":2990},"price_addons":{"type":"number","description":"Sum of the mandatory addons that the passenger will have to pay (both upfront and local payments).","example":180},"price_promotion":{"type":"number","description":"Discounted price, or base price minus the promotion.","example":2145},"price_total":{"type":"number","description":"Final sale price, composed by the base price, minus the applied promotion, plus the mandatory local and upfront addons.","example":2325},"price_total_upfront":{"type":"number","description":"Final sale price, composed by the base price, minus the applied promotion, plus the upfront addons.","example":2145},"promotion":{"$ref":"#/components/schemas/ToursDeparturePromotion"},"based_on":{"type":["string","null"],"description":"If available, the type of accommodation that the base price refers to.","example":"Base price"},"mandatory_addons":{"type":"array","description":"List of the mandatory addons (extra price elements).","items":{"$ref":"#/components/schemas/TourDepartureMandatoryAddon"}},"payment_schedule":{"type":"object","description":"Defines how the payment for the tour must be performed (deposit, pay by installments, final payment date).","properties":{"deposit":{"type":["number","null"],"description":"The amount that must be paid as deposit. If no deposit is required for this tour, the value will be `null`.","example":214.5},"pay_by_installments":{"type":"boolean","description":"Indicates if pay by installments is available for this tour.","example":false},"final_payment_date":{"type":["null","string"],"description":"Date by which the price must be paid in full.","example":"2024-03-24"}}},"accommodations":{"type":"array","description":"Accommodation options available for this tour.","items":{"type":"object","properties":{"id":{"type":"integer","description":"Identifier of the accommodation option in the TourRadar system.","example":309880},"name":{"type":"string","description":"Name of the accommodation option.","example":"Base price"},"description":{"type":"string","description":"Description of the accommodation option.","example":"Base price"},"payment_type":{"type":["string","null"],"enum":["upfront","local"],"description":"The payment type (upfront or local).","example":"upfront"},"beds_number":{"type":["integer","null"],"description":"Number of beds.","example":2},"is_shared":{"type":["boolean","null"],"description":"If true, this accommodation is shared with other participants of the tour.","example":false},"value":{"type":"integer","description":"Base price of the accommodation option.","example":2990},"price_tiers":{"type":"array","description":"Detailed information of all the pricing options for this accommodation.","items":{"type":"object","properties":{"is_default":{"type":"boolean","description":"If true, this is the default price tier (used to calculate the base price).","example":true},"price_category_id":{"type":"integer","description":"Identifier of the passenger category this price refers to (for example: adult, child). To retrieve the possible identifiers, use the **[/tours/{tourId}/prices](#tag/Pricing-and-Availability/paths/~1v1~1tours~1{tourId}~1prices/get)** endpoint.","example":4},"pax_min":{"type":["integer","null"],"description":"Minimum number of passengers required for this price tier.","example":2},"pax_max":{"type":["integer","null"],"description":"Maximum number of passengers allowed for this price tier.","example":4},"value":{"type":"number","description":"Price for this item with this pricing option.","example":2990},"local_currency":{"type":["null","string"],"description":"For local payments, the currency this payment must be executed in.","example":"USD"},"local_value":{"type":["null","number"],"description":"The price of the accommodation option in the local currency.","example":2990}}}},"pax_restriction":{"type":["number","null"],"description":"Maximum pax number to apply this promotion. If null - no limit.","example":10},"code":{"type":["string","null"],"description":"Code of the addon.","example":"1267"}}}},"optional_extras":{"type":"array","description":"List of optional extra items that can be booked together with the tour.","items":{"$ref":"#/components/schemas/OptionalExtraItem"}},"partner_info":{"type":["object","null"],"properties":{"calculation_base":{"type":["null","string"],"description":"Calculation base.","example":"accommodation"},"contract_type":{"type":"string","description":"Contract type.","example":"marketplace"},"commission_rate":{"type":"number","description":"Commission rate of the partner.","example":0},"commission_value":{"type":"number","description":"Commission value of the partner.","example":0},"booking_fee_rate":{"type":"number","description":"Booking fee rate of the partner.","example":0},"booking_fee_value":{"type":"number","description":"Booking fee value of the partner.","example":0}}}}}}},"Partner":{"type":"object","required":["id","name","status","scopes"],"properties":{"id":{"type":"string","description":"Partner ID","example":"4d353262-f2e8-4de6-8585-9e813e187c60"},"name":{"type":"string","description":"Partner name","example":"TourRadar GmbH"},"status":{"enum":["active","inactive"],"description":"Status of partner","example":"inactive"},"role":{"type":"string","description":"Partner role","example":"api"},"scopes":{"type":"array","description":"When partner.role === custom, list of allowed partner scopes","items":{"type":"string","description":"Scope name","example":"com.tourradar.tours/read"}},"notes":{"type":"string","description":"Internal notes about partner","example":"Some note"},"attributes":{"type":"array","description":"List of partner attributes","items":{"type":"object","description":"Attribute representation","properties":{"name":{"type":"string","description":"Attribute name","example":"registration_completed"},"value":{"type":["string","number","boolean"],"description":"Attribute value","example":true}}}},"terms_approved":{"type":"boolean","description":"True, if partner approved terms & conditions","example":true},"payout_terms":{"type":"object","description":"The commission payout terms","properties":{"terms_days":{"type":"integer","description":"Describe margin days when payout will be made","example":-5},"base_date":{"enum":["tour_start_date","tour_end_date"],"description":"Describe when commission will be payout","example":"tour_end_date"}}},"usage_plan":{"type":"string","description":"Partner usage plan id","example":"7ww3b6"}}},"PartnerDocsEndpoints":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string","description":"API endpoint path","example":"/v1/bookings/{operator}/{bookingCode}"},"methods":{"type":"array","description":"List of available API Methods","items":{"type":"object","properties":{"method":{"enum":["GET","POST","PUT","PATCH","OPTIONS","DELETE"],"description":"API Method","example":"GET"},"allowed":{"type":"boolean","description":"If true, partner is allowed to see documentation about this method","example":true},"summary":{"type":"string","description":"Short summary about endpoint","example":"Get information about booking"}}}}}}},"Tour":{"type":"object","properties":{"tour_id":{"type":"integer","description":"Unique identifier for the tour in the TourRadar system (please note that this is different from the operator code).","example":14263},"locale":{"type":"string","description":"Language locale the content is provided, default is `en_US` (English).","example":"en_US"},"codes":{"type":"array","description":"Operator codes for the tour. Note that some operators offer the same tours in a number of variants (usually for different accommodation options), but TourRadar handles them as a single tour. For this reason, it's possible that more than one code refers to this tour.","items":{"type":"string","example":"26"}},"language":{"type":"string","description":"Language code the content is provided, default is `en` (English).","example":"en"},"tour_name":{"type":"string","description":"Name of the tour. Note that tour names are sometimes adjusted by TourRadar, and might not exactly match the name provided by the operator.","example":"Europe Escape - 12 Days"},"is_active":{"type":"boolean","description":"Determines if the tour is currently active, e.g. if it has departure dates that can be booked. Note: inactive tours are never returned by searching, but they could have existing bookings, so it's possible to retrieve them directly by ID.","example":"true"},"description":{"type":["null","string"],"description":"Description of the tour, providing a summary of the itinerary and the key important selling points for the tour.","example":"This is the flagship tour that started it all for Expat Explore! Journey to 8 of Europe's most popular countries. Start off by getting to know the Italian way of life in Rome and the romantic Venice. Explore the gem that is Paris, and meander through the countryside of France. Cross borders to the heart of the Swiss Alps and see castle-lined riverbanks in Germany’s Rhine Valley. Explore the vibrant streets and beautiful canals of Amsterdam. There’s so much in store for you! Please note: there are changes to the itinerary for 2021 departures - see the itinerary and contact us for info"},"tour_length_days":{"type":"integer","description":"Length of the tour, expressed in number of days.","example":12},"is_instant_confirmable":{"type":"boolean","description":"If true, bookings related to this tour can be instantly confirmed by the operator.","example":true},"guide_languages":{"type":["array","null"],"description":"List of languages this tour is offered in (for their meaning, see **[/taxonomy/languages](#tag/Taxonomy/paths/~1v1~1taxonomy~1languages/get)**).","items":{"type":"integer"},"example":[1]},"start_point":{"type":"object","description":"Information about the starting point of the tour (e.g. pickup point), if available.","properties":{"latitude":{"type":["null","number"],"description":"Latitude of the location where the tour will start.","example":"41.893060"},"longitude":{"type":["null","number"],"description":"Longitude of the location where the tour will start.","example":"12.482780"},"name":{"type":"string","description":"Name of the location where the tour will start.","example":"Hotel in Rome"},"address":{"type":"string","description":"Address of the location where the tour will start.","example":"Roma, Rome, Italy"},"time":{"type":"string","description":"Time of the day when the tour will start.","example":"10:00"}}},"end_point":{"type":"object","description":"Information about the ending point of the tour (e.g. drop off point), if available.","properties":{"latitude":{"type":["null","number"],"description":"Latitude of the location where the tour will end.","example":"41.893060"},"longitude":{"type":["null","number"],"description":"Longitude of the location where the tour will end.","example":"12.482780"},"name":{"type":"string","description":"Name of the location where the tour will end.","example":"Hotel in Rome"},"address":{"type":"string","description":"Address of the location where the tour will end.","example":"Roma, Rome, Italy"},"time":{"type":"string","description":"Time of the day when the tour will end.","example":"10:00"}}},"budget":{"type":["string","null"],"description":"A market term that defines the price category of the tour.","enum":["budget","flexible","comfort","luxury"],"example":"comfort"},"max_group_size":{"type":"integer","description":"Maximum number of passengers allowed on the tour.","example":51},"operator":{"type":"object","properties":{"id":{"type":"integer","description":"Unique identifier for the tour operator in the TourRadar system.","example":"1170"},"name":{"type":"string","description":"Name of the tour operator.","example":"Expat Explore Travel"}}},"links":{"$ref":"#/components/schemas/ToursLinks"},"prices":{"$ref":"#/components/schemas/TourPrice"},"itinerary":{"$ref":"#/components/schemas/TourItinerary"},"start_city":{"description":"The city where the tour starts.","type":"object","properties":{"location_id":{"type":"integer","description":"Unique identifier for the city in the TourRadar system.","example":1938},"city_name":{"type":"string","description":"Name of the city.","example":"Rome"},"country_code":{"type":"string","description":"ISO code for the country where the city is located.","example":"IT"},"latitude":{"type":"number","description":"Geographic latitude.","example":41.901766},"longitude":{"type":"number","description":"Geographic longitude.","example":12.496777}}},"end_city":{"description":"The city where the tour ends.","type":"object","properties":{"location_id":{"type":"integer","description":"Unique identifier for the city in the TourRadar system.","example":1938},"city_name":{"type":"string","description":"Name of the city.","example":"Rome"},"country_code":{"type":"string","description":"ISO code for the country where the city is located.","example":"IT"},"latitude":{"type":"number","description":"Geographic latitude.","example":41.901766},"longitude":{"type":"number","description":"Geographic longitude.","example":12.496777}}},"destinations":{"$ref":"#/components/schemas/TourDestinations"},"images":{"description":"An array of images for the tour. This is limited to 3 entries, plus the image of the tour map.","type":"array","items":{"type":"object","properties":{"url":{"type":"string","description":"URL for the image on the TourRadar CDN.","example":"https://cdn.tourradar.com/s3/tour/1500x800/14263_5df8b6cf672a0.jpg"},"thumbnail_url":{"type":"string","description":"URL for the image thumbnail on the TourRadar CDN.","example":"https://cdn.tourradar.com/s3/tour/200x200/14263_5df8b6cf672a0.jpg"},"type":{"type":"string","enum":["image","map"],"description":"Type of image, can be `image` for regular tour images, or `map` for an auto-generated image that shows the tour itinerary on a geographical map."}}}},"tour_types":{"type":"array","description":"List of the types this tour is categorised under.","items":{"type":"object","properties":{"type_id":{"type":"integer","description":"Unique identifier for the tour type in the TourRadar system. For a list of all values, use the **[/taxonomy/tours/types](#tag/Taxonomy/paths/~1v1~1taxonomy~1tours~1types/get)** endpoint.","example":368},"type_name":{"type":"string","description":"Name of the tour type.","example":"Private"},"group_id":{"type":"integer","description":"Unique identifier for the tour type group in the TourRadar system. For a list of all values, use the **[/taxonomy/tours/types](#tag/Taxonomy/paths/~1v1~1taxonomy~1tours~1types/get)** endpoint.","example":1},"group_name":{"type":"string","description":"Name of the tour type group.","example":"Group"}}}},"services":{"type":"object","description":"This section describes the various services provided with the tour (accommodation, food, and so on).","properties":{"accommodation":{"type":"array","description":"Information about the nature of the accommodation provided with the tour.","items":{"type":"object","properties":{"is_included":{"type":"boolean","description":"Flag to determine if the accommodation is included.","example":true},"description":{"type":"string","description":"Description of the accommodation components included in the tour.","example":"11 nights' accommodation in twin rooms with private en-suite facilities. Single travellers have the option to pay a single supplement to ensure a private room"},"accommodations":{"type":"array","description":"A detailed list of the accommodation options included in the tour.","items":{"type":"object","properties":{"type":{"type":"string","description":"Type of accommodation, for example: hotel, hostel, cabin, camping, etc."},"nights":{"type":["number","null"],"description":"If available, the number of nights spent in this accommodation option."}}}},"ship_rooms":{"type":"array","description":"For cruise tours, the list of available cabin types offered.","items":{"type":"object","properties":{"ship_name":{"type":"string","description":"Name of the ship.","example":"Avalon Visionary"},"category":{"type":["null","string"],"description":"Category of the cabins.","example":"D, E"},"type":{"type":["null","string"],"description":"Description of the cabin type.","example":"Avalon Deluxe Stateroom"}}}}}}},"flights":{"type":"array","description":"Information about the inclusion of flights with the tour.","items":{"type":"object","properties":{"is_included":{"type":"boolean","description":"Flag to determine if flights are included.","example":false},"description":{"type":"string","description":"Description of the flights included.","example":""}}}},"guide":{"type":"array","description":"Information about the tour guide.","items":{"type":"object","properties":{"is_included":{"type":"boolean","description":"Flag to determine if the guide is included.","example":true},"description":{"type":"string","description":"Description of the included tour guide services.","example":"Services of your Expat tour leader, who will be on hand with advice and tips to ensure that you get the most from your trip"}}}},"insurance":{"type":"array","description":"Information about the travel insurance.","items":{"type":"object","properties":{"is_included":{"type":"boolean","description":"Flag to determine if travel insurance is included.","example":false},"description":{"type":"string","description":"Description of the included insurance services.","example":""}}}},"meals":{"type":"array","description":"Information about the food services provided with the tour.","items":{"type":"object","properties":{"is_included":{"type":"boolean","description":"Flag to determine if meals are included.","example":true},"description":{"type":"string","description":"Description of the included meals.","example":"11 breakfasts and 6 dinners"},"food_options":{"type":"array","description":"Special food options available, for example: vegetarian, halal, kosher, etc.","items":{"type":"string","example":"vegetarian"}}}}},"optional":{"type":"array","description":"Information about additional optional services that the tour offers.","items":{"type":"object","properties":{"is_included":{"type":"boolean","description":"Flag to determine optional inclusions.","example":false},"description":{"type":"string","description":"Description of available options for the tour.","example":"On Tour Excursions: All optional excursions are booked on tour and paid in cash to your tour leader, unless stated otherwise. Please note, certain optional excursions are subject to availability and could change as a result."}}}},"others":{"type":"array","description":"Information about other services.","items":{"type":"object","properties":{"is_included":{"type":"boolean","description":"Flag to determine other inclusions.","example":true},"description":{"type":"string","description":"Description of other included services.","example":"All taxes and fees.19 Experiences (including guided walking tours, orientation walks, driving tours of cities plus other exciting experiences).Free Expat Explore tour souvenir – a memorable gift of your once in a lifetime trip"}}}},"transport":{"type":"array","description":"Information about means of transportation included in the tour.","items":{"type":"object","properties":{"is_included":{"type":"boolean","description":"Flag to determine if transport services are included.","example":true},"description":{"type":"string","description":"Description of the transport services.","example":"Modern air conditioned coach with reclining seats, TV for showing DVDs, and toilet. Any public transport used as part of the tour (excludes free days)"},"ships":{"type":"array","description":"For cruise tours, this will identify the ship (or ships) used as means of transportation.","items":{"type":"object","properties":{"name":{"type":"string","description":"Name of the ship.","example":"Avalon Visionary"},"description":{"type":"string","description":"A short description of the ship.","example":"Take in the view like never before on the Avalon Visionary. You'll enjoy the intimate setting achieved with two full decks of suites featuring Wall-to-Wall Panoramic Windows."}}}}}}},"hygieneprotocol":{"type":"array","description":"Information about the hygiene protocol that the tour operator will observe. This will include vaccination requirements, if any.","items":{"properties":{"is_included":{"type":"boolean","description":"Flag to determine if hygiene protocol is included.","example":true},"description":{"type":"string","description":"Description of the hygiene protocol.","example":"You must be fully vaccinated to travel with us. Your final vaccine dose must have been administered a minimum of 15 days prior to the start of the trip. This is your second dose of Pfizer, Moderna, or Astra Zeneca, or single dose of Johnson & Johnson."}}}}}},"ratings":{"type":"object","description":"Ratings are collected by TourRadar from customers, after the tour is completed, and in some occasions provided by the operator.","properties":{"overall":{"type":["null","number"],"description":"Rating out of 5 for the overall tour.","example":4.4},"itinerary":{"type":["null","number"],"description":"Rating out of 5 for the itinerary of the tour.","example":4.5},"transport":{"type":["null","number"],"description":"Rating out of 5 for included transport services.","example":4.7},"food":{"type":["null","number"],"description":"Rating out of 5 for meals included in the tour.","example":4},"guide":{"type":["null","number"],"description":"Rating out of 5 for the guiding services of the tour.","example":4.8},"accommodation":{"type":["null","number"],"description":"Rating out of 5 for the included accommodation.","example":4},"operator":{"type":["null","number"],"description":"Rating out of 5 for the tour operator.","example":4.4}}},"reviews_count":{"type":"integer","description":"Number of reviews related to this tour.","example":23},"age_range":{"type":"object","description":"Age limits for this tour.","properties":{"strict":{"type":["null","object"],"description":"This is the operator restriction for passengers on the tour (passengers outside of this age range will not be accepted).","properties":{"min_age":{"type":"integer","description":"Minimum age limit for passengers on the tour.","example":15},"max_age":{"type":"integer","description":"Maximum age limit for passengers on the tour.","example":99}}},"recommended":{"type":["null","object"],"description":"This is the operator recommended age range, based on the activities part of the tour.","properties":{"min_age":{"type":["integer","null"],"description":"Minimum age limit for passengers on the tour.","example":18},"max_age":{"type":["integer","null"],"description":"Maximum age limit for passengers on the tour.","example":65}}}}},"has_machine_translated_content":{"type":["null","boolean"],"description":"This flag indicates if the content in the current language was translated automatically (using a Machine Translation service), or is provided by the operator. It is recommended to display a warning in case content is automatically translated, and if the content is included on a public website, the page should be marked as `noindex` for search engines.","example":"false"},"departure_months":{"type":"array","description":"List of available departure by month.","items":{"type":"object","properties":{"year":{"type":"integer","description":"Year of departure date.","example":2025},"month":{"type":"integer","description":"Month of departure date. 1 is January ... 12 is December.","example":1}}}}}},"TaxonomyDestinationPagination":{"required":["current_page","items"],"type":"object","properties":{"current_page":{"type":"integer","description":"Current page number"},"items":{"type":"array","items":{"$ref":"#/components/schemas/TaxonomyDestination"}},"next_page":{"type":"integer","description":"If this attribute exists, then another page is available. To get more results, repeat the request with the number specified in the `page` parameter. If this attribute is not part of the response, then the last page has been reached."}}},"PartnerRegisterOutput":{"type":"object","required":["partner","user","resend_token"],"properties":{"partner":{"$ref":"#/components/schemas/Partner"},"user":{"$ref":"#/components/schemas/PartnerUser"},"resend_token":{"type":"string","description":"Token to be able call resend email endpoint","example":"GYW9qfFPQGNy9JtF!+ssa="}}},"PartnerAdminFindDomain":{"type":"object","properties":{"partner":{"$ref":"#/components/schemas/Partner"},"customizations":{"$ref":"#/components/schemas/PartnersCustomizations"},"related_partners":{"$ref":"#/components/schemas/PartnersRelatedPartners"},"domain":{"type":"object","properties":{"domain":{"type":"string","description":"The domain url","example":"llama-travel.whitelabel.tourradar.com"},"type":{"type":"string","description":"The type of the domain","enum":["whitelabel","agent-portal","shop"],"example":"whitelabel"}}}}},"PartnersCustomizations":{"type":"object","description":"Partner branding customizations","properties":{"agency_name":{"type":"string","description":"Agency name"},"domain":{"type":"string","description":"Domain for shop/whitelabel"},"agents_domain":{"type":"string","description":"Agent portal domain"},"footer":{"type":"string","description":"Footer HTML code"},"gtag":{"type":"string","description":"Google tag ID"},"header":{"type":"string","description":"Header HTML code"},"header_mode":{"type":"string","description":"The header mode to be displayed. direct - code will be placed directly to website, isolation - code will be placed in iframe","enum":["direct","isolation"],"example":"isolation"},"header_logo":{"type":"object","description":"The logo to be displayed in the header.","properties":{"url":{"type":"string","description":"The URL of the image to be displayed.","example":"http://www.example.com/image.png"},"width":{"type":"number","description":"The width of the image in pixels.","example":256},"height":{"type":"number","description":"The height of the image in pixels.","example":144}}},"email_logo":{"type":"object","description":"The logo to be displayed in the header.","properties":{"url":{"type":"string","description":"The URL of the image to be displayed.","example":"http://www.example.com/image.png"},"width":{"type":"number","description":"The width of the image in pixels.","example":256},"height":{"type":"number","description":"The height of the image in pixels.","example":144}}},"homepage":{"type":"integer","description":"CLP page id to homepage"},"question_page":{"type":"integer","description":"CLP page id to question page"},"not_found_page":{"type":"integer","description":"CLP page id to 404 not found page"},"tdp_page":{"type":"integer","description":"CLP page id to Tour Detail Page"},"retargeting":{"type":"boolean","description":"Determine if partner has whitelabel domain or not","example":true},"support":{"type":"boolean","description":"If true, on partner page will be enabled customer support links","example":true},"login":{"type":"boolean","description":"If true, travellers will be able to login","example":true},"bnpHeaderColor":{"type":"string","description":"For white-labeling purposes, enable the option to apply the brand color to the header background of the ‘Book Now’ page."},"color":{"type":"string","description":"Customize the color of your whitelabel pages branding"},"disableInsuranceOption":{"type":"boolean","description":"By default agents and their customers are able to purchase insurance on bookings.","example":true},"disableCoBrandedTdpBookability":{"type":"boolean","description":"By default, when you share Co-branded TDP, the customer will be able to make a booking from this page.","example":true},"whitelabeled_bcp":{"type":"boolean","description":"By default customer conversation pages are not whitelabeled.","example":true},"access_filter":{"type":"object","description":"More information https://tourradar.atlassian.net/wiki/spaces/B2b/pages/3493363825/AccessLevel+filter+schema"},"operator_id":{"type":"integer","description":"Connected Operator ID"},"additional_operators_id":{"type":"array","items":{"type":"integer","description":"Additional connected Operator IDs"}},"direct_payment_info":{"type":"string","description":"The payment terms and links entered here will be displayed on the booking confirmation/success page for operator shop partners who have enabled direct payment contract type."},"bcp_direct_payment_info":{"type":"string","description":"The payment terms and links entered here will be displayed on the BCP for bookings of shop direct payment type."},"allow_enquiry_create_op_dash":{"type":"boolean","description":"Allow enquiry creation op-dash","example":true},"allow_bnp_help_and_share":{"type":"boolean","description":"Allow Book now page help & share feature","example":true},"bnp_header_background_color":{"type":"string","description":"Customize the color of your whitelabel bnp header"},"has_customer_data_access":{"type":"boolean","description":"Has access to customer data","example":true},"bnp_terms_prefix":{"type":"string","description":"Text that will be prepended to the BNP standard T&C"},"payment_confirmation_page_info":{"type":"string","description":"Additional information that will be displayed on the payment confirmation page."}}},"PartnersRelatedUsers":{"type":"array","items":{"type":"array","items":{"$ref":"#/components/schemas/PartnerUser"}}},"ToursList":{"type":"object","properties":{"links":{"$ref":"#/components/schemas/ToursLinks"},"budget":{"type":["string","null"],"description":"A market term that defines the price category of the tour.","enum":["budget","flexible","comfort","luxury"],"example":"comfort"},"images":{"description":"An array of images for the tour.","type":"array","items":{"type":"object","properties":{"url":{"type":"string","description":"URL for the image on the TourRadar CDN.","example":"https://cdn.tourradar.com/s3/tour/1500x800/14263_5df8b6cf672a0.jpg"},"thumbnail_url":{"type":"string","description":"URL for the image thumbnail on the TourRadar CDN.","example":"https://cdn.tourradar.com/s3/tour/200x200/14263_5df8b6cf672a0.jpg"}}}},"locale":{"type":"string","description":"Language locale the content is provided, default is `en_US` (English).","example":"en_US"},"prices":{"$ref":"#/components/schemas/TourPrice"},"ratings":{"type":"object","description":"Ratings are collected by TourRadar from customers, after the tour is completed, and in some occasions provided by the operator.","properties":{"overall":{"type":"number","description":"Rating out of 5 for the overall tour.","example":4.4},"itinerary":{"type":"number","description":"Rating out of 5 for the itinerary of the tour.","example":4.5},"transport":{"type":"number","description":"Rating out of 5 for included transport services.","example":4.7},"food":{"type":"number","description":"Rating out of 5 for meals included in the tour.","example":4},"guide":{"type":"number","description":"Rating out of 5 for the guiding services of the tour.","example":4.8},"accommodation":{"type":"number","description":"Rating out of 5 for the included accommodation.","example":4},"operator":{"type":"number","description":"Rating out of 5 for the tour operator.","example":4.4}}},"tour_id":{"type":"integer","description":"Unique identifier for the tour in the TourRadar system (please note that this is different from the operator code).","example":14263},"end_city":{"$ref":"#/components/schemas/TourCity"},"language":{"type":"string","description":"Language code the content is provided, default is `en` (English).","example":"en"},"operator":{"type":"object","properties":{"id":{"type":"integer","description":"Unique identifier for the tour operator in the TourRadar system.","example":1170},"name":{"type":"string","description":"Name of the tour operator.","example":"Expat Explore Travel"}}},"is_active":{"type":"boolean","description":"Determines if the tour is currently active, e.g. if it has departure dates that can be booked. Note: inactive tours are never returned by searching, but they could have existing bookings, so it's possible to retrieve them directly by ID.","example":"true"},"tour_name":{"type":"string","description":"Name of the tour. Note that tour names are sometimes adjusted by TourRadar, and might not exactly match the name provided by the operator.","example":"Europe Escape - 12 Days"},"start_city":{"$ref":"#/components/schemas/TourCity"},"tour_types":{"type":"array","description":"List of the types this tour is categorised under.","items":{"type":"object","properties":{"type_id":{"type":"integer","description":"Unique identifier for the tour type in the TourRadar system. For a list of all values, use the **[/taxonomy/tours/types](#tag/Taxonomy/paths/~1v1~1taxonomy~1tours~1types/get)** endpoint.","example":368},"type_name":{"type":"string","description":"Name of the tour type.","example":"Private"},"group_id":{"type":"integer","description":"Unique identifier for the tour type group in the TourRadar system. For a list of all values, use the **[/taxonomy/tours/types](#tag/Taxonomy/paths/~1v1~1taxonomy~1tours~1types/get)** endpoint.","example":1},"group_name":{"type":"string","description":"Name of the tour type group.","example":"Group"}}}},"description":{"type":["null","string"],"description":"Description of the tour, providing a summary of the itinerary and the key important selling points for the tour.","example":"This is the flagship tour that started it all for Expat Explore! Journey to 8 of Europe's most popular countries. Start off by getting to know the Italian way of life in Rome and the romantic Venice. Explore the gem that is Paris, and meander through the countryside of France. Cross borders to the heart of the Swiss Alps and see castle-lined riverbanks in Germany’s Rhine Valley. Explore the vibrant streets and beautiful canals of Amsterdam. There’s so much in store for you! Please note: there are changes to the itinerary for 2021 departures - see the itinerary and contact us for info"},"destinations":{"$ref":"#/components/schemas/TourDestinations"},"max_group_size":{"type":"integer","description":"Maximum number of passengers allowed on the tour.","example":51},"tour_length_days":{"type":"integer","description":"Length of the tour, expressed in number of days.","example":12},"is_instant_confirmable":{"type":"boolean","description":"If true, bookings related to this tour can be instantly confirmed by the operator.","example":true},"age_range":{"type":"object","description":"Age limits for this tour.","properties":{"strict":{"type":"object","description":"This is the operator restriction for passengers on the tour (passengers outside of this age range will not be accepted).","properties":{"min_age":{"type":"integer","description":"Minimum age limit for passengers on the tour.","example":15},"max_age":{"type":"integer","description":"Maximum age limit for passengers on the tour.","example":99}}},"recommended":{"type":"object","description":"This is the operator recommended age range, based on the activities part of the tour.","properties":{"min_age":{"type":["integer","null"],"description":"Minimum age limit for passengers on the tour.","example":18},"max_age":{"type":["integer","null"],"description":"Maximum age limit for passengers on the tour.","example":65}}}}}}},"Error":{"type":"object","properties":{"error":{"type":"string","description":"The error code","enum":["UNKNOWN_ERROR"]},"message":{"type":"string","description":"The error message, if available"},"context":{"type":"object","description":"Additional data relative to the error condition"},"validation_errors":{"type":"array","description":"In case of validation error, all the elements that didn't pass validation","items":{"type":"string"}}}},"TaxonomyToursTypesList":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","description":"Type ID.","example":183},"name":{"type":"string","description":"Type name.","example":"Self Drive"},"group_id":{"type":"integer","description":"Group ID.","example":2},"group_name":{"type":"string","description":"Group name.","example":"Guide Type"},"links":{"$ref":"#/components/schemas/TaxonomyLinks"}}}},"PartnerDetails":{"type":"object","properties":{"id":{"type":"string","description":"Partner ID","example":"tourradar"},"name":{"type":"string","description":"Name of partner","example":"Tourradar GMBH"},"industry":{"type":["null","string"],"enum":["travel_agent","association","travel_organiser"],"description":"Industry","example":"travel_organiser"},"address":{"type":"string","description":"Address of operator","example":"Kärntner Ring 5-7 Top 304-306"},"city":{"type":"string","description":"City of operator","example":"Vienna"},"state":{"type":"string","description":"State of operator","example":"Vienna"},"zip_code":{"type":"string","description":"Zip-code","example":"1010"},"country":{"type":"string","description":"Country of operator in ISO-2 code","example":"AT"},"currency":{"type":"string","description":"Default currency for partner","example":"EUR"},"phone_number":{"type":"string","description":"Phone number to operator","example":"+43 829-424-124"},"travel_accreditation_id":{"type":"string","description":"Travel accreditation ID","example":"IAPL9291"},"number_of_agents":{"type":["string","null"],"description":"Range of agents","example":"51-100"},"email":{"type":"string","description":"Email to operator","example":"contact@tourradar.com"},"contact_username":{"type":"string","description":"Username ID to contact","example":"9b9839999-ef9465edb982e-3892a284fa"},"travel_accreditation_code":{"enum":["ABTA","ACTA","AFTA","ASTA","CLIA","IATA","TAANZ","Other"],"description":"Travel accreditation CODE","example":"ABTA"},"travel_accreditation_code_other":{"type":"string","description":"Travel accreditation code when selected options selected is Other","example":"xyz"},"travel_accreditation_code_owner":{"type":"boolean","description":"Travel accreditation code owner","example":false},"social_media":{"type":"array","description":"List of the URLs/handlers (social media, website, ...) related to the partner","maxItems":10,"items":{"type":"object","properties":{"reference":{"type":"string","description":"URL or handler","example":"https://www.myownwebsite.com","maxLength":128},"followers":{"type":["string","null"],"description":"Number of followers","enum":["less_than_5k","between_5k_and_20k","between_20k_and_100k","more_than_100k"],"example":"more_than_100k"},"type":{"type":"string","description":"Type of URL","example":"website","maxLength":20}}}},"website_monthly_visitors":{"type":["string","null"],"description":"Website monthly visitors","enum":["less_than_50k","between_50k_and_150k","between_150k_and_300k","more_than_300k"],"example":"between_50k_and_150k"},"affiliate_company_type":{"type":["string","null"],"description":"Affiliate company type","enum":["business","individual"],"example":"individual"},"affiliate_type":{"type":["string","null"],"description":"Affiliate type","enum":["content_reviews","deals_coupons","loyalty_rewards","network","commerce_solution","media_arbitrage","cross_audience_monetization","other"],"example":"loyalty_rewards"},"hyperwallet":{"type":"object","properties":{"account_status":{"type":"string","description":"Status of the Hyperwallet account","example":"ACTIVE"},"verification_status":{"type":"string","description":"Status of the Hyperwallet KYC verification","example":"VERIFIED"},"updated_at":{"type":"string","description":"Date of the last update","example":"2020-04-24T12:00:00Z"}}},"payout":{"type":"object","properties":{"address":{"type":"string","description":"Address of operator","example":"Kärntner Ring 5-7 Top 304-306"},"city":{"type":"string","description":"City of operator","example":"Vienna"},"state":{"type":"string","description":"State of operator","example":"Vienna"},"zip_code":{"type":"string","description":"Zip-code","example":"1010"},"country":{"type":"string","description":"Country of operator in ISO-2 code","example":"AT"},"currency":{"type":"string","description":"Default currency for partner","example":"EUR"},"bank_code":{"type":"string","description":"Bank SWIFT/BIC code","example":"BREXPLPWXXX"},"iban":{"type":"string","description":"International bank account number","example":"PL 65 1500 1067 0762 0589 8586 4321"},"account_number":{"type":"string","description":"Regular bank account number. Typically, an account number can be eight or nine or even 11 digits signifier.","example":"012345678"},"account_name":{"type":"string","description":"Bank account name. The account holder's name. Usually the name of a person authorized to have an account, verifiable using specific personal information. Not required for payments","example":"Adam Smith"},"bank_name":{"type":"string","description":"Bank name","example":"mBank"},"notice_email":{"type":"string","description":"Notice email","example":"payment@tourradar.com"},"sort_code":{"type":"string","description":"Bank transit number, routing number or sort code is a 9-digit number (US), a 6-digit number (CA) or 11-digit alpha-numeric code (India - IFSC) - that's assigned to a branch of a bank that holds the account, for internal purposes","example":"ICIC0001359"}}}}},"BookingDeclineReason":{"type":["string","null"],"description":"The reason of the declination, if set.","enum":["already_booked","alt_tour_selected","another_tour_found","border_restrictions","death_in_family","departure_cancelled","duplicate_booking","employment_status","employment_status_change","family_issues","health_issue","invalid_request","on_request_cancelled","operator_error","operator_timeout","other","pax_requested_decline","pax_unfit","plans_changed","price_incorrect","price_incorrect_deal_promotion","price_incorrect_single_supplement","requirements_unmet","server_error","suspected_fraud","system_error","tour_itinerary_details_incorrect","tour_unavailable","tour_unavailable_departure_soon","tour_unavailable_fully_booked","tour_unavailable_no_date","unknown_error","visa_declined","withdrawn_tour"],"example":"operator_error"},"HoldInput":{"type":"object","properties":{"tour_id":{"type":"integer","description":"Unique identifier for the tour in the TourRadar system.","example":5113},"departure_id":{"type":"integer","description":"Unique identifier of the departure date. For a list of departure dates, use the **[/tours/{tourId}/departures](#tag/Pricing-and-Availability/paths/~1v1~1tours~1{tourId}~1departures/get)** endpoint.`","example":736283495},"currency":{"description":"Currency code for the booking. The default is `USD`.","enum":["USD","AUD","GBP","NZD","EUR","CAD"],"example":"EUR"},"email":{"description":"Email address for the lead passenger.","type":"string","example":"jane.doe@tourradar.com"},"user_country":{"description":"Identifier for the country of residence of the main passenger. Country IDs can be obtained from the **[/taxonomy/destinations/country](#tag/Taxonomy/paths/~1v1~1taxonomy~1destinations~1{type}/get)** endpoint.","type":"integer","example":139},"passengers":{"type":"array","description":"List of passengers. Each entry represents one passenger.","items":{"type":"object","properties":{"pax_number":{"type":"integer","description":"Passenger identifier, starting from 1. If the booking contains 5 passengers, the values must be from 1 to 5."},"price_category_id":{"type":"integer","description":"Price category ID retrieved from the **[/tours/{tourId}/prices](#tag/Pricing-and-Availability/paths/~1v1~1tours~1{tourId}~1prices/get)** endpoint."},"fields":{"type":"object","description":"A set of key-value pairs containing passenger information. For a list of the available and mandatory keys, use the **[/operators/{operatorId}/booking-fields](#tag/Operators/paths/~1v1~1operators~1{operator}~1booking-fields/get)** endpoint."}},"example":[{"pax_number":1,"price_category_id":1634,"fields":{"title":"Mr.","first_name":"John","last_name":"Doe","email":"john.doe@tourradar.com","phone_number":"+46 029 01920 028","date_of_birth":"11/06/1993","gender":"male","address":"Kartner Ring 5-7 Top 304-306","city":"Vienna","postal_code":"1010","state":"Vienna","country":"Austria","nationality":"Austria","pre_existing_medical_conditions":"none"}},{"pax_number":2,"price_category_id":1634,"fields":{"title":"Ms.","first_name":"Jane","last_name":"Doe","email":"jane.doe@tourradar.com","date_of_birth":"25/05/1994","nationality":"Austria","gender":"female","pre_existing_medical_conditions":"none"}}]}},"accommodations":{"type":"array","description":"Accommodation requested, and assignment to passengers.","items":{"type":"object","properties":{"id":{"type":"integer","description":"Unique identifier of the selected accommodation, taken from the **[/tours/{tourId}/departures/{departureId}](#tag/Pricing-and-Availability/paths/~1v1~1tours~1{tourId}~1departures~1{departureId}/get)** endpoint."},"passengers":{"type":"array","description":"List of `pax_number` identifiers that should be placed in the selected accommodation.","items":{"type":"integer"}}}},"example":[{"id":396410,"passengers":[1,2]}]},"optional_extras":{"type":"array","description":"Optional extras requested, and assignment to passengers.","items":{"type":"object","properties":{"id":{"type":"integer","description":"Unique identifier of an optional extra, taken from the **[/tours/{tourId}/departures/{departureId}](#tag/Pricing-and-Availability/paths/~1v1~1tours~1{tourId}~1departures~1{departureId}/get)** endpoint."},"passengers":{"type":"array","description":"List of `pax_number` identifiers for which this optional extra is being booked.","items":{"type":"integer"}}}},"example":[{"id":644520,"passengers":[1,2]}]},"partner_booking_code":{"description":"the booking code, or reference number, in your system. This will be stored with the booking, and returned with the booking detail request.","type":"string","example":"the_code_value"},"custom_data":{"description":"Additional info set by the partner when creating the booking. Up to 5 string properties can be set in it.","type":"object","example":{"custom_attribute":"custom value","custom_date":"Tuesday"}},"store_id":{"type":["string","null"],"description":"Identifier of the store, or agency, that made the booking. Note: this is only relevant for bookings made via the TourRadar Partner API.","example":"878"}},"required":["departure_id","email","passengers","user_country"]},"TourPriceCategories":{"type":"object","properties":{"price_categories":{"type":"array","description":"List of all available price categories.","items":{"type":"object","properties":{"id":{"type":"integer","description":"Identifier of the price category in the TourRadar system.","example":1633},"age_max":{"type":["integer","null"],"description":"Maximum age for passengers to qualify for this category (or null if no limit).","example":39},"age_min":{"type":["integer","null"],"description":"Minimum age for passengers to qualify for this category (or null if no limit).","example":18},"price_category_type_id":{"type":"integer","description":"Price category type id.","example":1},"external_reference":{"type":"string","description":"External reference of the category.","example":"adult"},"title":{"type":"string","description":"Title of the price category.","example":"Adult"},"description":{"type":"string","description":"Description of the price category.","example":"Adult"},"occupancy":{"type":"integer","description":"The number of seats the category requires.","example":1},"title_plural":{"type":"string","description":"Plural of the title.","example":"Adults"}}}}}},"PartnersDomainList":{"type":"array","items":{"$ref":"#/components/schemas/PartnersDomain"}},"OperatorCreateInput":{"type":"object","required":["id","name","commission_group","code","has_integration","terms_url"],"properties":{"id":{"type":"integer","description":"Operator ID","example":123},"name":{"type":"string","description":"Operator name","example":"TourRadar GmbH"},"commission_group":{"type":"integer","description":"Operator comission group","example":2},"code":{"type":"string","description":"Operator code","example":"tourradar"},"has_integration":{"type":"boolean","description":"If operator has integration","example":true},"terms_url":{"type":"string","description":"Operator url to terms and conditions","example":"https://some-terms-and-conditions/"}}},"ErrorResponse":{"type":"object","properties":{"error":{"type":"string","description":"The error code","enum":["UNKNOWN_ERROR"]},"message":{"type":"string","description":"The error message, if available"},"context":{"type":"object","description":"Additional data relative to the error condition"},"validation_errors":{"type":"array","description":"In case of validation error, all the elements that didn't pass validation","items":{"type":"string"}}}},"PartnerCreateInput":{"type":"object","required":["id","name","role","status"],"properties":{"id":{"type":"string","description":"Partner ID","example":"4d353262-f2e8-4de6-8585-9e813e187c60"},"name":{"type":"string","description":"Partner name","example":"TourRadar GmbH"},"status":{"enum":["active","inactive"],"description":"Status of partner","example":"inactive"},"role":{"type":"string","description":"Partner role","example":"api"},"notes":{"type":"string","description":"Internal notes about partner","example":"Some note"},"payout_terms":{"type":"object","description":"The commission payout terms","properties":{"terms_days":{"type":"integer","description":"Describe margin days when payout will be made","example":-5},"base_date":{"enum":["tour_start_date","tour_end_date"],"description":"Describe when commission will be payout","example":"tour_end_date"}}},"is_whitelabel":{"type":"boolean","description":"Determine if partner has whitelabel domain or not","example":true}}},"PartnerRegisterShopAgent":{"type":"object","required":["operator_id","email","captcha_token"],"properties":{"operator_id":{"type":"number","description":"Shop partner operator ID","example":"123"},"email":{"type":"string","description":"Email","example":"shop@agent.com"},"captcha_token":{"type":"string","description":"Captcha token given by reCaptcha v2","example":"5LYAsJfUJ3V5eT8mN9DZTyVCg"}}},"PartnersRegisterBranding":{"type":"object","description":"Partner register branding customizations","properties":{"partner":{"type":"object","properties":{"name":{"type":"string","description":"The name of the partner."}}},"customizations":{"type":"object","properties":{"agents_domain":{"type":"string","description":"Agent portal domain"},"header_logo":{"type":"object","description":"The logo to be displayed in the header.","properties":{"url":{"type":"string","description":"The URL of the image to be displayed.","example":"http://www.example.com/image.png"},"width":{"type":"number","description":"The width of the image in pixels.","example":256},"height":{"type":"number","description":"The height of the image in pixels.","example":144}}},"color":{"type":"string","description":"Customize the color of your whitelabel pages branding"},"terms_page":{"type":"string","description":"The URL of the terms and conditions page to be displayed in the footer."}}}}},"DefaultError401":{"type":"object","properties":{"error":{"type":"string","description":"The error code","enum":["UNAUTHORIZED"]},"message":{"type":"string","description":"The error message, if available"},"context":{"type":"object","description":"Additional data relative to the error condition"},"validation_errors":{"type":"array","description":"In case of validation error, all the elements that didn't pass validation","items":{"type":"string"}}}},"DefaultError500":{"type":"object","properties":{"error":{"type":"string","description":"The error code","enum":["UNKNOWN_ERROR"]},"message":{"type":"string","description":"The error message, if available"},"context":{"type":"object","description":"Additional data relative to the error condition"},"validation_errors":{"type":"array","description":"In case of validation error, all the elements that didn't pass validation","items":{"type":"string"}}}}},"securitySchemes":{"application":{"type":"oauth2","flows":{"clientCredentials":{"tokenUrl":"https://oauth.api.sandbox.b2b.tourradar.com/oauth2/token","scopes":{"com.tourradar.bookings/read":"Read booking information","com.tourradar.bookings/write":"Create new bookings","com.tourradar.bookings.affiliate/read":"Read booking information","com.tourradar.operators/read":"Read operators information","com.tourradar.tours/read":"Read tours informations"}}}}}}}