{ "openapi": "3.0.2", "info": { "title": "Viator Partner API", "description": "\n\n## Updates\n\n### Latest updates: \n\n| Date | Description |\n|-------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| 5 May 2026 | Added support for product option level logistics resolution via a new optional `logistics` object. |\n| 13 Feb 2025 | Added `videos` object to [/products/{product-code}](#operation/products), [/products/modified-since](#operation/productsModifiedSince), [/products/bulk](#operation/productsBulk), [/products/search](#operation/productsSearch) and [/search/freetext](#operation/searchFreeText) responses. |\n| 4 Feb 2025 | Added `AED`, `ARS`, `CLP`, `CNY`, `COP`, `FJD`, `IDR`, `ILS`, `ISK`, `KRW`, `MXN`, `MYR`, `PEN`, `PHP`, `PLN`, `RUB`, `THB`, `TRY` and `VND` as currency options in the request to [/products/search](#operation/productsSearch) and [/search/freetext](#operation/searchFreeText). \n| 11 Sep 2025 | Updated [/bookings/modified-since](#operation/bookingsModifiedSince) response with new `eventTypes` and enabled endpoint access to all partner types. \n| 01 Jul 2025 | Added [/amendment/check/{booking-reference}](#operation/amendmentCheck), [/amendment/quote](#operation/amendmentQuote) and [/amendment/amend/{quote-reference}](#operation/amendmentAmend) endpoints to [Bookings](#tag/Bookings) section \n| 27 Mar 2025 | Update [/search/freetext](#operation/searchFreeText) request section add filtering by tags for \"searchType\": \"PRODUCTS\" \n| 20 Mar 2025 | Added [/products/recommendations](#operation/productsRecommendations) to [Products](#tag/Products) section. This endpoint will provide product-to-product recommendations to users. |\n| 19 Mar 2025 | Updated endpoints [/availability/schedules/{product-code}](#operation/availabilitySchedules), [/availability/schedules/bulk](#operation/availabilitySchedulesBulk), [/availability/schedules/modified-since](#operation/availabilitySchedulesModifiedSince), [/availability/check](#operation/availabilityCheck), [/search/freetext](#operation/searchFreeText), [/products/search](#operation/productsSearch), [/bookings/cart/hold](#operation/bookingsCartHold) and [/bookings/hold](#operation/bookingsHold) as well as [Inclusions & exclusions](#section/Appendices/Inclusions-and-exclusions) with `Extra Charges` information |\n| 11 Feb 2025 | Removed `TRANSACTION_NOT_ALLOWED`, `CARD_INACTIVE` and `CARD_RESTRICTED` rejection reasons from [/bookings/cart/book](#tag/Bookings/operation/bookingsCartBook). |\n| 4 Dec 2024 | Updated [/bookings/cart/book](#tag/Bookings/operation/bookingsCartBook) response with the following new rejection reason: `PROCESSOR_ISSUE_WITH_PAYMENT`. |\n| 19 Nov 2024 | Updated [/bookings/cart/book](#tag/Bookings/operation/bookingsCartBook) response with the following new rejection reasons: `SUSPECTED_FRAUD`, `SOFT_DECLINE`, `HARD_DECLINE`, `THREE_D_SECURE_REQUIRED`, `INTERNAL_ERROR`, `PROCESSOR_UNAVAILABLE`. |\n| 24 Oct 2024 | Deprecated [/v1/product/photos](#operation/v1ProductPhotos) endpoint |\n| 23 Oct 2024 | Added [/attractions/search](#operation/attractionsSearch) and [/attractions/{attraction-id}](#operation/attractions) to [Attractions](#tag/Attractions) section
Added [/destinations](#operation/destinations) to [Auxiliary](#tag/Auxiliary) section
Updated [Access to endpoints](#section/Access-to-endpoints) section to include new endpoints and removed the ones marked for deprecation
Updated [Resolving references](#section/Workflows/Resolving-references) section |\n| 21 Oct 2024 | Removed `VIATOR_EXCLUSIVE` flag from product search endpoints |\n| 1 Oct 2024 | Removed COVID-19 safety attributes from `AdditionalInfo` schema (part of product content response; e.g., from [/products/{product-code}](#operation/products) endpoint) |\n| 6 Aug 2024 | Changes to behaviour with `DEFAULT` tour grade for product, availability, book hold and confirm endpoints. See note at end of section [Product Option Code](#section/Key-concepts/Product-options). Note: these changes are backwards compatible. |\n| 29 Jul 2024 | Updated [/bookings/modified-since](#operation/bookingsModifiedSince) response with new eventType: CUSTOMER_CANCELLATION, for Customer initiated cancellations. |\n| 14 Mar 2024 | Updated [/bookings/cart/book](#tag/Bookings/operation/bookingsCartBook) response with the following new rejection reasons: `INSUFFICIENT_FUNDS`, `INVALID_PAYMENT_DETAILS`, `TRANSACTION_NOT_ALLOWED`, `CARD_INACTIVE` and `CARD_RESTRICTED`.
Updated [/bookings/status](#tag/Bookings/operation/bookingsStatus) response with `ON_HOLD` status |\n| 13 Feb 2024 | Updated [/suppliers/search/product-codes](#operation/suppliersSearchProductCodes) with the following new attributes: `supplierAgreedToLegalCompliance`, `registrationCountry`, `tradeRegisterName` and `registeredBusinessNumber`. Also updated the `ContactDetails` schema with a new attribute `countryCode`. |\n| 11 Sep 2023 | Added support for PDF vouchers. Made bookerInfo firstName required to match definition. |\n| 5 Jul 2023 | Added [/bookings/cart/hold](#operation/bookingsCartHold) and [/bookings/cart/book](#operation/bookingsCartBook) to [Bookings](#tag/Bookings) section
Added [/v1/checkoutsessions/{sessionToken}/paymentaccounts](#operation/paymentsCreateToken) to [Payments](#tag/Payments) section |\n| 15 May 2023 | Modified [Accept-Language-header-parameter](#section/Localization/Accept-Language-header-parameter) section to accurately reflect currently allowed values |\n| 16 Mar 2023 | Added [/search/freetext](#operation/searchFreeText) and [/suppliers/search/product-codes](#operation/suppliersSearchProductCodes) to [Access to endpoints](#section/Access-to-endpoints) section |\n| 6 Mar 2023 | Added Canadian dollars (CAD) as currency option in request and response to [/bookings/hold](#operation/bookingsHold), [/bookings/book](#operation/bookingsBook) and [/bookings/status](#operation/bookingsStatus) endpoints |\n| 6 Jan 2023 | Added two new COVID-19 safety attributes to `AdditionalInfo` schema (part of product content response; e.g., from [/products/{product-code}](#operation/products) endpoint) |\n| 4 Jan 2023 | Updated or created `ProductSearchFiltering`, `ProductSummary`, `ProductSearchSorting`, `ProductSearchFlag`, `TranslationDetails`, `SearchDurationInfo` and `SearchRatingInfo` schemata for the [/products/search](#operation/productsSearch) endpoint request/response, updated example request and merchant and affiliate response examples, and updated [Postman collections](#section/Testing/Postman-collections-for-testing) in line with these changes |\n| 3 Jan 2023 | Updated example request and response for [/search/freetext](#operation/searchFreeText) endpoint |\n| 12 Dec 2022 | Added [/search/freetext](#operation/searchFreeText) endpoint |\n| 10 Nov 2022 | Updated [/bookings/hold](#tag/Bookings/operation/bookingsHold) and [/bookings/modified-since/acknowledge](#tag/Bookings/operation/bookingsModifiedSinceAcknowledge) descriptions |\n \n\n\n### Update history: \n\n- All significant modifications made to this document since its creation can be found in the [Update history](#section/Appendices/Update-history) section.\n\n# Support\n\n## Onboarding / integration\n\nIf you require help or technical advice while you are carrying out your integration, please contact the onboarding team via email at: affiliateapi@tripadvisor.com\n\n### Integration guides\n\nOur onboarding specialists have put together [in-depth guides](https://partnerresources.viator.com/travel-commerce/implementation/?source=specs) covering various topics to help you during your integration. \n\n### Site certification for merchant partners\n\nIf you are a merchant partner, once your API integration has been completed, it must pass certification prior to going live in order to ensure data integrity and the appropriate use of API services. Please peruse and bear in mind [our certification requirements](https://partnerresources.viator.com/travel-commerce/merchant/certification/?source=specs) prior to and during development.\n\n## Operational support\n\nIf are a merchant partner, have completed your integration and your site is operational, please see the [Partner Help Center - Merchant partner support](https://partnerhelp.viator.com/en/categories/37-merchant-partner-support?source=specs) page for information about what to do if you encounter a problem and require support.\n\n# About\n\n## Viator Partner-API v2\n\n### What is it?\n\nThe Viator Partner API v2 comprises a set of endpoints that can support the operation of a fully-featured tours and experiences booking website or application; or, it can be integrated with your existing travel-booking software.\n\nThe API exposes a variety of services that allow the retrieval of all product details, such as descriptive text and structured metadata, pricing, terms and conditions, photos and reviews. This data can either be ingested and managed on your local system, or calls can be made in real time to retrieve content in response to your users' activity on your systems.\n\nThe API allows product content, pricing and availability data to be retrieved in bulk or queried in real-time, it can perform pricing calculations according to the number and type of traveler and product option combinations available, and it supports availability and pricing holds as part of its booking and booking-cancellation functionality. \n\n### Who is it for?\n\nThe Viator Partner-API is a designed for use by organizations partnered with Viator as [Affiliate partners](https://partnerresources.viator.com/travel-commerce/affiliate/) or [Merchant partners](https://partnerresources.viator.com/travel-commerce/merchant/).\n\n#### Affiliate partners\n\n\nAffiliate partners have full access to the areas of the API relating to content, but sales of Viator products must be carried out on the Viator site itself. \n\nWhen a customer wishes to book a product from an affiliate's site, they are instead redirected to the relevant product page on [viator.com](https://viator.com) via a unique URL in order to complete the purchase. Once on the Viator site, a cookie is set such that all transactions will accrue a commission for that partner until the cookie expires.\n\nPurchases of products originating from the affiliate's site are recorded and a commission on these sales is paid periodically.\n\nFor more information on this partner type, see: [Viator's Affiliate API Solution](https://partnerresources.viator.com/travel-commerce/affiliate/)\n\n#### Merchant partners\n\nThe merchant partner relationship is one in which the partner is the **merchant of record**; i.e., the partner takes full responsibility for all financial records and transactions carried out by their users, as well as providing customer support with regard to providing general assistance, processing cancellations and refunds, and liaising between suppliers and customers when the need to communicate arises.\n\nFor more information on this partner type, see: [Viator's Merchant API Solution](https://partnerresources.viator.com/travel-commerce/merchant/)\n\n\n## New features in this version\n\nThe Viator Partner-API v2.0 is a fully-redesigned system with regard to our previous API products. It includes all key fuctionality available in previous versions, but now provides nearly fully-structured data elements, and a more modern, concise and easily-understandable interface.\n\nIn addition, we have made significant improvements to performance across all functions of the API, and particularly in the area of product content and availability data ingestion.\n\n### Simplified and optimized data ingestion \n\nData ingestion has been greatly improved over previous versions of this API. Now, partners need only perform a single initial ingestion of data; then, only new and updated product content, availability and pricing information is retrieved as a 'delta update' as it becomes available.\n\nIn addition:\n- A single end-point allows both bulk ingestion and delta updates, which can be controlled using a pagination cursor or with a time-stamp parameter to allow for point-in-time ingestion of any new updates and easy recovery from ingestion failure\n- The structure of a product's pricing and availability schedules has been simplified to reduce response size\n\n#### Product content\n\n- All pricing is standardized to the supplier's currency, avoiding the need to update on account of exchange rate fluctuations \n- Structured location, tag, booking question, review and photo data is available from separate endpoints to allow for parallel ingestion, and resusable data can be ingested once and applied globally\n\n#### Availability schedule information\n\nImprovements to availability schedule ingestion performance and usability have been achieved:\n\n- Availability is now communicated by providing an overall schedule season and specifying *unavailable* dates instead of available dates, a significantly more compact format that improves transfer speeds and minimizes storage needs \n\n- Availability and pricing information is given on a days-of-the-week basis, which can help with filtering and improving visibility of product availability for customers.\n\n- Information about special pricing periods that may be running throughout a product's seasons is included and is easy to interpret, allowing partners to surface promotions to customers.\n\n- Accurate pricing and applicability information for products that have 'per unit' (group) pricing is now included in the availability & pricing response; whereas support for this pricing model was limited in previous versions of this API. This allows partners to improve pricing exposure for these products.\n\n### Structure-rich content\n\nProviding structured content is a major focus of this API. Product information that was previously stored as natural-language descriptions in a single, lengthy field is now represented in intuitively-structured, machine-interpretable schemata that empowers partners to apply finely-grained merchandising control, including:\n\n- Tour itineraries with comprehensive location data to allow for graphical display and advanced search\n- Tour details, inclusions and dynamic health & safety information to support changing requirements due to global pandemic response initiatives\n- Machine-parseable booking questions and answers\n\n### Improved real-time availability and pricing checking\n\nThe [real-time availability check endpoint](#operation/availabilityCheck):\n- Allows you to check availability and pricing in real-time for a specific product / [product-option](#section/Key-concepts/Product-options) / date / starting time / pax mix combination\n- Returns the ticket availability status along with a pricing breakdown (by age band) and total price (all age bands) in a simplified format to reduce response size\n- Pricing components are stated explicitly, including the Recommended Retail Price (RRP), partner net price, special-offer pricing and booking fee component details\n\n### Improved booking workflow\n\nThe [booking workflow](#section/Booking-concepts/Making-a-booking) now includes an optional booking-hold step, which allows you greater predictability of a successful booking, thereby increasing conversion rates by decreasing friction in the booking flow.\n\nThe [booking hold](#operation/bookingsCartHold) endpoint supports two kinds of hold:\n- Inventory/availability hold (increased likelihood of receiving a booking confirmation)\n- Pricing hold (mitigates against pricing changes at the time of booking)\n\nThe [real-time availability and pricing endpoint](#operation/availabilityCheck) also delivers \\~5% faster performance than previous versions of this API.\n\n# Access to endpoints\n\nThe API endpoints accessible to you depend on which kind of partner you are; affiliate or merchant. \n\n**Basic-access Affiliate partners** have access to a limited subset of the non-transactional endpoints of the Viator Partner API. The basic-access tier allows affiliates to quickly get started building their site with fewer complexities. The following step-by-step guide explains how to do it: [Golden Path \u2013 Basic Access Affiliate Partners](https://partnerresources.viator.com/travel-commerce/affiliate/basic-access/golden-path/?source=specs) \n\n**Full-access Affiliate partners** have access to all non-transactional endpoints; i.e., everything except booking, booking hold and booking cancellation endpoints. This access model applies equally to whitelabel partners.\n\n**Full-access + Booking Affiliate partners** have access to all the same endpoints as **Full-access Affiliate partners** as well as transactional endpoints. i.e., including cart booking, cart booking hold and booking cancellation endpoints.\n\n**Merchant partners** have access to all endpoints.\n\nThe following table describes which partner types have access to which endpoints:\n\n| Endpoint | Basic-access Affiliate | Full-access Affiliate | Full-access + Booking Affiliate | Merchant |\n|-----------------------------------------------------------------------------------------|:-----------------:|:----------------:|:------------:|:------------:|\n| [/products/modified-since](#operation/productsModifiedSince) | \u274c | \u2705 | \u2705 | \u2705 |\n| [/products/bulk](#operation/productsBulk) | \u274c | \u2705 | \u2705 | \u2705 |\n| [/products/{product-code}](#operation/products) | \u2705 | \u2705 | \u2705 | \u2705 |\n| [/products/tags](#operation/productsTags) | \u2705 | \u2705 | \u2705 | \u2705 |\n| [/products/booking-questions](#operation/productsSearch) | \u274c | \u274c | \u2705 | \u2705 |\n| [/products/search](#operation/productsSearch) | \u2705 | \u2705 | \u2705 | \u2705 |\n| [/products/recommendations](#operation/productsRecommendations) | \u274c | \u2705 | \u2705 | \u2705 |\n| [/attractions/search](#operation/attractionsSearch) | \u2705 | \u2705 | \u2705 | \u2705 |\n| [/attractions/{attraction-id}](#operation/attractions) | \u2705 | \u2705 | \u2705 | \u2705 |\n| [/availability/check](#operation/checkAvailability) | \u274c | \u2705 | \u2705 | \u2705 |\n| [/availability/schedules/{product-code}](#operation/availabilitySchedules) | \u2705 | \u2705 | \u2705 | \u2705 |\n| [/availability/schedules/bulk](#operation/availabilitySchedulesBulk) | \u274c | \u2705 | \u2705 | \u2705 |\n| [/availability/schedules/modified-since](#operation/availabilitySchedulesModifiedSince) | \u274c | \u2705 | \u2705 | \u2705 |\n| [/bookings/cart/hold](#operation/bookingsCartHold) | \u274c | \u274c | \u2705 | \u2705 |\n| [/bookings/cart/book](#operation/bookingsCartBook) | \u274c | \u274c | \u2705 | \u2705 |\n| [/bookings/hold](#operation/bookingsHold) | \u274c | \u274c | \u274c | \u2705 |\n| [/bookings/book](#operation/bookingsBook) | \u274c | \u274c | \u274c | \u2705 |\n| [/bookings/status](#operation/bookingsBook) | \u274c | \u274c | \u2705 | \u2705 |\n| [/bookings/cancel-reasons](#operation/bookingsCancelReasons) | \u274c | \u274c | \u2705 | \u2705 |\n| [/bookings/{booking-reference}/cancel-quote](#operation/bookingsCancelQuote) | \u274c | \u274c | \u2705 | \u2705 |\n| [/bookings/{booking-reference}/cancel](#operation/bookingsCancel) | \u274c | \u274c | \u2705 | \u2705 |\n| [/bookings/modified-since](#operation/bookingsModifiedSince) | \u2705 | \u2705 | \u2705 | \u2705 |\n| [/bookings/modified-since/acknowledge](#operation/bookingsModifiedSinceAcknowledge) | \u274c | \u274c | \u2705 | \u2705 |\n| [/amendment/check/{booking-reference}](#operation/amendmentCheck) | \u274c | \u274c | \u2705 | \u2705 |\n| [/amendment/quote](#operation/amendmentQuote) | \u274c | \u274c | \u2705 | \u2705 |\n| [/amendment/amend/{quote-reference}](#operation/amendmentAmend) | \u274c | \u274c | \u2705 | \u2705 |\n| [/v1/checkoutsessions/{sessionToken}/paymentaccounts](#operation/paymentsCreateToken) | \u274c | \u274c | \u2705 | \u274c |\n| [/search/freetext](#operation/searchFreeText) | \u2705 | \u2705 | \u2705 | \u2705 |\n| [/destinations](#operation/destinations) | \u2705 | \u2705 | \u2705 | \u2705 |\n| [/locations/bulk](#operation/locationsBulk) | \u2705 | \u2705 | \u2705 | \u2705 |\n| [/exchange-rates](#operation/exchangeRates) | \u2705 | \u2705 | \u2705 | \u2705 |\n| [/reviews/product](#operation/reviewsProduct) | \u274c | \u2705 | \u2705 | \u2705 |\n| [/suppliers/search/product-codes](#operation/suppliersSearchProductCodes) | \u274c | \u2705 | \u2705 | \u2705 |\n\n\n# Authentication\n\n## API-key\n\nAccess to the API is managed using an **API key** that is included as a **header parameter** to every call made to all API endpoints described in this document.\n\n| Header parameter name | Example value |\n|-----------------------|---------------|\n| exp-api-key | bcac8986-4c33-4fa0-ad3f-75409487026c |\n\nIf you do not know the API key for your organization, please contact your business development account manager for these details.\n\nPlease note that language localization is now controlled on a per-call basis. Previously, localization settings were configured per API-key; whereas, under the present scheme, organizations have a **single API key**. \n\nLanguage localization is accomplished by specifying the desired language as a header parameter (`Accept-Language`). See [Accept-Language header](#section/Localization/Accept-Language-header-parameter) for available language codes.\n\n# Localization\n\n## Accept-Language header parameter\n\nThe `Accept-Language` header parameter specifies into which language the natural language fields in the response from each endpoint will be translated.\n\n**Note:** All partners using the V2 endpoints have access to all supported languages for their partner type.\n\n### Languages available to all partners\n\n| Language | Accept-Language parameter value |\n|----------|-------|\n| English | `en`, `en-US` `en-AU`, `en-CA`, `en-GB`, `en-HK`, `en-IE`, `en-IN`, `en-MY`, `en-NZ`, `en-PH`, `en-SG`, `en-ZA` |\n| Danish | `da` |\n| Dutch | `nl`, `nl-BE` |\n| Norwegian | `no` |\n| Spanish | `es`, `es-AR`, `es-CL`, `es-CO`, `es-MX`, `es-PE`, `es-VE` |\n| Swedish | `sv`|\n| French | `fr`, `fr-BE`, `fr-CA`, `fr-CH` |\n| Italian | `it`, `it-CH` |\n| German | `de`, `de-DE` |\n| Portuguese | `pt`, `pt-BR` |\n| Japanese | `ja` |\n\n### Additional languages available to merchant partners only\n\n| Language | Accept-Language parameter value |\n|----------|-------|\n| Chinese (traditional) | `zh-TW` |\n| Chinese (simplified) | `zh-CN` |\n| Korean | `ko`, `ko-KR` |\n\n## API versioning strategy\n\nIn order to ensure the predictability of the behavior of this software, we have implemented a versioning strategy to handle updates to the API contract, as well as a mechanism to specify which version of the API you wish to access.\n\nWhen we release a new version of this API, partners have the option of continuing to use the existing version or migrating to the updated version when they are ready.\n\n - **Note**: The version of this API that this document pertains to is that indicated in the title of this document.\n\nThe approach to versioning for this API is as follows:\n\n### Global versioning\n\n- Version numbers are global across all endpoints. When a new version of this API is released, **all** endpoints will increment to the latest version. Viator does not support a heterogenous implementation with calls being made to different endpoints with different version numbers.\n\n### Version release and deprecation\n\n- New versions of this software are released on an ad-hoc basis. Breaking changes will always result in a version increment.\n- Viator will inform partners about all version releases, including details about the new features available and any breaking changes that have been introduced.\n- Once a version of the API is deprecated, you will have a minimum of 12 months from the date of receiving notice of the change in which to modify your systems. Requests made to deprecated endpoint versions may result in a **400 Bad Request** response after 12 months.\n\n### Release candidates\n\n- Release candidate (RC) versions of this API may be made available to allow partners to preview changes in a non-production (sandbox) environment. When available, RC versions will be announced in this documentation, however these will not be subject to version control and breaking changes may be introduced prior to official release.\n\n### Release criteria\n\n#### Backward-compatible changes\n\nThe following types of change are considered backward-compatible, and will not result in a version release when introduced. Therefore, partners must ensure their implementation can handle such changes gracefully. \n\nThese changes comprise:\n\n - Introduction of new API endpoints\n - Addition of any properties to an endpoint's response schema\n - Addition of non-required properties to an endpoint's request schema\n - Unexpected receipt of an HTTP redirect response code (**301 Moved Permanently** or **302 Found**)\n - Addition of new HTTP methods (POST, GET, PUT, PATCH, DELETE, etc.)\n - Addition of new key values to existing fields that represent a set, insofar as no operating logic is likely to be affected\n\n#### Breaking changes\n\nThe following types of change are considered breaking changes and will result in the release of an incremented version of this software:\n\n - Addition of required properties to an endpoint's request schema\n - Removal of required properties from an endpoint's request or response schemata\n - Changing the data-type or format (e.g., date format) of an existing field in an endpoint's request or response schemata\n - Adding, removing or changing the meaning of the HTTP status codes in an endpoint's response\n - Removing or modifying the **Content-Type** on existing endpoints\n - Modifying or removing field key values in a set\n - Modifying the **operationId** of an endpoint\n\n### Version specification mechanism\n\nIt is mandatory to specify which version of the API you wish to use via the **'Accept' header parameter** in the **request** to each API endpoint; e.g., `Accept: application/json;version=2.0`. Omitting the version parameter will result in a **400 Bad Request** response.\n\n**Example valid request**:\n\n```bash\ncurl --location --request GET 'https://api.sandbox.viator.com/partner/products/modified-since?cursor=MTU5MjM1NTM0MXwxMTM5ODZQNA==' \\\n--header 'exp-api-key: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx' \\\n--header 'Accept-Language: en-US' \\\n--header 'Accept: application/json;version=2.0'\n```\n\n**Example error response**:\n\n```json\n{\n \"code\":\"INVALID_HEADER_VALUE\",\n \"message\":\"Accept header is missing or has invalid version information\",\n \"timestamp\":\"2020-09-02T03:43:23.303946Z\",\n \"trackingId\":\"3D45567E:2D25_0A5D03AB:01BB_5F4F14A5_394639:3DB7\"\n}\n```\n\n## Accept-Encoding\n\nThis API supports gzip compression. Therefore, if you include `gzip` in the `Accept-Encoding` header parameter in the request, the API will respond with a gzip-compressed response.\n\n## Endpoint timeout settings\n\nIf you wish to implement internal timeout settings for calls to this API, **we recommend a setting of 120s**.\n\nThis is due to the fact that some of the products in our inventory rely on the operation of external supplier systems, which we do not control. Because of that, it may take up to 120s to receive a response when making a booking. In rare cases, booking response times in excess of 120s can sometimes occur.\n\nThis means that a booking may have actually succeeded even if the [/bookings/book](#operation/bookingsBook) or [/bookings/cart/book](#operation/bookingsCartBook) endpoints time-out or respond with a HTTP 500 error. \n\nTherefore, it is strongly recommended that you check the status of the booking using the [/bookings/status](#operation/bookingsStatus) endpoint to make sure the booking was not created before you attempt to make the booking again.\n\nFurthermore, you can avoid creating duplicate bookings by making sure that you supply the same value for `partnerBookingRef` in the request to [/bookings/book](#operation/bookingsBook) or [/bookings/cart/book](#operation/bookingsCartBook) as you did for the booking you believe may have failed. The `partnerBookingRef` value must be unique; therefore, a duplicate booking will not be created.\n\n# Key concepts\n\n## Product content and availability endpoints\n\n### Product content endpoints\n\nYou can retrieve the core product-content details from the following endpoints:\n\n- [/products/{product-code}](#operation/products): Retrieve content for a single product in real time when the product is selected by the customer \n - **Used by**: API partners who do not ingest the product database, but instead get each product's details only when required\n- [/products/modified-since](#operation/productsModifiedSince): Retrieve content for all products with filtering according to modification date \n - **Used by**: API partners who ingest the entire product catalog into a local database and perform regular delta updates via this endpoint to keep their local data in-sync with Viator's\n- [/products/bulk](#operation/productsBulk): Retrieve content for multiple products, as specified in the request. \n - **Please note**: This endpoint **must not** be used for ingestion; rather, it should only be used to retrieve product details for the selected products when needed.\n\n### Availability schedules endpoints\n\nYou can retrieve the availability schedules for products using the following endpoints:\n\n- [/availability/schedules/{product-code}](#operation/availabilitySchedules): Retrieve availability schedules for a single product in real time when the product is selected by the customer.\n - **Used by**: API partners who do not ingest the availability database, but instead get the availability schedules associated with a product at the time that it is required\n- [/availability/schedules/modified-since](#operation/availabilitySchedulesModifiedSince): Retrieve future availability schedules for all products with filtering according to modification date \n - **Used by**: API partners who ingest all availability schedules into a local database and perform regular delta updates via this endpoint to keep their local data in-sync with Viator's\n- [/availability/schedules/bulk](#operation/availabilitySchedulesBulk): Retrieve availability schedules for all products specified in the request.\n - **Please note**: This endpoint **must not** be used for ingestion; rather, it should only be used to retrieve the availability schedules for the selected products when needed.\n\n## Product options\n\nAny particular product may consist of a number of variants, each of which is referred to as a 'product option'. In previous versions of this API, and in the tours and activities sector in general, product options are also referred to as 'tour grades'.\n\nFor example, product options might represent different departure times, tour routes, or packaged extras like additional meals, transport and so forth.\n\nThe product options available for a product can be found in the `productOptions` array in the responses from any of the [product content endpoints](#section/Key-concepts/Product-content-and-availability-endpoints).\n\nWhen a product option includes an optional `logistics` object, use that object for start and end points and traveler pickup behaviour for that option; when it is absent, use the product-level `logistics` object instead.\n \nAn example `productOptions` array for the product **5010SYDNEY** is as follows:\n\n```json\n\"productOptions\": [\n {\n \"productOptionCode\": \"48HOUR\",\n \"description\": \"Duration: 2 days: FREE BONUS ENTRY to Sydney Tower with every Deluxe ticket end 31st March
48 Hour Premium Ticket: Unlimited use on Big Bus Sydney & Bondi Tour for 48 hours from time of first use PLUS a guided walking tour of The Rocks, Syd\",\n \"title\": \"48 Hour Premium Ticket \",\n \"languageGuides\": [...]\n },\n {\n \"productOptionCode\": \"TG1\",\n \"description\": \"Hop-on Hop-Off and Attractions: 48hr Big Bus Tours, 1-day Hop-On Hop-Off Harbour Cruise, 4 Attractions: Tower Eye, Madame Tussauds, Wildlife Zoo, Aquarium
Duration: 2 days
Complimentary Walking Tours: Complimentary English-speaking guided walking tour of \u201cThe Rocks\u201d historic and harbourside precinct.\",\n \"title\": \"48Hour Deluxe PLUS Attractions\",\n \"languageGuides\": [...]\n },\n {\n \"productOptionCode\": \"24HOUR\",\n \"description\": \"Unlimited use on Big Bus Sydney & Bondi Hop-on Hop-off Tour for 24 hours from time of first use\",\n \"title\": \"24 Hour Classic Ticket \",\n \"languageGuides\": [...]\n },\n {\n \"productOptionCode\": \"DELUXE\",\n \"description\": \"Big Bus and Habour Cruise: Combine two great Sydney experiences into one with a hop-on hop off Big Bus Tours and a hop-on hop-off Sydney Harbour cruise
Duration: 2 days: FREE BONUS ENTRY to Sydney Tower with every Deluxe ticket end 31st March
Complimentary Walking Tour: Complimentary English-speaking 90-minute guided walking tour of \u201cThe Rocks\u201d historic and harbourside precinct.\",\n \"title\": \"48 Hour Deluxe Bus and Cruise\",\n \"languageGuides\": [...]\n }\n]\n```\n\nThis product has four product options, each with an identifying code given in the `productOptionCode` field:\n\n- `\"48HOUR\"`\n- `\"TG1\"`\n- `\"24HOUR\"`\n- `\"DELUXE\"`\n\nProduct options are essentially a subcategory of the tour or activity. You will need to specify the product option you wish to book when making a booking.\n\n\n**Note on `DEFAULT` productOptionCodes:**\n\nPreviously, `DEFAULT` productOptionCodes were treated differently from other tour grades and were omitted from requests/responses when only one \u201cDEFAULT\u201d tour grade was present. This special treatment has been removed. All tour grades can be handled consistently. For backward compatibility, `DEFAULT` codes can still be omitted from some requests, but it is recommended to avoid this practice.\n\n\n## Availability schedules\n\nThe [availability schedules endpoints](#section/Key-concepts/Product-content-and-availability-endpoints) provide information about the availability of a product (along with its various product options and starting times, if they exist) and its pricing in the supplier's currency.\n\nThis section explains how to interpret the response from the [availability schedules endpoints](#section/Key-concepts/Product-content-and-availability-endpoints).\n\nExample response snippet from [/availability/schedules/10212P2](#operation/availabilitySchedules) (some starting times were removed for brevity):\n\n```json\n{\n \"productCode\": \"10212P2\",\n \"bookableItems\": [\n {\n \"productOptionCode\": \"TG45\",\n \"seasons\": [\n {\n \"startDate\": \"2019-05-01\",\n \"endDate\": \"2021-12-31\",\n \"pricingRecords\": [\n {\n \"daysOfWeek\": [\n \"MONDAY\",\n \"TUESDAY\",\n \"WEDNESDAY\",\n \"THURSDAY\",\n \"FRIDAY\",\n \"SATURDAY\",\n \"SUNDAY\"\n ],\n \"timedEntries\": [\n {\n \"startTime\": \"11:00\",\n \"unavailableDates\": [\n {\n \"date\": \"2020-09-16\",\n \"reason\": \"SOLD_OUT\"\n },\n {\n \"date\": \"2020-09-23\",\n \"reason\": \"SOLD_OUT\"\n },\n {\n \"date\": \"2020-09-22\",\n \"reason\": \"SOLD_OUT\"\n },\n {\n \"date\": \"2020-09-27\",\n \"reason\": \"SOLD_OUT\"\n },\n {\n \"date\": \"2020-09-29\",\n \"reason\": \"SOLD_OUT\"\n },\n {\n \"date\": \"2020-09-30\",\n \"reason\": \"SOLD_OUT\"\n }\n ]\n },\n {\n \"startTime\": \"10:00\",\n \"unavailableDates\": [\n {\n \"date\": \"2020-09-25\",\n \"reason\": \"SOLD_OUT\"\n },\n {\n \"date\": \"2020-09-26\",\n \"reason\": \"SOLD_OUT\"\n },\n {\n \"date\": \"2020-09-28\",\n \"reason\": \"SOLD_OUT\"\n },\n {\n \"date\": \"2020-09-27\",\n \"reason\": \"SOLD_OUT\"\n },\n {\n \"date\": \"2020-09-30\",\n \"reason\": \"SOLD_OUT\"\n },\n {\n \"date\": \"2020-09-29\",\n \"reason\": \"SOLD_OUT\"\n }\n ]\n },\n {...}\n ],\n \"pricingDetails\": [\n {\n \"pricingPackageType\": \"PER_PERSON\",\n \"minTravelers\": 1,\n \"ageBand\": \"INFANT\",\n \"price\": {\n \"original\": {\n \"recommendedRetailPrice\": 0.00,\n \"partnerNetPrice\": 0.00,\n \"bookingFee\": 0.00,\n \"partnerTotalPrice\": 0.00\n }\n }\n },\n {\n \"pricingPackageType\": \"PER_PERSON\",\n \"minTravelers\": 1,\n \"ageBand\": \"ADULT\",\n \"price\": {\n \"original\": {\n \"recommendedRetailPrice\": 100.02,\n \"partnerNetPrice\": 79.89,\n \"bookingFee\": 4.79,\n \"partnerTotalPrice\": 84.68\n },\n \"special\": {\n \"recommendedRetailPrice\": 90.02,\n \"partnerNetPrice\": 71.90,\n \"bookingFee\": 4.31,\n \"partnerTotalPrice\": 76.21,\n \"offerStartDate\": \"2020-08-28\",\n \"offerEndDate\": \"2020-09-30\"\n }\n }\n }\n ]\n }\n ]\n }\n ]\n }\n ],\n \"currency\": \"USD\",\n \"summary\": {\n \"fromPrice\": 100.02\n }\n}\n```\n\n- Each item in the `bookableItems[]` array contains the availability and pricing data for one of the product's product-options (`productOptionCode`).\n- Each item in the `seasons[]` array describes the availability and pricing for the product-option during the 'season' (period of time) delimited by `startDate` and `endDate`. If `endDate` is not present, this means the season extends 384 days (approximately 12.5 months) into the future from the current date.\n- Each item in the `pricingRecords[]` array describes which days of the week (`daysOfWeek[]`) the availability and pricing data pertains to during the season, as well as which starting times are in operation (`timedEntries[]`) and on which dates (`unavailableDates[]`) each starting time is unavailable (e.g., due to being sold out).\n- Each item in the `pricingDetails[]` array describes the pricing that applies to each age-band during the season.\n\n### Interpreting the availability schedule\n\nWe can thereby interpret the availability schedule snippet above as follows:\n\n- For the product-option code `\"TG45\"` of product `\"10212P2\"`, during the period from `\"2019-05-01\"` to `\"2021-12-31\"`, on **all days of the week**, there are starting times at **10:00** and **11:00**.\n- The **11:00** starting time is unavailable due to being 'sold out' on the following dates:\n - 2020-09-16\n - 2020-09-22\n - 2020-09-23\n - 2020-09-27\n - 2020-09-29\n - 2020-09-30\n- The **10:00** starting time is unavailable due to being 'sold out' on the following dates:\n - 2020-09-25\n - 2020-09-26\n - 2020-09-27\n - 2020-09-28\n - 2020-09-29\n - 2020-09-30\n- Infant tickets are free (USD 0)\n- Adults are charged per-person; the normal recommended retail price (`original`) is USD 100.02\n- A **pricing special** (`special`) is in effect for adults between 2020-08-28 and 2020-09-30; the special recommended retail price is USD 90.02 \n\nUsing this information, a complete schedule \u2013 including which product-codes and starting times are available on which dates and the pricing (including special discounts) that applies on each date - can be constructed in your database.\n\n## Itineraries\n\nThe itinerary for a product is used to communicate to customers what to expect with regard to where they will go when participating in the tour or activity. On the [Viator.com website](https://viator.com), this information is displayed in the **What to expect** section on each product's product display page.\n\nItinerary information is available from this API in a machine-interpretable, structured format that facilitates graphical display and advanced search, should you choose to implement it.\n\nThe itinerary information for each product is contained in the `itinerary` object in the response from any of the [product content endpoints](#section/Key-concepts/Product-content-and-availability-endpoints).\n\nThere are five types of itinerary, and the type is specified in the `itinerary.itineraryType` field. They are as follows:\n\n| Itinerary type | `itineraryType` | Meaning |\n|----------------|-----------------------|---------|\n| **Standard** | `\"STANDARD\"` | A tour-based product (focused on visiting and viewing) that occurs at a single location or proceeds through a set of locations on a single day. |\n| **Activity** | `\"ACTIVITY\"` | An activity-based product (focused on the activity rather than the location) that occurs at a single location or proceeds through a set of locations on a single day |\n| **Multi-day tour** | `\"MULTI_DAY_TOUR\"` | A tour or activity that occurs over multiple days, and therefore includes food and accommodation |\n| **Hop-on / hop-off** | `\"HOP_ON_HOP_OFF\"` | A tour that operates continuously, such as a bus tour, wherein passengers can use their ticket to board and alight as they please at any of the stops along the route |\n| **Unstructured** | `\"UNSTRUCTURED\"` | Not all suppliers have upgraded the itinerary information for their products from a text-based description to structured data; therefore, the itinerary information for a small number of products remains unparseable for the time being. | \n\n### Common elements\n\nThe `itinerary` object is polymorphic depending on the `itineraryType`, but all variants contain standard information, as follows:\n\n| Field name | Meaning |\n|------------|---------|\n| `skipTheLine` | `true` if a ticket for this product allows participants to attend a location without having to obtain a separate ticket on the occasion itself |\n| `privateTour` | `true` if only the travelers who have booked this product will be present; `false` if it is a shared tour |\n| `maxTravelersInSharedTour` | If `privateTour` is `false`, this value represents the maximum number of people that will be able to participate in the tour or activity. |\n| `unstructuredDescription` | In the event that structured information is not available, this field will contain a plain-text description of the itinerary. |\n\nAll other elements in the `itinerary` object differ slightly according to the value of `itineraryType`.\n\n### Standard itinerary\n\nProducts with a `\"STANDARD\"` itinerary type are tour-based products (focused on visiting and viewing) that occur at a single location or proceed through a set of locations on a single day.\n\nAn example of a `\"STANDARD\"` itinerary product is [Barossa Valley Highlights from Barossa Valley Including Wine and Cheese Tasting (21381P1)](https://www.viator.com/tours/Barossa-Valley/Barossa-Valley-Highlights-from-Adelaide-or-Barossa-Valley-Including-Wine-and-Cheese-Tasting/d5623-21381P1).\n\nThe `itinerary` object in the product-content response for this tour is as follows (truncated to the first three items for brevity):\n\n```json\n\"itinerary\": {\n \"itineraryType\": \"STANDARD\",\n \"skipTheLine\": false,\n \"duration\": {\n \"fixedDurationInMinutes\": 360\n },\n \"itineraryItems\": [\n {\n \"pointOfInterestLocation\": {\n \"location\": {\n \"ref\": \"LOC-5620ab70-c813-4904-ad13-bcf527540d3e\"\n },\n \"attractionId\": 17873\n },\n \"duration\": {\n \"fixedDurationInMinutes\": 45\n },\n \"passByWithoutStopping\": false,\n \"admissionIncluded\": \"YES\",\n \"description\": \"Guests will experience the majesty of (...) \"\n },\n {\n \"pointOfInterestLocation\": {\n \"location\": {\n \"ref\": \"LOC-7ae41705-fd91-4500-8cde-bbe9b3a00df4\"\n }\n },\n \"duration\": {\n \"fixedDurationInMinutes\": 40\n },\n \"passByWithoutStopping\": false,\n \"admissionIncluded\": \"YES\",\n \"description\": \"Guests will enjoy a truly unique offering (...)\"\n },\n {\n \"pointOfInterestLocation\": {\n \"location\": {\n \"ref\": \"LOC-9494c4cf-f4e4-4e7f-8213-0cf1b9980097\"\n }\n },\n \"duration\": {\n \"fixedDurationInMinutes\": 30\n },\n \"passByWithoutStopping\": false,\n \"admissionIncluded\": \"YES\",\n \"description\": \"No trip to the Barossa would be complete without (...)\"\n }\n (...)\n ]\n}\n```\nThe `itineraryItems[]` array describes the itinerary of locations for this tour and can be used in conjunction with the [/locations/bulk](#operation/locationsBulk) endpoint to contruct a **What to expect** section, similar to what is seen for this product on [viator.com](https://www.viator.com/tours/Barossa-Valley/Barossa-Valley-Highlights-from-Adelaide-or-Barossa-Valley-Including-Wine-and-Cheese-Tasting/d5623-21381P1), as in the following screen-shot:\n\n
\n \"Standard\n
Standard itinerary example from viator.com
\n
\n\nThe elements highlighted in red boxes are sourced as follows:\n\n**\"Stop At: Seppeltsfield\"**\n\nThe name of each location (in the highlighted case, 'Seppeltsfield') is not included in the response and must be determined by submitting the location reference code in the `pointOfInterestLocation.location.ref` field to the [/locations/bulk](#operation/locationsBulk) endpoint.\n\nThe location reference is `\"LOC-5620ab70-c813-4904-ad13-bcf527540d3e\"`:\n\n```json\n\"pointOfInterestLocation\": {\n \"location\": {\n \"ref\": \"LOC-5620ab70-c813-4904-ad13-bcf527540d3e\"\n}\n```\n\nSubmitting this code to the [/locations/bulk](#operation/locationsBulk) endpoint yields the following response:\n\n```json\n{\n \"locations\": [\n {\n \"provider\": \"TRIPADVISOR\",\n \"reference\": \"LOC-5620ab70-c813-4904-ad13-bcf527540d3e\",\n \"name\": \"Seppeltsfield\",\n \"address\": {\n \"street\": \"730 Seppeltsfield Rd\",\n \"administrativeArea\": \"Seppeltsfield\",\n \"state\": \"South Australia\",\n \"country\": \"Australia\",\n \"countryCode\": \"AU\",\n \"postcode\": \"5355\"\n },\n \"center\": {\n \"latitude\": -34.489162,\n \"longitude\": 138.91866\n }\n }\n ]\n}\n```\n\nThe name of the location is in the `name` element; i.e., `\"Seppeltsfield\"`.\n\n**Description**\n\nThe description for each itinerary stop is given in the `description` field; in this case:\n\n```json\n\"description\": \"Guests will experience the majesty of the Seppeltsfield Winery Estate, an historic icon of the Barossa and integral part of its storied history. Learn the story of the Seppelt family, the phenomenal fortified wines upon which they have built their reputation and taste a broad range of their current wine offerings. Don\u2019t forget to ask about the Centennial collection, the only wine collection of wines of its type in the world with more than 120 years of consecutive vintages currently stored in the barrel. \"\n```\n\n**\"Duration: 45 minutes\"**\n\nThe duration spent at an itinerary location is given in the `duration` element. This can be a fixed duration, as in this example and indicated by the `fixedDurationInMinutes` field being filled; i.e.:\n\n```json\n\"duration\": {\n \"fixedDurationInMinutes\": 45\n},\n```\n\nOr, the time spent at the location might be variable, in which case only the `variableDurationFromMinutes` and `variableDurationToMinutes` fields will appear; e.g.:\n\n```json\n\"duration\": {\n \"variableDurationFromMinutes\": 10,\n \"variableDurationToMinutes\": 30\n},\n```\n\n**\"Admission Ticket Included\"**\n\nThis item of information indicates to the traveler whether or not they will be required to pay for admission to a location or whether admission is included in the price of the tour. It is indicated by the `admissionIncluded` field; which in this case is:\n\n```json\n \"admissionIncluded\": \"YES\"\n```\nThe possible values this field can take are:\n- `\"YES\"`\n- `\"NO\"`\n- `\"NOT_APPLICABLE\"`\n\n**Pass by without stopping**\n\nIn this example, the `passByWithoutStopping` element is `false` for all locations. On some tours, however, the vehicle will merely pass by a certain location, without stopping, for viewing purposes. If that is the case, this field will be `true`.\n\n### Activity itinerary\n\nThe \"activity\" itinerary is designed for products where the focus of the experience is the activity itself (e.g., cooking classes), rather than the location(s) at which it occurs.\n\nThe `itinerary` object for this type of product includes the `activityInfo` and `foodMenus` objects, which contain details about the activity and any meals being served (or created), respectively.\n\n**Example activity experience**: [Traditional Cooking Class - 114869P3](https://www.viator.com/tours/Yogyakarta/Traditional-Cooking-Class/d22560-114869P3)\n\n```json\n\"itinerary\": {\n \"itineraryType\": \"ACTIVITY\",\n \"skipTheLine\": false,\n \"privateTour\": true,\n \"duration\": {\n \"fixedDurationInMinutes\": 240\n },\n \"pointsOfInterest\": [\n {\n \"ref\": \"LOC-o0AXGEKPN4wJ9sIG0RAn5C7cXoFi13Pb8aiiiEWiVprM1MtQdt/DIeeb7ErQo1SK\"\n }\n ],\n \"activityInfo\": {\n \"location\": {\n \"ref\": \"LOC-dwbUKYXwDvt911EeSQVjwo4itqM47D/JrJBMhEHXctp6Yj8SzOvLCGbeQQ0arbNw8FHTuTEi0SU9RbKNpLx7bw8HP6Pnh1pBwy27irN3vKoTexOgxSlj2+xv9x3k6fZnPrb/zhY5RImUibPpbTET/+atZD8crT0DlPf5hg21QPWNam1RsZKgzF5gb1fPZ6d7WNWIWYsu3m54y2TFqiHaAbo1d2Ps2LFK+DCctmyDmqbgSV7FDpLXv5sL/e0R/Mg+7vLX0lMV8HGW4jisRxqYD5oThATP9j1NRY98SvhXpEI=\"\n },\n \"description\": \"Embark on a culinary adventure unlocking the secrets of authentic Javanese cooking, utilizing traditional ingredients and preparation methods.\\nYour day starts early at the local markets, where you can pick from fresh herbs & spices, crisp vegetables and choice cuts of meat. \\nAfter exploring at the traditional market, you will be warmly welcomed and expertly guided by your host, who will help you to discover how to create your very own delicious authentic Javanese dishes. \\nYour hard work is rewarded when you sit down to have lunch on your tasty creations.\\nAll classes are conducted in English by Javanese chefs fully conversant with Javanese cuisine and culture...and in a relaxed, friendly atmosphere in the beautiful kitchen-garden.\"\n },\n \"foodMenus\": [\n {\n \"course\": \"MAIN\",\n \"dishName\": \"Gado-gado\",\n \"dishDescription\": \"Mixed vegetables with peanut sauce\"\n },\n {\n \"course\": \"MAIN\",\n \"dishName\": \"Opor Ayam\",\n \"dishDescription\": \"Braised Chicken in Coconut Milk\"\n }\n ]\n}\n```\n\nAll information for the 'What to Expect' section on the product display page on Viator.com is can be sourced from this object.\n\n### Multi-day tour itinerary\n\nProducts with a `\"MULTI_DAY_TOUR\"` itinerary type are tours or activities that occur over multiple days, and therefore include a breakdown of the itinerary for each day of the tour, as well as extra information about food and accommodation.\n\n**Example multi-day tour**: [Active Winter Adventure in Yukon | 5 days (7110P7)](https://www.viator.com/tours/Whitehorse/5-Day-Active-Winter-Adventure-in-Yukon/d5420-7110P7)\n\nScreenshot of 'What to expect' section from the viator.com site:\n\n
\n \"Multi-day\n
Multi-day tour itinerary example from viator.com
\n
\n\nSnippet of the `itinerary` object in the product content response for 7110P7 (truncated to first two items of `days[]` array):\n\n```json\n\"itinerary\": {\n \"itineraryType\": \"MULTI_DAY_TOUR\",\n \"skipTheLine\": false,\n \"duration\": {\n \"fixedDurationInMinutes\": 7200\n },\n \"days\": [\n {\n \"title\": \"Arrival Whitehorse\",\n \"dayNumber\": 1,\n \"items\": [\n {\n \"pointOfInterestLocation\": {\n \"location\": {\n \"ref\": \"LOC-99b0f435-fa6a-469f-8f96-f983b82f74c5\"\n }\n },\n \"duration\": {},\n \"admissionIncluded\": \"NOT_APPLICABLE\",\n \"description\": \"From the airport we drive you to your hotel located in the centre of Whitehorse.\"\n }\n ],\n \"accommodations\": [\n {\n \"description\": \"Overnight in downtown Whitehorse Hotel\"\n }\n ]\n },\n {\n \"title\": \"Wildlife and Hot Springs, a Bird's-Eye-View and Northern Lights\",\n \"dayNumber\": 2,\n \"items\": [\n {\n \"pointOfInterestLocation\": {\n \"location\": {\n \"ref\": \"LOC-799e6c90-d0bb-4ec4-9cf6-c40459ff0463\"\n },\n \"attractionId\": 25942\n },\n \"duration\": {\n \"fixedDurationInMinutes\": 90\n },\n \"admissionIncluded\": \"YES\",\n \"description\": \"Later we drive to the Yukon Wildlife Preserve where we can see up close inhabitant game like the Elk, Moose, Caribou, Mountain Goats and Porcupines in their natural surrounding.\"\n },\n {\n \"pointOfInterestLocation\": {\n \"location\": {\n \"ref\": \"LOC-cf8d0f7a-54d6-4cc1-9911-480b4934c752\"\n },\n \"attractionId\": 25951\n },\n \"duration\": {\n \"fixedDurationInMinutes\": 90\n },\n \"admissionIncluded\": \"YES\",\n \"description\": \"Not far from here we will visit the Takhini Hotsprings and endulge ourself in the natural hot waters and relax in a breathtaking winter mountain setting.\"\n },\n {\n \"pointOfInterestLocation\": {\n \"location\": {\n \"ref\": \"LOC-3251a39d-aa69-4229-9ba4-57d5b417e6db\"\n }\n },\n \"duration\": {\n \"fixedDurationInMinutes\": 240\n },\n \"admissionIncluded\": \"YES\",\n \"description\": \"After a relaxed dinner in Whitehorse, you\u2019ll be back on the road again, this time to seek views of the stunning Northern Lights. Relax in sheltered comfort, or under the starry sky beside a warm fire at one of our tailor-made aurora viewing locations. \"\n }\n ],\n \"accommodations\": [\n {\n \"description\": \"Overnight in downtown Whitehorse Hotel\"\n }\n ]\n },\n (...)\n ]\n}\n```\n\nWithin the `days[]` array, each day of the multi-day tour is described. The `items[]` array within each item of the `days[]` array largely follows the structure of the items in the `itineraryItems[]` array of the `\"STANDARD\"` itinerary and can be interpreted for display.\n\nThe `fixedDurationInMinutes` in the `itinerary[]` array represents the total duration of the tour. \n\n**Note**: The example above does not include the `foodAndDrinks[]` element, as it is not relevant to this product.\n\n### Hop-on / hop off itinerary\n\nA hop-on/hop-off product is one that typically operates continuously during its hours of operation, such as a bus tour, and passengers can use their ticket to board and alight as they please at any of the stops along the route.\n\nSuch products may also operate multiple routes simultaneously.\n\n**Example hop-on / hop-off tour**:[Big Bus Sydney and Bondi Hop-on Hop-off Tour (5010SYDNEY)](https://www.viator.com/tours/Sydney/Sydney-and-Bondi-Hop-on-Hop-off-Tour/d357-5010SYDNEY)\n\n
\n \"Hop-on\n
Hop-on / hop-off itinerary example from viator.com
\n
\n\nSnippet of `itinerary` object in the product content response for 5010SYDNEY (`operatingSchedule`, `stops` and `pointsOfInterest` truncated in first route):\n\n```json\n\"itinerary\": {\n \"itineraryType\": \"HOP_ON_HOP_OFF\",\n \"skipTheLine\": false,\n \"privateTour\": false,\n \"duration\": {\n \"fixedDurationInMinutes\": 120\n }, \n \"routes\": [\n {\n \"operatingSchedule\": \"1st bus departs from Stop 1 Circular Quay at 9.00am.. (...)\",\n \"duration\": {\n \"fixedDurationInMinutes\": 120\n },\n \"name\": \"Red Route - Sydney Icons\",\n \"stops\": [...],\n \"pointsOfInterest\": [...]\n ]\n },\n {\n \"operatingSchedule\": \"1st bus departs from Stop 12/24 Central Station at 10.00am.\\nFrequency every 60 minutes\\nLast bus departs from stop 12/24 at 4.00pm\",\n \"duration\": {\n \"fixedDurationInMinutes\": 120\n },\n \"name\": \"Blue Route - Bondi Lifestyle\",\n \"stops\": [\n {\n \"stopLocation\": {\n \"ref\": \"LOC-o0AXGEKPN4wJ9sIG0RAn5Psa0O7zv6as2RgNgIaUx0EFjKH/7fL3wV6nAS8iPXkO\"\n },\n \"description\": \"Central Station, Pitt Street, Bus Bay 18\"\n },\n {\n \"stopLocation\": {\n \"ref\": \"LOC-RaYlfRSLaIsd0SlazqDQk19G5f6qNrg0gjGUG4TKX09ebeQFQmF/tcZGYdP+hZ8qHiX/vcPkkKKpDcocShqAYEgNFI1CfF3En+N9VrOAxKQUrgoRQ1Va78q0+ItmaNr/WbsMTE8jgepUMa6GSjKvLkRhjHJbm/8KZDt9vri/bomquCnoZMFCjkrjxqrlpEp5m2qWwkCxg5iRffRLuhG/YQ==\"\n },\n \"description\": \"Australian Museum \"\n },\n {\n \"stopLocation\": {\n \"ref\": \"LOC-o0AXGEKPN4wJ9sIG0RAn5Nh4BzPY4JhOxIuD4/Do8pUJ7t+9MCl62rbq6KVnaek/\"\n },\n \"description\": \"\"\n },\n {\n \"stopLocation\": {\n \"ref\": \"LOC-o0AXGEKPN4wJ9sIG0RAn5HyrAalNU3M4hS1T1NGhMtCdFsSEh+RkFpJBmFZX9No8\"\n },\n \"description\": \"\"\n },\n {\n \"stopLocation\": {\n \"ref\": \"LOC-o0AXGEKPN4wJ9sIG0RAn5ADNeEAMR25x+3AtosA/mPk102O66T1JygFmomnS5cve\"\n },\n \"description\": \"\"\n },\n {\n \"stopLocation\": {\n \"ref\": \"LOC-o0AXGEKPN4wJ9sIG0RAn5DlsAklW6JtKr4LQsnhsvv7JxEYbLQWAsKDqTrCu41p4\"\n },\n \"description\": \"\"\n },\n {\n \"stopLocation\": {\n \"ref\": \"LOC-o0AXGEKPN4wJ9sIG0RAn5BLsCa3M6INxXNpkE2r1BTHxvB0gY1MP6WB9Yxso16Ot\"\n },\n \"description\": \"\"\n },\n {\n \"stopLocation\": {\n \"ref\": \"LOC-o0AXGEKPN4wJ9sIG0RAn5PrdhQ/J96Gq+dweFD3sOSrkBFH5QSJjP1VJ0a/86OPO\"\n },\n \"description\": \"\"\n }\n ],\n \"pointsOfInterest\": [\n {\n \"location\": {\n \"ref\": \"LOC-6eKJ+or5y8o99Qw0C8xWyIiKlXuqcCaUR/8Ng7CZSLI=\"\n },\n \"attractionId\": 14159\n },\n {\n \"location\": {\n \"ref\": \"LOC-6eKJ+or5y8o99Qw0C8xWyOEUrjaNrfQuPK4sfYmEGio=\"\n }\n },\n {\n \"location\": {\n \"ref\": \"LOC-6eKJ+or5y8o99Qw0C8xWyPTry/4ZvItH2jj+ziZ16zY=\"\n }\n },\n {\n \"location\": {\n \"ref\": \"LOC-6eKJ+or5y8o99Qw0C8xWyCs+n26oP6pvXz2mRpQ6QlA=\"\n }\n },\n {\n \"location\": {\n \"ref\": \"LOC-6eKJ+or5y8o99Qw0C8xWyI5+u+JgfxCzNB+Yaph1xug=\"\n }\n }\n ]\n }\n ]\n}\n```\n\nBy comparing the response snippet with the screenshot above, you can see that:\n\n- There are two routes \u2013\u00a0\"Red Route - Sydney Icons\" and \"Blue Route - Bondi Lifestyle\"\n- The Blue Route has 8 stops and 5 points of interest\n- Only the first two stops on the Blue Route have descriptive text entered by the supplier, as seen in the screenshot and in the snippet (`description` field)\n\nAll location details (including the name) must be retrieved by sending the location reference to the [/locations/bulk](#operation/locationsBulk) endpoint. \n\nThe total duration of the tour can be found in the `itinerary[]` array. \nIf all tour routes have the same duration, the `fixedDurationInMinutes` field will be returned. \nWhen tour routes have different duration, only the `variableDurationFromMinutes` and `variableDurationToMinutes` fields will appear.\n\n### Unstructured itinerary\n\nAlthough our systems have been upgraded to support structured itinerary information, this feature is only availabe once the supplier manually updates their product details. A small number of suppliers have not yet made these updates. As such, some products retain their legacy itinerary information, and this case is handled with the `\"UNSTRUCTURED\"` itinerary type.\n\nSnippet of `itinerary` object in the product content response for [5524GOLD - Private Tour: 4-Day Golden Triangle Trip to Agra and Jaipur from Delhi](https://www.viator.com/tours/New-Delhi/Private-Tour-4-Day-Golden-Triangle-Trip-to-Agra-and-Jaipur-from-Delhi/d804-5524GOLD):\n\n```json\n\"itinerary\": {\n \"itineraryType\": \"UNSTRUCTURED\",\n \"skipTheLine\": false,\n \"privateTour\": false,\n \"unstructuredDescription\": \"Please read the Itinerary section for details on your Golden Triangle tour from Delhi to Agra and Jaipur.\",\n \"unstructuredItinerary\": \" Day 1: Delhi \u2013 AgraMorning departure from your hotel in Delhi. Traveling in the comfort your own air-conditioned vehicle, accompanied by a driver, the journey to Agra will take approximately four to five hours. Upon arrival in Agra, check in at your hotel. In Agra, your local guide who will take you to visit the famous and majestic Red Agra Fort, followed by the romantic Taj Mahal at sunset. The remainder of the evening is free for your own personal exploration.\\n\\nOvernight: 3- or 4-star hotel in Agra\\n\\nDay 2: Agra \u2013 Jaipur (B)After breakfast, travel by road to Fatehpur Sikri, located approximately 40 kilometers from Agra. Fatehpur Sikri was the capital of the Mughal Empire between 1571 and 1585 during the reign of Akbar. Continue to the 'pink city' of Jaipur. The rest of your day is free for your own exploration of Jaipur's action packed streets and magnificent palaces. Jaipur is a shopper's paradise. There is an amazing range of crafts available, and Jaipur is also famous for its precious and semi-precious stones. \\n\\nOvernight: 3- or 4-star hotel in Jaipur\\n\\nDay 3: Jaipur (B)After breakfast, visit Amber Fort located 12 kilometers from Jaipur. The magnificent Amber Fort is a fine blend of Hindu and Muslim architecture. Return to Jaipur and visit the City Palace, situated in the heart of Jaipur's old city. The palace is a blend of Rajput and Mughal architecture; it houses a 7-storied Chandra Mahal in the center. Also visit Hawa Mahal (Palace of Winds), Jaipur's most distinctive landmark. Built in 1799, this is an amazing example of Rajput architecture.\\n\\nOvernight: 3- or 4-star hotel in Jaipur\\n\\nDay 4: Jaipur \u2013 Delhi (B)After breakfast, travel back to your Delhi hotel or the airport.\",\n \"duration\": {\n \"fixedDurationInMinutes\": 5760\n },\n \"pointOfInterestLocations\": [\n {\n \"location\": {\n \"ref\": \"LOC-6eKJ+or5y8o99Qw0C8xWyJUIMZqLxZiFQx5hWjqMeXg=\"\n }\n }\n ]\n},\n```\n\nUse the `unstructuredDescription` and `unstructuredItinerary` fields to create the section on your site that corresponds to the **What to expect** section on the Viator product display page. Note that the `unstructuredItinerary` field is not always populated \u2013 in that case, just use the `unstructuredDescription` field.\n\nAll products with an `\"UNSTRUCTURED\"` itinerary type are in the process of being updated to the appropriate structured type. Eventually, all products will support structured itinerary information.\n\n## Protecting unique content\n\nIn order to prevent our unique content from being utilized by unauthorized third parties, we require that you design your site in such a way that this content will not be indexed by search engines.\n\nThe content that must be protected comprises:\n\n- **Product reviews** \u2013 This includes all review text (from any provider) as obtained via the [/reviews/product](#operation/reviewsProduct) endpoint; and, that in the `reviews` element in the product content response. \n- **Viator unique content** \u2013 This includes all data in all elements within the `viatorUniqueContent` element in the product content response.\n\n### Guidelines to prevent indexing of unique content\n\nIn order to properly protect reviews and other unique content, you must ensure that the protected content **never** appears directly in the source code of the loaded page. This includes both HTML and Javascript.\n\nIn order to do this correctly, the unique content must be loaded via a call to an **external** Javascript, and that Javascript must be blocked in [robots.txt](https://moz.com/learn/seo/robotstxt) so that search engines can not see or index it.\n\n### How to check\n\nA simple way to check that the unique content does not appear in the source code of the loaded page \u2013 and, therefore, cannot be indexed \u2013 is to copy a snippet of the unique content text that is displayed when you load the page normally in your browser. Approximately 10 words will suffice.\n\nThen, access the source code of that page using the **View Source** feature in your browser. Use your browser's in-page search feature to search for the text snippet copied in the previous step. If the text is found anywhere in the source code of the page, then your implementation is **not** correctly protecting the content, as it will be able to be indexed by search enginges. \n\n### Example implementations\n\n\u274c **Unacceptable implementation**: pure HTML\n\nHere the protected content appears directly in the HTML and can be indexed by search engines:\n\n```html\n\n \n \n \n
\u201dI had a great time at this hotel\u201d
\n \n\n```\n\n\u274c **Unacceptable implementation**: Javascript in the page source\n\nHere, the protected content still appears in the page source, even though it is in the 'script' section, and will therefore be indexed by search engines:\n\n\n```html\n\n \n \n \n \n
\n \n\n```\n\n\u2705 **Acceptable implementation:** protected content is loaded using an **external** Javascript and access to that endpoint is blocked using robots.txt:\n\n```html\n\n \n \n \n \n
\n \n\n```\n\nRobots.txt in the document root for `https://api.hello.xyz`:\n\n```bash\nUser-Agent: *\nDisallow: /getReviewContentForHotel\n```\n\n**Note**: The robots.txt file must be in the root directory for whichever domain or subdomain the call is being made to. Please review the [robots.txt guidelines](https://developers.google.com/search/docs/advanced/robots/create-robots-txt) to determine the correct syntax for your site.\n\n## Review authenticity\n\n### Viator performs checks on reviews\n\nYou can only submit a review or rating of an experience to Viator if you were the person who made the booking through Viator. Before publication, each review goes through an automated tracking system, which collects information for each of the following criteria: who, what, how, and when. \n\nIf the system detects something that contradicts our publication criteria, the review is not published. When the system detects a problem with a review, it may be automatically rejected, sent to the reviewer for validation, or manually reviewed by our team of content specialists who work 24/7 to maintain the quality of the reviews on our site. In some cases, we will also send Viator customers an email asking them to validate their review before it is published.

All Viator customers need to do is to click on the link provided in the email. \n\nAfter publication, our team checks each review reported to it as not meeting our publication criteria. Tripadvisor reviews that appear on the Viator site are subject to the same checks and moderation processes as set out above. It is not necessary to have booked an experience through Viator (or Tripadvisor) to submit a review of an experience to the Tripadvisor site.\n\n# Booking concepts\n\n## Working with age bands\n\n### Why have age bands?\n\nTour and experience product suppliers can set different prices for (and impose different rules on) customers according to how old they are. \n\nFor example, suppliers might choose to charge people 18 years and older ('adults') the full ticket price, while 'children' can book at a lower price. \n\nOr, the tour operator may only allow children to make a group booking for the tour so long as the group contains 'at least one adult'.\n\nViator provides six age-band categories that product suppliers can use to segregate travelers into age groups (the limits of which they also define) in order to set pricing and traveler-count participation rules for their product according to the age band categories.\n\nThe age-bands available for a particular product, such as *adult*, *child*, *infant*, etc., are returned by the [/products/{product-code}](#operation/products) service. Your customer should be able to select a different number of people from each available age-band during the price check and checkout process.\n\nTo learn more about how to implement age bands, see the following guide: [Implementing age bands & pax mix](https://partnerresources.viator.com/travel-commerce/merchant/agebands-pax-mix?source=specs)\n\n### Age-band categories\n\nThe age bands supported by the Viator API are as follows:\n\n| bandId | Description |\n|------:|-------|\n| `\"ADULT\"` | Adult |\n| `\"CHILD\"` | Child |\n| `\"INFANT\"` | Infant |\n| `\"YOUTH\"` | Youth |\n| `\"SENIOR\"` | Senior |\n| `\"TRAVELER`\" | Catch-all age-band for unit-priced products |\n\nNote that the `\"TRAVELER\"` is only used for bookings with [unit pricing](#section/Booking-concepts/Per-person-and-unit-pricing), in which case it will be the only age-band available.\n\nThe exact age range to which each category pertains is defined by the supplier, and the maximum and minimum ages that each age band describes for each product can be found in the product content response; e.g.:\n\n```json\n\"ageBands\": [\n {\n \"ageBand\": \"INFANT\",\n \"startAge\": 0,\n \"endAge\": 2,\n \"minTravelersPerBooking\": 0,\n \"maxTravelersPerBooking\": 15\n },\n {\n \"ageBand\": \"CHILD\",\n \"startAge\": 3,\n \"endAge\": 11,\n \"minTravelersPerBooking\": 0,\n \"maxTravelersPerBooking\": 15\n },\n {\n \"ageBand\": \"ADULT\",\n \"startAge\": 12,\n \"endAge\": 80,\n \"minTravelersPerBooking\": 1,\n \"maxTravelersPerBooking\": 15\n }\n]\n\n```\n\nFor this product, the age bands have been defined as follows:\n\n| `ageBand` | `ageFrom` | `ageTo` |\n|:--------:|:-------:|:-----:|\n| ADULT | 13 | 64 |\n| SENIOR | 65 | 99 |\n| CHILD | 4 | 12 |\n\n\nProduct suppliers must define at least one age band for their tour, and there are no 'default' age ranges. Therefore, if the supplier has only specified a single 'adult' age band covering ages 18-99, it must be assumed that only people aged 18-99 are eligible to book the tour, essentially excluding children and centenarians in this case.\n\n### When you will use age-bands\n\nThe age-band of a customer needs to be communicated via the API in the following situations:\n\n1. When placing a booking-hold\n - you will need to supply the age-band of each of the travelers being booked for in the `paxMix` element in the request to [/bookings/hold](#operation/bookingsHold) or [/bookings/cart/hold](#operation/bookingsCartHold).\n2. When making a booking \n - As with the booking hold, age-bands must be supplied in the `paxMix` element \n - If the supplier has specified `\"AGEBAND\"` as a booking question, you must additionally provide these details in the `bookingQuestionAnswers` array in the request to [/bookings/book](#operation/bookingBook) or [/bookings/cart/book](#operation/bookingsCartBook). Note that these details are verified by the booking server and the booking will be rejected if the details do not match. For more information about answering the `\"AGEBAND\"` booking question, see [Booking concepts \u2013 Booking questions](#section/Booking-concepts/Booking-questions).\n\n## Cancellation policy\n\n**Note**: This section applies to affiliate partners with API access level \"Full Access + Booking\" and merchant partners only.\n\nAs well as *making* bookings, affiliate and merchant partners are also able to *cancel* bookings through the Viator API using the [/bookings/cancel-reasons](#operation/bookingsCancelReasons), [/bookings/{booking-ref}/cancel-quote](#operation/bookingsCancelQuote) and [/bookings/{booking-ref}/cancel](#operation/bookingsCancel) endpoints. Items cancelled via the [/bookings/{booking-ref}/cancel](#operation/bookingsCancel) endpoint will be cancelled in full, and only one booking can be cancelled at a time.\n\nFor more information about how to perform cancellations using this API, see the [Cancellation API workflow](#section/Booking-concepts/Cancellation-API-workflow) section and our in-depth guide about cancellation policies and how to handle cancellations: [All you need to know about cancellation policies](https://partnerresources.viator.com/travel-commerce/merchant/cancellation-policies?source=specs).\n\n\n### Cancellation policies\n\nAll products can be cancelled by the affiliate or merchant partner; however, the refund granted by the supplier depends on the cancellation policy for the product in question.\n\nThere are three cancellation policy categories, **standard**, **custom** and **all sales final**, indicated by the `type` element of the `cancellationPolicy` object in the responses from the [product content endpoints](#section/Key-concepts/Product-content-and-availability-endpoints).\n\n**Note:** *These policies are those provided by Viator to you, the merchant partner. As the merchant of record, you can choose whether to extend these terms to your customers unchanged; or, set your own cancellation terms. For example, you might choose to make all products non-refundable; or, you might extend the full-refund cancellation window to 72 hours instead of 24 hours, and so forth. However, you will still be invoiced according to Viator's cancellation policies communicated via the API*\n\n### Standard cancellation policy (`\"STANDARD\"`)\nProducts in this category can be cancelled up to 24 hours before the travel time (local supplier time) and a full refund will be granted. However, a 100% cancellation penalty applies for cancellations submitted less than 24 hours before the start time. Most products (about 85%) fall into this category.\n\n#### Example response snippet\n\n- **Source endpoint**: [/products/{product-code}](#operation/products)\n- **Product**: `5010SYDNEY`\n\n```json\n{\n \"cancellationPolicy\": {\n \"type\": \"STANDARD\",\n \"description\": \"For a full refund, cancel at least 24 hours before the scheduled departure time.\",\n \"cancelIfBadWeather\": false,\n \"cancelIfInsufficientTravelers\": false,\n \"refundEligibility\": [\n {\n \"dayRangeMin\": 1,\n \"percentageRefundable\": 100\n },\n {\n \"dayRangeMin\": 0,\n \"dayRangeMax\": 1,\n \"percentageRefundable\": 0\n }\n ]\n },\n```\n\nThis product has the *standard* cancellation policy; i.e., when a booking is cancelled:\n\n| Policy | `dayRangeMin` | `dayRangeMax` | Logic | `percentageRefundable` |\n|--------|:-----------:|:-----------:|-------|:--------------------------:|\n| *less than* one day (24 hours) before the start time | 0 | 1 | (product_start_time - cancellation_time) >= 0 days && (product_start_time - cancellation_time) < 1 days | 0 |\n| *more than* one day (24 hours) before the start time | 1 | (absent) | (product_start_time - cancellation_time) >= 1 day | 100 |\n\n### Custom cancellation policy (`\"CUSTOM\"`)\nThe refund amount for products in this category varies depending on how long before its start time the product is cancelled. Many products on a custom policy are multi-day tours, which require more sophisticated planning on the supplier\u2019s end. Only a small number of products (around 5%) fall into this category.\n\n - **Note**: the `description` field contains a natural-language (and therefore language-localized) description of the policy described in the `refundEligibility` array. You can use this description for customer-messaging directly, or implement your own natural-language generation techique. With the cancellation policy encoded in a structured way, it would also be possible to display this information graphically.\n\n#### Example response snippet\n\n- **Source endpoint**: [/products/{product-code}](#operation/products)\n- **Product**: `40944P355`\n\n```json\n\"cancellationPolicy\": {\n \"type\": \"CUSTOM\",\n \"description\": \"If you cancel at least 30 day(s) in advance of the scheduled departure, there is no cancellation fee.
If you cancel between 10 and 29 day(s) in advance of the scheduled departure, there is a 50 percent cancellation fee.
If you cancel within 9 day(s) of the scheduled departure, there is a 100 percent cancellation fee.\",\n \"cancelIfBadWeather\": false,\n \"cancelIfInsufficientTravelers\": false,\n \"refundEligibility\": [\n {\n \"dayRangeMin\": 10,\n \"dayRangeMax\": 30,\n \"percentageRefundable\": 50\n },\n {\n \"dayRangeMin\": 30,\n \"percentageRefundable\": 100\n },\n {\n \"dayRangeMin\": 0,\n \"dayRangeMax\": 10,\n \"percentageRefundable\": 0\n } \n ]\n },\n```\n\nThis product has a complex cancellation policy; where cancellations processed:\n\n| Policy | `dayRangeMin` | `dayRangeMax` | Logic | `percentageRefundable` |\n|--------|:-----------:|:-----------:|-------|:--------------------------:|\n| 30 days or more before the start time | 30 | (absent) | (product_start_time - cancellation_time) >= 30 days | 100 |\n| 10 days and *less than* 30 days (10 to 30 days) *before* the start time or more | 10 | 30 | (product_start_time - cancellation_time) >= 10 days && (product_start_time - cancellation_time) < 30 days | 50 |\n| *less than* 10 days *before* the start time | 0 | 10 | (product_start_time - cancellation_time) < 10 days | 0 |\n\n**Note:** When the `dateRangeMax` field is absent, this means infinity. Therefore, the second element in the `refundEligibility` array above indicates that the time period begins infinitely far in the past *until* 30 days prior to the tour or activity commencing.\n\n### `3` \u2013 All sales final (100% cancellation penalty / no refund offered)\n\nProducts in this category cannot be cancelled or amended without incurring a 100% penalty; i.e., the refund amount will be zero. Around 10% of products fall into this category.\n\n#### Example response snippet\n\n- **Source endpoint**: [/products/{product-code}](#operation/products)\n- **Product**: `100014P7`\n\n```json\n{\n \"cancellationPolicy\": {\n \"type\": \"ALL_SALES_FINAL\",\n \"description\": \"All sales are final and incur 100% cancellation penalties\",\n \"cancelIfBadWeather\": false,\n \"cancelIfInsufficientTravelers\": false,\n \"refundEligibility\": [\n {\n \"dayRangeMin\": 0,\n \"percentageRefundable\": 0\n }\n ]\n },\n```\n\nProducts in this category can be cancelled, but no refund will be granted.\n\n### startTimeStamp and endTimeStamp\n\nWithin the `cancellationPolicy` object in the response from [/bookings/book](#operation/bookingsBook) or [/bookings/cart/book](#operation/bookingsCartBook), the `refundEligibility.startTimestamp` and `refundEligibility.endTimestamp` fields contain time-stamps (UTC) that indicate the exact times between which the different cancellation refund rates apply.\n\n**Note**: \n * `refundEligibility.startTimestamp` will always be further in the past than `refundEligibility.endTimestamp`. \n * Please use `startTimestamp` and `endTimestamp`, rather than `dayRangeMin` and `dayRangeMax`, to determine which cancellation policy is in effect.\n\n**Example response snippet from [/bookings/book](#operation/bookingsBook) and [/bookings/cart/book](#operation/bookingsCartBook)**:\n\n```json\n\"cancellationPolicy\": {\n \"type\": \"STANDARD\",\n \"description\": \"For a full refund, cancel at least 24 hours before the scheduled departure time.\",\n \"cancelIfBadWeather\": false,\n \"cancelIfInsufficientTravelers\": false,\n \"refundEligibility\": [\n {\n \"dayRangeMin\": 1,\n \"percentageRefundable\": 100,\n \"startTimestamp\": \"2020-08-25T00:36:49.69005Z\",\n \"endTimestamp\": \"2020-11-28T13:00:00Z\"\n },\n {\n \"dayRangeMin\": 0,\n \"dayRangeMax\": 1,\n \"percentageRefundable\": 0,\n \"startTimestamp\": \"2020-11-28T13:00:00Z\",\n \"endTimestamp\": \"2020-11-29T13:00:00Z\"\n }\n ]\n}\n```\n\n### Post-travel cancellations\n\nOccasionally, customers seek a refund for a product **after** completing their travels.\n\nThe reason for this might be because they were unable to attend the tour due to the supplier having cancelled the tour due to bad weather or other reasons beyond the customer's control; or, the customer might have been extremely dissatisfied with the tour itself, felt that it was misrepresented in its advertising, or some other serious complaint.\n\nWhen this occurs, you will need to [send a refund request by email to dpsupport](mailto:dpsupport@viator.com) and include both \"CANCEL\" and the booking reference number in the subject line.\n\nFor **all** post-travel cancellation requests, you will need to include a detailed description of the issue. \n\nExcept in cases of known service interruptions (e.g., due to extreme weather events), we will first verify the issue and seek authorization from the product supplier. \n\nOnce a decision regarding the refund has been made, we will notify your Customer Services Department with this information. You will then need to advise your customer directly and process the refund if granted.\n\n### Partial refunds\n\nWhile we recommend that merchant partners support the processing of partial refunds for their customers, it is ultimately up to the partner whether to implement this functionality. \n\nIf you would prefer to only grant the full (100%) refund that is offered on most products so long as the cancellation is processed more than 24 hours prior to the product's start time, we recommend that you implement logic that checks whether a 100% refund is available for the product at the time the customer wishes to cancel their booking.\n\n| **Type 1: Standard policy** (`cancellationPolicy.type` is `\"STANDARD\"`) |\n|-------------------------------------------------------------|\n| The 100% refund is available so long as the cancellation is performed more than 24 hours prior to the product start time |\n\n| **Type 2: Custom policy** (`cancellationPolicy.type` is `\"CUSTOM\"`) |\n|-----------------------------------------------------------|\n| You will need to check whether any of the canellation policy objects in the `refundEligibility` array have: |\n\n| **Type 3: All sales final** (`cancellationPolicy.type` is `\"ALL_SALES_FINAL\"`)|\n|-------------------------------------------------------------|\n| No refunds are available (except in the case of manual confirmation products that are still in a 'pending' state and special exceptions for post-trip cancellations); therefore, under normal conditions, if you grant a refund to your customer for this kind of product, it will be solely at *your* expense (i.e., you will still be invoiced for the cost of the product by Viator). Therefore, we recommend that you do not allow refunds for products with this policy. |\n\n## Per-person and unit pricing\n\n**Note**: This section applies to affiliate partners with API access level \"Full Access + Booking\" and merchant partners only.\n\nThe products in our catalogue fall into two pricing categories: **per-person** and **unit** pricing.\n\nA product's pricing category is given in the `pricingInfo.type` field of the product content response. Depending on whether the product has per-person or unit pricing, this value will be `\"PER_PERSON\"` or `\"UNIT\"`, respectively.\n\nFor more information, see this article: [Per-person and unit pricing](https://partnerresources.viator.com/travel-commerce/merchant/pricing/?source=specs#per-person-unit-pricing).\n\n### Per-person pricing\n\nIf the pricing is *per-person*, then the total price of the booking will be directly proportional to the number of participants (passengers) of each age-band type that are being booked for the product; i.e., a direct multiple of the per-person price.\n\nFor example:\n\n```json\n\"pricingInfo\": {\n \"type\": \"PER_PERSON\",\n \"ageBands\": [\n {\n \"ageBand\": \"CHILD\",\n \"startAge\": 3,\n \"endAge\": 12,\n \"minTravelersPerBooking\": 0,\n \"maxTravelersPerBooking\": 6\n },\n {\n \"ageBand\": \"ADULT\",\n \"startAge\": 13,\n \"endAge\": 99,\n \"minTravelersPerBooking\": 2,\n \"maxTravelersPerBooking\": 6\n }\n ]\n},\n```\n\n### Per-unit pricing\n\nIf the product has *unit* pricing, then the total price of the booking will depend on the number of units (groups) and types of unit that ideally accommodate the participant mix. Additionally, the `pricingInfo` object in the response will specify the type of unit in the `unitType` field; e.g., in this case, `\"VEHICLE\"`:\n\n```json\n\"pricingInfo\": {\n \"type\": \"UNIT\",\n \"ageBands\": [\n {\n \"ageBand\": \"TRAVELER\",\n \"startAge\": 0,\n \"endAge\": 99,\n \"minTravelersPerBooking\": 1,\n \"maxTravelersPerBooking\": 8\n }\n ],\n \"unitType\": \"VEHICLE\"\n}\n``` \n\nThe `unitType` will be one of:\n\n\n| `unitType` | Example product | Meaning |\n|-------------|-----------------|---------|\n| `\"GROUP\"` | [10847P42](https://www.viator.com/tours/Berlin/In-Search-of-Jewish-Berlin-3-hour-Private-History-Tour-with-a-Scholar-Guide/d488-10847P42) | **Per-group** pricing \u2013 the unit price is calculated according to the number of groups the specified passenger mix will fit into rather than the exact number of participants. `minTravelersPerBooking` and `maxTravelersPerBooking` must be considered as these fields relate to the available group sizes. |\n| `\"ROOM\"` | [16621P2](https://www.viator.com/tours/Maharashtra/Stay-package-with-amusement-park-for-2pax-for-2-nights/d25170-16621P2) | **Per-room** pricing relates the room price, which depends on the number of participants making the booking. |\n| `\"PACKAGE\"` | [186385P1](https://www.viator.com/tours/Slovenia/VIP-wellness-to-rent/d734-186385P1) | **Per-package** pricing refers to products that are sold as part of a package; for example a family package stipulating a passenger mix of two adults and two children. |\n| `\"VEHICLE\"` | [10175P10](https://www.viator.com/tours/Cannes/Private-Departure-Transfer-from-Cannes-to-Nice-Airport/d786-10175P10) | **Per-vehicle** pricing is calculated according to the number of vehicles required for the specified passenger mix rather than the exact number of participants. `minTravelersPerBooking` and `maxTravelersPerBooking` must be considered as these fields relate to the occupancy limitations for each vehicle. The minimum price will depend on the rate for a single vehicle. |\n| `\"BIKE\"` | [153074P3](https://www.viator.com/tours/Adelaide/Adelaide-90-Minute-Pedicab-Tour-Scenic-Green-and-River-Experience/d376-16810P4) | **Per-bike** pricing \u2013 identical to \"per vehicle\", but refers specifically to vehicles that are bikes. |\n| `\"BOAT\"` | [35157P2](https://www.viator.com/tours/British-Virgin-Islands/Private-Sunset-Sail/d809-35157P2) | **Per-boat** pricing \u2013 identical to \"per vehicle\", but refers specifically to vehicles that are boats. |\n| `\"AIRCRAFT\"` | [14876P5](https://www.viator.com/tours/Niagara-Falls-and-Around/Air-Taxi-Tour-from-Niagara-to-Toronto-including-Ground-Transport-from-Niagara-Hotels/d773-14876P5) | **Per-aircraft** pricing \u2013 identical to \"per vehicle\", but refers specifically to vehicles that are aircraft. | \n\n\n## Low-margin products\n\n**Note**: This section applies to affiliate partners with API access level \"Full Access + Booking\" and merchant partners only.\n\nWhen setting the price at which you sell products on your site, it\u2019s important to remember that the `recommendedRetailPrice` is just the price at which the product is currently advertised on the Viator site and is only a recommendation. \n\nHowever, the `recommendedRetailPrice` may be **less than** the `partnerTotalPrice` (i.e., the amount you will be invoiced for the sale).\n\nIf you sell the product for less than the `partnerTotalPrice`, you will make a loss on that sale.\n\nTherefore, to ensure that you sell the product at a price which guarantees that you receive at least as much as you will be invoiced for, as well as any extra profit margin that you desire to generate, we recommend you include logic to check that these requirements are satisfied by comparing `recommendedRetailPrice` and `partnerTotalPrice` and adjusting the price at which you advertise and sell the product accordingly.\n\n**For example:** If the `partnerTotalPrice` for a product is $100, the `recommendedRetailPrice` is $101, and you require a minimum margin of 5%, you should adjust the price at which you advertise the product to $105.\n\nWhile we do recommend that you set your prices according to the value of `recommendedRetailPrice`, it is ultimately up to you what price you set for the product, bearing in mind that the amount Viator will invoice you for the sale will be the value of `partnerTotalPrice`.\n\nFor more information, see this article about how to deal with [Low-margin products](https://partnerresources.viator.com/travel-commerce/merchant/pricing/?source=specs#low-margin-products).\n\n## Supplier communications\n\n**Note**: This section applies to affiliate partners with API access level \"Full Access + Booking\" and merchant partners only.\n\n### How can suppliers communicate with end customers?\n\nSuppliers occasionally need to reach out to customers for a variety of reasons, such as:\n\n* Requesting pickup locations, flight details or passenger weight information\n* Providing weather alerts, sold-out notifications or general messaging\n\nTo allow suppliers to contact customers directly, Viator provides **Closed-Loop Communication (CLC)**.\n\n### How to set up CLC for a booking\n\nThe recipient(s) of suppliers' CLC messages is set for each booking at the time of booking by supplying the customer\u2019s email address (`email`) as well as their phone number (`phone`) in the `communication` object in the request sent to the [/booking/book](#operation/bookingsBook) or [/bookings/cart/book](#operation/bookingsCartBook) endpoints when making a booking.\n\nThis will direct CLC messages sent by suppliers directly to that customer's email; no action from your support team will be necessary for suppliers to communicate with customers.\n\nPartners choosing this option should mention to their customers that they are purchasing a product from a third-party supplier, and that they may, therefore, receive communications regarding the purchase directly from that supplier.\n\n#### Note:\n\n* To have a CC of each message a supplier sends to their customer sent to *your* (the partner's) customer support email address (in case further assistance is required) you must include your customer support email address in the `email` field, after the customer's email and separated from that address with a comma.\n\n\n#### Example request body snippet to enable direct CLC\n```json\n{\n ...\n \"communication\": {\n \"email\": \"john.smith@tripadvisor.com\",\n \"phone\": \"+61 4121121121\"\n}\n```\n\n#### Example request body snippet to enable direct CLC with a CC of each message sent to your customer support\n```json\n{\n ...\n \"communication\": {\n \"email\": \"john.smith@tripadvisor.com,customersupport@bookatrip4me.com\",\n \"phone\": \"+61 4121121121\"\n}\n```\n\n\n### Supplier communications without CLC\n\nTo have CLCs from the supplier sent only to your (the merchant's) customer support team, supply the email address of your customer support function in the `email` field of the `communication` object in the request to the [/bookings/book](#operation/bookingsBook) or [/bookings/cart/book](#operation/bookingsCartBook) endpoints when making a booking.\n\n**Note:** Utilizing this option requires you, the merchant, to manage the final loop of communication with the end customer to ensure that their tour/activity can be fulfilled successfully.\n\n#### Example request body snippet to disable CLC\n```json\n{\n ...\n \"communication\": {\n \"email\": \"customersupport@bookatrip4me.com\",\n \"phone\": \"+61 4121121121\"\n}\n```\n\n### Default behavior\n\nIf an email address is not supplied in the communications object, the default behavior will be to use the partner's customer support email address for correspondence regarding this booking. Please contact your account manager to set or change the customer support email address for your organization. \n\n#### Example request body snippet that would trigger the default behavior\n\n```json\n{\n ...\n \"communication\": {\n \"phone\": \"+61 4121121121\"\n}\n```\n\n### More information\n\nFor additional information about all communications sent by Viator, including CLC, see: [All you need to know about cancellation policies \u2013 Managing Communications](https://partnerresources.viator.com/travel-commerce/merchant/cancellation-policies?source=specs#managing-communications).\n\n## Booking questions\n\n**Note**: This section applies to affiliate partners with API access level \"Full Access + Booking\" and merchant partners only.\n\nThe booking-questions functionality of this API allows vital information specified by the supplier about the individual travelers or the group as a whole to be sent to the supplier as part of the request when making a booking using the [/bookings/book](#operation/bookingsBook) or [/bookings/cart/book](#operation/bookingsCartBook) endpoints.\n\nThe booking questions available for a product are specified in the `bookingQuestions` array in the response from any of the [product content endpoints](#section/Key-concepts/Product-content-and-availability-endpoints) for that product. For example, for the product [10212P2 (Taste of Miami Helicopter Tour)](https://www.viator.com/tours/Miami/Taste-of-Miami-Helicopter-Tour/d662-10212P2), the `bookingQuestions` array is as follows:\n\n```json\n\"bookingQuestions\": [\n \"FULL_NAMES_LAST\",\n \"SPECIAL_REQUIREMENTS\",\n \"FULL_NAMES_FIRST\",\n \"WEIGHT\",\n \"AGEBAND\"\n],\n```\nEach key string (`\"FULL_NAMES_LAST\"`, etc.) identifies a booking question, details about which can be found in the response from the [/products/booking-questions](#operation/productsBookingQuestions) endpoint.\n\nRelevant booking question details in example response snippet from [/products/booking-questions](#operation/productsBookingQuestions):\n\n```json\n\"bookingQuestions\": [\n {\n \"legacyBookingQuestionId\": 23,\n \"id\": \"WEIGHT\",\n \"type\": \"NUMBER_AND_UNIT\",\n \"group\": \"PER_TRAVELER\",\n \"label\": \"Traveler weight in pounds or kilograms (required for safety reasons)\",\n \"hint\": \"E.g. 130lbs, 60kg\",\n \"units\": [\n \"kg\",\n \"lbs\"\n ],\n \"required\": \"MANDATORY\"\n },\n {\n \"legacyBookingQuestionId\": 24,\n \"id\": \"FULL_NAMES_FIRST\",\n \"type\": \"STRING\",\n \"group\": \"PER_TRAVELER\",\n \"label\": \"First name\",\n \"required\": \"MANDATORY\"\n },\n {\n \"legacyBookingQuestionId\": 25,\n \"id\": \"FULL_NAMES_LAST\",\n \"type\": \"STRING\",\n \"group\": \"PER_TRAVELER\",\n \"label\": \"Last name\",\n \"required\": \"MANDATORY\"\n },\n {\n \"legacyBookingQuestionId\": 30,\n \"id\": \"AGEBAND\",\n \"type\": \"STRING\",\n \"group\": \"PER_TRAVELER\",\n \"label\": \"Age band\",\n \"allowedAnswers\": [\n \"ADULT\",\n \"SENIOR\",\n \"YOUTH\",\n \"CHILD\",\n \"INFANT\",\n \"TRAVELER\"\n ],\n \"required\": \"MANDATORY\"\n },\n {\n \"legacyBookingQuestionId\": 27,\n \"id\": \"SPECIAL_REQUIREMENTS\",\n \"type\": \"STRING\",\n \"group\": \"PER_BOOKING\",\n \"label\": \"Special requirements\",\n \"required\": \"OPTIONAL\"\n },\n ...\n]\n```\n\nThe `required` field indicates whether an answer to the booking question must be provided in the booking request. It is necessary to provide an answer to all specified booking questions for which `required` is `MANDATORY`. \n\nAdditionally, the `group` field indicates whether an answer to the booking question must be answered for each traveler (`\"PER_TRAVELER\"`) or for the booked group as a whole (`\"PER_BOOKING\"`).\n\nIn this case:\n\n| Booking question id | required | group |\n|---------------------|----------|-------|\n| `\"WEIGHT\"` | `\"MANDATORY\"` | `\"PER_TRAVELER\"` |\n| `\"FULL_NAMES_FIRST\"` | `\"MANDATORY\"` | `\"PER_TRAVELER\"` |\n| `\"FULL_NAMES_LAST\"` | `\"MANDATORY\"` | `\"PER_TRAVELER\"` |\n| `\"AGEBAND\"` | `\"MANDATORY\"` | `\"PER_TRAVELER\"` |\n| `\"SPECIAL_REQUIREMENTS\"` | `\"OPTIONAL\"` | `\"PER_BOOKING\"` |\n\nTherefore, to book this product, you must provide an answer to the `\"WEIGHT\"`, `\"FULL_NAMES_FIRST\"`,`\"FULL_NAMES_LAST\"` and `\"AGEBAND\"` questions for each traveler, and, optionally (if specified by the user at the time of booking) `\"SPECIAL_REQUIREMENTS\"` for the booked group.\n\nAnswers to the booking questions are sent in the `bookingQuestionAnswers[]` array in the request to [/bookings/book](#operation/bookingsBook) or [/bookings/cart/book](#operation/bookingsCartBook). The following example shows a valid and complete set of booking-question answers for this product.\n\n| Traveler number | First name | Last name | age band |\n|-----------------|------------|-----------|----------|\n| 1 | John | Smith | ADULT |\n| 2 | Mary | Jones | ADULT | \n\n```json\n\"bookingQuestionAnswers\": [ \n {\n \"question\": \"AGEBAND\",\n \"answer\": \"ADULT\",\n \"travelerNum\": 1\n },\n {\n \"question\": \"FULL_NAMES_LAST\",\n \"answer\": \"Smith\",\n \"travelerNum\": 1\n },\n {\n \"question\": \"FULL_NAMES_FIRST\",\n \"answer\": \"John\",\n \"travelerNum\": 1\n },\n {\n \"question\": \"AGEBAND\",\n \"answer\": \"ADULT\",\n \"travelerNum\": 2\n },\n {\n \"question\": \"FULL_NAMES_LAST\",\n \"answer\": \"Jones\",\n \"travelerNum\": 2\n },\n {\n \"question\": \"FULL_NAMES_FIRST\",\n \"answer\": \"Mary\",\n \"travelerNum\": 2\n },\n {\n \"question\": \"SPECIAL_REQUIREMENTS\",\n \"answer\": \"NO\"\n }\n]\n```\n\n### When to use `travelerNum`\n\nPlease note that `travelerNum` indicates which traveler the answer pertains to. All `PER_TRAVELER` questions must be answered for all travelers in the booking. `travelerNum` **must** be omitted for `PER_BOOKING` booking questions.\n\n### Booking questions with units\n\nSome booking questions require you to specify the unit type when providing an answer to the questions.\n\n**Example: 'HEIGHT' booking question**\n\n\nDefinition of question from [/products/booking-questions](#operation/productsBookingQuestions):\n```json\n{\n \"legacyBookingQuestionId\": 2,\n \"id\": \"HEIGHT\",\n \"type\": \"NUMBER_AND_UNIT\",\n \"group\": \"PER_TRAVELER\",\n \"label\": \"Traveler height in feet or centimeters (required for safety reasons)\",\n \"hint\": \"E.g. 5'2\\\", 158cm\",\n \"units\": [\n \"cm\",\n \"ft\"\n ],\n \"required\": \"MANDATORY\"\n},\n```\n\nA valid answer to this booking question for a traveler who is 193 centimetres tall is as follows:\n\n```json\n\"bookingQuestionAnswers\": [ \n {\n \"question\": \"HEIGHT\",\n \"answer\": \"193\",\n \"unit\": \"cm\",\n \"travelerNum\": 1\n }\n]\n```\n\n**Example: 'WEIGHT' booking question**\n\nDefinition of question from [/products/booking-questions](#operation/productsBookingQuestions):\n\n```json\n{\n \"legacyBookingQuestionId\": 23,\n \"id\": \"WEIGHT\",\n \"type\": \"NUMBER_AND_UNIT\",\n \"group\": \"PER_TRAVELER\",\n \"label\": \"Traveler weight in pounds or kilograms (required for safety reasons)\",\n \"units\": [\n \"kg\",\n \"lbs\"\n ],\n \"required\": \"MANDATORY\",\n \"maxLength\": 50\n},\n```\n\nA valid answer to this booking question for a traveler who weighs 69 kilograms would be as follows:\n\n```json\n\"bookingQuestionAnswers\": [ \n {\n \"question\": \"WEIGHT\",\n \"answer\": \"69\",\n \"unit\": \"kg\",\n \"travelerNum\": 1\n }\n]\n```\n\n\n### Booking questions with allowed answers\n\nSome booking questions must be answered in a specific way. These questions include an `allowedAnswers` array containing the set of valid answers to the question.\n\nExample booking question with allowed answers:\n\n```json\n{\n \"legacyBookingQuestionId\": 31,\n \"id\": \"TRANSFER_ARRIVAL_MODE\",\n \"type\": \"STRING\",\n \"group\": \"PER_BOOKING\",\n \"label\": \"Arrival mode\",\n \"allowedAnswers\": [\n \"AIR\",\n \"RAIL\",\n \"SEA\",\n \"OTHER\"\n ],\n \"required\": \"MANDATORY\"\n}\n```\n\nA valid answer to this booking question would be:\n\n```json\n{\n \"question\": \"TRANSFER_ARRIVAL_MODE\",\n \"answer\": \"AIR\"\n},\n```\n\nNote:\n\n- Not all allowed answers are applicable to all products, so you should not always display all 4 arrival/departure modes for all products. You should validate the arrival/departure modes based on the presence of questions applicable to a specific arrival/departure mode for each product.\n- These questions will help you identify arrival modes available for a product:\n + `\"AIR\"`: `\"TRANSFER_AIR_ARRIVAL_AIRLINE\"`, `\"TRANSFER_AIR_ARRIVAL_FLIGHT_NO\"`\n + `\"SEA\"`: `\"TRANSFER_PORT_ARRIVAL_TIME\"` (`\"TRANSFER_PORT_CRUISE_SHIP\"` applies also to departure mode)\n + `\"RAIL\"`: `\"TRANSFER_RAIL_ARRIVAL_LINE\"`, `\"TRANSFER_RAIL_ARRIVAL_STATION\"`\n- If any of these questions is returned (even just one), the relevant option for arrival mode applies. Once an arrival mode is selected, travellers are required to answer all questions related to the selected arrival mode that are returned for the product in the bookingQuestions array (see the table below).\n- The same applies in case of departure modes, you need to look for these questions specific to each departure mode:\n + `\"AIR\"`: `\"TRANSFER_AIR_DEPARTURE_AIRLINE\"`, `\"TRANSFER_AIR_DEPARTURE_FLIGHT_NO\"`\n + `\"SEA\"`: `\"TRANSFER_PORT_DEPARTURE_TIME\"` (`\"TRANSFER_PORT_CRUISE_SHIP\"` applies also to arrival mode)\n + `\"RAIL\"`: `\"TRANSFER_RAIL_DEPARTURE_LINE\"`, `\"TRANSFER_RAIL_DEPARTURE_STATION\"`\n- If these questions are not returned, the departure mode doesn't apply. Once a departure mode is selected, travellers are required to answer all questions related to the selected departure mode that are returned for the product in the bookingQuestions array (see the table below).\n\nWe recommend partners to translate these answers to natural language on their platforms, see recommendation below:\n\n- `\"AIR\"` - airport\n- `\"RAIL\"` - train station\n- `\"SEA\"` - port\n- `\"OTHER\"` - hotel / specific address\n\n\n### Conditional booking questions\n\nThere are some booking questions that may or may not have to be answered, depending on the presence of \u2013 or answer to \u2013 another booking question. These questions are 'conditional', as indicated by the `required` field containing `\"CONDITIONAL\"`; e.g.:\n\n```json\n{\n \"legacyBookingQuestionId\": 7,\n \"id\": \"TRANSFER_AIR_ARRIVAL_AIRLINE\",\n \"type\": \"STRING\",\n \"group\": \"PER_BOOKING\",\n \"label\": \"Name of arrival airline\",\n \"hint\": \"E.g. United Airlines\",\n \"required\": \"CONDITIONAL\",\n \"maxLength\": 255\n},\n```\n\nSo, when is an answer to a `\"CONDITIONAL\"` booking question required?\n\nAt present, the logic cannot be inferred from the response from the [/products/booking-questions](#operation/productsBookingQuestions) endpoint, but it can be explained here. You will need to hard-code this logic into your implementation in order to correctly present the required booking questions to the user.\n\nThe logic runs as follows:\n\n| For this booking question | if the user's answer is | these questions must also be answered |\n|--------------------|----------------|-------------------------------|\n| `\"TRANSFER_ARRIVAL_MODE\"` | `\"AIR\"` | `\"TRANSFER_AIR_ARRIVAL_AIRLINE\"`
`\"TRANSFER_AIR_ARRIVAL_FLIGHT_NO\"`
`\"TRANSFER_ARRIVAL_TIME\"`
`\"TRANSFER_ARRIVAL_DROP_OFF\"` (see condition 1)
`\"PICKUP_POINT\"` (see condition 1) |\n| `\"TRANSFER_ARRIVAL_MODE\"` | `\"RAIL\"` | `\"TRANSFER_RAIL_ARRIVAL_LINE\"`
`\"TRANSFER_RAIL_ARRIVAL_STATION\"`
`\"TRANSFER_ARRIVAL_TIME\"`
`\"TRANSFER_ARRIVAL_DROP_OFF\"` |\n| `\"TRANSFER_ARRIVAL_MODE\"` | `\"SEA\"` | `\"TRANSFER_PORT_ARRIVAL_TIME\"`
`\"TRANSFER_PORT_CRUISE_SHIP\"`
`\"TRANSFER_ARRIVAL_DROP_OFF\"` (see condition 2)
`\"PICKUP_POINT\"` (see condition 2)|\n| `\"TRANSFER_ARRIVAL_MODE\"` | `\"OTHER\"` | `\"PICKUP_POINT\"` (see condition 3) |\n| `\"TRANSFER_DEPARTURE_MODE\"` | `\"AIR\"` | `\"TRANSFER_AIR_DEPARTURE_AIRLINE\"`
`\"TRANSFER_AIR_DEPARTURE_FLIGHT_NO\"`
`\"TRANSFER_DEPARTURE_DATE\"`
`\"TRANSFER_DEPARTURE_TIME\"`
`\"TRANSFER_DEPARTURE_PICKUP\"` |\n| `\"TRANSFER_DEPARTURE_MODE\"` | `\"RAIL\"` | `\"TRANSFER_RAIL_DEPARTURE_LINE\"`
`\"TRANSFER_RAIL_DEPARTURE_STATION\"`
`\"TRANSFER_DEPARTURE_DATE\"`
`\"TRANSFER_DEPARTURE_TIME\"`
`\"TRANSFER_DEPARTURE_PICKUP\"` |\n| `\"TRANSFER_DEPARTURE_MODE\"` | `\"SEA\"` | `\"TRANSFER_PORT_CRUISE_SHIP\"`
`\"TRANSFER_DEPARTURE_DATE\"`
`\"TRANSFER_PORT_DEPARTURE_TIME\"`
`\"TRANSFER_DEPARTURE_PICKUP\"`|\n| `\"TRANSFER_DEPARTURE_MODE\"` | `\"OTHER\"` | n/a (see condition 4) |\n\n**Conditions**:\n\n1. Rule applies only if `logistics.travelerPickup.locations[]` includes an item with `pickupType`: `\"AIRPORT\"`; **or**, if `logistics.travelerPickup.allowCustomTravelerPickup` is **true**. `\"PICKUP_POINT\"` answer must be a location for which `pickupType` is `\"AIRPORT\"` if answer to `\"TRANSFER_ARRIVAL_MODE\"` is `\"AIR\"`.\n2. Rule applies only if `logistics.travelerPickup.locations[]` includes an item with `pickupType`: `\"PORT\"`; **or**, if `logistics.travelerPickup.allowCustomTravelerPickup` is **true**. `\"PICKUP_POINT\"` answer must be a location for which `pickupType` is `\"PORT\"` if answer to `\"TRANSFER_ARRIVAL_MODE\"` is `\"SEA\"`.\n3. Rule applies only if `logistics.travelerPickup.locations[]` includes an item with `pickupType`: `\"HOTEL\"` or `pickupType`: `\"LOCATION\"` or `pickupType`: `\"OTHER\"`; **or**, if `logistics.travelerPickup.allowCustomTravelerPickup` is **true**.\n4. This question may only be answered `\"OTHER\"` if `\"OTHER\"` is also an available option for the `\"TRANSFER_ARRIVAL_MODE\"` booking question.\n\n**Extra notes**:\n\n- Not all allowed answers are applicable to all products, so you don\u2019t have to always display all 4 arrival/departure modes. For each prodyct, you must validate if arrival/departure modes apply by checking if questions applicable to a specific arrival/departure are present. Read more about this validation here: [Booking questions with allowed answers](#section/Booking-concepts/Booking-questions).\n- All `\"CONDITIONAL\"` booking questions that depend on the answer given to either `\"TRANSFER_ARRIVAL_MODE\"` or `\"TRANSFER_DEPARTURE_MODE\"` (i.e., those questions in the right-hand column in the table above) should be considered `\"MANDATORY\"` if they are stipulated in the `\"bookingQuestions\"` array of the product content response, and the respective transfer mode question **is not** stipulated. That is to say, for example, if `\"TRANSFER_AIR_ARRIVAL_AIRLINE\"` is present, but `\"TRANSFER_ARRIVAL_MODE\"` is absent from `\"bookingQuestions\"`, then `\"TRANSFER_AIR_ARRIVAL_AIRLINE\"` should be considered `\"MANDATORY\"`.\n- The `\"TRANSFER_PORT_CRUISE_SHIP\"` question is required to be answered when the customer's response to either `\"TRANSFER_ARRIVAL_MODE\"` or `\"TRANSFER_DEPARTURE_MODE\"` is `\"SEA\"`; however, this question must only be answered **once** per booking. I.e., the answer for `\"TRANSFER_PORT_CRUISE_SHIP\"` pertains to both questions. There is no provision for the customer to specify different cruise ships for arrival and departure.\n- Please note that the inclusion of the `\"TRANSFER_ARRIVAL_MODE\"`, `\"TRANSFER_DEPARTURE_MODE\"` or their corollary conditional booking questions **does not necessarily imply that pickup is offered** for the product or product option being booked. It may be that these relate to another aspect of the service being offered; for example, an airport greeting product. When returned for a product, these questions must be answered.\n- The `\"TRANSFER_ARRIVAL_DROP_OFF\"` and `\"TRANSFER_DEPARTURE_PICKUP\"` questions are related to locations (arrival drop off and departure pickup) however there are no specific location references or conditions that apply to these questions (see the table). Therefore, customers should be provided with a freetext input field for these questions and the answers must include the FREETEXT designation if the customer answered freely, via text.\n- Whether or not pickup is available should be determined at the product level by the value of `logistics.travelerPickup.pickupOptionType` being either `\"PICKUP_EVERYONE\"` or `\"PICKUP_AND_MEET_AT_START_POINT\"` and not `\"MEET_EVERYONE_AT_START_POINT\"`; or, the presence of the phrase `\"pickup included\"` in the `productOptions[].description` field for the product option.\n- Pickup must be validated on the product option level. It\u2019s possible that the product has multiple product options with a different setup for each one - i.e. one product option offers pickup, another product option requires to meet at the meeting point. The correct validation must be applied as described here: [How to determine if a product option supports pickup.](#section/Booking-concepts/Booking-questions)\n- `logistics.travelerPickup.pickupOptionType` in the product content response could return `\"PICKUP_AND_MEET_AT_START_POINT\"` for products that don't have product options. In such cases travelers should be allowed to either select a pickup location, or decide to meet at the meeting point.\n- Pickup locations shouldn't be displayed at checkout for product options without pickup (this includes the option to contact the supplier later). Please refer to the 'Pickup point question' section below for further details on how to handle pickups.\n\n### Pickup point question\n\nThe booking question that requests the location for pickup is as follows:\n\n```json\n{\n \"legacyBookingQuestionId\": 6,\n \"id\": \"PICKUP_POINT\",\n \"type\": \"LOCATION_REF_OR_FREE_TEXT\",\n \"group\": \"PER_BOOKING\",\n \"label\": \"Hotel pickup\",\n \"hint\": \"E.g. 1234 Cedar Way, Brooklyn NY 00123\",\n \"units\": [\n \"LOCATION_REFERENCE\",\n \"FREETEXT\"\n ],\n \"required\": \"CONDITIONAL\",\n \"maxLength\": 1000\n}\n```\n\nAs you can see, this question can be answered using a location reference or 'freetext' (i.e., a written address in this context). Whether freetext is allowed for this answer depends on the value of `logistics.travelerPickup.allowCustomTravelerPickup` in the response from any of the [product content endpoints](#section/Key-concepts/Product-content-and-availability-endpoints). If `true`, freetext is allowed. Otherwise, a location reference \u2013 in particular, one of the location references included in the `logistics.travelerPickup.locations[]` array \u2013 must be supplied.\n\nExample `\"FREETEXT\"` answer:\n\n```json\n\"bookingQuestionAnswers\": [ \n {\n \"question\": \"PICKUP_POINT\",\n \"answer\": \"1234 Cedar Way, Brooklyn NY 00123\",\n \"unit\": \"FREETEXT\"\n }\n]\n```\n\nExample `\"LOCATION_REFERENCE\"` answer:\n\n```json\n\"bookingQuestionAnswers\": [ \n {\n \"question\": \"PICKUP_POINT\",\n \"answer\": \"LOC-6cb31b00-1fb4-4218-9b50-63f66531d735\",\n \"unit\": \"LOCATION_REFERENCE\"\n }\n]\n```\n\n#### Special pickup-point location references\n\nThe `logistics.travelerPickup.locations[]` array in the response from the product content endpoints contains the location references for all available pickup locations for a product.\n\nAs well as standard location reference codes; e.g., \"LOC-6cb31b00-1fb4-4218-9b50-63f66531d735\", there are two special codes that specify **instructions** rather than locations. \n\nThese are:\n\n- `\"MEET_AT_DEPARTURE_POINT\"`\n- `\"CONTACT_SUPPLIER_LATER\"`\n\nWhen selecting available pickup points, our suppliers also have the option of specifying one or both of these pseudo-locations. These instruct the customer to either meet at one of the locations specified in `logistics.start[]`, or to contact the supplier later to arrange a pickup point, respectively.\n\nWhen building a list of available pickup locations for the customer to select at the time of booking, the descriptive text for these locations can be used. This is available from the [/locations/bulk](#operation/locationsBulk) endpoint in the `name` field, as follows:\n\n```json\n{\n \"locations\": [\n {\n \"provider\": \"TRIPADVISOR\",\n \"reference\": \"CONTACT_SUPPLIER_LATER\",\n \"name\": \"I will contact the supplier later\"\n },\n {\n \"provider\": \"TRIPADVISOR\",\n \"reference\": \"MEET_AT_DEPARTURE_POINT\",\n \"name\": \"I will meet at the departure point\"\n }\n ]\n}\n```\n\nOr, you can provide a selection button in your UI, as we have done on the [viator.com](https://viator.com) site:\n\n
\n \"I\n
\"I will select my pickup location later\" example from viator.com
\n
\n\nThis button appears when the `\"CONTACT_SUPPLIER_LATER\"` location reference is included in the `logistics.travelerPickup.locations[]` array.\n\n\n#### How to determine if a product option supports pickup\n\nWhen the value of `logistics.travelerPickup.pickupOptionType` in the product content response is `\"PICKUP_AND_MEET_AT_START_POINT\"`, it means that the product includes both 'hotel pickup' and 'meet at the departure point' variants in its product options. One product option may be for hotel pickup while another is for meeting at the start/departure point, so you must always check each option's logistics details. To determine which product options offer what, it is necessary to inspect each product option's details in the `productOptions[]` array in the product content response.\n\n**Scenario 1, Pickup included:** \nIf pickup is included for a product option, the `productOptions.logistics.travelerPickup.pickupOptionType` returns `\"PICKUP_AND_MEET_AT_START_POINT\"`. \n\nWhen booking a **product option with pickup included**, such as this, you must collect a pickup point from the user that corresponds to one of the entries in the `productOptions.logistics.travelerPickup.locations[]` array in the product option content response. In this scenario you must not use the data returned at product-level.\n\n```json\n{\n \"productOptionCode\": \"TG13\",\n \"description\": \"Guide anglophone : Guide parlant anglais avec prise en charge \u00e0 l'h\u00f4tel.\\nService de prise en charge compris\",\n \"title\": \"Visite Anglaise avec prise en charge\",\n \"logistics\": {\n \"start\": [\n {\n \"location\": {\n \"ref\": \"LOC-o0AXGEKPN4wJ9sIG0RAn5JOkQupk6XB3ZGmKbXXsO/YJsoMrLjHKBLlR6YXSp+r2\"\n },\n \"description\": \"Rencontre avec le groupe au Samsen Centre Restaurant ( Samsen Soi 2 , pr\u00e8s de Nouvo City Hotel ) \"\n },\n {\n \"location\": {\n \"ref\": \"LOC-o0AXGEKPN4wJ9sIG0RAn5IZzQLYGZXKNHze5ORom1qIr4+647kvt/tTz68opRtEL\"\n },\n \"description\": \"Notre point de rendez-vous \u00e0 BigCountry Old Town situ\u00e9 \u00e0 c\u00f4t\u00e9 du Starbucks Coffee @ The Old Siam Plaza pour le cr\u00e9neau horaire de 8h30, pour les clients s\u00e9journant \u00e0 Khaosan, Pra Nakorn, China Town\"\n },\n {\n \"location\": {\n \"ref\": \"LOC-o0AXGEKPN4wJ9sIG0RAn5NtB8oYNy1V51j3wDEuW3eLTBY+WpoKX+Etl8hTKccw6\"\n },\n \"description\": \"River City Bangkok, The Anchor of Arts & Antiques est un centre commercial de Bangkok, en Tha\u00eflande. Il se trouve sur la rivi\u00e8re Chao Phraya, sur la jet\u00e9e de Si Phraya, \u00e0 proximit\u00e9 de nombreux grands h\u00f4tels. Il est accessible en voiture ou en bateau. Le cr\u00e9neau horaire de 9h00 correspond aux clients qui s\u00e9journent dans les quartiers de Silom, Sathorn et Bangrak.\"\n }\n ],\n \"end\": [\n {\n \"location\": {\n \"ref\": \"LOC-o0AXGEKPN4wJ9sIG0RAn5JOkQupk6XB3ZGmKbXXsO/YJsoMrLjHKBLlR6YXSp+r2\"\n },\n \"description\": \"D\u00e9poser au restaurant Samsen Centre pour le client qui part de Khaosan Area\"\n },\n {\n \"location\": {\n \"ref\": \"LOC-o0AXGEKPN4wJ9sIG0RAn5O9X4lT3Avg+rvKxoSJGnTIJr39qTywftTM5SgCNpowi\"\n },\n \"description\": \"D\u00e9poser au MBK Center , facile \u00e0 connecter au BTS (train Sky) pour le client qui part du point de rendez-vous de River City\"\n }\n ],\n \"travelerPickup\": {\n \"pickupOptionType\": \"PICKUP_AND_MEET_AT_START_POINT\",\n \"allowCustomTravelerPickup\": true,\n \"locations\": [\n {\n \"location\": {\n \"ref\": \"MEET_AT_DEPARTURE_POINT\"\n },\n \"pickupType\": \"OTHER\"\n },\n {\n \"location\": {\n \"ref\": \"CONTACT_SUPPLIER_LATER\"\n },\n \"pickupType\": \"OTHER\"\n },\n {\n \"location\": {\n \"ref\": \"LOC-6eKJ+or5y8o99Qw0C8xWyKrhcZh+/RSI01IBRs/OIZo=\"\n },\n \"pickupType\": \"HOTEL\"\n }\n ]\n }\n }\n}\n```\n\nAll booking questions related to arrival/departure must be displayed as normal to allow customers to select the desired arrival/departure mode and provide all relevant information to the supplier before travel. All answers provided by the customer must be captured and submitted in the booking request following the logic for conditional booking questions from the [**table in the API documentation**](https://docs.viator.com/partner-api/technical/#section/Booking-concepts/Booking-questions).\n\n**Scenario 2, No Pickup (Meeting Point Only):** \nIf the productOption doesn't support pickup, the API will now explicitly return `\"MEET_EVERYONE_AT_START_POINT\"` at the Tour Grade level instead and should be considered to follow a `\"MEET_AT_DEPARTURE_POINT\"` arrangement, reducing all ambiguity. \nThe following product option (also from product [**8374P24**](https://www.viator.com/tours/Bangkok/Train-Market-and-Damnoensaduak-Floating-Market-with-small-group/d343-8374P24)) requires meeting at the departure point and does not include pickup:\n\n```json\n{\n \"productOptionCode\": \"TG3\",\n \"description\": \"Point de rencontre : Rendez-vous au River City Bangkok, d\u00e9pose au MBK Mall. Cr\u00e9neau horaire 9h00.\\nPoint de d\u00e9part :\\nRiver City Bangkok, 23 Soi Charoen Krung 24, Khwaeng Talat Noi, Khet Samphanthawong, Krung Thep Maha Nakhon 10100, Tha\u00eflande\",\n \"title\": \"Ville fluviale Bangkok\",\n \"logistics\": {\n \"start\": [\n {\n \"location\": {\n \"ref\": \"LOC-o0AXGEKPN4wJ9sIG0RAn5NtB8oYNy1V51j3wDEuW3eLTBY+WpoKX+Etl8hTKccw6\"\n },\n \"description\": \"River City Bangkok, The Anchor of Arts & Antiques est un centre commercial de Bangkok, en Tha\u00eflande. Il se trouve sur la rivi\u00e8re Chao Phraya, sur la jet\u00e9e de Si Phraya, \u00e0 proximit\u00e9 de nombreux grands h\u00f4tels. Il est accessible en voiture ou en bateau. Le cr\u00e9neau horaire de 9h00 correspond aux clients qui s\u00e9journent dans les quartiers de Silom, Sathorn et Bangrak.\"\n }\n ],\n \"end\": [\n {\n \"location\": {\n \"ref\": \"LOC-o0AXGEKPN4wJ9sIG0RAn5JOkQupk6XB3ZGmKbXXsO/YJsoMrLjHKBLlR6YXSp+r2\"\n },\n \"description\": \"D\u00e9poser au restaurant Samsen Centre pour le client qui part de Khaosan Area\"\n },\n {\n \"location\": {\n \"ref\": \"LOC-o0AXGEKPN4wJ9sIG0RAn5O9X4lT3Avg+rvKxoSJGnTIJr39qTywftTM5SgCNpowi\"\n },\n \"description\": \"D\u00e9poser au MBK Center , facile \u00e0 connecter au BTS (train Sky) pour le client qui part du point de rendez-vous de River City\"\n }\n ],\n \"travelerPickup\": {\n \"pickupOptionType\": \"MEET_EVERYONE_AT_START_POINT\",\n \"allowCustomTravelerPickup\": false,\n \"locations\": [\n {\n \"location\": {\n \"ref\": \"MEET_AT_DEPARTURE_POINT\"\n },\n \"pickupType\": \"OTHER\"\n }\n ]\n }\n }\n}\n```\n\nIn case of product options without pickup, you shouldn't ask arrival or departure-related questions at checkout (but you will still need to answer the questions returned in the API using values hardcoded into your implementation). If you wish, you can display at checkout the meeting point location(s) for informational purposes (not collecting answers) but not the pickup locations and no questions related to arrival/departure should be displayed in that case.\n\nThe option to contact the supplier later (`\"CONTACT_SUPPLIER_LATER\"`) doesn't apply to this scenario either and should not be present as it applies only to product options with pickup.\n\nIn the answer to the `\"PICKUP_POINT\"` question, you will need to send the location reference `\"MEET_AT_DEPARTURE_POINT\"` (returned under `travelerPickup.locations`). In case the product returns the `\"TRANSFER_ARRIVAL_MODE\"` or `\"TRANSFER_DEPARTURE_MODE\"` questions, these must be answered with `\"OTHER\"`. \n\nProduct examples for testing: [**9025P51**](https://www.viator.com/tours/Belize-City/Private-Cave-Tubing-and-Zipline-Adventure-from-Belize-City/d5094-9025P51), [**62450P1**](https://www.viator.com/tours/Curacao/Guided-paddleboarding-SUP-mangrove-ECO-tour-for-beginners/d725-62450P1).\n\n**When other product options support transfer pickup**: \n\nWhile you might be booking a product option that **does not** support pickup, if the overall product itself supports, for example, pickup from an airport, in one of its *other* product options, it will contain the `\"TRANSFER_ARRIVAL_MODE\"` booking question in the `bookingQuestions[]` array in the product content response. \n\nThis means that this booking question, because it is `\"MANDATORY\"`, **must be answered** in order to make a valid booking, even though such information would be irrelevant in this context.\n\nTransfer arrival mode question details from [/products/booking-questions](#operation/productsBookingQuestions):\n\n```json\n{\n \"legacyBookingQuestionId\": 31,\n \"id\": \"TRANSFER_ARRIVAL_MODE\",\n \"type\": \"STRING\",\n \"group\": \"PER_BOOKING\",\n \"label\": \"Arrival mode\",\n \"allowedAnswers\": [\n \"AIR\",\n \"RAIL\",\n \"SEA\",\n \"OTHER\"\n ],\n \"required\": \"MANDATORY\"\n}\n```\n\nAs you can see, one of the allowed answers to this question is `\"OTHER\"`.\n\nTherefore, in the case that you must answer this booking question because it is stipulated at the product level, but it does not pertain to the product option being booked, **please do not prompt the user to provide an answer to this question**, rather, have your internal logic send the value `\"OTHER\"` as the answer; i.e.:\n\n ```json\n\"bookingQuestionAnswers\": [ \n {\n \"question\": \"TRANSFER_ARRIVAL_MODE\",\n \"answer\": \"OTHER\"\n },\n ...\n]\n```\n\nThe same applies for the `\"TRANSFER_DEPARTURE_MODE\"` booking question, as it is also mandatory and can be validly answered as `\"OTHER\"`. \n\nThe only `\"CONDITIONAL\"` booking question that must be answered for a product option without pickup (in addition to `\"MANDATORY\"` questions) is `\"PICKUP_POINT\"` (answer: `\"MEET_AT_DEPARTURE_POINT\"`)\n\n**Examples of booking requests**\n\nProduct: 9025P51\n\nProduct option details returned in the product content response:\n\n ```json\n\"productOptions\": [\n {\n \"productOptionCode\": \"TG1\",\n \"description\": \"share Group\",\n \"title\": \"Share Group Tour\",\n \"languageGuides\": [\n {\n \"type\": \"GUIDE\",\n \"language\": \"en\",\n \"legacyGuide\": \"en/SERVICE_GUIDE\"\n },\n {\n \"type\": \"GUIDE\",\n \"language\": \"es\",\n \"legacyGuide\": \"es/SERVICE_GUIDE\"\n }\n ]\n },\n {\n \"productOptionCode\": \"TG2\",\n \"description\": \"From 2 to 25 people traveling together on a private tour
Pickup included\",\n \"title\": \"Private Tour\",\n \"languageGuides\": [\n {\n \"type\": \"GUIDE\",\n \"language\": \"en\",\n \"legacyGuide\": \"en/SERVICE_GUIDE\"\n },\n {\n \"type\": \"GUIDE\",\n \"language\": \"es\",\n \"legacyGuide\": \"es/SERVICE_GUIDE\"\n }\n ]\n }\n],\n```\n\nExample booking request for product option with pickup (TG2):\n\n ```json\n{\n \"productCode\": \"9025P51\",\n \"productOptionCode\": \"TG2\",\n \"startTime\": \"08:00\",\n \"currency\": \"USD\",\n \"travelDate\": \"2024-11-27\",\n \"paxMix\": [\n {\n \"ageBand\": \"ADULT\",\n \"numberOfTravelers\": 2\n }\n ],\n \"partnerBookingRef\": \"test123456\",\n \"languageGuide\": {\n \"type\": \"GUIDE\",\n \"language\": \"en\"\n },\n \"bookerInfo\": {\n \"firstName\": \"XXXX\",\n \"lastName\": \"XXXX\"\n },\n \"bookingQuestionAnswers\": [\n {\n \"question\": \"FULL_NAMES_FIRST\",\n \"answer\": \"XXXX\",\n \"travelerNum\": 1\n },\n {\n \"question\": \"FULL_NAMES_LAST\",\n \"answer\": \"XXXX\",\n \"travelerNum\": 1\n },\n {\n \"question\": \"AGEBAND\",\n \"answer\": \"ADULT\",\n \"travelerNum\": 1\n },\n {\n \"question\": \"AGEBAND\",\n \"answer\": \"ADULT\",\n \"travelerNum\": 2\n },\n {\n \"question\": \"FULL_NAMES_FIRST\",\n \"answer\": \"XXXX\",\n \"travelerNum\": 2\n },\n {\n \"question\": \"FULL_NAMES_LAST\",\n \"answer\": \"XXXX\",\n \"travelerNum\": 2\n },\n {\n \"question\": \"TRANSFER_ARRIVAL_MODE\",\n \"answer\": \"OTHER\"\n },\n {\n \"question\": \"TRANSFER_DEPARTURE_MODE\",\n \"answer\": \"OTHER\"\n },\n {\n \"question\": \"PICKUP_POINT\",\n \"answer\": \"LOC-6eKJ+or5y8o99Qw0C8xWyGStvfcGJMWF/jrN0iaZD8s=\",\n \"unit\": \"LOCATION_REFERENCE\"\n }\n ],\n \"communication\": {\n \"phone\": \"+44 987667889\",\n \"email\": \"noreply@test.com\"\n },\n \"additionalBookingDetails\": {\n \"voucherDetails\": {\n \"companyName\": \"Test\",\n \"email\": \"customerservice@test.com\",\n \"phone\": \"+44 876778998\",\n \"voucherText\": \"Thank you for booking with us!\"\n }\n }\n}\n```\n\nExample booking request for product option without pickup (TG1):\n\n ```json\n{\n \"productCode\": \"9025P51\",\n \"productOptionCode\": \"TG1\",\n \"startTime\": \"08:00\",\n \"currency\": \"USD\",\n \"travelDate\": \"2024-11-27\",\n \"paxMix\": [\n {\n \"ageBand\": \"ADULT\",\n \"numberOfTravelers\": 2\n }\n ],\n \"partnerBookingRef\": \"test12345\",\n \"languageGuide\": {\n \"type\": \"GUIDE\",\n \"language\": \"en\"\n },\n \"bookerInfo\": {\n \"firstName\": \"XXXX\",\n \"lastName\": \"XXXX\"\n },\n \"bookingQuestionAnswers\": [\n {\n \"question\": \"FULL_NAMES_FIRST\",\n \"answer\": \"XXXX\",\n \"travelerNum\": 1\n },\n {\n \"question\": \"FULL_NAMES_LAST\",\n \"answer\": \"XXXX\",\n \"travelerNum\": 1\n },\n {\n \"question\": \"AGEBAND\",\n \"answer\": \"ADULT\",\n \"travelerNum\": 1\n },\n {\n \"question\": \"AGEBAND\",\n \"answer\": \"ADULT\",\n \"travelerNum\": 2\n },\n {\n \"question\": \"FULL_NAMES_FIRST\",\n \"answer\": \"XXXX\",\n \"travelerNum\": 2\n },\n {\n \"question\": \"FULL_NAMES_LAST\",\n \"answer\": \"XXXX\",\n \"travelerNum\": 2\n },\n {\n \"question\": \"TRANSFER_ARRIVAL_MODE\",\n \"answer\": \"OTHER\"\n },\n {\n \"question\": \"TRANSFER_DEPARTURE_MODE\",\n \"answer\": \"OTHER\"\n },\n {\n \"question\": \"PICKUP_POINT\",\n \"answer\": \"MEET_AT_DEPARTURE_POINT\",\n \"unit\": \"LOCATION_REFERENCE\"\n }\n ],\n \"communication\": {\n \"phone\": \"+44 987667889\",\n \"email\": \"noreply@test.com\"\n },\n \"additionalBookingDetails\": {\n \"voucherDetails\": {\n \"companyName\": \"Test\",\n \"email\": \"customerservice@test.com\",\n \"phone\": \"+44 876778998\",\n \"voucherText\": \"Thank you for booking with us!\"\n }\n }\n}\n```\n\nTo learn more about booking questions and get a step-by-step guide on how to implement conditional booking questions, see this guide: Implementing Booking Questions.\n\n### Age-bands\n\nIf `\"AGEBAND\"` is specified as a booking question in the `bookingQuestions` array in the product content response, you must supply the age-band for each traveler in `bookingQuestionAnswers` when making the booking using [/bookings/book](#operation/bookingsBook) or [/bookings/cart/book](#operation/bookingsCartBook). \n\nFurthermore, the answer(s) to the `\"AGEBAND\"` booking question that you submit in the request to [/bookings/book](#operation/bookingsBook) or [/bookings/cart/book](#operation/bookingsCartBook) must match the age-bands given in the `paxMix` element in the request to [/bookings/hold](#operation/bookingsHold) or [/bookings/cart/hold](#operation/bookingsCartHold). Otherwise, the booking server will reject the booking on account of the booking and booking-hold not matching.\n\nThe valid age-bands for the product are given in the `pricingInfo` array in the product content response; e.g.:\n\n```json\n\"pricingInfo\": {\n \"type\": \"PER_PERSON\",\n \"ageBands\": [\n {\n \"ageBand\": \"INFANT\",\n \"startAge\": 0,\n \"endAge\": 4,\n \"minTravelersPerBooking\": 0,\n \"maxTravelersPerBooking\": 9\n },\n {\n \"ageBand\": \"CHILD\",\n \"startAge\": 5,\n \"endAge\": 15,\n \"minTravelersPerBooking\": 0,\n \"maxTravelersPerBooking\": 9\n },\n {\n \"ageBand\": \"ADULT\",\n \"startAge\": 16,\n \"endAge\": 99,\n \"minTravelersPerBooking\": 0,\n \"maxTravelersPerBooking\": 9\n }\n ]\n},\n```\n\nNote that if `bookingRequirements.requiresAdultForBooking` is `true` in the product content response, at least one traveler must have an `\"ADULT\"` or `\"SENIOR\"` age-band.\n\nTo learn more about how age-bands are used during the booking process, see the following guide: [Implementing age bands & pax mix](https://partnerresources.viator.com/travel-commerce/merchant/agebands-pax-mix?source=specs).\n\n#### Age-bands with unit pricing\n\nIn the case that the product uses unit pricing; i.e., pricing based on the number of groups of travelers, then the product will have a single available age-band: `\"TRAVELER\"`, as given in the `pricingInfo` array in the product content response; e.g.:\n\n```json\n\"pricingInfo\": {\n \"type\": \"UNIT\",\n \"ageBands\": [\n {\n \"ageBand\": \"TRAVELER\",\n \"startAge\": 0,\n \"endAge\": 99,\n \"minTravelersPerBooking\": 1,\n \"maxTravelersPerBooking\": 10\n }\n ],\n \"unitType\": \"GROUP\"\n}\n```\n\nFor such products, even if `\"AGEBAND\"` is specified as a booking question, the only applicable age-band is `\"TRAVELER\"`. However, you must still supply this value for the age-band booking question for each traveler when making the booking using [/bookings/book](#operation/bookingsBook) or [/bookings/cart/book](#operation/bookingsCartBook). Even if `bookingRequirements.requiresAdultForBooking` is `true` for such products, you must still supply the `\"TRAVELER\"` value.\n\n## Booking cutoff times\n\n**Note**: This section applies to affiliate partners with API access level \"Full Access + Booking\" and merchant partners only.\n\nThis section describes how the booking cutoff time information given by the product supplier, which may affect a product's availability (and therefore its ability to be booked) is communicated via this API. While you are welcome to develop logic to support the display and utilisation of this information, **it is not necessary to do so**. Indeed, as most implementations are unlikely to benefit, we recommend simply using the real-time [/availability/check](#operation/availabilityCheck) endpoint as the primary means to determine and communicate a product's availability in your product booking workflow.\n\nMany products in our inventory are subject to a booking cutoff time. Tickets for such products may only be purchased up until a certain time. This information is given in the `bookingConfirmationSettings` object in the [product content response](#section/Key-concepts/Product-content-and-availability-endpoints).\n\nExample `bookingConfirmationSettings` object:\n\n```json\n\"bookingConfirmationSettings\": {\n \"bookingCutoffType\": \"START_TIME\",\n \"bookingCutoffInMinutes\": 0,\n \"confirmationType\": \"INSTANT\"\n},\n```\n\nThere are four booking cutoff types, indicated by the value of the `bookingCutoffType` element; they are:\n - `\"START_TIME\"` \u2013 booking cutoff is relative to the product's start time\n - `\"OPENING_TIME\"` \u2013 booking cutoff is relative to the product's opening time\n - `\"CLOSING_TIME\"` \u2013 booking cutoff is relative to the product's closing time\n - `\"FIXED_TIME\"` \u2013 booking cutoff is relative to the time given in the `bookingCutoffFixedTime` element\n\nIn addition, the booking cutoff time may be offset by the number of minutes given in `bookingCutoffInMinutes`; for example, product 57377P9's booking cutoff is 120 minutes prior to its start time:\n\n```json\n\"bookingConfirmationSettings\": {\n \"bookingCutoffType\": \"START_TIME\",\n \"bookingCutoffInMinutes\": 120,\n \"confirmationType\": \"INSTANT\"\n}\n```\n\nThe availability of products that have a `bookingCutoffType` of `\"START_TIME\"` can be determined by inspecting the `pricingRecords[].timedEntries[].startTime` field in the response from [/availability/schedules/{product-code}](#operation/availabilitySchedules). This type of product can be booked up until `bookingCutoffInMinutes` prior to its starting time in the time-zone in which the product operates, which is given in the `timeZone` field in the [product content response](#section/Key-concepts/Product-content-and-availability-endpoints).\n\nThe booking cutoff time for products with a `\"FIXED_TIME\"` type is that given in the `bookingCutoffFixedTime` element, offset by the number of minutes given in `bookingCutoffInMinutes`. In the fixed time scenario, `bookingCutoffInMinutes` can only be 0, 1440 (24 hours) or 2880 (48 hours). This means that the booking cutoff time is at a certain time on the day on which the product operates; or, at that same time but one or two days before the tour date, respectively.\n\nIn the following example, the booking cutoff is 10:00am on the day before the tour or activity operates:\n\n```json\n\"bookingConfirmationSettings\": {\n \"bookingCutoffType\": \"FIXED_TIME\",\n \"bookingCutoffInMinutes\": 1440,\n \"confirmationType\": \"INSTANT\",\n \"bookingCutoffFixedTime\": \"10:00:00\"\n}\n```\n\nYou may not be able to book a product (using [/bookings/book](#operation/bookingsBook) or [/bookings/cart/book](#operation/bookingsCartBook)) or place a booking hold on a product using [/bookings/hold](#operation/bookingsHold) or [/bookings/cart/hold](#operation/bookingsCartHold) after it is past the booking cutoff time. However, this is not always the case. Always check real-time availability using the [/availability/check](#operation/availabilityCheck) endpoint.\n\nNonetheless, in displaying the availability of a product on your site, you may wish to mark products as 'unavailable' for a particular day or starting time if it is presently past the booking cutoff time if you feel that doing so will improve your site's UX.\n\nHowever, because the availability schedule data in general can rapidly fall out of date, **we again encourage you to always utilise the real-time [/availability/check](#operation/availabilityCheck) endpoint as the primary means to determine and communicate a product's availability in your product booking workflow.**\n\n## Booking confirmation types\n\n**Note**: This section applies to affiliate partners with API access level \"Full Access + Booking\" and merchant partners only.\n\nA product's booking confirmation type indicates whether the booking will be confirmed or rejected immediately and automatically; or, whether it will remain in a 'pending' state until actioned manually by the supplier.\n\nThe product's booking confirmation type can be identified by the value of `bookingConfirmationSettings.confirmationType` in the product content response. There are three confirmation types: **instant**, **manual** and **instant-then-manual**, represented by the `confirmationType` values `\"INSTANT\"`, `\"MANUAL\"` and `\"INSTANT_THEN_MANUAL\"`, respectively.\n\n### Booking confirmation type in the API\n\n#### Instant confirmation:\n\nInstant confirmation products are confirmed automatically at the time of booking, and the customer should be charged immediately.\n\nE.g. (product-code: 5010SYDNEY):\n\n```json\n\"bookingConfirmationSettings\": {\n \"bookingCutoffType\": \"CLOSING_TIME\",\n \"bookingCutoffInMinutes\": 0,\n \"confirmationType\": \"INSTANT\"\n}\n```\n\n#### Manual confirmation\n\nManual confirmation products are those that only operate at the discretion of the supplier, who must confirm or reject each booking request manually. Once the booking is requested, it will remain in a 'pending' state until actioned by the supplier; or, if no action is taken by the supplier, the time-out period (72 hours) is exceeded. The customer should only be charged once confirmation is received.\n\nE.g. (product-code: 161500P1):\n\n```json\n\"bookingConfirmationSettings\": {\n \"bookingCutoffType\": \"START_TIME\",\n \"bookingCutoffInMinutes\": 1440,\n \"confirmationType\": \"MANUAL\"\n}\n```\n\n#### Instant-then-manual confirmation\n\nInstant-then-manual confirmation products behave like instant confirmation products up until a certain time prior to the product's starting time. From that point on, the product will require manual confirmation by the supplier.\n\nE.g. (product-code: 100035P1):\n\n```json\n\"bookingConfirmationSettings\": {\n \"bookingCutoffType\": \"START_TIME\",\n \"bookingCutoffInMinutes\": 720,\n \"confirmationType\": \"INSTANT_THEN_MANUAL\",\n \"manualConfirmationPeriod\": 2880\n}\n```\n\nThe `manualConfirmationPeriod` indicates when the product changes from instant to manual confirmation. In the example above, this period is 2880 minutes (48 hours or 2 days). Therefore, this product will be confirmed instantly if the booking is made more than 2 days in advance of the start time (in the time zone in which the product operates); if the booking is made less than 2 days in advance, it will require manual confirmation from the supplier.\n\n### How to support manual confirmation products\n\nIn order to support manual confirmation products on your site, you will need to introduce support for an asynchronous flow that monitors the booking's status, determines when its status changes and notifies the customer when their booking has been confirmed or rejected by the supplier.\n\nYou will need to:\n\n- Create back-end logic that periodically checks the status of pending bookings using the [/bookings/status](#operation/bookingsStatus) endpoint (we recommend polling no more than once every 3 minutes)\n- Establish and support an extra, email-based communications channel with your customers\n- Create email templates for the various scenarios that may arise\n- Ensure that your platform's front end accommodates the extra steps required in the booking process\n- Ensure that customers clearly understand that they are booking a product that will not be confirmed or charged immediately\n\n#### Product detail page\n\nManaging customer expectations is a key factor in supporting manual confirmation products on your booking platform. \n\nMake clear mention on the product detail page that confirmation will not be received immediately, but rather within 72 hours of making the booking.\n\nYou are free to include this note in the **Additional Info** section, or elsewhere on your product display page; for example:\n\n
\n \"Manual\n
Manual confirmation info displayed on a product page on the Viator site\n
\n
\n\n#### Check-out\n\nAs you will only charge the customer's credit card once the booking is confirmed by the product's supplier, it's best to display a message to this effect at a prominent point of the check-out flow for all manual confirmation products.\n\n
\n \"Example\n
Example checkout-flow instruction on the Viator site
\n
\n\nIn this way, customers can be reassured that they are not being charged for a booking that may never be confirmed, thereby helping to reduce the number of calls to your customer service team.\n\n#### Combination purchases\n\nIf your customer has both instant and manual booking confirmation products in their shopping cart, only the amount for the confirmed booking(s) should be charged immediately; the portion corresponding to the pending bookings should be held as a pre-authorization against the customer\u2019s credit card, and the transaction completed only once confirmation is received. \n\nIt is important that you clearly differentiate between bookings that have been confirmed and those that are pending confirmation and communicate the status of each item. Also, be sure to make clear that the pre-authorization will only finalize once the manual confirmation bookings are confirmed.\n\n#### Confirmation page\n\nChanges will need to be made to your confirmation page because it will not be possible for your customer to download their voucher immediately after completing a manual confirmation booking. Rather, the voucher will be made available after the booking is confirmed.\n\nVouchers for instant confirmation products, however, must be made available immediately following the completion of the booking process.\n\n#### Customer communications\n\nConfirmation message (e.g., email) templates for manual confirmation bookings should indicate that the item is pending confirmation from the supplier; and, that confirmation for this activity will take up to 72 hours, depending on availability.\n\nYou will also need to create templates for the following scenarios:\n\n- When the manual confirmation booking is confirmed by the supplier (this time including the voucher details)\n- If the manual confirmation booking is rejected\n- If multiple manual confirmation products have been booked:\n + When all items have been accepted/confirmed\n + When there are mixed statuses; i.e., 'pending' + 'rejected' + 'canceled'\n + If all items were rejected\n- If a mixture of instant and manual confirmation products are booked at the same time; i.e., in the same cart\n\n**Note**: When a booking is declined, it is useful to mention that the customer's card was not charged.\n\n##### Example email for a manual confirmation booking pending confirmation:\n\n
\n \"Viator\n \"Viator\n \"Viator\n
\n\n### Confirmation time-outs resulting in rejection\n\nAs mentioned above, when a booking request for a manual confirmation product is made, it will have a status of 'pending' until it is confirmed by the supplier. The supplier has the option of confirming or rejecting the booking.\n\nIf the supplier does not confirm the booking within 72 hours \u2013\u00a0or, if they have not confirmed the booking by the time it reaches `bookingCutoffInMinutes` from the product's start time or whichever is specified in the `bookingCutoffType` \u2013 our systems will automatically reject the booking, and this will be reflected in the response from the [/bookings/status](#operation/bookingsStatus) endpoint.\n\n### Building in the sandbox environment\n\nUpgrading your booking platform to support manual confirmation products will require you to build and test this functionality in the sandbox environment.\n\nThe testing workflow depends on which endpoint you\u2019re using to perform bookings:\n\n\n#### [/bookings/book](#operation/bookingsBook) Endpoint\nIn the sandbox environment, booking requests are not sent to the supplier\u2019s system.\n\nBy default, manual-confirmation products behave like instant-confirmation products and return:\n\n- `bookingStatus = CONFIRMED`\n\nTo simulate the correct manual-confirmation behavior, you must set the request header:\n\n- `exp-demo: false`\n\nWhen `exp-demo` is set to `false, the response will return:\n\n- `bookingStatus = PENDING` (expected behavior for manual-confirmation products)\n\n#### [/bookings/cart/book](#operation/bookingsCartBook) Endpoint\nFor manual-confirmation products, you must set the following request header:\n\n- `exp-demo: false`\n\nThe response will return:\n\n- `bookingStatus = PENDING` (expected manual-confirmation behavior)\n\n#### Completing the Test Flow\n\nTo simulate the final supplier decision, contact API Tech Support at apitechsupport@viator.com and provide the bookingRef to request a status update to:\n\n- `CONFIRMED`, or\n- `REJECTED`\n\n## Making a booking\n\n**Note**: This section applies to affiliate partners with API access level \"Full Access + Booking\" and merchant partners only.\n\nBroadly speaking, to book a product via this API, you must do the following:\n\n1. **Check availability and pricing**: Determine that a ticket for the desired tour or activity is available for a specific date, time and passenger mix combination using the [/availability/check](#operation/availabilityCheck) endpoint. Accurate pricing details in the currency that you wish to be invoiced in (one of GBP, EUR, USD, CAD or AUD) are also returned in the response from this endpoint. This includes `recommendedRetailPrice` and `partnerNetPrice`.

\n2. **Request a booking hold**: If a ticket is available, request a pricing/availability hold for the booking using the [/bookings/hold](#operation/bookingsHold) or [/bookings/cart/hold](#operation/bookingsCartHold) endpoints.

\n3. **Collect payment**: With a booking hold requested and suitable to proceed, collect payment using the iframe solution or via your own payment details form and submit using the API solution. Note: These payment options are only available to affiliate partners with API access level \"Full Access + Booking\".

\n4. **Confirm the booking**: Confirm/finalize the held booking using the [/bookings/book](#operation/bookingsBook) or [/bookings/cart/book](#operation/bookingsCartBook) endpoints.\n\nSee Getting availability and pricing for products and Creating a seamless booking experience for more information.\n\n\n\n## Cancellation API workflow\n\n**Note**: This section applies to affiliate partners with API access level \"Full Access + Booking\" and merchant partners only.\n\nAll booking cancellations (except for those requested after the date of travel) must now be performed via the API. Viator no longer offers ordinary cancellation services via our customer support function. To cancel a booking after the tour or activity has occurred, please contact [Viator Partner Support](mailto:dpsupport@viator.com) \n\nSee our in-depth guide about cancellation policies and how to handle cancellations: [All you need to know about cancellation policies](https://partnerresources.viator.com/travel-commerce/merchant/cancellation-policies/?source=specs).\n\n### Getting cancellation reasons\n\n\nWhen canceling a booking, you are required to submit a valid 'reason for the cancellation' to assist with Viator's internal processes. This is accomplished via the inclusion of a valid reason code in the body of the request. The reason codes can be retrieved from the [/bookings/cancel-reasons](#operation/bookingsCancelReasons) endpoint.\n\nAs the acceptable reasons for cancellation may be altered at any point, we recommend retrieving an up-to-date list from this endpoint at least weekly.\n\nThe output from the [/bookings/cancel-reasons](#operation/bookingsCancelReasons) endpoint at the time of writing is as follows:\n\n```json\n{\n \"reasons\": [\n {\n \"cancellationReasonText\": \"Supplier No Show\",\n \"cancellationReasonCode\": \"Customer_Service.Supplier_no_show\"\n },\n {\n \"cancellationReasonText\": \"Chose a different/cheaper tour\",\n \"cancellationReasonCode\": \"Customer_Service.Chose_a_different_cheaper_tour\"\n },\n {\n \"cancellationReasonText\": \"Unexpected medical circumstances\",\n \"cancellationReasonCode\": \"Customer_Service.Unexpected_medical_circumstances\"\n },\n {\n \"cancellationReasonText\": \"Weather\",\n \"cancellationReasonCode\": \"Customer_Service.Weather\"\n },\n {\n \"cancellationReasonText\": \"Booked wrong tour date\",\n \"cancellationReasonCode\": \"Customer_Service.Booked_wrong_tour_date\"\n },\n {\n \"cancellationReasonText\": \"Duplicate Booking\",\n \"cancellationReasonCode\": \"Customer_Service.Duplicate_Booking\"\n },\n {\n \"cancellationReasonText\": \"Significant global event\",\n \"cancellationReasonCode\": \"Customer_Service.Significant_global_event\"\n },\n {\n \"cancellationReasonText\": \"I canceled my entire trip\",\n \"cancellationReasonCode\": \"Customer_Service.I_canceled_my_entire_trip\"\n }\n ]\n}\n```\n\n### Canceling a booking\n\n#### Getting a cancellation quote\n\nBefore canceling the booking, call the [/bookings/{booking-reference}/cancel-quote](#operation/bookingsCancelQuote) endpoint to get information about whether the booking can be canceled using this endpoint and what the refund will be, for example:\n\n```\nGET https://api.viator.com/partner/bookings/BR-580254558/cancel-quote\n```\n\n- **Note**: For bookings made with v1 of this API, this code corresponds to `data.itemSummaries[].itemId` (in the response from v1's [/booking/book](https://docs.viator.com/partner-api/merchant/technical/#tag/Booking-services/paths/~1booking~1book/post) endpoint) but prepended with `BR-`. For example, if the `itemId` is `580254558`, this field should be `BR-580254558`.\n\nYou will receive a cancellation quote object, e.g.:\n\n```json\n{\n \"bookingId\": \"BR-580254558\",\n \"status\": \"CANCELLABLE\",\n \"refundDetails\": {\n \"itemPrice\": 109.77,\n \"refundAmount\": 109.77,\n \"currencyCode\": \"USD\",\n \"refundPercentage\": 100.00\n }\n}\n```\n\n **Note**: Bookings that have not been confirmed by the supplier and have a status of `\"PENDING\"` will report an `itemPrice`, `refundAmount` and `refundPercentage` of `0`, as no fees are charged until the booking's status is `\"CONFIRMED\"`.\n \n\nThe data elements in this object have meanings as follows:\n\n| Element | Meaning | Example |\n|---------|---------|---------|\n| `bookingId` | the booking reference number prepended with `BR-` | `BR-580254556` |\n| `status` | One of the following: | `CANCELLABLE` |\n| `refundDetails` | object containing information about the refund | |\n| `itemPrice` | the **merchant net price** + **transaction fee** for this product at the time of booking in the currency specified by `currencyCode` | `109.77` |\n| `refundAmount` | the amount that will be deducted from your invoice if the booking is cancelled now | `109.77` |\n| `currencyCode` | the currency code for the currency in which pricing information is displayed | `USD` |\n| `refundPercentage` | the refund amount expressed as a percentage of the `itemPrice` | `100.00` |\n\n\n**Will there ever be a discrepancy between the amount charged for a tour and the amount refunded due to currency exchange-rate fluctuations?**\n\n- In short: no. I.e., if the cost of the booking was USD 100 and the refund percentage is 100% (full refund, as per the response from [/bookings/{booking-reference}/cancel-quote](#operation/bookingsCancelQuote)), Viator will simply **not invoice you** for that USD 100 that we would have if the booking had not been canceled. Furthermore, we do not invoice you for the cost of a booking prior to its departure date.\n\n\n\n#### Requesting the cancellation\n\nIf the `status` field has a value of `CANCELLABLE` and you are happy with the `refundAmount`, call the [/bookings/{booking-reference}/cancel](#operation/bookingsCancel) endpoint to cancel the booking, e.g.:\n\n```\nPOST https://api.viator.com/partner/bookings/BR-580254558/cancel\n```\n\nA reason code corresponding to the reason for cancellation must be included in the request body; e.g.:\n\n```json\n{\n \"reasonCode\":\"Customer_Service.Chose_a_different_cheaper_tour\"\n}\n```\n\nYou should receive a response indicating that the cancellation was successful, e.g.:\n\n```json\n{\n \"bookingId\": \"BR-580254558\",\n \"status\": \"ACCEPTED\"\n}\n```\n\nA `status` of `ACCEPTED` indicates that the booking was successfully canceled.\n\n\n## Checking booking status\n\n**Note**: This section applies to affiliate partners with API access level \"Full Access + Booking\" and merchant partners only.\n\nOnce a booking has been made, you can check on its status using the [/bookings/status](#operation/bookingsStatus) endpoint.\n\nYou can use **either** the `bookingRef` **or** `partnerBookingRef` in the request to this service.\n\n- If the booking was made using v1 of the Viator Partner API, you will receive a HTTP 400 Bad Request response. Only bookings made using v2 or later of this API are compatible with this endpoint.\n- If the booking is the subject of a booking hold (via [/bookings/hold](#operation/bookingsHold) or [/bookings/cart/hold](#operation/bookingsCartHold)) but the booking has not yet been confirmed using [/bookings/book](#operation/bookingsBook), you will receive a HTTP 404 Not Found response.\n- If the booking was confirmed but later canceled, you will receive a HTTP 200 Success response that indicates the canceled status.\n- If the booking has been confirmed and has not been canceled, you will receive a response with the same structure as the response from [/bookings/book](#operation/bookingsBook)\n\n### Confirmed booking\n\n**Example request**: Get the status of the booking with the booking reference `\"BR-791143912\"`\n\n```json\n{\n \"bookingRef\": \"BR-791143912\"\n}\n```\n\n**Example response**: The status of this booking is `\"CONFIRMED\"`\n\n```json\n{\n \"status\": \"CONFIRMED\",\n \"bookingRef\": \"BR-791143912\",\n \"partnerBookingRef\": \"BR-791143912\",\n \"currency\": \"USD\",\n \"lineItems\": [\n {\n \"ageBand\": \"ADULT\",\n \"numberOfTravelers\": 2,\n \"subtotalPrice\": {\n \"price\": {\n \"recommendedRetailPrice\": 21.4,\n \"partnerNetPrice\": 20.52\n }\n }\n }\n ],\n \"totalPrice\": {\n \"price\": {\n \"recommendedRetailPrice\": 21.4,\n \"partnerNetPrice\": 20.52,\n \"bookingFee\": 1.23,\n \"partnerTotalPrice\": 21.75\n }\n },\n \"cancellationPolicy\": {\n \"type\": \"STANDARD\",\n \"description\": \"For a full refund, cancel at least 24 hours before the scheduled departure time.\",\n \"cancelIfBadWeather\": false,\n \"cancelIfInsufficientTravelers\": false,\n \"refundEligibility\": [\n {\n \"dayRangeMin\": 2,\n \"percentageRefundable\": 100,\n \"startTimestamp\": \"2020-11-10T02:04:15Z\",\n \"endTimestamp\": \"2021-03-30T23:00:00Z\"\n },\n {\n \"dayRangeMin\": 0,\n \"dayRangeMax\": 1,\n \"percentageRefundable\": 0,\n \"startTimestamp\": \"2021-03-31T23:00:00Z\",\n \"endTimestamp\": \"2021-04-01T23:00:00Z\"\n }\n ]\n },\n \"voucherInfo\": {\n \"url\": \"https://www.viator.com/ticket?code=1187186744:8ac3e6308555ab632fe89e8a6b83c41620e840a3bc485f6e0d836192eae1ffc4\",\n \"format\": \"HTML\",\n \"type\": \"STANDARD\"\n }\n}\n```\n\n\n### Canceled booking\n\n**Example request**: Get the status of the booking with the partner booking reference `\"test-partner-ref-aejsmont-num-1604985575\"`\n\n```json\n{\n \"partnerBookingRef\": \"test-partner-ref-aejsmont-num-1604985575\"\n}\n```\n\n**Example response**: The status of this booking is `\"CANCELED\"`\n\n```json\n{\n \"bookingRef\": \"BR-582323272\",\n \"status\": \"CANCELED\",\n \"partnerBookingRef\": \"test-partner-ref-aejsmont-num-1604985575\"\n}\n```\n\n# Testing\n\n## Postman collections for testing\n\nPlease use one of the following [Postman](https://www.getpostman.com/) collections, depending on which type of partner you are. The collections are configured for the **sandbox** base URL (`api.sandbox.viator.com`).\n\n - [Viator Basic-access Affiliate API Postman collection](Viator-Basic-Access-Affiliate-API-v2.postman_collection.json)\n - [Viator Full-access Affiliate API Postman collection](Viator-Affiliate-API-v2.postman_collection.json)\n - [Viator Full-access + Booking Affiliate API Postman collection](Viator-Affiliate-Booking-API-v2.postman_collection.json)\n - [Viator Merchant API Postman collection](Viator-Merchant-API-v2.postman_collection.json)\n\nTo access the **production** environment, replace `api.sandbox.viator.com` with `api.viator.com` in the endpoint URLs provided in the Postman collections for testing.\n\n**All testing must be done in Sandbox.** Production endpoints are for live bookings only and must not be used for testing under any circumstances. Sandbox provides access to the same products and functionality as Production unless stated otherwise.\n\n### Set up the `your-api-key` environment variable\n\nAs all services in this API require that your API-key be passed as a header parameter in every request made to this API, this value has been set to reference a Postman environment variable called `your-api-key`.\n\nOnce you import the collection into Postman, [set this variable](https://learning.getpostman.com/docs/postman/environments_and_globals/variables#defining-collection-variables) to your organization's API-key and save the collection.\n\n# Workflows\n\n## Ingesting and updating the product catalogue\n\nThe recommended way to initialize and keep your local copy of our products database up-to-date is by using the [/products/modified-since](#operation/productsModifiedSince) endpoint in the following way:\n\n### Initialize your local copy of our products database by ingesting all product records\n\nMake a request to [/products/modified-since](#operation/productsModifiedSince), but only include the `count` parameter. Do not supply values for `modified-since` or `cursor`. This instructs the system to return any products modified since the beginning of time; i.e., all of them.\n\n**Note**: This is the only occasion on which you will need to call [/products/modified-since](#operation/productsModifiedSince) without the `modified-since` or `cursor` parameter.\n\n`count` specifies how many product records will be returned per page. For practical purposes, setting `count` to its maximum value (500) is advised. However, for the purposes of brevity, I am using a `count` of `5` in this example; i.e.:\n\n```\nGET https://api.sandbox.viator.com/partner/products/modified-since?count=5\n```\n\nYou will receive a response similar to the following:\n\n```json\n{\n \"products\": [\n {\n \"status\": \"ACTIVE\",\n \"productCode\": \"92457P4\",\n \"language\": \"en-US\",\n \"createdAt\": \"2020-06-16T12:49:29.519174Z\",\n \"lastUpdatedAt\": \"2020-11-08T16:26:16Z\",\n \"title\": \"Ecuador Parapente Quito\",\n \"ticketInfo\": {\n \"ticketTypes\": [\n \"MOBILE_ONLY\"\n ],\n \"ticketTypeDescription\": \"Mobile or paper ticket accepted\",\n \"ticketsPerBooking\": \"ONE_PER_BOOKING\",\n \"ticketsPerBookingDescription\": \"One per booking\"\n },\n \"pricingInfo\": {\n \"type\": \"PER_PERSON\",\n \"ageBands\": [\n {\n \"ageBand\": \"INFANT\",\n \"startAge\": 6,\n \"endAge\": 17,\n \"minTravelersPerBooking\": 0,\n \"maxTravelersPerBooking\": 4\n },\n {\n \"ageBand\": \"ADULT\",\n \"startAge\": 18,\n \"endAge\": 60,\n \"minTravelersPerBooking\": 0,\n \"maxTravelersPerBooking\": 4\n }\n ]\n },\n \"images\": [\n {\n \"imageSource\": \"SUPPLIER_PROVIDED\",\n \"caption\": \"\",\n \"isCover\": true,\n \"variants\": [...\n ],\n \"logistics\": {\n \"start\": [\n {\n \"location\": {\n \"ref\": \"LOC-o0AXGEKPN4wJ9sIG0RAn5Cdd0Y9TkTxkcosDq0rJgjR12IzpogNi5POX+yGLXEoq\"\n },\n \"description\": \"The meeting point is on the way to Lumbis\u00ed km 1 at the entrance to La Primavera at 8:30 am.\"\n }\n ],\n \"end\": [\n {\n \"location\": {\n \"ref\": \"LOC-o0AXGEKPN4wJ9sIG0RAn5Cdd0Y9TkTxkcosDq0rJgjR12IzpogNi5POX+yGLXEoq\"\n },\n \"description\": \"The meeting point is on the way to Lumbis\u00ed km 1 at the entrance to La Primavera at 8:30 am.\"\n }\n ],\n \"redemption\": {\n \"redemptionType\": \"NONE\",\n \"specialInstructions\": \"\"\n },\n \"travelerPickup\": {\n \"pickupOptionType\": \"MEET_EVERYONE_AT_START_POINT\",\n \"allowCustomTravelerPickup\": true\n }\n },\n \"timeZone\": \"America/Guayaquil\",\n \"description\": \"the only legal paragliding operator in ecuador. See an amazing view of Quito and its surroundings from above.\",\n \"inclusions\": [\n {\n \"category\": \"OTHER\",\n \"categoryDescription\": \"Other\",\n \"type\": \"OTHER\",\n \"typeDescription\": \"Other\",\n \"otherDescription\": \"Paragliding Kit\"\n },\n {\n \"category\": \"OTHER\",\n \"categoryDescription\": \"Other\",\n \"type\": \"OTHER\",\n \"typeDescription\": \"Other\",\n \"otherDescription\": \"Air-conditioned vehicle\"\n }\n ],\n \"additionalInfo\": [\n {\n \"type\": \"STROLLER_ACCESSIBLE\",\n \"description\": \"Infants and small children can ride in a pram or stroller\"\n },\n {\n \"type\": \"NO_PREGNANT\",\n \"description\": \"Not recommended for pregnant travelers\"\n },\n {\n \"type\": \"NO_HEART_PROBLEMS\",\n \"description\": \"Not recommended for travelers with poor cardiovascular health\"\n },\n {\n \"type\": \"PHYSICAL_EASY\",\n \"description\": \"Suitable for all physical fitness levels\"\n }\n ],\n \"cancellationPolicy\": {\n \"type\": \"STANDARD\",\n \"description\": \"For a full refund, cancel at least 24 hours before the scheduled departure time.\",\n \"cancelIfBadWeather\": true,\n \"cancelIfInsufficientTravelers\": false,\n \"refundEligibility\": [\n {\n \"dayRangeMin\": 1,\n \"percentageRefundable\": 100\n },\n {\n \"dayRangeMin\": 0,\n \"dayRangeMax\": 1,\n \"percentageRefundable\": 0\n }\n ]\n },\n \"bookingConfirmationSettings\": {\n \"bookingCutoffType\": \"FIXED_TIME\",\n \"bookingCutoffInMinutes\": 1440,\n \"confirmationType\": \"INSTANT\",\n \"bookingCutoffFixedTime\": \"16:00:00\"\n },\n \"bookingRequirements\": {\n \"minTravelersPerBooking\": 1,\n \"maxTravelersPerBooking\": 4,\n \"requiresAdultForBooking\": false\n },\n \"bookingQuestions\": [\n \"FULL_NAMES_LAST\",\n \"PASSPORT_EXPIRY\",\n \"PASSPORT_PASSPORT_NO\",\n \"SPECIAL_REQUIREMENTS\",\n \"FULL_NAMES_FIRST\",\n \"WEIGHT\",\n \"AGEBAND\",\n \"HEIGHT\",\n \"PASSPORT_NATIONALITY\"\n ],\n \"tags\": [\n 20234\n ],\n \"destinations\": [\n {\n \"ref\": \"735\",\n \"primary\": true\n }\n ],\n \"itinerary\": {\n \"itineraryType\": \"ACTIVITY\",\n \"skipTheLine\": false,\n \"privateTour\": true,\n \"duration\": {\n \"fixedDurationInMinutes\": 15\n },\n \"activityInfo\": {\n \"location\": {\n \"ref\": \"LOC-o0AXGEKPN4wJ9sIG0RAn5Cdd0Y9TkTxkcosDq0rJgjR12IzpogNi5POX+yGLXEoq\"\n },\n \"description\": \"We take off from the hill of Lumbisi towards the City, we observe the landscape of the city of Quito you can observe the mountains. We landed at the foot of the hill.\\n\\nThe meeting point is on the way to Lumbis\u00ed km 1 at the entrance to La Primavera at 8:30 am. From there we got on a vehicle to the mountain. \"\n }\n },\n \"productOptions\": [\n {\n \"productOptionCode\": \"TG1\",\n \"description\": \"\",\n \"title\": \"Ecuador Parapente Quito\"\n }\n ],\n \"translationInfo\": {\n \"containsMachineTranslatedText\": false\n },\n \"supplier\": {\n \"name\": \"Opeturmo - Parapente Montanita\"\n }\n },\n {\n \"status\": \"INACTIVE\",\n \"productCode\": \"141567P21\",\n \"language\": \"en-US\",\n \"createdAt\": \"2019-10-08T13:12:21.535614Z\",\n \"lastUpdatedAt\": \"2020-11-13T13:41:18Z\"\n },\n {\n \"status\": \"INACTIVE\",\n \"productCode\": \"8932P17\",\n \"language\": \"en-US\",\n \"createdAt\": \"2019-06-03T13:29:09.131851Z\",\n \"lastUpdatedAt\": \"2020-11-13T13:42:38Z\"\n },\n {\n \"status\": \"INACTIVE\",\n \"productCode\": \"58593P53\",\n \"language\": \"en-US\",\n \"createdAt\": \"2020-11-13T13:46:39.927509Z\",\n \"lastUpdatedAt\": \"2020-11-13T13:51:43Z\"\n },\n {\n \"status\": \"INACTIVE\",\n \"productCode\": \"164413P1\",\n \"language\": \"en-US\",\n \"createdAt\": \"2019-06-14T00:29:29.039245Z\",\n \"lastUpdatedAt\": \"2020-11-13T14:22:08Z\"\n }\n ],\n \"nextCursor\": \"MTYwNTI3NzMyOHwxNjQ0MTNQMXxJTkFDVElWRQ==\"\n}\n```\n\nThe example above gives the first five product records in the catalogue, with modification dates in chronological order. Note that products with a `\"status\"` of `\"INACTIVE\"` are products that have been temporarily disabled by the supplier and are therefore unavailable \u2013 when this is the case, all other requests for this product should be avoided. \n\nIncluded in the response is the `nextCursor` element, which contains an identification code that points to the next page of product records; i.e.:\n\n```json\n\"nextCursor\": \"MTYwNTI3NzMyOHwxNjQ0MTNQMXxJTkFDVElWRQ==\"\n```\n\nIn your next call to [/products/modified-since](#operation/productsModifiedSince), provide the value of `nextCursor` in the `cursor` parameter to get the next page of results:\n\n```\nGET https://api.sandbox.viator.com/partner/products/modified-since?count=500&cursor=MTYwNTI3NzMyOHwxNjQ0MTNQMXxJTkFDVElWRQ==\n```\n\nThe response will be similar to the initial response shown above, except it will contain the **next** 500 product records and a new `nextCursor` that points to the following page, and so on.\n\nContinue calling [/products/modified-since](#operation/productsModifiedSince) using the `nextCursor` value in the `cursor` parameter to retrieve all pages of results. You will eventually receive a response that contains an empty `products` array and does not contain a `nextCursor` element. The absence of the `nextCursor` element indicates that you have, for the time being, reached the end of the list and have received all product records from our catalogue.\n\n**Example final page response**\n\n```json\n{\n \"products\": []\n}\n```\n\n### Periodically update your product records\n\nNow that you have all product records from our catalogue, you can keep it up-to-date by periodically polling the service using the most-recent `nextCursor` code you received. Regardless of how frequently you call [/products/modified-since](#operation/productsModifiedSince), you will always receive all product update information so long as you keep track of the last cursor you received and use that in your subsequent call.\n\nYou should never need to re-ingest the entire product catalogue unless you need to re-initialize your database. This may happen frequently during development, but never (or rarely) in production. Due to the large volume of data, we strongly recommend keeping it to a minimum.\n\nProducts are considered updated when the supplier makes any changes to the product's details, excluding pricing and availability changes, which are retrieved from the [availability schedules](#section/Key-concepts/Product-content-and-availability-endpoints) endpoints. \n\nWhen the supplier publishes their product detail updates, the modified product [/products/modified-since](#operation/productsModifiedSince) service will respond to this same call with newly-modified products in the `products` array and a new `nextCursor` element with which to poll the service for future updates in the same way.\n\nIt would be reasonable to poll this service on an hourly basis, updating those records in your local copy of the product catalogue as they become available.\n\nNote that the `nextCursor` code is valid indefinitely; it will not expire.\n\n### Filtering out products\n\nYou are free to choose which products to store on your system and sell. As the product content endpoints return all available products, you will need to perform the filtering step yourself at the time of ingestion. If a product contains attributes that you do not desire; e.g., the type of product, where it operates, etc., simply discard the update and do not add it to your database.\n\n#### Filtering out manual-confirmation products\n\nUnless you have established the required functionality on your site to sell [manual confirmation products](#section/Booking-concepts/Booking-confirmation-types) you will need to **exclude** all non-instant confirmation products from your catalogue.\n\nInstant confirmation products can be identified by the value of `bookingConfirmationSettings.confirmationType` being `\"INSTANT\"` in the response [product content response](#section/Key-concepts/Product-content-and-availability-endpoints); e.g.:\n\n```json\n\"bookingConfirmationSettings\": {\n \"bookingCutoffType\": \"CLOSING_TIME\",\n \"bookingCutoffInMinutes\": 0,\n \"confirmationType\": \"INSTANT\"\n}\n```\n\nProducts wih a `confirmationType` of `\"MANUAL\"` or `\"INSTANT_THEN_MANUAL\"` should be excluded if you do not wish to sell manual confirmation products.\n\n**Please note**:\n\n- The product catalog must be ingested and updated using the [/products/modified-since](#operation/productsModifiedSince) endpoint, unless you are only selling a relatively small subset of the products available in the Viator catalog. If that is the case, you may prefer to use the [/products/bulk](#operation/productsBulk) endpoint to ingest your selected products. \n\n- **Important**: the [/products/{product-code}](#operation/products) endpoint should not be used for bulk ingestion purposes. Your product ingestion/update strategy is one of our certification requirements and must be verified by us prior to your accessing the production server. To find out what our certification requirements are, see: [Viator Merchant API Certification](https://partnerresources.viator.com/travel-commerce/merchant/certification/?source=specs).\n\n\n## Resolving references\n\nSome information in the product content response is not communicated explicity; but rather, by reference, and therefore requires an extra de-referencing step to acquire the full details of the element.\n\nThese data types comprise:\n\n- locations\n- destinations\n- tags\n\nThe following sections describe how to de-reference these elements using the API.\n\n### Location references\n\nAll locations within the product content response are given as a location reference; e.g.:\n\n```json\n \"activityInfo\": {\n \"location\": {\n \"ref\": \"LOC-o0AXGEKPN4wJ9sIG0RAn5Cdd0Y9TkTxkcosDq0rJgjR12IzpogNi5POX+yGLXEoq\"\n },\n```\n\nThese location references can be resolved using the [/locations/bulk](#operation/locationsBulk) endpoint; for example:\n\n**Request**:\n\n```json\n{\n \"locations\": [\n \"LOC-o0AXGEKPN4wJ9sIG0RAn5Cdd0Y9TkTxkcosDq0rJgjR12IzpogNi5POX+yGLXEoq\",\n \"LOC-6eKJ+or5y8o99Qw0C8xWyK8Z2imHSU8Ozi+NYupJVyI=\"\n ]\n}\n```\n\n**Response**:\n\n```json\n{\n \"locations\": [\n {\n \"provider\": \"GOOGLE\",\n \"reference\": \"LOC-o0AXGEKPN4wJ9sIG0RAn5Cdd0Y9TkTxkcosDq0rJgjR12IzpogNi5POX+yGLXEoq\",\n \"providerReference\": \"ChIJS1UFbTyX1ZER0vTgCLKWCEQ\"\n },\n {\n \"provider\": \"TRIPADVISOR\",\n \"reference\": \"LOC-6eKJ+or5y8o99Qw0C8xWyK8Z2imHSU8Ozi+NYupJVyI=\",\n \"name\": \"Valley of the Roses\",\n \"address\": {\n \"street\": \"Dades Valley, near Bouteghrar\",\n \"administrativeArea\": \"El Kelaa M'gouna\",\n \"country\": \"Morocco\",\n \"countryCode\": \"MA\",\n \"postcode\": \"43000\"\n },\n \"center\": {\n \"latitude\": 34.00061,\n \"longitude\": -6.84494\n }\n }\n ]\n}\n```\n\nNote that there are two different location information providers, `\"TRIPADVISOR\"` and `\"GOOGLE\"`, referring to locations in the Tripadvisor location database or locations provided by the [Google Maps platform](https://cloud.google.com/maps-platform/) via the [Google Places API](https://developers.google.com/maps/documentation/places/web-service/overview), respectively. \n\nTripadvisor locations include full details of the location in the response from [/locations/bulk](#operation/locationsBulk), including address and geolocation information. However, you will need to use the [Google Places API](https://developers.google.com/maps/documentation/places/web-service/overview) to retrieve details for Google Maps locations.\n\nThe purpose of referring to locations by reference is to avoid the unnecessary transmission of duplicate data, as multiple products may include the same location reference. Therefore, we recommend caching the data received from this endpoint, checking this first to see if a particular location's details have been retrieved by your system in the past before making a request to [/locations/bulk](#operation/locationsBulk).\n\nRequests can be made to [/locations/bulk](#operation/locationsBulk) asynchronously; e.g., during the content ingestion process.\n\n\n### Destination references\n\nEvery product in the Viator catalogue is categorized according to the destination/locale in which it operates. \n\nThere are multiple kinds of destination, which includes cities, regions, countries and others\n\n**Example destinations***:\n\n| type | destinationId | destinationName |\n|-----------------|---------------|----------------------------|\n| AREA | 51912 | Machame |\n| CITY | 343 | Bangkok |\n| COUNTRY | 749 | Panama |\n| COUNTY | 51632 | Xiahe County |\n| DISTRICT | 51921 | Hunza |\n| HAMLET | | |\n| ISLAND | 51220 | Syros |\n| NATIONAL PARK | 51196 | Death Valley National Park |\n| NEIGHBORHOOD | 60465 | Kensington |\n| PENINSULA | 51769 | Michamwi |\n| PROVINCE | 51255 | Mendoza Province |\n| REGION | 4431 | Northern China |\n| STATE | | |\n| TOWN | 50971 | Swansea |\n| UNION TERRITORY | 51542 | Daman and Diu |\n| VILLAGE | 51011 | Pyrgos |\n| WARD | 52140 | Shibuya |\n\n* Notes:\n The examples above are subject to change.\n These are all currently supported destination types, though for some there are no live examples at the moment\n\n\nEvery product has one or more destinations associated with it by way of its destination reference. This is given in the `destinations` object in the response from any of the product content endpoints; e.g.:\n\n```json\n\"destinations\": [\n {\n \"ref\": \"34198\",\n \"primary\": true\n }\n],\n```\n\nTo de-reference destination identifiers, you must use our destination taxonomy, which can be retrieved from the [/destinations](#operation/destinations) endpoint.\n\nYou may wish to filter products according to destination.\n\nA call to [/destinations](#operation/destinations) will return data for **all** available destinations. \nYou must store a local copy of this mapping information, as destination data does not change frequently \u2013 i.e., new destinations are rarely added. \nOn-demand updates can be done in the event you encounter a product associated to a destination reference for which you do not have the details.\n\n\n**Example snippet of destination taxonomy**:\n\n```json\n{\n \"destinationId\": 34198,\n \"name\": \"Seminyak\",\n \"type\": \"CITY\",\n \"parentDestinationId\": 98,\n \"lookupId\": \"2.15.98.34198\",\n \"defaultCurrencyCode\": \"IDR\",\n \"timeZone\": \"Asia/Makassar\",\n \"center\": {\n \"latitude\": -8.68877,\n \"longitude\": 115.161267\n }\n},\n{\n \"destinationId\": 901,\n \"name\": \"Buenos Aires\",\n \"type\": \"CITY\",\n \"parentDestinationId\": 22280,\n \"lookupId\": \"9.78.22280.901\",\n \"destinationUrl\": \"https://shop.live.rc.viator.com/x/d901-ttd?mcid=42383&pid=P00108950&medium=api&api_version=2.0\",\n \"defaultCurrencyCode\": \"ARS\",\n \"timeZone\": \"America/Argentina/Buenos_Aires\",\n \"iataCode\": \"BUE\",\n \"center\": {\n \"latitude\": -34.6084175,\n \"longitude\": -58.3731613\n }\n},\n...\n```\n\nNote that destinations are organized into a hierarchy. The destination's position in the hierarchy can be determined according to the `parentDestinationId` and `lookupId` fields.\n\nIn the second example above, Buenos-Aires is a `\"CITY\"`, and it has a `parentDestinationId` of `22280`, which is the `destinationId` of \"The Pampas\" \u2013 the `\"REGION\"` in South America where Buenos-Aires is located.\n\nThe destination's full lineage with respect to the hierarchy is given in `lookupId`, which is a series of destination ids separated by periods - in this case:\n\n```json\n \"lookupId\": \"9.78.22280.901\"\n```\n\n| Component | Destination name | Destination type |\n|-----------|------------------|------------------|\n| 9 | (unnamed) | (broad continental designation) | \n| 78 | Argentina | \"COUNTRY\" |\n| 22280 | The Pampas | \"REGION\" |\n| 901 | Buenos-Aires | \"CITY\" |\n\nUsing this information, you are able to categorize each product into its geographical location for display and search purposes.\n\n### Tag references\n\nEach product is also categorized according to its content, features or theme. Each attribute has a corresponding identifier called a 'tag'. The tag references for each product are contained in the `tags` array, in the response from any of the product content endpoints.\n\n**Example tags array** (product [250380P1 \u2013 Surf lessons Bali, Canggu](https://www.viator.com/tours/Seminyak/Surf-lessons-Bali-Canggu/d34198-250380P1)): \n\n```json\n\n\"tags\": [\n 20246,\n 21946,\n 20244\n],\n```\n\nThese numeric tag identifiers can be de-referenced using information available from the [/products/tags](#operation/productsTags) endpoint. This service takes no parameters and retrieves information for **all** available tags.\n\nTo learn more about tags, see this article: [Viator tags, explained](https://partnerresources.viator.com/travel-commerce/tags?source=specs)\n\nWe recommend you store a local copy of this information, as tags do not change frequently. It is only necessary to re-ingest from this endpoint in the event you encounter a product that references a tag for which you do not have the details.\n\nAs with destinations, tags are organized into a hierarchy. A tag's relative position within that hierarchy can be determined by tracing back through its parent tag ids, which (if the tag has any) are listed in its `parentTagIds` element. Each tag can have multiple parent tags, and each tag can eventually be traced back to its parent. Parent tags are tags that have no parents; i.e., they are at the top of the hierachy.\n\nFor example, tag: **20244 (Sports Lessons)** in [/products/tags](#operation/productsTags) response:\n\n```json\n{\n \"tagId\": 20244,\n \"parentTagIds\": [\n 21478,\n 21909,\n 21915\n ],\n \"allNamesByLocale\": {\n \"de\": \"Sportkurse\",\n \"no\": \"Treningskurs\",\n \"sv\": \"Idrottslektioner\",\n \"pt\": \"Aulas de esportes\",\n \"en_AU\": \"Sports Lessons\",\n \"en\": \"Sports Lessons\",\n \"it\": \"Lezioni di sport\",\n \"fr\": \"Cours de sport\",\n \"en_UK\": \"Sports Lessons\",\n \"es\": \"Sesiones deportivas\",\n \"zh\": \"\u8fd0\u52a8\u8bfe\",\n \"zh_HK\": \"\u9ad4\u80b2\u8ab2\u7a0b\",\n \"zh_TW\": \"\u904b\u52d5\u8ab2\u7a0b\",\n \"ja\": \"\u30b9\u30dd\u30fc\u30c4\u6559\u5ba4\",\n \"zh_CN\": \"\u8fd0\u52a8\u8bfe\",\n \"da\": \"Sportsundervisning\",\n \"nl\": \"Sportlessen\"\n }\n},\n\n```\n\nThe `parentTagIds` for 20244 - Sports lessons are:\n\n- **21478** \u2013 \"Active & Outdoor Classes\"\n- **21909** \u2013 \"Outdoor Activities\"\n- **21915** \u2013 \"Classes & Workshops\"\n\nThese three tags have no parent tags, and are therefore at the top of the hierarchy. Applying this same process to the other tags in the `tags` array, we can determine the full set of tags for this product, in this case:\n\n- **21909** \u2013 \"Outdoor Activities\"\n - **21478** \u2013\u00a0\"Active & Outdoor Classes\"\n - **20244** - \"Sports lessons\"\n- **21915** \u2013 \"Classes & Workshops\" \n- **21946** \u2013 \"Good for avoiding crowds\"\n- **21442** \u2013 \"On the water\"\n - **20246** \u2013 \"Surfing lessons\"\n\nBy traversing the hierarchy in this way, we have surfaced seven tags that pertain to this product with different levels of generality; i.e. it is an 'active and outdoor class', and it is a 'sports lesson'. More generally, it is an 'outdoor activity', a class or workshop, and is 'good for avoiding crowds':\n\nIn this way, you can categorize products for search and recommendation purposes, or to create category display and search buttons as seen on [viator.com 'things to do' pages](https://www.viator.com/Adelaide/d363-ttd); e.g.:\n\n![tag categories on viator.com](img/ttd-tags.png)\n\n\n## Ingesting and updating availability schedules\n\nAvailability schedule information for all products is available to be ingested and updated via the [/availablity/schedules/modified-since](#operation/availabilitySchedulesModifiedSince) endpoint. This endpoint functions in a similar manner to the [/products/modified-since](#operation/productsModifiedSince) endpoint; i.e., an initial call is made that returns all availability data in bulk, and then calls are made periodically to that same endpoint, which will return a delta update.\n\nTherefore, to initialize your local copy of our availability schedule information, make a call to [/availability/schedules/modified-since](#operation/availabilitySchedulesModifiedSince), including only the `count` query parameter, which we recommend setting to `500`. \n\nFor the sake of brevity, in the following example, `count` is set to `5`\n\n**Example request**\n\n```\nGET https://api.viator.com/partner/availability/schedules/modified-since?count=5\n```\n\nYou will receive a response similar to the following:\n\n```json\n{\n \"availabilitySchedules\": [\n {\n \"productCode\": \"3320STOLZadvaft\",\n \"bookableItems\": [\n {\n \"seasons\": [\n {\n \"startDate\": \"2020-11-23\",\n \"endDate\": \"2020-12-22\",\n \"pricingRecords\": [\n {\n \"daysOfWeek\": [\n \"WEDNESDAY\",\n \"THURSDAY\",\n \"FRIDAY\",\n \"SATURDAY\",\n \"SUNDAY\"\n ],\n \"timedEntries\": [\n {\n \"startTime\": \"15:30\"\n }\n ],\n \"pricingDetails\": [\n {\n \"pricingPackageType\": \"PER_PERSON\",\n \"minTravelers\": 1,\n \"ageBand\": \"INFANT\",\n \"price\": {\n \"original\": {\n \"recommendedRetailPrice\": 0.00,\n \"partnerNetPrice\": 0.00,\n \"bookingFee\": 0.00,\n \"partnerTotalPrice\": 0.00\n }\n }\n },\n {\n \"pricingPackageType\": \"PER_PERSON\",\n \"minTravelers\": 1,\n \"ageBand\": \"ADULT\",\n \"price\": {\n \"original\": {\n \"recommendedRetailPrice\": 17.20,\n \"partnerNetPrice\": 11.50,\n \"bookingFee\": 0.69,\n \"partnerTotalPrice\": 12.19\n }\n }\n }\n ]\n }\n ]\n }\n ]\n }\n ],\n \"currency\": \"EUR\"\n },\n {\n \"productCode\": \"14093P1\",\n \"bookableItems\": [],\n \"currency\": \"EUR\"\n },\n {\n \"productCode\": \"3567AKL_SAF\",\n \"bookableItems\": [],\n \"currency\": \"NZD\"\n },\n {\n \"productCode\": \"5855RIPLEYS\",\n \"bookableItems\": [],\n \"currency\": \"USD\"\n },\n {\n \"productCode\": \"3033ENTRY_TR\",\n \"bookableItems\": [],\n \"currency\": \"USD\"\n }\n ],\n \"nextCursor\": \"MTU3ODA2Njc4NnwzMDMzRU5UUllfVFI=\"\n}\n```\n\nThe endpoint returns an array (`availabilitySchedules`) where each item contains all availabilty schedule information for a single product, and a cursor (`nextCursor`) that is to be used in subsequent calls to this endpoint to retrieve the next page of results.\n\nFor details on how to interpret the availability schedule object, see [Availability schedules](#section/Key-concepts/Availability-schedules).\n\n**Note**: An empty `bookableItems` array means that the product indicated by `productCode` is not active, has no availability, and therefore cannot be booked. This fact will be reflected if the product details are requested from the [/products/{product-code}](#operation/products) endpoint; e.g., for product `3033ENTRY_TR`:\n\n```json\n{\n \"status\": \"INACTIVE\",\n \"productCode\": \"3033ENTRY_TR\",\n \"language\": \"en\",\n \"createdAt\": \"2006-05-01T07:00:00Z\"\n}\n```\n\n### Pagination\n\nAs with the [/products/modified-since](#operation/productsModifiedSince) endpoint, you will receive as many records as requested via the `count` request parameter. Included in the response is the `nextCursor` element, which contains a code that points to the next page of availability records.\n\nAfter receiving this first response, your next request to the [/availablity/schedules/modified-since](#operation/availabilitySchedulesModifiedSince) service should include the value of `nextCursor` in the `cursor` request parameter; i.e.:\n\n```\nGET https://api.sandbox.viator.com/partner/availability/schedules/modified-since?count=5&cursor=MTU3ODA2Njc4NnwzMDMzRU5UUllfVFI=\n```\n\nThe response will be similar to the initial response shown above, except it will contain the next `count` number of availability schedule records and a new `nextCursor` that points to the following page.\n\nLoop through this process until you receive a response that contains an empty `availabilitySchedules` array and does not contain a `nextCursor` element. The absence of the `nextCursor` element indicates that you have, for the time being, reached the end of the list and your availability information is fully up-to-date.\n\n**Example final page response**\n\n```json\n{\n \"availabilitySchedules\": []\n}\n```\n\n### Periodically update your availability information\n\nOnce your availability schedule information ingestion is complete, you can keep it up-to-date by periodically polling the service using the latest `nextCursor` code you received; i.e., from the page prior to the final, empty page. \n\nIf new availability schedule information is available, the service will respond with new availability information in the `availabilitySchedules` array and a new `nextCursor` element with which to poll the service for future updates in the same way. Note that the `nextCursor` code is valid indefinitely; it will not expire.\n\nAs with the [/products/modified-since](#operation/productsModifiedSince) endpoint, we recommend polling this service on an hourly basis. The longer the interval between updates, the more likely your availability information will be out of date, raising the likelihood of availability differences when you make a real-time availability check using the [/availability/check](#operation/availabilityCheck) service.\n\nAgain, you should only need to call [/availablity/schedules/modified-since](#operation/availabilitySchedulesModifiedSince) without a `cursor` parameter **once**, for the first call of the initial ingestion. All future calls should include the `cursor` parameter and the results used to update your database.\n\n### Filtering out availability schedules\n\nAs you may not be offering Viator's full product catalogue for sale on your site, you are only required to store availability information for the products you support. Therefore, if you are filtering out products from our catalogue, you should also perform a check with regard to the availability schedule information received from the [/availablity/schedules/modified-since](#operation/availabilitySchedulesModifiedSince) to ensure that it pertains to a product in your catalogue.\n\nThis can be done by checking the `productCode` field in the ProductAvailabilitySchedule object response.\n\n**Please note**:\n\n- The availability and pricing schedules must be ingested and updated using the [/availability/schedules/modified-since](#operation/availabilitySchedulesModifiedSince) endpoint, unless you are only selling a relatively small subset of the products available in the Viator catalog. If that is the case, you may prefer to use the [/availability/schedules/bulk](#operation/availabilitySchedulesBulk) endpoint to ingest your selected product availability schedules. \n\n- **Important**: the [/availability/schedules/{product-code}](#operation/availabilitySchedules) endpoint should not be used for bulk ingestion purposes. Your availability schedule ingestion/update strategy is one of our certification requirements and must be verified by us prior to your accessing the production server. To find out what our certification requirements are, see: [Viator Merchant API Certification](https://partnerresources.viator.com/travel-commerce/merchant/certification/?source=specs).\n\n\n## Update frequency\n\nWe expect that your update frequency will not be more frequent than the following guidelines. More frequent updates will place an excessive burden on our systems and may result in your integration being shut off.\n\nSee section on [Rate Limiting](#section/Workflows/Rate-limiting) for more information.\n\n### Fixed-cadence delta updates\n\nIn order to keep your local databases up-to-date without placing an excessive burden on our servers, we expect you use the following fixed cadences at which you should poll the content-ingestion endpoints:\n\n| Endpoint | Update cadence |\n|-----------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| [/products/modified-since](#operation/productsModifiedSince) | Every 15-30 minutes following initial ingestion |\n| [/availability/schedules/modified-since](#operation/availabilitySchedulesModifiedSince) | Every 15-30 minutes following initial ingestion |\n| [/bookings/modified-since](#operation/bookingsModifiedSince) | Every 5-10 minutes following initial ingestion to stop notification emails sent by Viator for supplier cancellations of bookings made through the API (merchant partners only).

Hourly for all other scenarios |\n| [/bookings/modified-since/acknowledge](#operation/bookingsModifiedSinceAcknowledge) | Right after ingesting the booking modifications |\n\n### Fixed-cadence full updates\n\nTo ensure your systems reflect any removals of or changes to existing destinations, locations or booking questions, we expect that you retrieve full updates from these endpoints as follows:\n\n| Endpoint | Update cadence |\n|---------------------------------------------------------------------------|----------------|\n| [/destinations](#operation/destinations) | Weekly |\n| [/attractions/search](#operation/attractionsSearch) | Weekly |\n| [/products/booking-questions](#operation/productsBookingQuestions) | Monthly |\n| [/products/tags](#operation/productsTags) | Weekly | \n| [/products/recommendations](#operation/productsRecommendations) | Weekly | \n| [/locations/bulk](#operation/locationsBulk) | Monthly |\n| [/reviews/product](#operation/reviewsProduct) | Weekly |\n| [/bookings/cancel-reasons](#operation/bookingsCancelReasons) | Monthly |\n| [/suppliers/search/product-codes](#operation/suppliersSearchProductCodes) | Weekly |\n| [/bookings/status](#operation/bookingsStatus) | Hourly |\n| [/exchange-rates](#operation/exchangeRates) | Daily |\n\n### On-demand updates\n\nWhen ingesting product content, in the event that you encounter an unknown reference \u2013 i.e., a new location reference, booking question, tag or destination id \u2013 or, if you need to perform a currency conversion for which the last exchange rate you retrieved has expired, we expect you to call the relevant endpoint to resolve the new reference immediately or just after completing the product content update.\n\n| Endpoint | When to update |\n|--------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| [/exchange-rates](#operation/exchangeRates) | Whenever you encounter a currency that you need to convert, but the last-retrieved exchange-rate for that currency-pair is no longer valid due to having expired (according to the `expiry` value in the response from this endpoint) |\n| [/locations/bulk](#operation/locationsBulk) | Whenever you encounter a location reference code that you do not yet have the details for (we recommend retrieving location details in batches using this endpoint; therefore, the retrieval of new location data can commence after all new product content is retrieved) |\n| [/products/tags](#operation/productsTags) | Whenever you encounter a tag reference code that you do not yet have the details for |\n| [/destinations](#operation/destinations) | Whenever you encounter a destination id that you do not yet have the details for |\n| [/products/booking-questions](#operation/productsBookingQuestions) | Whenever you encounter a booking question identifier that you do not yet have the details for |\n| [/attractions/{attraction-id}](#operation/attractions) | Whenever you encounter an attraction identifier that you do not yet have the details for |\n| [/reviews/product](#operation/reviewsProduct) | If the number of reviews available for a product, which is reported in the `reviews.totalReviews` element in the [product content response](#section/Key-concepts/Product-content-and-availability-endpoints), has changed compared with its previous value, the reviews for that product should also be refreshed by calling the [/reviews/product](#operation/reviewsProduct) endpoint. We request that you rate-limit your use of this service to 30 requests per minute. |\n| [/bookings/status](#operation/bookingsStatus) | Whenever you encounter a booking waiting for manual confirmation. Must not be called more than once every 3 minutes. |\n\n## Rate limiting\n\nWe impose rate limits on the usage of this API to prevent excessive demands being made of our system that might otherwise affect its availability for all users.\n\nOur methodology involves applying a rate-limit on a per-endpoint / per-PUID (Partner Unique ID) basis; therefore, reaching the rate-limit with respect to your usage of one endpoint will only affect the availability of that endpoint, not the others.\n\nIn addition, we apply an additional security layer of rate limiting based on client IP address. This limits bursts of consecutive requests from the same IP over a short period of time and may trigger temporary request rejection even when per-endpoint / per-PUID limits have not been reached.\n\nWe do not have a universal rate limit that applies to all users. The rate limit you are required to operate within is based on a standard commensurate with the scale of your operation.\n\nThis is to say that if the volume of traffic to your site is such that under normal conditions your operations are causing you to frequently receive HTTP 429 (Too Many Requests) responses, you can ask for your rate-limit to be increased. If that is the case, please speak to your account manager to discuss whether increasing your rate limit would be the appropriate solution.\n\n### Interpreting the HTTP 429 response\n\nIf a request to an endpoint yields an HTTP 429 (Too Many Requests) response, information regarding your present usage status can be located in the following four header fields:\n\n- `RateLimit-Limit` \n - Total limit of requests for this endpoint per rolling 10s time window\n- `RateLimit-Remaining`:\n - The number of requests that remain available to you in the present 10s period \n- `RateLimit-Reset`:\n - How long (in seconds) from the present moment it would take for the number of available requests to reach its maximum value\n- `Retry-After`:\n - A recommendation regarding how long (in seconds) it would be optimal to wait before making a subsequent call to that endpoint\n\n**Example HTTP 429 response:**\n\n```json\nHTTP/1.1 429\n...\n..\nRateLimit-Limit: 16\nRateLimit-Remaining: 0\nRateLimit-Reset: 10\nRetry-After: 10\n...\n..\n \n{ \n \"code\":\"TOO_MANY_REQUESTS\",\n \"message\":\"Too many requests, please try again\",\n \"timestamp\":\"2022-09-13T13:25:26.179433Z\",\n \"trackingId\":\"4badb933-ad65-4464-ae9c-c20e4a70c0d2\"\n}\n```\n\nThis can interpreted as:\n\n`RateLimit-Limit: 16`\n- You can make 16 requests to this endpoint per 10s rolling time window\n\n`RateLimit-Remaining: 0`\n- You have no remaining requests available in the current 10s epoch (as you would expect, since it is for this reason that you are receiving this response in the first place)\n\n`RateLimit-Reset: 10`\n- If you were to wait 10s, your `RateLimit-Remaining` value would reach its maximum; which, in this case, is 16 requests\n\n`Retry-After: 10`\n- It is recommended you pause for 10s before re-attempting to call this endpoint\n\nNote that these rate-limit-related values will also be returned in the HTTP 200 (success) response. Inspect these values if you wish to estimate whether your method of implementing this API will remain sustainable at scale.\n\n### Concurrency-based rate limiting\n\nWhile rate-limiting is imposed per API key, if our system reaches its capacity on account of high demand overall, you may be rate limited even though you have not personally exceeded your individual rate limit.\n\nIn this case, you will receive a HTTP 503 (Service Unavailable) response. The header of this response will include the `Retry-After` field. In the example below, the recommendation is to pause for 60s before retrying the request:\n e.g.:\n\n```json\nHTTP/1.1 503\n...\n..\nRetry-After: 60\n...\n..\n \n{\"code\":\"SERVICE_UNAVAILABLE\",\"message\":\"Service is currently unavailable, please try again\",\"timestamp\":\"2022-09-13T08:52:48.693734Z\",\"trackingId\":\"fc342644-e48f-4fd9-96e3-a6860607d405\"}\n```\n\n# Appendices\n\n## Inclusions & exclusions\n\nThe `inclusions` and `exclusions` arrays are returned for active products in the response from the [product content endpoints](#section/Key-concepts/Product-content-and-availability-endpoints). The array items for both `inclusions` and `exclusions` are objects defined by the same schema, `InclusionExclusionItem`.\n\nThe following table describes the mapping of the possible combinations of `category`, `categoryDescription`, `type`, and `typeDescription` elements of the object in the response that you may encounter. \n\nNew Categories and types can be added over time, allowing flexibility for different use cases.\n\nNote: Changes on the table below become effective by the end of April 2025, see Notes column for details.\n\n\n\n \n \n \n \n \n\n\n \n \n \n \n \n\n\n \n \n \n\n\n \n \n \n\n\n \n \n \n\n\n \n \n \n\n\n \n \n \n\n\n \n \n \n\n\n \n \n \n\n\n \n \n \n\n\n \n \n \n\n\n \n \n \n \n \n\n\n \n \n \n\n\n \n \n \n\n\n \n \n \n\n\n \n \n \n\n\n \n \n \n\n\n \n \n \n\n\n \n \n \n\n\n \n \n \n\n\n \n \n \n\n\n \n \n \n\n\n \n \n \n \n \n\n\n \n \n \n\n\n \n \n \n \n \n\n\n \n \n \n\n\n \n \n \n\n\n \n \n \n\n\n \n \n \n\n\n \n \n \n \n \n\n\n \n \n \n\n\n \n \n \n\n\n \n \n \n\n\n \n \n \n\n\n \n \n \n\n\n \n \n \n\n\n \n \n \n\n\n \n \n \n\n\n \n \n \n\n\n \n \n \n \n \n\n\n \n \n \n\n\n \n \n \n \n \n\n
categorycategoryDescriptiontypetypeDescriptionnotes
\"FEES_AND_TAXES\"Fees\"AIRPORT_AND_DEPARTURE_TAX\"Airport/Departure Tax
\"ALL_FEES_AND_TAXES\"All Fees and TaxesDeprecated - April 2025
\"FUEL_SURCHARGE\"Fuel surcharge
\"GRATUITIES\"Gratuities
\"GST\"GST (Goods and Services Tax)Deprecated - April 2025
\"LANDING_AND_FACILITY_FEES\"Landing and facility fees
\"PARKING_FEES\"Parking Fees
\"ADMISSION_FEES\"Admission FeesNew - start April 2025
\"ENTRANCE_FEES\"Entrance FeesNew - start April 2025
\"GOVERNMENT_FEES\"Government FeesNew - start April 2025
\"FOOD_AND_DRINK\"Food and drink\"ALCOHOLIC_BEVRAGES\"
\"ALCOHOLIC_BEVERAGES\"
Alcoholic Beverages
\"BOTTLED_WATER\"Bottled water
\"BREAKFAST\"Breakfast
\"BRUNCH\"Brunch
\"COFFEE_AND_TEA\"Coffee and/or Tea
\"DINNER\"Dinner
\"LUNCH\"Lunch
\"REFRESHMENTS\"RefreshmentsDeprecated - April 2025
\"SNACKS\"Snacks
\"SODA_POP\"Soda/Pop
\"MEALS\"MealsNew - start April 2025
\"SOUVENIRS\"Souvenirs\"CERTIFICATE\"CertificateDeprecated - April 2025
\"RECIPE_BOOKLET\"Recipe bookletDeprecated - April 2025
\"TRANSPORT_AMENITIES\"Transportation amenities\"AIR_CONDITIONED_VEHICLE\"Air-conditioned vehicle
\"PRIVATE_TRANSPORTATION\"Private transportation
\"RESTROOM_ON_BOARD\"Restroom on board
\"WIFI_ONBOARD\"WiFi on board
\"PUBLIC_TRANSPORTATION\"Public transportation (bus, subway, cable car, etc.)New - start April 2025
\"EQUIPMENT\"Use of Equipment\"ALL_INGREDIENTS\"All ingredientsDeprecated - April 2025
\"USE_OF_OTHER_EQUIPMENT\"OtherDeprecated - April 2025
\"USE_OF_BICYCLE\"Use of bicycle
\"USE_OF_COOKING_UTENSILS\"Use of cooking utensilsDeprecated - April 2025
\"USE_OF_SCUBA_EQUIPMENT\"Use of SCUBA equipment
\"USE_OF_SEGWAY\"Use of Segway
\"USE_OF_SNORKELING_EQUIPMENT\"Use of snorkelling equipment
\"USE_OF_TRIKKE\"Trikke
\"BOOSTER_SEAT\"Booster seatNew - start April 2025
\"LOCKER\"LockerNew - start April 2025
\"EXCESS_CHARGES\"Excess charges\"EXCESS_BAGGAGE\"Excess baggageNew - start April 2025
\"OVER_WEIGHT_LIMIT\"Over weight limitNew - start April 2025
\"OTHER\"Other\"OTHER\"Other
\n\n## Update history\n\n| Date | Description |\n|------|-------------|\n| 31 Oct 2022 | Removed v1-v2 migration reference section |\n| 14 Sep 2022 | Revised [Workflows \u2013 Rate limiting](#section/Workflows/Rate-limiting) and HTTP 429 response description with respect to new rate-limiting policy |\n| 23 Aug 2022 | Clarified new standard rate-limiting policy that applies to all endpoints in new section: [Workflows \u2013 Rate limiting](#section/Workflows/Rate-limiting) |\n| 15 Aug 2022 | Altered advice regarding the recommended frequency for fixed cadence full updates for various endpoints in [Workflows \u2013 Update frequency](#section/Workflows/Update-frequency) section | \n| 3 Aug 2022 | Updated descriptions of [/products/modified-since](#operation/productsModifiedSince), [/products/bulk](#operation/productsBulk) and [/products/{product-code}](#operation/products) to highlight the polymorphism in the response / discriminator drop-down on `status` element |\n| 1 Aug 2022 | Renamed **Key Concepts \u2013 Content ingestion endpoints** to [Key Concepts \u2013 Product Content and availability endpoints](#section/Key-concepts/Product-content-and-availability-endpoints) and updated this section with usage recommendations |\n| 27 July 2022 | Updated [conditonal booking questions logic table](#section/Booking-concepts/Booking-questions) to include advice about `TRANSFER_DEPARTURE_MODE` booking question |\n| 18 July 2022 | Modifed [/bookings/cancel-reasons](#operation/bookingsCancelReasons) endpoint to accept a query parameter to specify customer or supplier-initiated cancellation reasons |\n| 18 July 2022 | Added two new endpoints to allow merchant partners to manage supplier-initiated booking cancellations: [/bookings/modified-since](#operation/bookingsModifiedSince) and [/bookings/modified-since/acknowledge](#operation/bookingsModifiedSinceAcknowledge) |\n| 6 July 2022 | Improved descriptions of `lineItems` and `totalPrice` elements of `bookableItems[]` object array in [/availability/check](#operation/availabilityCheck) endpoint response |\n| 30 June 2022 | Clarified conditions in conditional booking questions section of [Booking concepts - Booking questions](#section/Booking-concepts/Booking-questions) section |\n| 29 June 2022 | Added `target-lander` query parameter to [/products/{product-code}](#operation/products), [/products/modified-since](#operation/productsModifiedSince), [/products/bulk](#operation/productsBulk) and [/products/search](#operation/productsSearch) endpoints |\n| 23 June 2022 | Added `attractionId` to filtering options in [/products/search](#operation/productsSearch) endpoint |\n| 22 June 2022 | Updated string length specifications in VoucherInfo schema and `partnerBookingRef` in [/bookings/book](#operation/bookingsBook) request object |\n| 20 June 2022 | Updated maximum string length specifications for [/bookings/book](#operation/bookingsBook) request object (BookerInfo and CommunicationInfo schemata) |\n| 3 June 2022 | Added new supplier search endpoint: [/suppliers/search/product-codes](#operation/suppliersSearchProductCodes) |\n| 1 June 2022 | Added links to various articles on the [Viator Partner Resource Center](https://partnerresources.viator.com/) throughout document |\n| 26 May 2022 | Added advice about review authenticity: [Key concepts - Review authenticity](#section/Key-concepts/Review-authenticity) |\n| 23 May 2022 | Added `partnerNetFromPrice` property to `ProductSearchPricing` schema spec in response from [/products/search](#operation/productsSearch) endpoint |\n| 20 May 2022 | Added advice regarding whether or not an endpoint should be used to ingest details about the entire product catalog to [/products/{product-code}](#operation/products), [/products/bulk](#operation/productsBulk), [/availability/schedules/{product-code}](#operation/availabilitySchedules) and [/availability/schedules/modified-since](#operation/availabilitySchedulesModifiedSince) endpoint descriptions. |\n| 17 May 2022 | Added note about extra validation requirements for `communication.phone` field in request to [/bookings/book](#operation/bookingsBook) endpoint |\n| 11 May 2022 | Modified [update frequency recommendation](#section/Workflows/Update-frequency) for [/locations/bulk](#operation/locationsBulk) endpoint from 'weekly' to 'monthly' due to the relatively changeless nature of locations data. |\n| 10 May 2022 | Modified description of [/exchange-rates](#operation/exchangeRates) endpoint to include additional currencies (ARS, CLP, COP, ILS, PEN, PHP) available for conversion |\n| 1 Apr 2022 | Modified note to [Booking questions \u2013 Conditional booking questions](#section/Booking-concepts/Booking-questions) (third bullet in 'Extra notes') |\n| 22 Mar 2022 | Added note to [Booking questions \u2013 Conditional booking questions](#section/Booking-concepts/Booking-questions) (third bullet in 'Extra notes') |\n| 8 Mar 2022 | Corrected `\"OTHER_HEALTH\"` to `\"HEALTH_OTHER\"` in `AdditionalInfo` schema used in the product response |\n| 11 Feb 2022 | Removed note about no-index policy from [/v1/attraction/products](#operation/v1AttractionProducts) endpoint |\n| 9 Feb 2022 | Added [Booking concepts \u2013 Low-margin products](/#section/Booking-concepts/Low-margin-products) section | \n| 1 Feb 2022 | Added [Conventions - Endpoint timeout settings](#section/Conventions/Endpoint-timeout-settings) section |\n| 5 Jan 2022 | Corrected response schema details in [/bookings/{booking-reference}/cancel](#operation/bookingsCancel) and [/bookings/{booking-reference}/cancel-quote](#operation/bookingsCancelQuote) to indicate that `status` and `bookingId` are required properties |\n| 15 Nov 2021 | Added Basic-access Affiliate postman collection to [Testing section](#section/Testing) |\n| 5 Nov 2021 | Clarified description of exp-demo header parameter |\n| 2 Nov 2021 | Added `\"LOCATION\"` as option for `logistics.travelerPickup.locations[].pickupType` in product content response |\n| 5 Jan 2022 | Corrected response schema details in [/bookings/{booking-reference}/cancel](#operation/bookingsCancel) and [/bookings/{booking-reference}/cancel-quote](#operation/bookingsCancelQuote) to indicate that `status` and `bookingId` are required properties |\n| 15 Nov 2021 | Added Basic-access Affiliate postman collection to [Testing section](#section/Testing) |\n| 5 Nov 2021 | Clarified description of exp-demo header parameter |\n| 2 Nov 2021 | Added `\"LOCATION\"` as option for `logistics.travelerPickup.locations[].pickupType` in product content response |\n| 28 Oct 2021 | Updated [Booking Concepts \u2013 Booking questions \u2013 Conditional booking questions](#conditional-booking-questions) table |\n| 15 Oct 2021 | Modified PriceObject schema in response from /availabililty/* endpoints to include provision for commission-payment-model merchants. See [/availability/check](#operation/availabilityCheck) for example |\n| 13 Oct 2021 | Added section: [How to determine if a product option supports pickup](#product-option-pickup) |\n| 7 Oct 2021 | Added `\"TRANSFER_ARRIVAL_DROP_OFF\"` booking question details in [Booking details \u2013 conditional booking concepts](#section/Booking-concepts/Booking-questions) section |\n| 1 Oct 2021 | Changed 'standard access' to 'full access' in [Access to endpoints](#section/Access-to-endpoints) section |\n| 1 Oct 2021 | Added note about `\"TRANSFER_PORT_CRUISE_SHIP\"` booking question to [Booking concepts \u2013 Booking questions section](#section/Booking-concepts/Booking-questions) |\n| 27 Sep 2021 | Added note about time-out recommendation to [/bookings/book](#operation/bookingsBook) |\n| 16 Sep 2021 | Removed `topX` and modified options for `sortOrder` request parameters in [/attraction/reviews/](#operation/v1AttractionReviews) endpoint |\n| 13 Sep 2021 | Added `reference` element to `Supplier` schema of `ActiveProduct` | \n| 6 Sep 2021 | Modified available options for `sortOrder` request parameter in [/v1/taxonomy/attractions](#operation/v1TaxonomyAttractions) and [/v1/search/attractions](#operation/v1SearchAttractions) endpoints |\n| 27 Aug 2021 | Added basic and full-access affiliate types to [Access to endpoints](#section/Access-to-endpoints) section |\n| 26 Aug 2021 | Added [Key concepts \u2013 Protecting unique content](#section/Key-concepts/Protecting-unique-content) section |\n| 23 Aug 2021 | Added [Key concepts \u2013 v1 to v2 migration reference \u2013 Mapping categories to tags](#section/Key-concepts/V1-to-V2-migration-reference) section |\n| 19 Aug 2021 | Added Tripadvisor as an additional reviews provider in [/reviews/product](#operation/reviewsProduct) endpoint | \n| 12 Aug 2021 | Updated [Access to endpoints](#section/Access-to-endpoints) section to include [/products/booking-questions](#operation/productsBookingQuestions) and [/bookings/status](#operation/bookingsStatus) |\n| 10 Aug 2021 | Bugfix \u2013 `provider` element in request to [/reviews/product](#operation/reviewsProduct) now listed as 'required' |\n| 5 Aug 2021 | Added new sorting options to [/reviews/product](#operation/reviewsProduct) endpoint |\n| 1 Jul 2021 | Added [Workflows - Update frequency](#section/Workflows/Update-frequency) section |\n| 22 Jun 2021 | Deprecated [/v1/product/reviews](#operation/v1ProductReviews) endpoint |\n| 21 Jun 2021 | Added [/reviews/product](#operation/reviewsProduct) endpoint |\n| 18 Jun 2021 | Added [/products/search](#operation/productsSearch) endpoint |\n| 9 Jun 2021 | Added [Booking concepts \u2013 supplier communications](#section/Booking-concepts/Supplier-communications)\n| 9 Jun 2021 | Added [Booking concepts \u2013 working with age bands](#section/Booking-concepts/Working-with-age-bands) section |\n| 4 Jun 2021 | Added premium `viatorUniqueContent` element to ActiveProduct |\n| 27 May 2021 | Added [Booking-concepts \u2013 Per-person and unit pricing](#section/Booking-concepts/Per-person-and-unit-pricing) section | \n| 21 May 2021 | Added `reviews` element to responses of [product content endpoints](#section/Key-concepts/Product-content-and-availability-endpoints) |\n| 14 May 2021 | Added **Age-bands** section to [Booking concepts - Booking questions](#section/Booking-concepts/Booking-questions) section |\n| 5 May 2021 | Updated Conditional booking questions table in [Booking concepts - Booking questions](#section/Booking-concepts/Booking-questions) section |\n| 25 Mar 2021 | Added v1 endpoints for affiliate partners |\n| 23 Mar 2021 | Added [Resolving references](#section/Workflows/Resolving-references) section |\n| 11 Mar 2021 | Added `campaign-value` parameter to [/products/modified-since](#operation/productsModifiedSince), [/products/bulk](#operation/productsBulk) and [/products/{product-code}](#operation/products) endpoints; added AvailabilityScheduleSummary `summary` schema to /availability/schedules/* endpoint responses |\n| 16 Feb 2021 | Added [Determining ratings](#section/Workflows/Determining-ratings) section; added [Conventions - Accept-Encoding](#section/Conventions/Accept-Encoding) section |\n| 21 Jan 2021 | Extended BookingBookRequest schema (used in [/bookings/book](#operation/bookingsBook)) to include new AdditionalBookingDetails schema to allow custom voucher text |\n| 18 Jan 2021 | Modified `rejectionReasonCode` in responses from [/bookings/book](#operation/bookingsBook) and [/bookings/status](#operation/bookingsStatus) endpoints |\n| 12 Jan 2021 | Added [Key concepts \u2013 Booking confirmation types](#section/Booking-concepts/Booking-confirmation-types) section as sale of manual confirmation products has now been enabled. |\n| 7 Dec 2020 | Added DayOperatingHours schema array to BookableItemSeason schema in availability-schedules endpoints | \n| 24 Nov 2020 | Added [Key concepts \u2013 Booking cutoff times](#section/Booking-concepts/Booking-cutoff-times) section |\n| 12 Nov 2020 | Added [Workflows \u2013 Checking booking status](#section/Booking-concepts/Checking-booking-status) section |\n| 6 Nov 2020 | Added [/bookings/status](#operation/bookingsStatus) endpoint specification |\n| 5 Nov 2020 | Added [Workflows \u2013\u00a0Ingesting and updating availability schedules](#section/Workflows/Ingesting-and-updating-availability-schedules) section |\n| 4 Nov 2020 | Updated `id` values in [/products/booking-questions](#operation/productsBookingQuestions) endpoint |\n| 3 Nov 2020 | Added [Key concepts \u2013 V1 to V2 migration reference](#section/Key-concepts/V1-to-V2-migration-reference) section |\n| 28 Oct 2020 | Added sections for [Activity](#activity-itinerary), [Hop-on hop-off](#hop-on--hop-off-itinerary) and [Unstructured](#unstructured-itinerary) itinerary types |\n| 13 Oct 2020 | - Added `maxLength` field to BookingQuestion schema in response from [/products/booking-questions](#operation/productsBookingQuestions)
- Updated AdditionalInfo schema |\n| 6 Oct 2020 | - Added [Appendices - Inclusions and exclusions](#section/Appendices/Inclusions-and-exclusions)
- Modified ActiveProduct schema to include new required `Supplier` element |\n| 1 Oct 2020 | Added [About](#section/About) section |\n| 29 Sep 2020 | Added [Key concepts - Availability Schedules](#section/Key-concepts/Availability-schedules) section
Added legacy helper endpoints [/v1/taxonomy/destinations](#operation/v1TaxonomyDestinations), [/v1/taxonomy/attractions](#operation/v1TaxonomyAttractions), [v1/product/reviews](#operation/v1ProductReviews), [/v1/product/photos](#operation/v1ProductPhotos) |\n| 28 Sep 2020 | Updated response schema for [/products/tags](#operation/productsTags) |\n| 23 Sep 2020 | Added [Key concepts \u2013 Booking questions](#section/Booking-concepts/Booking-questions) section |\n| 22 Sep 2020 | Added [Versioning](#section/Versioning) section |\n| 22 Sep 2020 | Fixed typo in StandardItineraryItem schema (`pointsOfInterestLocation` -> `pointOfIterestLocation`); added explanation of policy window time-stamps & updated response samples in [Workflows - Cancellation policy](#section/Booking-concepts/Cancellation-policy) section | \n| 21 Sep 2020 | Added [Making a booking](#section/Booking-concepts/Making-a-booking) section under Workflows |\n| 20 Sep 2020 | Added `currency` element to [/bookings/hold](#operation/bookingsHold) response schema |\n| 17 Sep 2020 | Breaking change: [/exchange-rates](/#operation/exchangeRates) endpoint refactored |\n| 16 Sep 2020 | **Note**: ONLY freesale products (those with a confirmation type of \"INSTANT\") are presently able to be booked. See [Ingesting and updating the product catalogue](#section/Workflows/Ingesting-and-updating-the-product-catalogue) (Filtering-out on-request products) for instructions on how to filter-out on-request products from your catalogue |\n| 16 Sep 2020 | Breaking change: `languageGuideDetails` element in ActiveProduct schema changed to `languageGuides` (array of LanguageGuide schema) |\n| 15 Sep 2020 | Breaking change: removed `travelerPickup` element from [/booking/book](#operation/bookingsBook) request |\n| 10 Sep 2020 | Added [/bookings/book](#operation/bookingsBook) endpoint specification |\n| 1 Sep 2020 | Added `description` element to `MultiDayTourFoodAndDrinks` and `InclusionExclusionItem` schemata; added `version=2.0` to `Accept` request header parameter across all endpoints |\n| 26 Aug 2020 | `CancellationConditionType` schema key strings updated (now \"STANDARD\", \"MODERATE\", \"STRICT\" & \"ALL_SALES_FINAL\"; `PricingLineItem` updated (affects /availability/check and /bookings/hold-confirm responses); /availability/* endpoints moved to separate 'Availability' section |\n| 25 Aug 2020 | **Breaking changes**: see below |\n| 25 Aug 2020 | Regenerated response samples |\n| 11 Aug 2020 | Updated `paxMix` schema in [/availability/check](#operation/checkAvailability) |\n| 6 Aug 2020 | Added COVID-safety-measure keys to `additionalInfo` schema |\n| 4 Aug 2020 | Added [/bookings/hold](#operation/bookingsHold) endpoint |\n| 28 July 2020 | Added [Ingesting and updating the product catalogue](#section/Workflows/Ingesting-and-updating-the-product-catalogue) section |\n| 23 July 2020 | Added [Product options](), [Cancellation policy](#section/Booking-concepts/Cancellation-policy) sections | \n| 16 Jul 2020 | Added [/bookings/hold](#operation/bookingsHold) endpoint |\n| 3 Jul 2020 | Modified availability endpoint schema and regenerated examples |\n| 1 Jul 2020 | Removed internal-only markup for release |\n| 16 Jun 2020 | Added [Workflows->Cancellation API workflow](#section/Booking-concepts/Cancellation-API-workflow) section\n| 15 Jun 2020 | Removed enum data type specification from `UnavailableDate`, `ageBand`, `CancellationQuoteBookingStatus`, `CancellationResultItemReason` and `CancellationBookingStatus` schemata |\n| 18 May 2020 | Refactored LHS nav to use 'summary' name instead of operationId name |\n| 28 April 2020 | Added `legacyGuide` field to `LanguageGuide` object specification |\n\n### 25 August breaking changes\n\nThe following breaking changes have been made. Please update your OpenAPI specification by downloading from the link at the top of the page.\n\n#### Endpoint URL changes\n\n- /availability-schedule/{product-code} -> [/availability/schedules/{product-code}](#operation/availabilitySchedules)\n- /availability-schedule/bulk -> [/availability/schedules/bulk](/#operation/availabilitySchedulesBulk)\n- /availability-schedule/modified-since -> [/availability/schedules/modified-since](#operation/availabilitySchedulesModifiedSince)\n\n#### Element name changes\n\nA number of name changes have been made to the `Product` schema. This affects the following endpoints:\n\n- [/products/modified-since](#operation/productsModifiedSince)\n- [/products/bulk](#operation/productsBulk)\n- [/products/{product-code}](#operation/products)\n\n| Element | Old name | New name |\n|----------|---------|----------|\n| `cancellationPolicy.badWeather` | `badWeather` | `cancelIfBadWeather` | \n| `cancellationPolicy.insufficientTravelers` | `insufficientTravelers` | `cancelIfInsufficientTravelers` |\n| `translationInfo.translationAttributions` | `translationAttributions` | `translationAttribution` | \n| `destinations.isPrimary` | `isPrimary` | `primary` |\n| `inclusions[].otherText` | `otherText` | `otherDescription` | \n| `itinerary.routes[].pois` | `pois` | `pointsOfInterest` |\n| `itinerary.itineraryItems[].poiLocation` | `poiLocation` | `pointsOfInterestLocation` |\n| `itinerary.routes[].duration.fixedValueinMinutes` | `fixedValueInMinutes` | `fixedDurationInMinutes` |\n| `itinerary.routes[].duration.fromMinutes` | `fromMinutes` | `variableDurationFromMinutes` |\n| `itinerary.routes[].duration.toMinutes` | `toMinutes` | `variableDurationToMinutes` |", "version": "2.0", "license": { "name": "CC BY 4.0", "url": "https://creativecommons.org/licenses/by/4.0/au/" } }, "servers": [ { "url": "https://api.viator.com/partner", "description": "Production server (uses live data)" }, { "url": "https://api.sandbox.viator.com/partner", "description": "Sandbox server (uses test data)" } ], "security": [ { "API-key": [] } ], "tags": [ { "name": "Products" }, { "name": "Attractions" }, { "name": "Availability" }, { "name": "Bookings" }, { "name": "Payments" }, { "name": "Auxiliary" } ], "paths": { "/products/modified-since": { "get": { "tags": [ "Products" ], "summary": "/products/modified-since", "operationId": "productsModifiedSince", "description": "Get full product details for all products modified since a specified time.\nInitiate a full ingestion only to establish your local copy; this should be a rare occurrence compared to regular updates. Fetch incremental updates through this endpoint on an hourly basis. You are welcome to poll for updates as frequently as every 15 minutes if desired. Be mindful that excessive frequency beyond these recommendations may trigger rate limits.\n\n**Note**:\n - See [Ingesting and updating the product catalogue](#section/Workflows/Ingesting-and-updating-the-product-catalogue) for instructions on how to use this service to ingest the full product catalogue and ensure that it remains up-to-date.\n - The response object utilizes polymorphism and differs markedly depending on whether the product is active or inactive. Click the drop-down selector in the `status` description to toggle between an `\"ACTIVE\"` and `\"INACTIVE\"` product response.\n\n**Examples:**\n\nGet all products in the Viator inventory with 500 products per response\npage:\n\n```html\nGET https://api.sandbox.viator.com/partner/products/modified-since?count=500\n\n```\n\nGet the next page of results:\n\n```html\nGET https://api.sandbox.viator.com/partner/products/modified-since?count=500&cursor=MTU3NDA0MzU1NQ==\n\n```\n\nAlternative pagination method (not recommended); e.g., if you have misplaced the cursor value or if for any other reason you wish to get all products modified since 2019-09-17T03:20:45.737043Z:\n\n```html\nGET https://api.sandbox.viator.com/partner/products/modified-since?count=500&modified-since=2020-09-30T00%3A00%3A01.737043Z\n\n```\n\n(Response sample generated on: 2020-10-06)\n", "parameters": [ { "name": "cursor", "in": "query", "description": "Pagination cursor received from a previous call to **this** endpoint that points to the desired starting point for the results. \n\n**Note**: Pagination will come into play when the number of results exceeds the figure given in the `count` parameter. In this case, pass the content of the `nextCursor` element for the value of `cursor` to receive the next page of results. The final page of results will not include the `nextCursor` element. For more information, see: [Ingesting and updating the product catalogue](#section/Workflows/Ingesting-and-updating-the-product-catalogue).\n- Example: `'MTU3NDA0MzU1NQ=='`\n", "required": false, "schema": { "type": "string" } }, { "name": "count", "in": "query", "description": "Specifies the maximum number of product detail items to be returned in each response from this endpoint\n", "required": true, "schema": { "type": "integer", "minimum": 1, "maximum": 500 } }, { "$ref": "#/components/parameters/campaignValueProduct" }, { "$ref": "#/components/parameters/acceptLanguage" }, { "$ref": "#/components/parameters/accept" }, { "$ref": "#/components/parameters/targetLander" }, { "name": "modified-since", "in": "query", "description": "Only return products that have been modified since the date and time (UTC) specified by this timestamp\n\n**Note**: \n- As this is a query parameter, colons (i.e., `:`) in the timestamp should be URL-encoded as `%3A`; e.g.: \"`2020-09-30T00%3A00%3A01.737043Z`\"\n- Using this parameter is not recommended as the standard pagination method; rather, use the `cursor` parameter to ensure all product updates are captured during ingestion.\n", "required": false, "schema": { "type": "string", "format": "date-time", "pattern": "^(-?(?:[1-9][0-9]*)?[0-9]{4})-(1[0-2]|0[1-9])-(3[01]|0[1-9]|[12][0-9])T(2[0-3]|[01][0-9])\\%3A([0-5][0-9])\\%3A([0-5][0-9])(\\.[0-9]+)?(Z|[+-](?:2[0-3]|[01][0-9]):[0-5][0-9])?$" } } ], "responses": { "200": { "description": "Success", "headers": { "X-Unique-ID": { "$ref": "#/components/headers/XUniqueId" }, "RateLimit-Limit": { "$ref": "#/components/headers/RateLimit-Limit" }, "RateLimit-Remaining": { "$ref": "#/components/headers/RateLimit-Remaining" }, "RateLimit-Reset": { "$ref": "#/components/headers/RateLimit-Reset" } }, "content": { "application/json;version=2.0": { "schema": { "$ref": "#/components/schemas/ProductsResponse" }, "examples": { "1": { "$ref": "#/components/examples/products-modified-since-example" } } } } }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "403": { "$ref": "#/components/responses/Forbidden" }, "404": { "$ref": "#/components/responses/NotFound" }, "429": { "$ref": "#/components/responses/TooManyRequests" }, "500": { "$ref": "#/components/responses/InternalServerError" }, "503": { "$ref": "#/components/responses/ServiceUnavailable" } } } }, "/products/bulk": { "post": { "tags": [ "Products" ], "summary": "/products/bulk", "description": "Get full product details for all requested products (limited to 500 products per request)\n\n**Note**: \n - This endpoint **should not** be used to ingest or update the product catalog. Instead, please use the [/products/modified-since](#operation/productsModifiedSince) endpoint for that purpose.\n - The response object utilizes polymorphism and differs markedly depending on whether the product is active or inactive. Click the drop-down selector in the `status` description to toggle between an `\"ACTIVE\"` and `\"INACTIVE\"` product response.\n\n(Response sample generated on: 2020-10-06)\n", "operationId": "productsBulk", "parameters": [ { "$ref": "#/components/parameters/campaignValueProduct" }, { "$ref": "#/components/parameters/acceptLanguage" }, { "$ref": "#/components/parameters/accept" }, { "$ref": "#/components/parameters/targetLander" } ], "requestBody": { "content": { "application/json;version=2.0": { "schema": { "$ref": "#/components/schemas/BulkProductRequest" }, "example": { "productCodes": [ "5010SYDNEY", "2050_PA", "2855KENNEDY_TKTS" ] } } } }, "responses": { "200": { "description": "Success", "headers": { "X-Unique-ID": { "$ref": "#/components/headers/XUniqueId" }, "RateLimit-Limit": { "$ref": "#/components/headers/RateLimit-Limit" }, "RateLimit-Remaining": { "$ref": "#/components/headers/RateLimit-Remaining" }, "RateLimit-Reset": { "$ref": "#/components/headers/RateLimit-Reset" } }, "content": { "application/json;version=2.0": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Product" } }, "examples": { "1": { "$ref": "#/components/examples/products-bulk-example" } } } } }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "403": { "$ref": "#/components/responses/Forbidden" }, "404": { "$ref": "#/components/responses/NotFound" }, "405": { "$ref": "#/components/responses/MethodNotAllowed" }, "429": { "$ref": "#/components/responses/TooManyRequests" }, "500": { "$ref": "#/components/responses/InternalServerError" }, "503": { "$ref": "#/components/responses/ServiceUnavailable" } } } }, "/products/{product-code}": { "get": { "tags": [ "Products" ], "summary": "/products/{product-code}", "operationId": "products", "description": "Get full product details for a single product.\n\n**Note**: \n - This endpoint **should not** be used to ingest or update the product catalog. Instead, please use the [/products/modified-since](#operation/productsModifiedSince) endpoint for that purpose.\n - The response object utilizes polymorphism and differs markedly depending on whether the product is active or inactive. Click the drop-down selector in the `status` description to toggle between an `\"ACTIVE\"` and `\"INACTIVE\"` product response.\n\n**Example:** Get details for \"Big Bus Sydney and Bondi Hop-on Hop-off Tour\"\n(product code: 5010SYDNEY):\n\n```html\nGET https://api.sandbox.viator.com/partner/products/5010SYDNEY\n\n```\n\n(Response samples generated on: 2021-03-29)\n", "parameters": [ { "$ref": "#/components/parameters/acceptLanguage" }, { "$ref": "#/components/parameters/accept" }, { "$ref": "#/components/parameters/campaignValueProduct" }, { "$ref": "#/components/parameters/targetLander" }, { "name": "product-code", "in": "path", "description": "Retrieve details of the product identified by this product code", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "Success", "headers": { "X-Unique-ID": { "$ref": "#/components/headers/XUniqueId" }, "RateLimit-Limit": { "$ref": "#/components/headers/RateLimit-Limit" }, "RateLimit-Remaining": { "$ref": "#/components/headers/RateLimit-Remaining" }, "RateLimit-Reset": { "$ref": "#/components/headers/RateLimit-Reset" } }, "content": { "application/json;version=2.0": { "schema": { "$ref": "#/components/schemas/Product" }, "examples": { "5010SYDNEY (HOP_ON_HOP_OFF)": { "$ref": "#/components/examples/products-5010SYDNEY-example" }, "250380P1 (ACTIVITY)": { "$ref": "#/components/examples/products-250380P1-example" } } } } }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "403": { "$ref": "#/components/responses/Forbidden" }, "404": { "$ref": "#/components/responses/NotFound" }, "405": { "$ref": "#/components/responses/MethodNotAllowed" }, "429": { "$ref": "#/components/responses/TooManyRequests" }, "500": { "$ref": "#/components/responses/InternalServerError" }, "503": { "$ref": "#/components/responses/ServiceUnavailable" } } } }, "/products/tags": { "get": { "tags": [ "Products" ], "summary": "/products/tags", "operationId": "productsTags", "description": "Get details for all tags (includes all languages/localizations)\nTags should be cached and refreshed weekly.\n\nTo learn more about tags, see this article: [Viator tags, explained](https://partnerresources.viator.com/travel-commerce/tags?source=specs)\n\n**Note**: If no response is received for a given tag reference, this means\nthat the tag was removed from our database and the associated product has\nnot yet been updated with a replacement tag. If this occurs, please\ndisregard the removed tag.\n\n**Note**: The example response has been truncated to five entries for brevity.\n\n(Response sample generated on: 2020-08-25)\n", "parameters": [ { "$ref": "#/components/parameters/accept" } ], "responses": { "200": { "description": "Success", "headers": { "X-Unique-ID": { "$ref": "#/components/headers/XUniqueId" }, "RateLimit-Limit": { "$ref": "#/components/headers/RateLimit-Limit" }, "RateLimit-Remaining": { "$ref": "#/components/headers/RateLimit-Remaining" }, "RateLimit-Reset": { "$ref": "#/components/headers/RateLimit-Reset" } }, "content": { "application/json;version=2.0": { "schema": { "$ref": "#/components/schemas/TagsResponse" }, "examples": { "1": { "$ref": "#/components/examples/products-tags-example" } } } } }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "403": { "$ref": "#/components/responses/Forbidden" }, "404": { "$ref": "#/components/responses/NotFound" }, "429": { "$ref": "#/components/responses/TooManyRequests" }, "500": { "$ref": "#/components/responses/InternalServerError" }, "503": { "$ref": "#/components/responses/ServiceUnavailable" } } } }, "/products/booking-questions": { "get": { "tags": [ "Products" ], "summary": "/products/booking-questions", "description": "Get full details of all available preset booking questions.\nBooking questions should be cached and refreshed monthly.\n\n**Note**: This endpoint is only available to affiliate partners with API access level \"Full Access + Booking\" and merchant partners.\n\n(Response sample generated on: 2020-08-25)\n", "operationId": "productsBookingQuestions", "parameters": [ { "$ref": "#/components/parameters/acceptLanguage" }, { "$ref": "#/components/parameters/accept" } ], "responses": { "200": { "description": "Success", "headers": { "X-Unique-ID": { "$ref": "#/components/headers/XUniqueId" }, "RateLimit-Limit": { "$ref": "#/components/headers/RateLimit-Limit" }, "RateLimit-Remaining": { "$ref": "#/components/headers/RateLimit-Remaining" }, "RateLimit-Reset": { "$ref": "#/components/headers/RateLimit-Reset" } }, "content": { "application/json;version=2.0": { "schema": { "$ref": "#/components/schemas/BookingQuestionsResponse" }, "examples": { "1": { "$ref": "#/components/examples/products-booking-questions-example" } } } } }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "403": { "$ref": "#/components/responses/Forbidden" }, "404": { "$ref": "#/components/responses/NotFound" }, "429": { "$ref": "#/components/responses/TooManyRequests" }, "500": { "$ref": "#/components/responses/InternalServerError" }, "503": { "$ref": "#/components/responses/ServiceUnavailable" } } } }, "/products/search": { "post": { "tags": [ "Products" ], "description": "Returns a list of filtered, ordered and sorted product summaries for products that match the given search criteria.\nThis endpoint must not be used to ingest the catalog of products, the [/products/modified-since](#operation/productsModifiedSince) endpoint must be used for that purpose.\n\nIf you\u2019re a Basic Access Affiliate Partner, this endpoint provides all the essential functionality that you need to implement in order to use the Viator API. The following article describes how to do this in the most efficient way: [Golden Path \u2013 Basic Access Affiliate Partners](https://partnerresources.viator.com/travel-commerce/affiliate/basic-access/golden-path/?source=specs).\n\n**Note**: At present, only active products are returned\n", "operationId": "productsSearch", "summary": "/products/search", "parameters": [ { "$ref": "#/components/parameters/campaignValueProduct" }, { "$ref": "#/components/parameters/acceptLanguage" }, { "$ref": "#/components/parameters/accept" }, { "$ref": "#/components/parameters/targetLander" } ], "requestBody": { "content": { "application/json;version=2.0": { "schema": { "$ref": "#/components/schemas/ProductSearchRequest" }, "example": { "filtering": { "destination": "732", "tags": [ 21972 ], "flags": [ "LIKELY_TO_SELL_OUT", "FREE_CANCELLATION" ], "lowestPrice": 5, "highestPrice": 500, "startDate": "2023-01-30", "endDate": "2023-02-28", "includeAutomaticTranslations": true, "confirmationType": "INSTANT", "durationInMinutes": { "from": 20, "to": 360 }, "rating": { "from": 3, "to": 5 } }, "sorting": { "sort": "TRAVELER_RATING", "order": "DESCENDING" }, "pagination": { "start": 1, "count": 5 }, "currency": "USD" } } } }, "responses": { "200": { "description": "Success", "headers": { "X-Unique-ID": { "$ref": "#/components/headers/XUniqueId" }, "RateLimit-Limit": { "$ref": "#/components/headers/RateLimit-Limit" }, "RateLimit-Remaining": { "$ref": "#/components/headers/RateLimit-Remaining" }, "RateLimit-Reset": { "$ref": "#/components/headers/RateLimit-Reset" } }, "content": { "application/json;version=2.0": { "schema": { "$ref": "#/components/schemas/ProductSearchResponse" }, "examples": { "Affiliates": { "$ref": "#/components/examples/products-search-example-affiliates" }, "Merchants": { "$ref": "#/components/examples/products-search-example-merchants" }, "extra charges": { "$ref": "#/components/examples/products-search-example-extra-charges" } } } } }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "403": { "$ref": "#/components/responses/Forbidden" }, "405": { "$ref": "#/components/responses/MethodNotAllowed" }, "429": { "$ref": "#/components/responses/TooManyRequests" }, "500": { "$ref": "#/components/responses/InternalServerError" }, "503": { "$ref": "#/components/responses/ServiceUnavailable" } } } }, "/products/recommendations": { "post": { "tags": [ "Products" ], "summary": "/products/recommendations", "description": "Retrieve a list of sorted product-to-product recommendations that match the given search criteria.\n\nRecommendations are algorithm-generated based on various factors such as shared attributes, category, customer purchase patterns, browsing behavior, and other relevant metrics.\n\nThis endpoint can be used to enhance product discovery, suggest alternatives, improve cross-selling by displaying related products to customers, etc...\n\nNotes:\n- The `recommendations` object may contain multiple recommendation types based on different algorithms or business logic.\n- New recommendation types can be added over time, allowing flexibility for different use cases.\n- Clients should handle cases where a recommendation category may be empty if no suitable products are found.\n- This endpoint is only available to affiliate partners with API access level \"Full Access + Booking\" and merchant partners.\n", "operationId": "productsRecommendations", "parameters": [ { "$ref": "#/components/parameters/accept" } ], "requestBody": { "content": { "application/json;version=2.0": { "schema": { "$ref": "#/components/schemas/BulkProductRecommendationsRequest" }, "example": { "productCodes": [ "5010SYDNEY", "2050_PA", "2855KENNEDY_TKTS" ] } } } }, "responses": { "200": { "description": "Success", "headers": { "X-Unique-ID": { "$ref": "#/components/headers/XUniqueId" }, "RateLimit-Limit": { "$ref": "#/components/headers/RateLimit-Limit" }, "RateLimit-Remaining": { "$ref": "#/components/headers/RateLimit-Remaining" }, "RateLimit-Reset": { "$ref": "#/components/headers/RateLimit-Reset" } }, "content": { "application/json;version=2.0": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ProductRecommendation" } } } } }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "403": { "$ref": "#/components/responses/Forbidden" }, "404": { "$ref": "#/components/responses/NotFound" }, "405": { "$ref": "#/components/responses/MethodNotAllowed" }, "429": { "$ref": "#/components/responses/TooManyRequests" }, "500": { "$ref": "#/components/responses/InternalServerError" }, "503": { "$ref": "#/components/responses/ServiceUnavailable" } } } }, "/search/freetext": { "post": { "tags": [ "Auxiliary" ], "description": "Perform a search for products, attractions and/or destinations that contain a free-text search term. Product results can be filtered and sorted according to various criteria.\nThis endpoint must not be used to ingest the catalog of products, the [/products/modified-since](#operation/productsModifiedSince) endpoint must be used for that purpose.\n\n**Note**: Only **active** products are returned in the response from this endpoint.\n", "operationId": "searchFreeText", "summary": "/search/freetext", "parameters": [ { "name": "Accept-Language", "in": "header", "description": "Specifies the language into which the natural-language fields in the response from this service will be translated.\n", "required": true, "schema": { "type": "string" }, "example": "en, en-AU" }, { "$ref": "#/components/parameters/campaignValueProduct" }, { "name": "target-lander", "in": "query", "description": "Target lander page for affiliate productUrl\n", "required": false, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FreetextSearchRequest" }, "example": { "searchTerm": "big", "productFiltering": { "destination": "77", "dateRange": { "from": "2023-01-01", "to": "2023-01-31" }, "price": { "from": 0, "to": 1000 }, "rating": { "from": 0, "to": 5 }, "durationInMinutes": { "from": 0, "to": 1000 }, "tags": [ 21972 ], "flags": [ "LIKELY_TO_SELL_OUT" ], "includeAutomaticTranslations": true }, "productSorting": { "sort": "PRICE", "order": "DESCENDING" }, "searchTypes": [ { "searchType": "PRODUCTS", "pagination": { "start": 1, "count": 3 } }, { "searchType": "ATTRACTIONS", "pagination": { "start": 1, "count": 1 } }, { "searchType": "DESTINATIONS", "pagination": { "start": 1, "count": 1 } } ], "currency": "USD" } } } }, "responses": { "200": { "description": "Success", "headers": { "X-Unique-ID": { "$ref": "#/components/headers/XUniqueId" } }, "content": { "application/json;version=2.0": { "schema": { "$ref": "#/components/schemas/FreetextSearchResponse" }, "examples": { "1": { "$ref": "#/components/examples/search-freetext-example" }, "extra charges": { "$ref": "#/components/examples/search-freetext-extra-charges-example" } } } } }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "403": { "$ref": "#/components/responses/Forbidden" }, "404": { "$ref": "#/components/responses/NotFound" }, "406": { "$ref": "#/components/responses/NotAcceptable" }, "429": { "$ref": "#/components/responses/TooManyRequests" }, "500": { "$ref": "#/components/responses/InternalServerError" }, "503": { "$ref": "#/components/responses/ServiceUnavailable" } } } }, "/availability/check": { "post": { "tags": [ "Availability" ], "summary": "/availability/check", "description": "Check real-time availability and pricing for a product depending on the date, pax-mix, start time and/or product option.\n\nWe recommend using the pricing information returned by this endpoint as the source of truth for the amount you will be invoiced by Viator for the sale of the product in question.\n\nThe third response example \u2013 265910P1 (commission payment model) \u2013 shows the alternative PriceObject for merchants using the commission payment model.\n\n**Note**: This service should only be used to determine the availability of a product immediately prior to booking. Bulk operations pertaining to product availability; e.g., generating a calendar of availability for a product, should use the [availability schedule endpoints](#section/Key-concepts/Content-ingestion-endpoints).\n\n(Response sample generated on: 2021-04-06)\n", "operationId": "availabilityCheck", "parameters": [ { "$ref": "#/components/parameters/accept" } ], "requestBody": { "content": { "application/json;version=2.0": { "schema": { "$ref": "#/components/schemas/CheckAvailabilityRequest" }, "examples": { "5010SYDNEY": { "value": { "productCode": "5010SYDNEY", "travelDate": "2020-12-12", "currency": "AUD", "paxMix": [ { "ageBand": "ADULT", "numberOfTravelers": 2 }, { "ageBand": "CHILD", "numberOfTravelers": 2 } ] } }, "46334P42": { "value": { "productCode": "46334P42", "travelDate": "2020-12-30", "currency": "AUD", "paxMix": [ { "ageBand": "TRAVELER", "numberOfTravelers": 7 } ] } }, "265910P1": { "value": { "productCode": "265910P1", "travelDate": "2020-11-30", "currency": "AUD", "paxMix": [ { "ageBand": "ADULT", "numberOfTravelers": 2 } ] } } } } } }, "responses": { "200": { "description": "Success", "headers": { "X-Unique-ID": { "$ref": "#/components/headers/XUniqueId" }, "RateLimit-Limit": { "$ref": "#/components/headers/RateLimit-Limit" }, "RateLimit-Remaining": { "$ref": "#/components/headers/RateLimit-Remaining" }, "RateLimit-Reset": { "$ref": "#/components/headers/RateLimit-Reset" } }, "content": { "application/json;version=2.0": { "schema": { "$ref": "#/components/schemas/CheckAvailabilityResponse" }, "examples": { "5010SYDNEY": { "$ref": "#/components/examples/availability-check-example-5010SYDNEY" }, "46334P422": { "$ref": "#/components/examples/availability-check-example-46334P42" }, "265910P1 (comnmission pricing model)": { "$ref": "#/components/examples/availability-check-example-265910P1" }, "128216P66 (extra charges)": { "$ref": "#/components/examples/availability-check-example-128216P66" } } } } }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "403": { "$ref": "#/components/responses/Forbidden" }, "404": { "description": "Not Found", "headers": { "X-Unique-ID": { "$ref": "#/components/headers/XUniqueId" } }, "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/ErrorResponse" }, { "type": "object", "properties": { "code": { "description": "Code for this error type\n\n**Example**: `\"NOT_FOUND\"`\n" }, "message": { "description": "Details of this error\n\n**Example**: `\"No bookable items found for the request\"`\n" } } }, { "type": "object", "example": { "code": "NOT_FOUND", "message": "No bookable items found for the request", "timestamp": "2019-09-17T03:20:45.737043Z" } } ] } } } }, "429": { "$ref": "#/components/responses/TooManyRequests" }, "500": { "$ref": "#/components/responses/InternalServerError" }, "503": { "$ref": "#/components/responses/ServiceUnavailable" } } } }, "/availability/schedules/{product-code}": { "get": { "tags": [ "Availability" ], "summary": "/availability/schedules/{product-code}", "description": "Get availability and pricing details for all product options of the requested product. The pricing is returned in the supplier's currency. We recommend using the [/exchange-rates](#operation/exchangeRates) endpoint to get the Viator exchange rates and apply them for pricing conversion.\n\n **Note**: This endpoint **should not** be used for ingesting or updating the availability and pricing details for the entire catalog of Viator products. Instead, please use the [/availability/schedules/modified-since](#operation/availabilitySchedulesModifiedSince) endpoint for that purpose.\n\n(Response sample generated on: 2021-03-12)\n", "operationId": "availabilitySchedules", "parameters": [ { "$ref": "#/components/parameters/accept" }, { "name": "product-code", "in": "path", "description": "Retrieve availability details for the product identified by this product code", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "Success", "headers": { "X-Unique-ID": { "$ref": "#/components/headers/XUniqueId" }, "RateLimit-Limit": { "$ref": "#/components/headers/RateLimit-Limit" }, "RateLimit-Remaining": { "$ref": "#/components/headers/RateLimit-Remaining" }, "RateLimit-Reset": { "$ref": "#/components/headers/RateLimit-Reset" } }, "content": { "application/json;version=2.0": { "schema": { "$ref": "#/components/schemas/ProductAvailabilitySchedule" }, "examples": { "5010SYDNEY": { "$ref": "#/components/examples/availability-schedules-5010SYDNEY-example" }, "10175P18 (timed entry)": { "$ref": "#/components/examples/availability-schedules-46334P42-example" }, "265910P1 (with discount)": { "$ref": "#/components/examples/availability-schedules-265910P1-example" }, "128216P66 (extra charges)": { "$ref": "#/components/examples/availability-schedules-128216P66-example" } } } } }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "403": { "$ref": "#/components/responses/Forbidden" }, "404": { "$ref": "#/components/responses/NotFound" }, "405": { "$ref": "#/components/responses/MethodNotAllowed" }, "429": { "$ref": "#/components/responses/TooManyRequests" }, "500": { "$ref": "#/components/responses/InternalServerError" }, "503": { "$ref": "#/components/responses/ServiceUnavailable" } } } }, "/availability/schedules/bulk": { "post": { "tags": [ "Availability" ], "summary": "/availability/schedules/bulk", "description": "Get availability and pricing details for all product options of all requested products. The pricing is returned in the supplier's currency. We recommend using the [/exchange-rates](#operation/exchangeRates) endpoint to get the Viator exchange rates and apply them for pricing conversion.\n\n**Note**: This endpoint **should not** be used for ingesting or updating the availability and pricing details for the entire catalog of Viator products. Instead, please use the [/availability/schedules/modified-since](#operation/availabilitySchedulesModifiedSince) endpoint for that purpose.\n\n(Response sample generated on: 2021-03-12)\n", "operationId": "availabilitySchedulesBulk", "parameters": [ { "$ref": "#/components/parameters/accept" } ], "requestBody": { "content": { "application/json;version=2.0": { "schema": { "$ref": "#/components/schemas/BulkAvailabilityScheduleRequest" }, "example": { "productCodes": [ "265910P1", "5010SYDNEY" ] } } } }, "responses": { "200": { "description": "Success", "headers": { "X-Unique-ID": { "$ref": "#/components/headers/XUniqueId" }, "RateLimit-Limit": { "$ref": "#/components/headers/RateLimit-Limit" }, "RateLimit-Remaining": { "$ref": "#/components/headers/RateLimit-Remaining" }, "RateLimit-Reset": { "$ref": "#/components/headers/RateLimit-Reset" } }, "content": { "application/json;version=2.0": { "schema": { "$ref": "#/components/schemas/BulkAvailabilityScheduleResponse" }, "examples": { "1": { "$ref": "#/components/examples/availability-schedules-bulk-example" }, "extra charges": { "$ref": "#/components/examples/availability-schedules-bulk-extra-charges-example" } } } } }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "403": { "$ref": "#/components/responses/Forbidden" }, "405": { "$ref": "#/components/responses/MethodNotAllowed" }, "429": { "$ref": "#/components/responses/TooManyRequests" }, "500": { "$ref": "#/components/responses/InternalServerError" }, "503": { "$ref": "#/components/responses/ServiceUnavailable" } } } }, "/availability/schedules/modified-since": { "get": { "tags": [ "Availability" ], "summary": "/availability/schedules/modified-since", "description": "Get full future availability details for all products modified since the specified time. The pricing is returned in the supplier's currency. We recommend using the [/exchange-rates](#operation/exchangeRates) endpoint to get the Viator exchange rates and apply them for pricing conversion. Initiate a full ingestion only to establish your local copy; this should be a rare occurrence compared to regular updates. Fetch incremental updates through this endpoint on an hourly basis. You are welcome to poll for updates as frequently as every 15 minutes if desired. Be mindful that excessive frequency beyond these recommendations may trigger rate limits.\n\n(Response sample generated on: 2021-03-12)\n", "operationId": "availabilitySchedulesModifiedSince", "parameters": [ { "name": "cursor", "in": "query", "description": "Pagination cursor received from a previous call to **this** endpoint that\npoints to the desired starting point for the results.\n\n**Note**: Pagination will come into play when the number of results\nexceeds the figure given in the `count` parameter. In this case, pass\nthe content of the `nextCursor` element for the value of `cursor` to\nreceive the next page of results. The final page of results will not\ninclude the `nextCursor` element. For more information, see: [Ingesting\nand updating availability schedules](#section/Workflows/Ingesting-and-updating-availability-schedules).\n- Example: `'MTYwNTA2ODAwOXw1NjcyUDk='`\n", "required": false, "schema": { "type": "string" } }, { "name": "count", "in": "query", "description": "The maximum number of products to be returned in response. \n- Maximum allowed and default value: `500`\n", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 500 } }, { "name": "modified-since", "in": "query", "description": "Only retrieve availabilty schedules that have been modified since the date and time (UTC) specified by this timestamp\n\n**Note**: \n- As this is a query parameter, colons (i.e., `:`) in the timestamp should be URL-encoded as `%3A`; e.g.: \"`2020-09-30T00%3A00%3A01.737043Z`\"\n- Using this parameter is not recommended as the standard pagination method; rather, use the `cursor` parameter to ensure all availability schedule updates are captured during ingestion.\n", "required": false, "schema": { "type": "string", "format": "date-time", "pattern": "^(-?(?:[1-9][0-9]*)?[0-9]{4})-(1[0-2]|0[1-9])-(3[01]|0[1-9]|[12][0-9])T(2[0-3]|[01][0-9])\\%3A([0-5][0-9])\\%3A([0-5][0-9])(\\.[0-9]+)?(Z|[+-](?:2[0-3]|[01][0-9]):[0-5][0-9])?$" } }, { "$ref": "#/components/parameters/accept" } ], "responses": { "200": { "description": "Success", "headers": { "X-Unique-ID": { "$ref": "#/components/headers/XUniqueId" }, "RateLimit-Limit": { "$ref": "#/components/headers/RateLimit-Limit" }, "RateLimit-Remaining": { "$ref": "#/components/headers/RateLimit-Remaining" }, "RateLimit-Reset": { "$ref": "#/components/headers/RateLimit-Reset" } }, "content": { "application/json;version=2.0": { "schema": { "$ref": "#/components/schemas/AvailabilitySchedulesResponse" }, "examples": { "1": { "$ref": "#/components/examples/availability-schedules-modified-since-example" }, "24380P927 (extra charges)": { "$ref": "#/components/examples/availability-schedules-modified-since-extra-charges-example" } } } } }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "403": { "$ref": "#/components/responses/Forbidden" }, "429": { "$ref": "#/components/responses/TooManyRequests" }, "500": { "$ref": "#/components/responses/InternalServerError" }, "503": { "$ref": "#/components/responses/ServiceUnavailable" } } } }, "/bookings/cart/hold": { "post": { "tags": [ "Bookings" ], "operationId": "bookingsCartHold", "summary": "/bookings/cart/hold", "description": "Requests the creation of a hold for each item in the cart.\n\nA hold is a guarantee that either the price or availability (or both) of the product will be retained until a booking\nrequest is made using the [/bookings/cart/book](#operation/bookingsCartBook) endpoint.\n\nA hold consists of two components - **availability** and **pricing**. The response to this service indicates whether one, both or neither has been granted, and until when for each item.\n\n- The length of time for which the availability hold will be granted is determined by the supplier, and therefore varies between products.\n- The length of time for the pricing hold is determined by Viator, and is therefore standard across all products.\n\nThis endpoint must not be used to check availability of a product. Instead, always use the [/availability/check](#operation/availabilityCheck) endpoint to perform the final availability check.\n\n**Note**: This endpoint is only available to affiliate partners with API access level \"Full Access + Booking\" and merchant partners.\n", "parameters": [ { "$ref": "#/components/parameters/acceptLanguage" }, { "$ref": "#/components/parameters/accept" } ], "requestBody": { "content": { "application/json;version=2.0": { "schema": { "$ref": "#/components/schemas/BookingsCartHoldRequest" }, "examples": { "viator-form": { "$ref": "#/components/examples/bookings-cart-hold-request-viator-form-example" }, "partner-form": { "$ref": "#/components/examples/bookings-cart-hold-request-partner-form-example" }, "merchant": { "$ref": "#/components/examples/bookings-cart-hold-request-merchant-example" } } } } }, "responses": { "200": { "description": "Success", "headers": { "X-Unique-ID": { "$ref": "#/components/headers/XUniqueId" }, "RateLimit-Limit": { "$ref": "#/components/headers/RateLimit-Limit" }, "RateLimit-Remaining": { "$ref": "#/components/headers/RateLimit-Remaining" }, "RateLimit-Reset": { "$ref": "#/components/headers/RateLimit-Reset" } }, "content": { "application/json;version=2.0": { "schema": { "$ref": "#/components/schemas/BookingsCartHoldResponse" }, "examples": { "viator-form": { "$ref": "#/components/examples/bookings-cart-hold-response-viator-form-example" }, "partner-form": { "$ref": "#/components/examples/bookings-cart-hold-response-partner-form-example" }, "merchant": { "$ref": "#/components/examples/bookings-cart-hold-response-merchant-example" }, "Extra Charges": { "$ref": "#/components/examples/bookings-cart-hold-response-extra-charges-example" } } } } }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "403": { "$ref": "#/components/responses/Forbidden" }, "404": { "$ref": "#/components/responses/NotFound" }, "406": { "$ref": "#/components/responses/NotAcceptable" }, "429": { "$ref": "#/components/responses/TooManyRequests" }, "500": { "$ref": "#/components/responses/InternalServerError" }, "503": { "$ref": "#/components/responses/ServiceUnavailable" } } } }, "/bookings/cart/book": { "post": { "tags": [ "Bookings" ], "operationId": "bookingsCartBook", "summary": "/bookings/cart/book", "description": "Requests a booking for each item in the cart.\n\n- As some products are booked on external supplier systems, it may take > 90s to receive a response from this endpoint. For this reason, we recommend setting your internal time-out for this service to **120s**.\n In the event that this service does time-out, or you receive a HTTP 500 error, you should check the status of the booking using the [/bookings/status](#operation/bookingsStatus) endpoint to ensure the booking was not created before you attempt to make the booking again.\n- The status of each item will indicate if the item booking:\n - is still awaiting confirmation (`PENDING`); or,\n - was `CONFIRMED` if it was eventually successful, or \n - was `REJECTED` if there are valid reasons why it could not be booked; such as, if it was booked-out or other changes to availability occurred; or,\n - failed for an unknown reason if it did eventually fail. In this scenario, a new booking can be attempted using a new `partnerBookingRef`\n\n**Note**: This endpoint is only available to affiliate partners with API access level \"Full Access + Booking\" and merchant partners.\n", "parameters": [ { "$ref": "#/components/parameters/acceptLanguage" }, { "$ref": "#/components/parameters/accept" } ], "requestBody": { "content": { "application/json;version=2.0": { "schema": { "$ref": "#/components/schemas/BookingsCartBookRequest" }, "examples": { "viator-form": { "$ref": "#/components/examples/bookings-cart-book-request-viator-form-example" }, "partner-form": { "$ref": "#/components/examples/bookings-cart-book-request-partner-form-example" }, "merchant": { "$ref": "#/components/examples/bookings-cart-book-request-merchant-example" } } } } }, "responses": { "200": { "description": "Success", "headers": { "X-Unique-ID": { "$ref": "#/components/headers/XUniqueId" }, "RateLimit-Limit": { "$ref": "#/components/headers/RateLimit-Limit" }, "RateLimit-Remaining": { "$ref": "#/components/headers/RateLimit-Remaining" }, "RateLimit-Reset": { "$ref": "#/components/headers/RateLimit-Reset" } }, "content": { "application/json;version=2.0": { "schema": { "$ref": "#/components/schemas/BookingsCartBookResponse" }, "examples": { "viator-form": { "$ref": "#/components/examples/bookings-cart-book-response-viator-form-example" }, "partner-form": { "$ref": "#/components/examples/bookings-cart-book-response-partner-form-example" }, "merchant": { "$ref": "#/components/examples/bookings-cart-book-response-merchant-example" } } } } }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "403": { "$ref": "#/components/responses/Forbidden" }, "404": { "$ref": "#/components/responses/NotFound" }, "406": { "$ref": "#/components/responses/NotAcceptable" }, "429": { "$ref": "#/components/responses/TooManyRequests" }, "500": { "$ref": "#/components/responses/InternalServerError" }, "503": { "$ref": "#/components/responses/ServiceUnavailable" } } } }, "/bookings/hold": { "post": { "tags": [ "Bookings" ], "description": "**Note**: This endpoint is only available to merchant partners.\n\nRequests the creation of a booking-hold - a guarantee that either the price\nor availability (or both) of the product will be retained until a booking\nrequest is made using the [/bookings/book](#operation/bookingsBook)\nendpoint.\n\nThe booking-hold consists of two components - **availability** and\n**pricing**. The response to this service indicates whether one, both or\nneither has been granted, and until when.\n\n- The length of time for which the availability hold will be granted is determined by the supplier, and therefore varies between products. \n\n- The length of time for the pricing-hold is determined by Viator, and is therefore standard across all products. \n\nThis endpoint must not be used to check availability of a product. Instead, always use the [/availability/check](#operation/availabilityCheck) endpoint to perform the final availability check.\n\n(Response sample generated on: 2020-08-25)\n", "operationId": "bookingsHold", "summary": "/bookings/hold", "parameters": [ { "$ref": "#/components/parameters/acceptLanguage" }, { "$ref": "#/components/parameters/accept" }, { "$ref": "#/components/parameters/exp-demo" } ], "requestBody": { "content": { "application/json;version=2.0": { "schema": { "$ref": "#/components/schemas/BookingHoldRequest" }, "example": { "productCode": "3857NYCNIA", "productOptionCode": "NIA", "travelDate": "2021-04-01", "currency": "AUD", "startTime": "06:30", "paxMix": [ { "ageBand": "ADULT", "numberOfTravelers": 2 } ] } } } }, "responses": { "200": { "description": "Success", "headers": { "X-Unique-ID": { "$ref": "#/components/headers/XUniqueId" }, "RateLimit-Limit": { "$ref": "#/components/headers/RateLimit-Limit" }, "RateLimit-Remaining": { "$ref": "#/components/headers/RateLimit-Remaining" }, "RateLimit-Reset": { "$ref": "#/components/headers/RateLimit-Reset" } }, "content": { "application/json;version=2.0": { "schema": { "$ref": "#/components/schemas/BookingHoldResponse" }, "examples": { "1": { "$ref": "#/components/examples/bookings-hold-example" }, "extra charges": { "$ref": "#/components/examples/bookings-hold-extra-charges-example" } } } } }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "403": { "$ref": "#/components/responses/Forbidden" }, "404": { "$ref": "#/components/responses/NotFound" }, "406": { "$ref": "#/components/responses/NotAcceptable" }, "429": { "$ref": "#/components/responses/TooManyRequests" }, "500": { "$ref": "#/components/responses/InternalServerError" }, "503": { "$ref": "#/components/responses/ServiceUnavailable" } } } }, "/bookings/book": { "post": { "tags": [ "Bookings" ], "summary": "/bookings/book", "description": "Requests a booking for a product.\n\n**Note**: \n- This endpoint is only available to merchant partners.\n- The amount that you will be invoiced for the sale of this tour (in the specified currency) is given in the `totalPrice` element in the response from this endpoint.\n- As some products are booked on external supplier systems, it may take > 90s to receive a response from this endpoint. For this reason, we recommend setting your internal time-out for this service to **120s**. In the event that this service does time-out, or you receive a HTTP 500 error, you should check the status of the booking using the [/bookings/status](#operation/bookingsStatus) endpoint to ensure the booking was not created before you attempt to make the booking again.\n- The booking status will indicate if the booking:\n - is still awaiting confirmation (`\"PENDING\"`); or,\n - was `\"CONFIRMED\"` if it was eventually successful, or \n - was `\"REJECTED\"` if there are valid reasons why it could not be booked; such as, if it was booked-out or other changes to availability occurred; or,\n - failed for an unknown reason if it did eventually fail. In this scenario, a new booking can be attempted using a new `\"partnerBookingRef\"`\n\n(Response sample generated on: 2020-08-25)\n", "operationId": "bookingsBook", "parameters": [ { "$ref": "#/components/parameters/acceptLanguage" }, { "$ref": "#/components/parameters/accept" }, { "$ref": "#/components/parameters/exp-demo" } ], "requestBody": { "content": { "application/json;version=2.0": { "schema": { "$ref": "#/components/schemas/BookingBookRequest" }, "example": { "productCode": "5010SYDNEY", "productOptionCode": "48HOUR", "currency": "AUD", "partnerBookingRef": "BR-581567752", "travelDate": "2020-11-30", "paxMix": [ { "ageBand": "ADULT", "numberOfTravelers": 1 } ], "languageGuide": { "type": "AUDIO", "language": "en", "legacyGuide": "en/SERVICE_AUDIO" }, "bookingRef": "BR-581567752", "bookerInfo": { "firstName": "Simon", "lastName": "Nettle" }, "bookingQuestionAnswers": [ { "question": "AGEBAND", "answer": "ADULT", "travelerNum": 1 }, { "question": "FULL_NAMES_LAST", "answer": "Nettle", "travelerNum": 1 }, { "question": "FULL_NAMES_FIRST", "answer": "Simon", "travelerNum": 1 }, { "question": "SPECIAL_REQUIREMENTS", "answer": "NO", "travelerNum": 1 } ], "communication": { "email": "snettle@tripadvisor.com", "phone": "+61 431532778" }, "additionalBookingDetails": { "voucherDetails": { "companyName": "Booking King", "email": "support@bookingking.com", "phone": "+61400500600", "voucherText": "For any enquiries, please visit our customer support page at https://support.bookingking.com" } } } } } }, "responses": { "200": { "description": "Success", "headers": { "X-Unique-ID": { "$ref": "#/components/headers/XUniqueId" }, "RateLimit-Limit": { "$ref": "#/components/headers/RateLimit-Limit" }, "RateLimit-Remaining": { "$ref": "#/components/headers/RateLimit-Remaining" }, "RateLimit-Reset": { "$ref": "#/components/headers/RateLimit-Reset" } }, "content": { "application/json;version=2.0": { "schema": { "$ref": "#/components/schemas/BookingBookResponse" }, "examples": { "1": { "$ref": "#/components/examples/bookings-book-example" } } } } }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "403": { "$ref": "#/components/responses/Forbidden" }, "404": { "$ref": "#/components/responses/NotFound" }, "406": { "$ref": "#/components/responses/NotAcceptable" }, "429": { "$ref": "#/components/responses/TooManyRequests" }, "500": { "$ref": "#/components/responses/InternalServerError" }, "503": { "$ref": "#/components/responses/ServiceUnavailable" } } } }, "/bookings/status": { "post": { "tags": [ "Bookings" ], "summary": "/bookings/status", "description": "**Note**: This endpoint is only available to affiliate partners with API access level \"Full Access + Booking\" and merchant partners.\n\n\nRequests the status of an existing booking using either the Viator-generated booking reference (`bookingRef`) or the reference generated by the partner (`partnerBookingRef`). For bookings made through v1 endpoints, only Viator-generated booking reference is supported.\n\n\nChecking the status of a booking is only necessary to retrieve updates on:\n\n - manual confirmation products status\n - bookings that were left in `\"PENDING\"`/`\"IN_PROGRESS\"` status at time of /booking call for other reasons\n - bookings that timed out at time of /booking call\n - amendments that were left in `\"IN_PROGRESS\"` status at time of /amend call\n\n\nThe endpoint should only be called intermittently and based on the cadence recommended at nextPollAt. To avoid unnecessary calls, do not poll the endpoint before the next recommended polling time, as no updates will be returned.\n\n(Response sample generated on: 2020-11-10)\n", "operationId": "bookingsStatus", "parameters": [ { "$ref": "#/components/parameters/accept" }, { "$ref": "#/components/parameters/optionalAcceptLanguage" } ], "requestBody": { "content": { "application/json;version=2.0": { "schema": { "$ref": "#/components/schemas/BookingStatusRequest" }, "example": { "bookingRef": "BR-791143912" } } } }, "responses": { "200": { "description": "Success", "headers": { "X-Unique-ID": { "$ref": "#/components/headers/XUniqueId" }, "RateLimit-Limit": { "$ref": "#/components/headers/RateLimit-Limit" }, "RateLimit-Remaining": { "$ref": "#/components/headers/RateLimit-Remaining" }, "RateLimit-Reset": { "$ref": "#/components/headers/RateLimit-Reset" } }, "content": { "application/json;version=2.0": { "schema": { "$ref": "#/components/schemas/BookingStatusResponse" }, "examples": { "1": { "$ref": "#/components/examples/bookings-status-example" }, "2": { "$ref": "#/components/examples/bookings-status-pending-example" }, "3": { "$ref": "#/components/examples/bookings-status-example-2" } } } } }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "403": { "$ref": "#/components/responses/Forbidden" }, "404": { "$ref": "#/components/responses/NotFound" }, "406": { "$ref": "#/components/responses/NotAcceptable" }, "429": { "$ref": "#/components/responses/TooManyRequests" }, "500": { "$ref": "#/components/responses/InternalServerError" }, "503": { "$ref": "#/components/responses/ServiceUnavailable" } } } }, "/bookings/cancel-reasons": { "get": { "tags": [ "Bookings" ], "description": "Retrieves a dictionary of unique identification codes (`cancellationReasonCode`) and their associated natural-language descriptions (`cancellationReasonText`). Cancellation reasons should be cached and refreshed monthly.\n**Note**: \n - This endpoint is only available to affiliate partners with API access level \"Full Access + Booking\" and merchant partners.\n - As the data returned by this endpoint may change from time to time, it is recommended that you retrieve the latest cancellation reasons at a fixed cadence \u2013 we recommend monthly. For more information, see: [Update frequency](#section/Workflows/Update-frequency).\n\n(Response sample generated on: 2022-07-22)\n", "operationId": "bookingsCancelReasons", "summary": "/bookings/cancel-reasons", "parameters": [ { "$ref": "#/components/parameters/acceptLanguage" }, { "$ref": "#/components/parameters/accept" }, { "name": "type", "in": "query", "description": "Specifies which set of cancellation reasons to retrieve; one of:\n\n- `\"CUSTOMER\"` \u2013 (default) gets the set of **customer**-initiated cancellation reasons (for use with the [/bookings/{booking-reference}/cancel](#operation/bookingsCancel) endpoint)\n- `\"SUPPLIER\"` \u2013 gets the set of **supplier**-initiated cancellation reasons (for use with the [/bookings/modified-since](#operation/bookingsModifiedSince) endpoint)\n", "required": false, "schema": { "type": "string", "default": "CUSTOMER" } } ], "responses": { "200": { "description": "Success", "headers": { "X-Unique-ID": { "$ref": "#/components/headers/XUniqueId" }, "RateLimit-Limit": { "$ref": "#/components/headers/RateLimit-Limit" }, "RateLimit-Remaining": { "$ref": "#/components/headers/RateLimit-Remaining" }, "RateLimit-Reset": { "$ref": "#/components/headers/RateLimit-Reset" } }, "content": { "application/json;version=2.0": { "schema": { "$ref": "#/components/schemas/CancellationReasonsResponse" }, "examples": { "1": { "$ref": "#/components/examples/bookings-cancel-reasons-example" }, "2": { "$ref": "#/components/examples/bookings-cancel-reasons-example-2" } } } } }, "401": { "$ref": "#/components/responses/Unauthorized" }, "403": { "$ref": "#/components/responses/Forbidden" }, "406": { "$ref": "#/components/responses/NotAcceptable" }, "429": { "$ref": "#/components/responses/TooManyRequests" }, "500": { "$ref": "#/components/responses/InternalServerError" }, "503": { "$ref": "#/components/responses/ServiceUnavailable" } } } }, "/bookings/{booking-reference}/cancel-quote": { "get": { "tags": [ "Bookings" ], "description": "Gets the cancellation quote for an existing booking.\n\n**Note**: This endpoint is only available to affiliate partners with API access level \"Full Access + Booking\" and merchant partners.\n\nFor more information about how to perform cancellations using this API, see the [Cancellation API workflow](#section/Booking-concepts/Cancellation-API-workflow) section and our in-depth guide about cancellation policies and how to handle cancellations: [All you need to know about cancellation policies](https://partnerresources.viator.com/travel-commerce/merchant/cancellation-policies?source=specs).\n\n(Response sample generated on: 2020-08-25)\n", "operationId": "bookingsCancelQuote", "summary": "/bookings/{booking-reference}/cancel-quote", "parameters": [ { "$ref": "#/components/parameters/accept" }, { "name": "booking-reference", "in": "path", "required": true, "description": "The booking reference code (in format `BR-123456789`, which is generated by Viator and returned in the `bookingRef` element in the response from [/bookings/book](#operation/bookingsBook)) of the booking for which to retrieve a cancellation quote\n", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Success", "headers": { "X-Unique-ID": { "$ref": "#/components/headers/XUniqueId" }, "RateLimit-Limit": { "$ref": "#/components/headers/RateLimit-Limit" }, "RateLimit-Remaining": { "$ref": "#/components/headers/RateLimit-Remaining" }, "RateLimit-Reset": { "$ref": "#/components/headers/RateLimit-Reset" } }, "content": { "application/json;version=2.0": { "schema": { "$ref": "#/components/schemas/CancelBookingQuoteResponse" }, "examples": { "1": { "$ref": "#/components/examples/bookings-cancel-quote-example" } } } } }, "401": { "$ref": "#/components/responses/Unauthorized" }, "403": { "$ref": "#/components/responses/Forbidden" }, "404": { "$ref": "#/components/responses/NotFound" }, "406": { "$ref": "#/components/responses/NotAcceptable" }, "429": { "$ref": "#/components/responses/TooManyRequests" }, "500": { "$ref": "#/components/responses/InternalServerError" }, "503": { "$ref": "#/components/responses/ServiceUnavailable" } } } }, "/bookings/{booking-reference}/cancel": { "post": { "tags": [ "Bookings" ], "description": "Cancels existing booking with given Viator-generated booking-reference\n\n**Note**: This endpoint is only available to affiliate partners with API access level \"Full Access + Booking\" and merchant partners.\n\nFor more information about how to perform cancellations using this API, see the [Cancellation API workflow](#section/Booking-concepts/Cancellation-API-workflow) section and our in-depth guide about cancellation policies and how to handle cancellations: [All you need to know about cancellation policies](https://partnerresources.viator.com/travel-commerce/merchant/cancellation-policies?source=specs).\n\n(Response sample generated on: 2020-08-25)\n", "operationId": "bookingsCancel", "summary": "/bookings/{booking-reference}/cancel", "parameters": [ { "name": "booking-reference", "in": "path", "required": true, "description": "The booking reference code (in format `BR-123456789`, which is generated by Viator and returned in the `bookingRef` element in the response from [/bookings/book](#operation/bookingsBook)) of the booking for which to request cancellation\n", "schema": { "type": "string" } }, { "$ref": "#/components/parameters/acceptLanguage" }, { "$ref": "#/components/parameters/accept" } ], "requestBody": { "content": { "application/json;version=2.0": { "schema": { "$ref": "#/components/schemas/CancellationRequest" }, "example": { "reasonCode": "Customer_Service.I_canceled_my_entire_trip" } } } }, "responses": { "200": { "description": "Success", "headers": { "X-Unique-ID": { "$ref": "#/components/headers/XUniqueId" }, "RateLimit-Limit": { "$ref": "#/components/headers/RateLimit-Limit" }, "RateLimit-Remaining": { "$ref": "#/components/headers/RateLimit-Remaining" }, "RateLimit-Reset": { "$ref": "#/components/headers/RateLimit-Reset" } }, "content": { "application/json;version=2.0": { "schema": { "$ref": "#/components/schemas/CancelBookingResponse" }, "examples": { "1": { "$ref": "#/components/examples/bookings-cancel-example" } } } } }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "403": { "$ref": "#/components/responses/Forbidden" }, "404": { "$ref": "#/components/responses/NotFound" }, "406": { "$ref": "#/components/responses/NotAcceptable" }, "429": { "$ref": "#/components/responses/TooManyRequests" }, "500": { "$ref": "#/components/responses/InternalServerError" }, "503": { "$ref": "#/components/responses/ServiceUnavailable" } } } }, "/bookings/modified-since": { "get": { "tags": [ "Bookings" ], "summary": "/bookings/modified-since", "description": "Gets all booking-event notifications relevant to the partner since a point in time indicated by a timestamp or pagination cursor. This endpoint should be polled hourly, except in supplier cancellation scenarios, in which case polling should occur every 5 minutes.\n\n**Merchant partners only:** In order to stop notification emails sent by Viator for **supplier cancellations of bookings made through the API** you must **poll this endpoint every 5 minutes** and send an acknowledge using\n[/bookings/modified-since/acknowledge](#operation/bookingsModifiedSinceAcknowledge) endpoint. See the guide on how to automate the flow for supplier cancellations in this article: [Automating supplier cancellations in V.2 Partner API](https://partnerresources.viator.com/travel-commerce/merchant/automating-supplier-cancellations/).\nViator will not send notification emails to partners for customer-initiated cancellations.\n\n**Affiliate partners only:** affiliate partners with API access level Basic or Full will only have access to events of bookings made past September 2025. Whitelabel affiliate partners will only have access to events of bookings made past December 2025.\n", "operationId": "bookingsModifiedSince", "parameters": [ { "$ref": "#/components/parameters/acceptLanguage" }, { "$ref": "#/components/parameters/accept" }, { "name": "modified-since", "in": "query", "description": "Only retrieve booking events that have occurred since the point in time indicated by this timestamp.\n\n**Note**: \n\n- As this is a query parameter, colons (i.e., `:`) in the timestamp should be URL-encoded as `%3A`; e.g.: \"`2020-09-30T00%3A00%3A01.737043Z`\"\n- Using this parameter is not recommended as the standard pagination method; instead, we recommend using the `cursor` parameter to ensure all booking event notifications are captured.\n", "required": false, "schema": { "type": "string", "format": "date-time", "pattern": "^(-?(?:[1-9][0-9]*)?[0-9]{4})-(1[0-2]|0[1-9])-(3[01]|0[1-9]|[12][0-9])T(2[0-3]|[01][0-9])\\%3A([0-5][0-9])\\%3A([0-5][0-9])(\\.[0-9]+)?(Z|[+-](?:2[0-3]|[01][0-9]):[0-5][0-9])?$" } }, { "name": "cursor", "in": "query", "description": "Pagination cursor received from a previous call to **this** endpoint that points to the starting point for the next page of results.\n\n**Note**: Pagination will come into play when the number of results exceeds the figure given in the `count` parameter. In this case, pass the content of the `nextCursor` element for the value of `cursor` to receive the next page of results. The final page of results will not include the `nextCursor` element.\n", "required": false, "schema": { "type": "string" } }, { "name": "count", "in": "query", "description": "Specifies the maximum number of booking events to be included in each page of results returned from this endpoint.\n", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 50, "default": 50 } } ], "responses": { "200": { "description": "Success", "headers": { "X-Unique-ID": { "$ref": "#/components/headers/XUniqueId" }, "RateLimit-Limit": { "$ref": "#/components/headers/RateLimit-Limit" }, "RateLimit-Remaining": { "$ref": "#/components/headers/RateLimit-Remaining" }, "RateLimit-Reset": { "$ref": "#/components/headers/RateLimit-Reset" } }, "content": { "application/json;version=2.0": { "schema": { "$ref": "#/components/schemas/BookingsModifiedSinceResponse" }, "examples": { "1": { "$ref": "#/components/examples/bookings-modified-since-example" } } } } }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "403": { "$ref": "#/components/responses/Forbidden" }, "404": { "$ref": "#/components/responses/NotFound" }, "406": { "$ref": "#/components/responses/NotAcceptable" }, "429": { "$ref": "#/components/responses/TooManyRequests" }, "500": { "$ref": "#/components/responses/InternalServerError" }, "503": { "$ref": "#/components/responses/ServiceUnavailable" } } } }, "/bookings/modified-since/acknowledge": { "post": { "tags": [ "Bookings" ], "summary": "/bookings/modified-since/acknowledge", "description": "Acknowledges receipt of one or more booking event notifications returned by the [/bookings/modified-since](#operation/bookingsModifiedSince) endpoint. Merchants who wish to assume control of the customer service workflow surrounding booking change events must carry out this step before the time indicated in the `bookings[].acknowledgeBy` field, otherwise Viator will automatically send a cancellation notification to the email address provided by the partner for cancellation notifications.\nThis endpoint should be called in order to stop notification emails from being sent by Viator. See the guide on how to automate the flow for supplier cancellations in this article: [Automating supplier cancellations in V.2 Partner API](https://partnerresources.viator.com/travel-commerce/merchant/automating-supplier-cancellations/)\n\n**Note**: This endpoint is only available to affiliate partners with API access level \"Full Access + Booking\" and merchant partners.\n", "operationId": "bookingsModifiedSinceAcknowledge", "parameters": [ { "$ref": "#/components/parameters/acceptLanguage" }, { "$ref": "#/components/parameters/accept" } ], "requestBody": { "content": { "application/json;version=2.0": { "schema": { "$ref": "#/components/schemas/EventsAcknowledgementRequest" }, "example": { "transactionRefs": [ "PBE-e60bb92c-f1fc-11ec-b939-0242ac120002", "PBE-e60bb92c-f1fc-11ec-b939-0242ac120003" ] } } } }, "responses": { "204": { "description": "Success", "headers": { "X-Unique-ID": { "$ref": "#/components/headers/XUniqueId" }, "RateLimit-Limit": { "$ref": "#/components/headers/RateLimit-Limit" }, "RateLimit-Remaining": { "$ref": "#/components/headers/RateLimit-Remaining" }, "RateLimit-Reset": { "$ref": "#/components/headers/RateLimit-Reset" } } }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "403": { "$ref": "#/components/responses/Forbidden" }, "404": { "description": "Not Found", "headers": { "X-Unique-ID": { "$ref": "#/components/headers/XUniqueId" } }, "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/ErrorResponse" }, { "type": "object", "properties": { "unknownTransactionRefs": { "description": "List of transaction references that could not be found\n\n**Example**: `unknownTransactionRefs: ['foo','bar']`\n", "type": "array", "items": { "type": "string" } }, "code": { "description": "Code for this error type\n\n**Example**: `\"NOT_FOUND\"`\n" }, "message": { "description": "Details of this error\n\n**Example**: `\"The specified resource was not found\"`\n" } } }, { "type": "object", "example": { "code": "NOT_FOUND", "message": "The specified resource was not found", "timestamp": "2019-09-17T03:20:45.737043Z", "unknownTransactionRefs": [ "foo", "bar" ] } } ] } } } }, "406": { "$ref": "#/components/responses/NotAcceptable" }, "429": { "$ref": "#/components/responses/TooManyRequests" }, "500": { "$ref": "#/components/responses/InternalServerError" }, "503": { "$ref": "#/components/responses/ServiceUnavailable" } } } }, "/v1/checkoutsessions/{sessionToken}/paymentaccounts": { "post": { "tags": [ "Payments" ], "operationId": "paymentsCreateToken", "summary": "/v1/checkoutsessions/{sessionToken}/paymentaccounts", "description": "Creates a payment token from raw credit card details for use with the [/bookings/cart/book](#operation/bookingsCartBook) endpoint.\n\nThe URL should not be constructed manually, instead use the `paymentDataSubmissionUrl` value returned from the [/bookings/cart/hold](#operation/bookingsCartHold) endpoint.\n\nWhen using the API payment solution, it is a requirement that you implement our fraud prevention solution. See Implementing the API Solution for more details.\n\n**Note**:\n- This endpoint utilises a different domain to other endpoints referenced in the API.\n- This endpoint is only available to affiliate partners with API access level \"Full Access + Booking\".\n", "servers": [ { "url": "https://api.tapayments.com", "description": "Production server (uses live data)" }, { "url": "https://api.staging.tapayments.com", "description": "Sandbox server (uses test data)" } ], "security": [], "parameters": [ { "name": "Content-Type", "in": "header", "description": "Identifies the payload as application/json.", "required": true, "schema": { "type": "string", "example": "application/json" } }, { "name": "x-trip-clientid", "in": "header", "description": "This is your unique partner identifier, which you can find in the Viator Partner Program: https://partners.viator.com/login", "required": true, "schema": { "type": "string", "example": "P0123456789" } }, { "name": "x-trip-requestid", "in": "header", "description": "Any client-side generated request identifier, unique per request.", "required": true, "schema": { "type": "string", "example": "9dbb490a-d953-4a9b-875a-728b5f335b29" } }, { "name": "User-Agent", "in": "header", "description": "value should be appropriate to the client you are using, e.g. \"curl/8.8.0\"", "required": true, "schema": { "type": "string", "example": "curl/8.8.0" } }, { "name": "sessionToken", "in": "path", "description": "The `sessionToken` is obtained from calling the [/bookings/cart/hold](#operation/bookingsCartHold) endpoint and embedded in the `paymentDataSubmissionUrl`.\n\n**Note:** The `paymentDataSubmissionUrl` value should be used instead of contructing the URL manually.\n", "required": true, "schema": { "type": "string" }, "example": "CSI-P-kwftrgmrbfbglkaw4espjdr52e" } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/VaultCardRequest" }, "example": { "paymentAccounts": { "creditCards": [ { "number": "4111111111111111", "cvv": "234", "expMonth": "03", "expYear": "2026", "name": "Jane Doe", "address": { "country": "US", "postalCode": "02494" } } ] } } } }, "required": true }, "responses": { "200": { "description": "Card successfully stored.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/VaultPaymentResponse" }, "example": { "paymentAccounts": { "creditCards": [ { "persistAccount": false, "cardType": "Visa", "name": "Jane Doe", "number": "", "accountHead": "411111", "accountTail": "1111", "expMonth": "03", "expYear": "2026", "cvv": "", "address": { "street": "", "street2": "", "city": "", "state": "", "country": "US", "postalCode": "02494", "phoneNumber": "" }, "accountMetaData": { "sessionAccountToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c", "accountFingerprint": "" } } ], "bankAccounts": [], "cvvs": [], "bankMandates": [] }, "responseHeader": { "apiVersion": 1, "responseId": "RES-rciyl2b2q5gidlusbsq3ofht44", "responseCode": 2000, "responseMessage": "ok", "errors": [] } } } } }, "404": { "description": "Checkout session expired or not found.", "content": { "application/json": { "example": { "paymentAccounts": { "creditCards": [] }, "responseHeader": { "apiVersion": 1, "responseId": "RES-sa2lfnzy7rdixep2vhte4bjbzq", "responseCode": 4004, "responseMessage": "Checkout session has expired.", "errors": [ { "responseStatus": "NOT_FOUND", "responseCode": 4004, "responseMessage": "Checkout session has expired.", "isExpectedError": true, "requestFieldPath": "param.checkoutsessionid", "responseDetail": "" } ] } } } } } } } }, "/locations/bulk": { "post": { "tags": [ "Auxiliary" ], "summary": "/locations/bulk", "description": "Get full location details for the requested location references. Locations should be cached and refreshed monthly. Additionally, the [/locations/bulk](#operation/locationsBulk) endpoint should be used on demand for any new location references returned in the product content response.\n\n**Note**: If no response is received for a given location reference, this means that the location was either removed from our database or replaced by a different one. If this occurs, please disregard the removed location reference and make sure you update the associated product information.\n\n(Response sample generated on: 2020-08-25)\n", "operationId": "locationsBulk", "requestBody": { "content": { "application/json;version=2.0": { "schema": { "$ref": "#/components/schemas/BulkLocationReferencesRequest" }, "example": { "locations": [ "LOC-f698f2a1-a53a-46bb-8708-3d45bf740f59", "LOC-9e88ac35-2e2c-4ecc-af8d-10b76770785f", "LOC-453b3cd4-4afa-414d-a8d8-bedb458d73fe", "CONTACT_SUPPLIER_LATER", "MEET_AT_DEPARTURE_POINT" ] } } } }, "parameters": [ { "$ref": "#/components/parameters/acceptLanguage" }, { "$ref": "#/components/parameters/accept" } ], "responses": { "200": { "description": "Success", "headers": { "X-Unique-ID": { "$ref": "#/components/headers/XUniqueId" }, "RateLimit-Limit": { "$ref": "#/components/headers/RateLimit-Limit" }, "RateLimit-Remaining": { "$ref": "#/components/headers/RateLimit-Remaining" }, "RateLimit-Reset": { "$ref": "#/components/headers/RateLimit-Reset" } }, "content": { "application/json;version=2.0": { "schema": { "$ref": "#/components/schemas/LocationsResponse" }, "examples": { "1": { "$ref": "#/components/examples/locations-bulk-example" } } } } }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "403": { "$ref": "#/components/responses/Forbidden" }, "404": { "$ref": "#/components/responses/NotFound" }, "429": { "$ref": "#/components/responses/TooManyRequests" }, "500": { "$ref": "#/components/responses/InternalServerError" }, "503": { "$ref": "#/components/responses/ServiceUnavailable" } } } }, "/exchange-rates": { "post": { "tags": [ "Auxiliary" ], "summary": "/exchange-rates", "description": "This endpoint gets the exchange rates for conversions between specified currencies.\nExchange rates should be cached and refreshed based on the expiry timestamp (at the moment daily).\n\nIn this API, all pricing is denominated in the currency of the supplier. For example, if a tour operates in Thailand, its prices will be given in Thai Baht (THB). \n\nNot all supplier currencies are supported, but many are. They comprise:\n\n- AED, ARS, AUD, BRL, CAD, CHF, CLP, CNY, COP, DKK, EUR, FJD, GBP \n- HKD, IDR, ILS, INR, ISK, JPY, KRW, MXN, MYR, NOK, NZD, PEN, PHP, PLN, \n- RUB, SEK, SGD, THB, TRY, TWD, USD, VND, ZAR\n\nWhile pricing can be in any of the currencies listed above, payments for bookings can only be made using the following four currencies:\n\n- GBP (British Pound)\n- EUR (Euros)\n- USD (US Dollars)\n- AUD (Australian dollars)\n\nIn order that you display the correct price to the user and charge accordingly, it is important that you perform the currency conversion based on the exchange rates given in the response from this endpoint and that these conversion rates are valid at the time of conversion (as given in the `expiry` field).\n\nIn doing so, you ensure the amount that you, the merchant, will be invoiced by Viator for this product matches your records. Discrepancies are bound to occur if you perform the calculations using expired exchange rates or those from an alternative source.\n\nAn additional measure to ensure that you charge your customer accurately is to confirm that the pricing details returned by the [/availability/check](../#operation/availabilityCheck) endpoint (in the billing currency specified in the request) conform to your expectations. The information provided by this service is the definitive source of truth with regard to product pricing.\n\n**Note:** If you attempt to use an unsupported currency when making a booking request, you will receive the following error:\n\n```javascript\nIncorrect currency code provided\n```\n\n**Note**: In order to reduce the number of calls made to this service, we recommend retrieving the exchange rate for the currency pair in question just once for the time period during which it is valid, and then applying that rate to all products with pricing denominated in that currency rather than calling this endpoint for each product requiring currency conversion.\n\nLearn more about calculating product pricing in this article: [Calculating Product Pricing](https://partnerresources.viator.com/travel-commerce/merchant/pricing/?source=specs)\n\n(Response sample generated on: 2020-09-17)\n", "operationId": "exchangeRates", "requestBody": { "content": { "application/json;version=2.0": { "schema": { "$ref": "#/components/schemas/ExchangeRatesRequest" }, "example": { "sourceCurrencies": [ "AUD", "EUR", "USD", "GBP" ], "targetCurrencies": [ "AUD", "EUR", "USD", "GBP" ] } } } }, "responses": { "200": { "description": "Success", "headers": { "X-Unique-ID": { "$ref": "#/components/headers/XUniqueId" }, "RateLimit-Limit": { "$ref": "#/components/headers/RateLimit-Limit" }, "RateLimit-Remaining": { "$ref": "#/components/headers/RateLimit-Remaining" }, "RateLimit-Reset": { "$ref": "#/components/headers/RateLimit-Reset" } }, "content": { "application/json;version=2.0": { "schema": { "$ref": "#/components/schemas/ExchangeRatesResponse" }, "examples": { "1": { "$ref": "#/components/examples/exchange-rates-example" } } } } }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "403": { "$ref": "#/components/responses/Forbidden" }, "429": { "$ref": "#/components/responses/TooManyRequests" }, "500": { "$ref": "#/components/responses/InternalServerError" }, "503": { "$ref": "#/components/responses/ServiceUnavailable" } } } }, "/reviews/product": { "post": { "tags": [ "Auxiliary" ], "description": "Retrieves and filters reviews for a **single** product\nReviews should be cached and refreshed weekly, as well as on-demand when you see that the product content endpoint returns a different review count than saved in your database for the product.\n\n**Non-indexing of reviews**\n\n- Review content is protected proprietary information; therefore, you may not allow review content to be indexed by search engines. In order for your site to be certified, you will need to demonstrate that you have implemented systems to ensure that review content is non-indexed. For more information, see [Key concepts - Protecting unique content](#section/Key-concepts/Protecting-unique-content).\n\n**Availability of reviews**\n\n- Occasionally, reviews are deleted due to inauthenticity, offensive language, etc. Furthermore, we cannot guarantee that non-Viator reviews (i.e., those for which the `provider` is not `\"VIATOR\"`) will remain available in future (however, you will receive a notification email to inform you should this occurr). As such, we require that you implement a mechanism by which locally-cached reviews are automatically deleted from your records (and are not displayed on your site) if they do not appear in the most recent response from this endpoint. \n\n**Viator performs checks on reviews**\n\n- For more information, see [Key concepts - Review authenticity](#section/Key-concepts/Review-authenticity)\n\nNote: Changing `Accept-Language`, `showMachineTranslated`, or `reviewsForNonPrimaryLocale` may change review ordering, pagination, and the apparent set of reviews returned for the same product. Partners should not assume stable pagination across different locale/translation settings.\n", "operationId": "reviewsProduct", "summary": "/reviews/product", "parameters": [ { "$ref": "#/components/parameters/acceptLanguage" }, { "$ref": "#/components/parameters/accept" } ], "requestBody": { "content": { "application/json;version=2.0": { "schema": { "$ref": "#/components/schemas/ProductReviewsRequest" }, "example": { "productCode": "5010SYDNEY", "provider": "ALL", "count": 10, "start": 1, "showMachineTranslated": true, "reviewsForNonPrimaryLocale": true, "ratings": [ 1, 2, 3, 4, 5 ], "sortBy": "MOST_RECENT_PER_LOCALE" } } } }, "responses": { "200": { "description": "Success", "headers": { "X-Unique-ID": { "$ref": "#/components/headers/XUniqueId" }, "RateLimit-Limit": { "$ref": "#/components/headers/RateLimit-Limit" }, "RateLimit-Remaining": { "$ref": "#/components/headers/RateLimit-Remaining" }, "RateLimit-Reset": { "$ref": "#/components/headers/RateLimit-Reset" } }, "content": { "application/json;version=2.0": { "schema": { "$ref": "#/components/schemas/ProductReviewsResponse" }, "examples": { "1": { "$ref": "#/components/examples/products-reviews-example" } } } } }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "403": { "$ref": "#/components/responses/Forbidden" }, "404": { "$ref": "#/components/responses/NotFound" }, "406": { "$ref": "#/components/responses/NotAcceptable" }, "429": { "$ref": "#/components/responses/TooManyRequests" }, "500": { "$ref": "#/components/responses/InternalServerError" }, "503": { "$ref": "#/components/responses/ServiceUnavailable" } } } }, "/suppliers/search/product-codes": { "post": { "tags": [ "Auxiliary" ], "summary": "/suppliers/search/product-codes", "description": "Gets a collection of supplier information objects for the provided products. Limited to 500 products per request.\nSupplier details should be cached and refreshed weekly.\n", "operationId": "suppliersSearchProductCodes", "requestBody": { "content": { "application/json;version=2.0": { "schema": { "$ref": "#/components/schemas/BulkSupplierProductRequest" }, "example": { "productCodes": [ "2855KENNEDY_TKTS" ] } } } }, "parameters": [ { "$ref": "#/components/parameters/acceptLanguage" }, { "$ref": "#/components/parameters/accept" } ], "responses": { "200": { "description": "Success", "headers": { "X-Unique-ID": { "$ref": "#/components/headers/XUniqueId" }, "RateLimit-Limit": { "$ref": "#/components/headers/RateLimit-Limit" }, "RateLimit-Remaining": { "$ref": "#/components/headers/RateLimit-Remaining" }, "RateLimit-Reset": { "$ref": "#/components/headers/RateLimit-Reset" } }, "content": { "application/json;version=2.0": { "schema": { "$ref": "#/components/schemas/SupplierProductResponse" }, "examples": { "Certified Business": { "$ref": "#/components/examples/suppliers-search-product-codes-certified-business-example" }, "Business": { "$ref": "#/components/examples/suppliers-search-product-codes-business-example" }, "Individual": { "$ref": "#/components/examples/suppliers-search-product-codes-individual-example" } } } } }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "403": { "$ref": "#/components/responses/Forbidden" }, "404": { "$ref": "#/components/responses/NotFound" }, "429": { "$ref": "#/components/responses/TooManyRequests" }, "500": { "$ref": "#/components/responses/InternalServerError" }, "503": { "$ref": "#/components/responses/ServiceUnavailable" } } } }, "/attractions/search": { "post": { "tags": [ "Attractions" ], "operationId": "attractionsSearch", "summary": "/attractions/search", "description": "Get a list of attractions associated with a given `destinationId`, along with all relevant information about them, including products mapped.\n\nAttractions should be cached and refreshed weekly.\n\n**Note**:\n\n - Pages generated using data from this endpoint are subject to a strict no-index policy. \n You must ensure that your site is configured such that **no Viator Unique Content is indexed by any search engine**. \n This is a requirement for site certification. For more information, see [Key concepts \u2013 Protecting unique content](#section/Key-concepts/Protecting-unique-content). \n If you are unsure about whether you are correctly following this rule or if you would like to take advantage of our unique content, [please reach out to our support team](#section/Support).\n", "parameters": [ { "$ref": "#/components/parameters/acceptLanguage" }, { "$ref": "#/components/parameters/accept" }, { "$ref": "#/components/parameters/campaignValueAttraction" } ], "requestBody": { "content": { "application/json;version=2.0": { "schema": { "$ref": "#/components/schemas/AttractionsSearchRequest" } } } }, "responses": { "200": { "description": "Success", "headers": { "X-Unique-ID": { "$ref": "#/components/headers/XUniqueId" }, "RateLimit-Limit": { "$ref": "#/components/headers/RateLimit-Limit" }, "RateLimit-Remaining": { "$ref": "#/components/headers/RateLimit-Remaining" }, "RateLimit-Reset": { "$ref": "#/components/headers/RateLimit-Reset" } }, "content": { "application/json;version=2.0": { "schema": { "$ref": "#/components/schemas/AttractionsSearchResponse" } } } }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "403": { "$ref": "#/components/responses/Forbidden" }, "404": { "$ref": "#/components/responses/NotFound" }, "405": { "$ref": "#/components/responses/MethodNotAllowed" }, "406": { "$ref": "#/components/responses/NotAcceptable" }, "429": { "$ref": "#/components/responses/TooManyRequests" }, "500": { "$ref": "#/components/responses/InternalServerError" }, "503": { "$ref": "#/components/responses/ServiceUnavailable" } } } }, "/attractions/{attraction-id}": { "get": { "tags": [ "Attractions" ], "operationId": "attractions", "summary": "/attractions/{attraction-id}", "description": "Get all relevant information about a specific `attractionId`, including products mapped.\n \n**Note**:\n\n - Pages generated using data from this endpoint are subject to a strict no-index policy. \n You must ensure that your site is configured such that **no Viator Unique Content is indexed by any search engine**. \n This is a requirement for site certification. For more information, see [Key concepts \u2013 Protecting unique content](#section/Key-concepts/Protecting-unique-content). \n If you are unsure about whether you are correctly following this rule or if you would like to take advantage of our unique content, [please reach out to our support team](#section/Support).\n", "parameters": [ { "$ref": "#/components/parameters/acceptLanguage" }, { "$ref": "#/components/parameters/accept" }, { "$ref": "#/components/parameters/campaignValueAttraction" } ], "responses": { "200": { "description": "Success", "headers": { "X-Unique-ID": { "$ref": "#/components/headers/XUniqueId" }, "RateLimit-Limit": { "$ref": "#/components/headers/RateLimit-Limit" }, "RateLimit-Remaining": { "$ref": "#/components/headers/RateLimit-Remaining" }, "RateLimit-Reset": { "$ref": "#/components/headers/RateLimit-Reset" } }, "content": { "application/json;version=2.0": { "schema": { "$ref": "#/components/schemas/AttractionDetails" } } } }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "403": { "$ref": "#/components/responses/Forbidden" }, "404": { "$ref": "#/components/responses/NotFound" }, "405": { "$ref": "#/components/responses/MethodNotAllowed" }, "406": { "$ref": "#/components/responses/NotAcceptable" }, "429": { "$ref": "#/components/responses/TooManyRequests" }, "500": { "$ref": "#/components/responses/InternalServerError" }, "503": { "$ref": "#/components/responses/ServiceUnavailable" } } } }, "/destinations": { "get": { "tags": [ "Auxiliary" ], "operationId": "destinations", "summary": "/destinations", "description": "Get details of all destinations supported by the API. Destinations should be refreshed weekly (in addition to on-demand updates when a new destination is returned in the product content response).\n\n\n**Note**:\n\n - Returns a complete list of Viator destinations, including destination names and parent identifiers\n - Used to provide navigation through drill down lists or combo boxes\n - Use the data received from this endpoint to resolve the destination identifier(s) in the `destinations[].ref` element in the product content response\n", "parameters": [ { "$ref": "#/components/parameters/acceptLanguage" }, { "$ref": "#/components/parameters/accept" }, { "$ref": "#/components/parameters/campaignValueDestination" } ], "responses": { "200": { "description": "Success", "headers": { "X-Unique-ID": { "$ref": "#/components/headers/XUniqueId" }, "RateLimit-Limit": { "$ref": "#/components/headers/RateLimit-Limit" }, "RateLimit-Remaining": { "$ref": "#/components/headers/RateLimit-Remaining" }, "RateLimit-Reset": { "$ref": "#/components/headers/RateLimit-Reset" } }, "content": { "application/json;version=2.0": { "schema": { "$ref": "#/components/schemas/DestinationsResponse" } } } }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "403": { "$ref": "#/components/responses/Forbidden" }, "404": { "$ref": "#/components/responses/NotFound" }, "406": { "$ref": "#/components/responses/NotAcceptable" }, "429": { "$ref": "#/components/responses/TooManyRequests" }, "500": { "$ref": "#/components/responses/InternalServerError" }, "503": { "$ref": "#/components/responses/ServiceUnavailable" } } } }, "/amendment/check/{booking-reference}": { "get": { "tags": [ "Bookings" ], "summary": "/amendment/check/{booking-reference}", "description": "Returns the amendability status of a given `bookingRef`, along with a list of booking components (e.g., booking details, traveller info, pickup location) that can be amended. \n\n**Notes**:\n- Only bookings made after July 2025 are eligible to be amended.\n- This endpoint is only available to affiliate partners with API access level \"Full Access + Booking\" and merchant partners.\n", "operationId": "amendmentCheck", "parameters": [ { "$ref": "#/components/parameters/bookingReference" } ], "responses": { "200": { "description": "Success", "headers": { "X-Unique-ID": { "$ref": "#/components/headers/XUniqueId" }, "RateLimit-Limit": { "$ref": "#/components/headers/RateLimit-Limit" }, "RateLimit-Remaining": { "$ref": "#/components/headers/RateLimit-Remaining" }, "RateLimit-Reset": { "$ref": "#/components/headers/RateLimit-Reset" } }, "content": { "application/json;version=2.0": { "schema": { "$ref": "#/components/schemas/AmendmentCheckResponse" }, "examples": { "amendable": { "$ref": "#/components/examples/amendment-check-response-amendable" }, "amendable-with-questions-unanswered": { "$ref": "#/components/examples/amendment-check-response-amendable-with-questions-unanswered" }, "partially-amendable": { "$ref": "#/components/examples/amendment-check-response-partially-amendable" }, "not-amendable": { "$ref": "#/components/examples/amendment-check-response-not-amendable" } } } } }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "403": { "$ref": "#/components/responses/Forbidden" }, "404": { "$ref": "#/components/responses/NotFound" }, "406": { "$ref": "#/components/responses/NotAcceptable" }, "429": { "$ref": "#/components/responses/TooManyRequests" }, "500": { "$ref": "#/components/responses/InternalServerError" }, "503": { "$ref": "#/components/responses/ServiceUnavailable" } } } }, "/amendment/quote": { "post": { "tags": [ "Bookings" ], "summary": "/amendment/quote", "description": "Gets the amendment quote for an existing booking.\n\n**Notes**:\n - Only one amendmentType can be updated per request.\n - This endpoint is only available to affiliate partners with API access level \"Full Access + Booking\" and merchant partners.\n", "operationId": "amendmentQuote", "requestBody": { "content": { "application/json;version=2.0": { "schema": { "$ref": "#/components/schemas/AmendmentQuoteRequest" }, "examples": { "booking-details": { "$ref": "#/components/examples/amendment-quote-request-booking-details" }, "update-pax-mix": { "$ref": "#/components/examples/amendment-quote-request-update-pax-mix" }, "per-traveler-questions": { "$ref": "#/components/examples/amendment-quote-request-per-traveler-questions" }, "per-booking-questions": { "$ref": "#/components/examples/amendment-quote-request-per-booking-questions" } } } } }, "responses": { "200": { "description": "Success", "headers": { "X-Unique-ID": { "$ref": "#/components/headers/XUniqueId" }, "RateLimit-Limit": { "$ref": "#/components/headers/RateLimit-Limit" }, "RateLimit-Remaining": { "$ref": "#/components/headers/RateLimit-Remaining" }, "RateLimit-Reset": { "$ref": "#/components/headers/RateLimit-Reset" } }, "content": { "application/json;version=2.0": { "schema": { "$ref": "#/components/schemas/AmendmentQuoteResponse" }, "examples": { "price-changed": { "$ref": "#/components/examples/amendment-quote-response-price-changed" }, "same-price": { "$ref": "#/components/examples/amendment-quote-response-same-price" } } } } }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "403": { "$ref": "#/components/responses/Forbidden" }, "404": { "$ref": "#/components/responses/NotFound" }, "406": { "$ref": "#/components/responses/NotAcceptable" }, "429": { "$ref": "#/components/responses/TooManyRequests" }, "500": { "$ref": "#/components/responses/InternalServerError" }, "503": { "$ref": "#/components/responses/ServiceUnavailable" } } } }, "/amendment/amend/{quote-reference}": { "post": { "tags": [ "Bookings" ], "summary": "/amendment/amend/{quote-reference}", "description": "Amends existing booking with given Viator-generated `quoteRef`\n\n**Note**: This endpoint is only available to affiliate partners with API access level \"Full Access + Booking\" and merchant partners.\n", "operationId": "amendmentAmend", "parameters": [ { "$ref": "#/components/parameters/quoteReference" } ], "responses": { "200": { "description": "Success", "headers": { "X-Unique-ID": { "$ref": "#/components/headers/XUniqueId" }, "RateLimit-Limit": { "$ref": "#/components/headers/RateLimit-Limit" }, "RateLimit-Remaining": { "$ref": "#/components/headers/RateLimit-Remaining" }, "RateLimit-Reset": { "$ref": "#/components/headers/RateLimit-Reset" } }, "content": { "application/json;version=2.0": { "schema": { "$ref": "#/components/schemas/AmendmentAmendResponse" }, "examples": { "amended": { "$ref": "#/components/examples/amendment-amend-response-amended" }, "amended-no-voucher": { "$ref": "#/components/examples/amendment-amend-response-amended-no-voucher-info" }, "rejected": { "$ref": "#/components/examples/amendment-amend-response-rejected" } } } } }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "403": { "$ref": "#/components/responses/Forbidden" }, "404": { "$ref": "#/components/responses/NotFound" }, "406": { "$ref": "#/components/responses/NotAcceptable" }, "429": { "$ref": "#/components/responses/TooManyRequests" }, "500": { "$ref": "#/components/responses/InternalServerError" }, "503": { "$ref": "#/components/responses/ServiceUnavailable" } } } } }, "components": { "securitySchemes": { "API-key": { "type": "apiKey", "in": "header", "name": "exp-api-key" } }, "parameters": { "campaignValueProduct": { "name": "campaign-value", "in": "query", "description": "**Affiliate partners only**: Specifies the campaign tracking identifier that will be appended to the URL returned in `productUrl` as a query parameter. Campaigns allow you to track how specific links perform, with metrics such as sessions, bookings, and commission. Reports are available via the Viator Partner Platform.\n\n**Note**: If you wish to use a campaign value that includes non-alphanumeric characters (e.g., '+', '-', etc.), you must URL-encode these characters.\n", "required": false, "schema": { "type": "string", "maxLength": 200 } }, "acceptLanguage": { "in": "header", "name": "Accept-Language", "description": "Specifies the language into which the natural-language fields in the response from this service will be translated (see [Accept-Language header](#section/Localization/Accept-Language-header-parameter) for available language codes)\n", "required": true, "schema": { "type": "string", "example": "en-US" } }, "accept": { "in": "header", "name": "Accept", "description": "Specifies the version of this API to access\n", "required": true, "schema": { "type": "string", "example": "application/json;version=2.0" } }, "targetLander": { "name": "target-lander", "in": "query", "description": "**Affiliate partners only**: Specifies the type of landing page customers will be shown when opening the link provided in the `productUrl` field.\n\nOrdinarily, when customers follow the link in `productUrl`, they are redirected to a sales-conversion-optimized affiliate landing page. This default behavior can be disabled by setting this parameter to `\"NONE\"`, which will modify the `productUrl` query string such that when opened, the customer will instead land on the standard viator.com product display page, which is **not** optimized for affiliate-link sales.\n\nAvailable values:\n\n- `\"NONE\"`: Causes `target_lander=NONE` to be included in the `productUrl` query string, which will **disable** redirection to an affiliate landing page when the link is followed.\n\nOur recommendation is for you to **allow** the default behavior by **not** including this parameter, unless you have a specific technical or business requirement to do so.\n", "required": false, "schema": { "type": "string" } }, "exp-demo": { "in": "header", "name": "exp-demo", "description": "Specifies whether this request is a demo/test booking. Demo bookings do not send any notifications and are automatically confirmed. Also, manual-confirmation products behave as if they were instant-confirmation products. \n\nSet this value to **true** when:\n- Making a test booking in the production environment\n- Making a test booking of a manual-confirmation product in the sandbox environment and you wish to receive a booking status of `\"CONFIRMED\"` in the response\n\nSet this value to **false** when:\n- Making a real booking in the production environment\n- Making a test booking of a manual-confirmation product in the sandbox environment and you wish to receive a booking status of `\"PENDING\"` in the response\n", "schema": { "type": "boolean", "example": "true", "default": "false" } }, "optionalAcceptLanguage": { "in": "header", "name": "Accept-Language", "description": "Specifies the language into which the natural-language fields in the response from this service will be translated (see [Accept-Language header](#section/Localization/Accept-Language-header-parameter) for available language codes)\n", "required": false, "schema": { "type": "string", "example": "en-US" } }, "campaignValueAttraction": { "name": "campaign-value", "in": "query", "description": "**Affiliate partners only**: Specifies the campaign tracking identifier that will be appended to the URL returned in `attractionUrl` as a query parameter. Campaigns allow you to track how specific links perform, with metrics such as sessions, bookings, and commission. Reports are available via the Viator Partner Platform.\n\n**Note**: If you wish to use a campaign value that includes non-alphanumeric characters (e.g., '+', '-', etc.), you must URL-encode these characters.\n", "required": false, "schema": { "type": "string", "maxLength": 200 } }, "campaignValueDestination": { "name": "campaign-value", "in": "query", "description": "**Affiliate partners only**: Specifies the campaign tracking identifier that will be appended to the URL returned in `destinationUrl` as a query parameter. Campaigns allow you to track how specific links perform, with metrics such as sessions, bookings, and commission. Reports are available via the Viator Partner Platform.\n\n**Note**: If you wish to use a campaign value that includes non-alphanumeric characters (e.g., '+', '-', etc.), you must URL-encode these characters.\n", "required": false, "schema": { "type": "string", "maxLength": 200 } }, "bookingReference": { "name": "booking-reference", "in": "path", "required": true, "schema": { "type": "string" }, "description": "The booking reference code (in format `BR-123456789`), generated by Viator and returned in the `bookingRef` element in the response from [/bookings/book](#operation/bookingsBook) and [/bookings/cart/book](#operation/bookingsCartBook) for which to retrieve amendability status and details\n", "example": "BR-123456789" }, "quoteReference": { "name": "quote-reference", "in": "path", "required": true, "schema": { "type": "string" }, "description": "The booking reference code (in format `QR-4891fddc-7e2e-4203-9517-ec75703daa8a`), generated by Viator and returned in the `quoteRef` element in the response from /amendments/check endpoint.\n", "example": "QR-4891fddc-7e2e-4203-9517-ec75703daa8a" } }, "headers": { "XUniqueId": { "required": true, "schema": { "type": "string", "description": "Tracking identifier for this response. Please include the value of this field when making help requests.\n- **Example**: `\"0A871A13:DE2A_0A8712F9:01BB_5DCCC98C_260DAA:0D5B\"`\n" } }, "RateLimit-Limit": { "required": true, "schema": { "type": "string", "description": "Total limit of requests for this endpoint for a given window. For informational purposes only.\n" } }, "RateLimit-Remaining": { "required": true, "schema": { "type": "string", "description": "Remaining requests for this endpoint for a given window. For informational purposes only\n" } }, "RateLimit-Reset": { "required": true, "schema": { "type": "string", "description": "The fixed window in time, in seconds, which represents when a limit is fully replenished. For informational purposes only.\n" } }, "Retry-After": { "required": true, "schema": { "type": "string", "description": "The fixed window in time, in seconds, which represents when a limit is fully replenished. For informational purposes only.\n" } } }, "schemas": { "Product": { "type": "object", "required": [ "productCode", "status", "createdAt" ], "properties": { "status": { "$ref": "#/components/schemas/ProductStatus" }, "productCode": { "type": "string", "pattern": "(?s).*[\\S].*", "description": "Code that is the unique identifier for this product.\n\n - Example: `\"5657BRIDGECLIMB\"`\n" }, "language": { "type": "string", "description": "Code indicating the language into which the natural-language fields in this response will be translated (if necessary)" }, "createdAt": { "type": "string", "format": "date-time", "description": "Timestamp (UTC) indicating when this product was originally created\n\n - Example: `\"2019-04-03T02:54:29.082753Z\"`\n" }, "lastUpdatedAt": { "type": "string", "format": "date-time", "description": "Timestamp (UTC) indicating the most recent occasion of this product's details being modified\n\n - Example: `\"2020-06-11T09:16:39Z\"`\n" } }, "discriminator": { "propertyName": "status", "mapping": { "ACTIVE": "#/components/schemas/ActiveProduct", "INACTIVE": "#/components/schemas/InactiveProduct" } } }, "TicketType": { "type": "string" }, "TicketsPerBooking": { "type": "string", "description": "Machine-interpretable value indicating whether each traveler needs their own ticket; one of: \n\n - `\"ONE_PER_BOOKING\"` \n - `\"ONE_PER_TRAVELER\"`\n" }, "TicketInfo": { "type": "object", "required": [ "ticketTypes", "ticketsPerBooking" ], "description": "Ticket/voucher details for this product", "properties": { "ticketTypes": { "type": "array", "description": "Array of machine-interpretable values encoding the ticket type for this product; i.e., must be printed (`\"PAPER\"`) or can be displayed on-screen (`\"MOBILE_ONLY\"`); either or both of:\n\n - `\"MOBILE_ONLY\"`\n - `\"PAPER\"`\n", "items": { "$ref": "#/components/schemas/TicketType" } }, "ticketTypeDescription": { "type": "string", "description": "Description of this ticket type\n- **Note**: This field contains natural language suitable for display to the user; content will be translated (if necessary) into the language specified in the Accept-Language header parameter\n" }, "ticketsPerBooking": { "$ref": "#/components/schemas/TicketsPerBooking" }, "ticketsPerBookingDescription": { "type": "string", "description": "Description of this product's tickets-per-booking information \n- **Note**: This field contains natural language suitable for display to the user; content will be translated (if necessary) into the language specified in the Accept-Language header parameter\n" } } }, "PricingType": { "type": "string", "description": "Machine-interpretable value specifying whether the pricing for this product is calculated per individual or per group (unit); one of: \n\n - `\"PER_PERSON\"`\n - `\"UNIT\"`\n" }, "AgeBandType": { "type": "string", "description": "Machine-interpretable value that specifies this age band's type; one of:\n\n - `\"ADULT\"`\n - `\"SENIOR\"`\n - `\"YOUTH\"`\n - `\"CHILD\"`\n - `\"INFANT\"`\n - `\"TRAVELER\"`\n" }, "AgeBand": { "type": "object", "description": "Age range categories for this product's ticketing scheme", "properties": { "ageBand": { "$ref": "#/components/schemas/AgeBandType" }, "startAge": { "type": "integer", "description": "Lower limit (inclusive) of the age range defined by this age band" }, "endAge": { "type": "integer", "description": "Upper limit (inclusive) of the age range defined by this age band" }, "minTravelersPerBooking": { "type": "integer", "description": "Minimum number of travelers in this age band required to book the product" }, "maxTravelersPerBooking": { "type": "integer", "description": "Maximum Number of travelers in this age band allowed to book the product" } } }, "PricingUnitType": { "type": "string", "description": "Machine-interpretable value specifying the type of unit/group when `type` is `\"UNIT\"`; one of:\n\n - `\"BIKE\"`\n - `\"BOAT\"`\n - `\"GROUP\"`\n - `\"PACKAGE\"`\n - `\"ROOM\"`\n - `\"AIRCRAFT\"`\n - `\"VEHICLE\"`\n" }, "PricingInfo": { "type": "object", "required": [ "type", "agebands" ], "description": "Ticket/voucher details for this product", "properties": { "type": { "$ref": "#/components/schemas/PricingType" }, "ageBands": { "type": "array", "description": "Age bands for this product", "items": { "$ref": "#/components/schemas/AgeBand" } }, "unitType": { "$ref": "#/components/schemas/PricingUnitType" } } }, "ImageSourceType": { "type": "string", "description": "Machine-interpretable value indicating the source of this image; one of:\n\n - `\"SUPPLIER_PROVIDED\"`\n - `\"PROFESSIONAL\"`\n" }, "ImageVariant": { "type": "object", "required": [ "height", "width", "url" ], "properties": { "height": { "type": "integer", "description": "Height of this image in pixels\n\n - Example: `'480'`\n" }, "width": { "type": "integer", "description": "Width of this image in pixels\n- Example `'720'`\n" }, "url": { "type": "string", "pattern": "(?s).*[\\S].*", "description": "URL from which this image can be retrieved.\n" } } }, "Image": { "type": "object", "description": "Image information", "required": [ "variants", "isCover" ], "properties": { "imageSource": { "$ref": "#/components/schemas/ImageSourceType" }, "caption": { "type": "string", "description": "Description of this photo\n- **Note**: This field contains natural language suitable for display to the user; content will be translated (if necessary) into the language specified in the Accept-Language header parameter\n" }, "isCover": { "type": "boolean", "description": "`true` if this photo is considered to be the cover (leading) photo for this product from this `imageSource`" }, "variants": { "type": "array", "description": "Dimension/resolution variants available for this image", "items": { "$ref": "#/components/schemas/ImageVariant" } } } }, "StreamingVideoVariant": { "type": "object", "description": "Streaming video variant", "required": [ "protocol", "format", "url" ], "properties": { "protocol": { "type": "string", "description": "The streaming protocol used to deliver the video (e.g. `HLS`). This defines how the playlist and media segments are interpreted by the player.", "example": "HLS" }, "format": { "type": "string", "description": "The playlist or manifest format for the streaming protocol (e.g. `M3U8`).", "example": "M3U8" }, "url": { "type": "string", "description": "The URL of the streaming playlist that serves as the entry point for video playback.", "example": "https://hare-dynamic-media-cdn.tripadvisor.com/media/video-v/31/1f/5b/68/vid-693-rome-2017-vatican_1080.m3u8" } } }, "ProgressiveVideoVariant": { "type": "object", "description": "Progressive video variant", "required": [ "format", "quality", "url" ], "properties": { "format": { "type": "string", "description": "File format of the video (e.g. `MP4`).", "example": "MP4" }, "quality": { "type": "string", "description": "Fixed playback quality or resolution of the video (e.g. `1080`, `720`).", "example": "1080" }, "url": { "type": "string", "description": "Direct URL to the video file.", "example": "https://hare-dynamic-media-cdn.tripadvisor.com/media/video-v/31/1f/5b/68/vid-693-rome-2017-vatican_1080.mp4" } } }, "VideoVariants": { "type": "object", "description": "An object of available video delivery options for the same content, structured by delivery strategy.\nEach variant defines how the video can be retrieved and played, optimized for different playback capabilities and network conditions.\nClients should select the best-supported variant and ignore unknown variant keys for forward compatibility.\n", "required": [ "streaming", "progressive" ], "properties": { "streaming": { "type": "array", "description": "Streaming-optimized video source, intended for real-time playback. \nStreaming variants provide a single entry point that allows the player to automatically select bitrate and resolution based on network conditions and device capabilities.\n", "items": { "$ref": "#/components/schemas/StreamingVideoVariant" } }, "progressive": { "type": "array", "description": "Progressive download video source intended for immediate or offline playback", "items": { "$ref": "#/components/schemas/ProgressiveVideoVariant" } } } }, "Video": { "type": "object", "description": "Product video", "required": [ "variants" ], "properties": { "language": { "type": "string", "description": "The language of the video content or audio track, expressed as a locale or language code (e.g., `\"en\"`, `\"es\"`, `\"fr\"`). \nIt enables localization, filtering, and correct playback selection based on user preferences.\n" }, "variants": { "$ref": "#/components/schemas/VideoVariants" } } }, "LocationReference": { "type": "object", "description": "Details about the location can be retrieved using the [/locations/bulk](#operation/locationsBulk) endpoint\n", "required": [ "ref" ], "properties": { "ref": { "type": "string", "pattern": "(?s).*[\\S].*", "description": "Location identifier code\n\n - **Example**: `\"LOC-c7d4f6ba-3633-4419-87d4-e88bb66206fc\"`\n" } } }, "StartEndPoint": { "type": "object", "required": [ "location" ], "properties": { "location": { "$ref": "#/components/schemas/LocationReference" }, "description": { "type": "string", "description": "Description of this location\n\n - **Note**: This field contains natural language suitable for display to the user; content will be translated (if necessary) into the language specified in the Accept-Language header parameter\n" } } }, "Redemption": { "type": "object", "description": "Redemption point details for this product", "required": [ "redemptionType" ], "properties": { "redemptionType": { "pattern": "(?s).*[\\S].*", "type": "string", "description": "Machine-interpretable value specifying the type of redemption; one of:\n\n - `\"NONE\"` - No redemption point - this is a direct entry ticket\n - `\"ATTRACTION_START_POINT\"` - Tickets can be redeemed at this product's starting point\n - `\"DIFFERENT_LOCATION\"` - Tickets can be redeemed from a location other than the product's starting point\n - `\"INDIRECT_DELIVERY\"` - Tickets will be delivered post-booking by email; or, physically delivered to the customer or the customer's hotel\n" }, "locations": { "type": "array", "description": "Locations for this redemption point\n\nDetails about the location can be retrieved using the [/locations/bulk](#operation/locationsBulk) endpoint\n", "items": { "$ref": "#/components/schemas/LocationReference" } }, "specialInstructions": { "type": "string", "description": "Special instructions pertaining to this redemption point\n\n - **Example**: `\"Bring photo ID for entrance tickets.\"`\n\n - **Note**: This field contains natural language suitable for display to the user; content will be translated (if necessary) into the language specified in the Accept-Language header parameter\n" } } }, "PickupOptionType": { "type": "string", "description": "Machine-interpretable value encoding the type of traveler pickup option; one of:\n\n - `\"PICKUP_EVERYONE\"` (the supplier will pick up all customers from their respective locations)\n - `\"PICKUP_AND_MEET_AT_START_POINT\"` (the supplier will pick up all customers from their respective locations; or, customers can make their own way to the start point)\n - `\"MEET_EVERYONE_AT_START_POINT\"` (all customers must make their own way to and meet at the start point)\n\n**Note**:\n - This value of this field may affect whether or not some booking questions should be answered. See the section on [conditional booking questions](#section/Booking-concepts/Booking-questions) for more information.\n" }, "PickupLocation": { "type": "object", "description": "Pickup or meeting point", "required": [ "location" ], "properties": { "location": { "$ref": "#/components/schemas/LocationReference" }, "pickupType": { "type": "string", "description": "Type of pickup location; one of: \n\n - `\"AIRPORT\"` \u2013 the item is an airport\n - `\"HOTEL\"` \u2013 the item is a hotel\n - `\"PORT\"` \u2013 the item is a sea port\n - `\"LOCATION\"` \u2013 the item is a specific address added by the supplier\n - `\"OTHER\"` \u2013 the item is a pseduo-location; one of: \n + `\"MEET_AT_DEPARTURE_POINT\"`, or \n + `\"CONTACT_SUPPLIER_LATER\"`\n\n**Note**: The pickup type becomes relevent when providing answers to [booking questions](#section/Booking-concepts/Booking-questions) when making a booking.\n" } } }, "TravelerPickup": { "type": "object", "description": "Traveler pickup details for this product", "required": [ "pickupOptionType", "allowCustomTravelerPickup" ], "properties": { "pickupOptionType": { "$ref": "#/components/schemas/PickupOptionType" }, "allowCustomTravelerPickup": { "type": "boolean", "description": "Specifies whether travelers can choose a custom pickup or meeting location for this product\n\n - **Note**: If 'false', answer to `\"PICKUP_POINT\"` booking question in request to [/bookings/book](#operation/bookingsBook), `unit` must be `\"LOCATION_REFERENCE\"` and not `\"FREETEXT\"`\n" }, "locations": { "type": "array", "description": "Pickup and meeting points", "items": { "$ref": "#/components/schemas/PickupLocation" } }, "minutesBeforeDepartureTimeForPickup": { "type": "integer", "description": "How long prior to the product departure time will traveler-pickup occur (in minutes)" }, "additionalInfo": { "type": "string", "description": "Description of additional information regarding traveler pickup\n\n - **Note**: This field contains natural language suitable for display to the user; content will be translated (if necessary) into the language specified in the Accept-Language header parameter\n" } } }, "Logistics": { "type": "object", "description": "Logistics details for this product", "required": [ "redemption" ], "properties": { "start": { "type": "array", "description": "Starting point locations and descriptions", "items": { "$ref": "#/components/schemas/StartEndPoint" } }, "end": { "type": "array", "description": "Ending point locations and descriptions", "items": { "$ref": "#/components/schemas/StartEndPoint" } }, "redemption": { "$ref": "#/components/schemas/Redemption" }, "travelerPickup": { "$ref": "#/components/schemas/TravelerPickup" } } }, "InclusionExclusionItem": { "type": "object", "required": [ "category" ], "properties": { "category": { "type": "string", "pattern": "(?s).*[\\S].*", "description": "Machine-interpretable value encoding the category of this product feature; one of:\n\n - `\"EQUIPMENT\"` \n - `\"FOOD_AND_DRINK\"`\n - `\"TRANSPORT_AMENITIES\"`\n - `\"FEES_AND_TAXES\"`\n - `\"EXCESS_CHARGES\"`\n - `\"OTHER\"`\n\n\n For information on mapping, see: [Appendices \u2013 Inclusions and exclusions](#section/Appendices/Inclusions-and-exclusions)\n" }, "categoryDescription": { "type": "string", "description": "Description of this product feature\n- **Note**: This field contains natural language suitable for display to the user; content will be translated (if necessary) into the language specified in the Accept-Language header parameter\n" }, "type": { "type": "string", "description": "Machine-interpretable value encoding the type/category of this product feature; one of:\n\n - `\"FUEL_SURCHARGE\"`\n - `\"LANDING_AND_FACILITY_FEES\"`\n - `\"AIRPORT_AND_DEPARTURE_TAX\"`\n - `\"GRATUITIES\"`\n - `\"PARKING_FEES\"`\n - `\"ADMISSION_FEES\"`\n - `\"ENTRANCE_FEES\"`\n - `\"GOVERNMENT_FEES\"`\n - `\"USE_OF_BICYCLE\"`\n - `\"USE_OF_SCUBA_EQUIPMENT\"`\n - `\"USE_OF_SNORKELING_EQUIPMENT\"`\n - `\"USE_OF_TRIKKE\"`\n - `\"USE_OF_SEGWAY\"`\n - `\"BOOSTER_SEAT\"`\n - `\"LOCKER\"`\n - `\"BREAKFAST\"`\n - `\"LUNCH\"`\n - `\"DINNER\"`\n - `\"SNACKS\"`\n - `\"BOTTLED_WATER\"`\n - `\"COFFEE_AND_TEA\"`\n - `\"SODA_POP\"`\n - `\"ALCOHOLIC_BEVERAGES\"`\n - `\"MEALS\"`\n - `\"AIR_CONDITIONED_VEHICLE\"`\n - `\"RESTROOM_ON_BOARD\"`\n - `\"PRIVATE_TRANSPORTATION\"`\n - `\"WIFI_ONBOARD\"`\n - `\"PUBLIC_TRANSPORTATION\"`\n - `\"EXCESS_BAGGAGE\"`\n - `\"OVER_WEIGHT_LIMIT\"`\n - `\"OTHER\"`\n\n\n For information on mapping, see: [Appendices \u2013 Inclusions and exclusions](#section/Appendices/Inclusions-and-exclusions)\n" }, "typeDescription": { "type": "string", "description": "Description of this product feature type \n- **Note**: This field contains natural language suitable for display to the user; content will be translated (if necessary) into the language specified in the Accept-Language header parameter\n" }, "otherDescription": { "type": "string", "description": "Description of this product feature when `type` is `\"OTHER\"`\n- **Note**: This field contains natural language suitable for display to the user; content will be translated (if necessary) into the language specified in the Accept-Language header parameter\n" }, "quantity": { "type": "integer", "description": "Quantity of this type of inclusion or exclusion in the case that the product is a multi-day tour or activity. For example, a three-day tour might include three inclusions of type `\"LUNCH\"` - one for each day of the tour.\n\n**Note**: This field will be only be present when `quantity` > 1\n" }, "description": { "type": "string", "description": "Description of the item\n- **Note**: This field contains natural language suitable for display to the user; content will be translated (if necessary) into the language specified in the Accept-Language header parameter\n" } } }, "AdditionalInfo": { "type": "object", "description": "An additional information fact to communicate to travelers regarding this product", "required": [ "type" ], "properties": { "type": { "type": "string", "pattern": "(?s).*[\\S].*", "description": "Machine-interpretable value encoding the type/category of additional information fact; one of (but not limited to):\n\n - `\"OTHER\"`\n - `\"WHEELCHAIR_ACCESSIBLE\"`\n - `\"NOT_WHEELCHAIR_ACCESSIBLE\"`\n - `\"STROLLER_ACCESSIBLE\"`\n - `\"PETS_WELCOME\"`\n - `\"PUBLIC_TRANSPORTATION_NEARBY\"`\n - `\"INFANTS_MUST_SIT_ON_LAPS\"`\n - `\"INFANT_SEATS_AVAILABLE\"`\n - `\"TRANSPORTATION_WHEELCHAIR_ACCESSIBLE\"`\n - `\"SURFACES_WHEELCHAIR_ACCESSIBLE\"`\n - `\"NO_BACK_PROBLEMS\"`\n - `\"NO_PREGNANT\"`\n - `\"NO_HEART_PROBLEMS\"`\n - `\"HEALTH_OTHER\"`\n - `\"PHYSICAL_EASY\"`\n - `\"PHYSICAL_MEDIUM\"`\n - `\"PHYSICAL_HARD\"`\n" }, "description": { "type": "string", "description": "Description of this additional information fact\n- **Example**: \"Operates in all weather conditions (with the exception of extreme weather conditions such as an electrical storm)\"\n- **Note**: This field contains natural language suitable for display to the user; content will be translated (if necessary) into the language specified in the Accept-Language header parameter\n" } } }, "CancellationConditionType": { "type": "string", "description": "Machine-interpretable value encoding the type of cancellation policy for this product; one of:\n\n - `STANDARD` - Products in this category are cancellable up to 24 hours before the travel date (local supplier time) for a full refund. However, a 100% cancellation penalty applies for cancellations submitted less than 24 hours before the start time. Most products (about 85%) fall into this category.\n - `ALL_SALES_FINAL` - Products in this category cannot be cancelled or amended without incurring a 100% penalty; i.e., the refund amount will be zero. Around 10% of products fall into this category.\n - `CUSTOM` - The refund amount for products in this category varies depending on how long before its start time the product is cancelled. Many products on a custom policy are multi-day tours, which require more sophisticated planning on the supplier\u2019s end. Only a small number of products (around 5%) fall into this category.\n\nFor more information, see our in-depth guide about cancellation policies and how to handle cancellations: [All you need to know about cancellation policies](https://partnerresources.viator.com/travel-commerce/merchant/cancellation-policies?source=specs).\n" }, "CancellationCondition": { "type": "object", "description": "Structured description of fees pertaining to cancellations during various time windows.", "required": [ "dayRangeMin", "percentageRefundable" ], "properties": { "dayRangeMin": { "type": "integer", "description": "Number of days prior to the product start time (relative to the time zone in which the product operates) that this policy window ends." }, "dayRangeMax": { "type": "integer", "description": "Number of days prior to the tour start time (relative to the time zone in which the product operates) that this policy window begins. When this field is absent, it signifies negative infinity; i.e., the beginning of time." }, "percentageRefundable": { "type": "integer", "description": "Percentage of total price refundable if a booking for this product is cancelled within the period defined by `dayRangeMin` and `dayRangeMax`." }, "startTimestamp": { "type": "string", "format": "date-time", "description": "Timestamp (UTC) indicating the **beginning** of the period during which this cancellation policy applies; e.g. `2019-09-17T03:20:45.737043Z`.\n- Note: this element will appear in the response from [/bookings/book](#operation/bookingsBook) but will **not** be present in responses from /products/* endpoints.\n" }, "endTimestamp": { "type": "string", "format": "date-time", "description": "Timestamp (UTC) indicating the **end** of the period during which this cancellation policy applies; e.g. `2019-09-17T03:20:45.737043Z`.\n- Note: this element will appear in the response from /bookings/book but will **not** be present in responses from /products/* endpoints.\n" } } }, "CancellationPolicy": { "type": "object", "description": "Cancellation policy details for this product.", "required": [ "type", "cancelIfBadWeather", "cancelIfInsufficientTravelers", "refundEligibility" ], "properties": { "type": { "$ref": "#/components/schemas/CancellationConditionType" }, "description": { "type": "string", "description": "Description of this product's cancellation policy.\n\n**Note**: This field contains natural language suitable for display to the user;\ncontent will be translated (if necessary) into the language specified in the Accept-Language header parameter.\n" }, "cancelIfBadWeather": { "type": "boolean", "description": "**True** if the supplier of this product may cancel on account of weather conditions." }, "cancelIfInsufficientTravelers": { "type": "boolean", "description": "**True** if the supplier of this product can cancel due to too few participants." }, "refundEligibility": { "type": "array", "description": "Cancellation policy definitions for this product.", "items": { "$ref": "#/components/schemas/CancellationCondition" } } } }, "BookingCutoffType": { "type": "string", "description": "Machine-interpretable value encoding the type of booking cutoff; one of:\n\n - `\"OPENING_TIME\"`\n - `\"CLOSING_TIME\"`\n - `\"START_TIME\"`\n - `\"FIXED_TIME\"`\n" }, "ConfirmationType": { "type": "string", "description": "Machine-interpretable value encoding when bookings for this product will be confirmed; one of: \n\n - `\"INSTANT\"` (instantly) \n - `\"MANUAL\"` (requires manual action prior to confirmation)\n - `\"INSTANT_THEN_MANUAL\"` (combination \u2013 subject to cutoff time)\n" }, "BookingConfirmationSettings": { "type": "object", "required": [ "bookingCutoffType", "confirmationType" ], "description": "How this product's bookings are confirmed\n\nFor more information, see [Booking concepts \u2013 Booking cutoff\ntimes](#section/Booking-concepts/Booking-cutoff-times)\n", "properties": { "bookingCutoffType": { "$ref": "#/components/schemas/BookingCutoffType" }, "bookingCutoffInMinutes": { "type": "integer", "description": "Period in minutes before the start time, opening time, closing time, or a fixed time (respectively, depending on the value of `bookingCutoffType`) that this product can be booked" }, "confirmationType": { "$ref": "#/components/schemas/ConfirmationType" }, "manualConfirmationPeriod": { "type": "integer", "description": "When the `confirmationType` is `\"INSTANT_THEN_MANUAL\"`, the value of this field indicates the length of the time period (in minutes) leading up to the product's start time within which bookings for this product require manual confirmation by the supplier before the booking is confirmed. When a booking is made prior to this time (in the time zone in which the product operates), the product behaves as an instant confirmation product." }, "bookingCutoffFixedTime": { "type": "string", "pattern": "^([01]\\d|2[0-3]):[0-5]\\d(:[0-5]\\d(\\.\\d{1,9})?)?$", "description": "Time of day before which this product can be booked (ISO-8601 time stamp, no time zone)\n\n - Example: `'14:30:00.1234'`\n" } } }, "BookingRequirements": { "type": "object", "description": "Passenger type and number requirements for booking", "required": [ "minTravelersPerBooking", "maxTravelersPerBooking", "requiresAdultForBooking" ], "properties": { "minTravelersPerBooking": { "type": "integer", "description": "Minimum number of travelers required to book this product" }, "maxTravelersPerBooking": { "type": "integer", "description": "Maximum number of travelers required to book this product" }, "requiresAdultForBooking": { "type": "boolean", "description": "**True** if at least one passenger from the `\"ADULT\"` or `\"SENIOR\"` age band type must be included to book this product\n" } } }, "LanguageGuide": { "type": "object", "description": "Specifies which language and what type of language guide to include if language guides are available for this product. \n\n**Note:** This element must be included in order to book products that offer language guides.\n", "required": [ "language", "type" ], "properties": { "type": { "type": "string", "pattern": "(?s).*[\\S].*", "description": "Machine-interpretable value encoding the type of language guide; one of:\n\n - `GUIDE` \u2013 human tour guide\n - `AUDIO` \u2013 audio guide\n - `WRITTEN` \u2013 printed guide \n" }, "language": { "type": "string", "pattern": "(?s).*[\\S].*", "description": "Language code of the language for this guide; one of:\n\n - `cmn` - Mandarin\n - `es` - Spanish\n - `en` - English\n - `hi` - Hindi\n - `ar` - Arabic\n - `pt` - Portuguese\n - `bn` - Bengali\n - `ru` - Russian\n - `ja` - Japanese\n - `pa` - Panjabi\n - `de` - German\n - `jv` - Javanese\n - `wuu` - Wu Chinese\n - `ms` - Malay\n - `te` - Telugu\n - `vi` - Vietnamese\n - `ko` - Korean\n - `fr` - French\n - `mr` - Marathi\n - `ta` - Tamil\n - `ur` - Urdu\n - `tr` - Turkish\n - `it` - Italian\n - `yue` - Cantonese\n - `th` - Thai\n - `gu` - Gujarati\n - `mnp` - Chinese Min Bei\n - `fa` - Farsi\n - `pl` - Polish\n - `ps` - Pushto\n - `hsn` - Hunanese\n - `ml` - Malayalam\n - `my` - Burmese\n - `hak` - Hakka Chinese\n - `uk` - Ukrainian\n - `fil` - Filipino\n - `ro` - Romanian\n - `nl` - Dutch\n - `ku` - Kurdish\n - `hr` - Croatian\n - `hu` - Hungarian\n - `el` - Greek\n - `cs` - Czech\n - `sv` - Swedish\n - `fi` - Finnish\n - `sk` - Slovak\n - `sr` - Serbian\n - `no` - Norwegian\n - `he` - Hebrew\n - `da` - Danish\n - `zh_TW` - Chinese Traditional\n - `zh_CN` - Chinese Simplified\n - `id` - Indonesian\n" }, "legacyGuide": { "type": "string", "description": "Supply this value in the `languageOptionCode` element when making a booking request." } } }, "Destination": { "type": "object", "description": "Reference details about a destination associated with this product\n", "required": [ "ref", "primary" ], "properties": { "ref": { "type": "string", "pattern": "(?s).*[\\S].*", "description": "Unique numeric identifier for this destination\n- **Note**: Full details about the destination associated with this reference can be found in the response from the [/destinations](#operation/destinations) endpoint.\n" }, "primary": { "type": "boolean", "description": "**True** if this is the primary destination associated with this product" } } }, "Itinerary": { "type": "object", "description": "Details about the places this product visits\n\nSee: [Key concepts \u2013 Itineraries](#section/Key-concepts/Itineraries) for more information\n", "required": [ "itineraryType", "skipTheLine", "privateTour" ], "properties": { "itineraryType": { "$ref": "#/components/schemas/ItineraryType" }, "skipTheLine": { "type": "boolean", "description": "**True** if a ticket for this product allows the customer to 'skip the line'" }, "privateTour": { "type": "boolean", "description": "**True** if this product is a private tour; i.e., customers other than those in this booking will **not** be present" }, "maxTravelersInSharedTour": { "type": "integer", "description": "Maximum number of travelers that will be present if this product is not a private tour" }, "unstructuredDescription": { "type": "string", "description": "Natural language description of this product's itinerary in the case that `itineraryType` is `\"UNSTRUCTURED\"`. This field can take any value and is therefore not machine interpretable. \n\n - **Note**: This field contains natural language suitable for display to the user; content will be translated (if necessary) into the language specified in the Accept-Language header parameter\n" } }, "discriminator": { "propertyName": "itineraryType", "mapping": { "STANDARD": "#/components/schemas/StandardItinerary", "ACTIVITY": "#/components/schemas/ActivitiesItinerary", "MULTI_DAY_TOUR": "#/components/schemas/MultiDayTourItinerary", "HOP_ON_HOP_OFF": "#/components/schemas/HopOnHopOffItinerary", "UNSTRUCTURED": "#/components/schemas/UnstructuredItinerary" } } }, "ItineraryDuration": { "type": "object", "description": "Duration information for this itinerary\n\n**Note**: Depending on whether this itinerary has a fixed or variable duration, this object will include either the `fixedValueInMinutes` element alone; or, both the `fromMinutes` and `toMinutes` elements, respectively.\n", "properties": { "fixedDurationInMinutes": { "type": "integer", "description": "Duration of this itinerary (in minutes) in the case that it takes a fixed amount of time" }, "variableDurationFromMinutes": { "type": "integer", "description": "Lower limit of the duration of this itinerary (in minutes) in the case that this product's duration varies" }, "variableDurationToMinutes": { "type": "integer", "description": "Upper limit of the duration of this itinerary (in minutes) in the case that this product's duration varies" }, "unstructuredDuration": { "type": "string" } } }, "ItineraryPoi": { "type": "object", "description": "Details about this Point Of Interest (POI)", "required": [ "location" ], "properties": { "location": { "$ref": "#/components/schemas/LocationReference" }, "attractionId": { "type": "integer", "description": "Unique identifier in the Viator taxonomy of this point of interest if it is regarded as an attraction\n- **Note:** Use the `attractionId` value in this response as the request parameter when using the [/attractions/{attraction-id}](#operation/attractions) endpoint get more details about this attraction.\n" } } }, "AdmissionInclusionType": { "type": "string", "description": "Machine-interpretable value encoding whether the admission fee for this place is included; one of:\n\n - `\"YES\"`\n - `\"NO\"`\n - `\"NOT_APPLICABLE\"`\n" }, "StandardItineraryItem": { "type": "object", "required": [ "pointOfInterestLocation", "passByWithoutStopping" ], "properties": { "pointOfInterestLocation": { "$ref": "#/components/schemas/ItineraryPoi" }, "duration": { "$ref": "#/components/schemas/ItineraryDuration" }, "passByWithoutStopping": { "type": "boolean", "description": "**True** if this product only 'passes by' this point of interest (i.e., travelers remain in the vehicle)" }, "admissionIncluded": { "$ref": "#/components/schemas/AdmissionInclusionType" }, "description": { "type": "string", "description": "Description of this itinerary item\n\n - **Note**: This field contains natural language suitable for display to the user; content will be translated (if necessary) into the language specified in the Accept-Language header parameter\"\n" } } }, "StandardItinerary": { "allOf": [ { "$ref": "#/components/schemas/Itinerary" }, { "type": "object", "description": "Itinerary information where this product is a standard tour", "required": [ "itineraryItems" ], "properties": { "duration": { "$ref": "#/components/schemas/ItineraryDuration" }, "itineraryItems": { "type": "array", "description": "Places that this tour visits or passes through", "items": { "$ref": "#/components/schemas/StandardItineraryItem" } } } } ] }, "ActivitiesItineraryItem": { "type": "object", "description": "Location and description of this activity item", "required": [ "location" ], "properties": { "location": { "$ref": "#/components/schemas/LocationReference" }, "description": { "type": "string", "description": "Description of this activity item\n\n - **Note**: This field contains natural language suitable for display to the user; content will be translated (if necessary) into the language specified in the Accept-Language header parameter\n" } } }, "ActivityFoodMenu": { "type": "object", "description": "Food menu details for this activity", "required": [ "course", "dishName" ], "properties": { "course": { "type": "string", "pattern": "(?s).*[\\S].*", "description": "Machine-interpretable value encoding the meal course category for this menu item; one of: \n\n - `\"STARTER\"`\n - `\"MAIN\"`\n - `\"DESSERT\"`\n" }, "dishName": { "type": "string", "pattern": "(?s).*[\\S].*", "description": "Name of this dish\n- **Note**: This field contains natural language suitable for display to the user; content will be translated (if necessary) into the language specified in the Accept-Language header parameter\n" }, "dishDescription": { "type": "string", "description": "Description of this dish\n\n - **Note**: This field contains natural language suitable for display to the user; content will be translated (if necessary) into the language specified in the Accept-Language header parameter\n" } } }, "ActivitiesItinerary": { "allOf": [ { "$ref": "#/components/schemas/Itinerary" }, { "type": "object", "description": "Itinerary information where this product is an activity", "required": [ "duration", "activityInfo" ], "properties": { "duration": { "$ref": "#/components/schemas/ItineraryDuration" }, "pointsOfInterest": { "type": "array", "description": "Places of interest at which this activity occurs", "items": { "$ref": "#/components/schemas/LocationReference" } }, "activityInfo": { "$ref": "#/components/schemas/ActivitiesItineraryItem" }, "foodMenus": { "type": "array", "description": "Food menus for this activity", "items": { "$ref": "#/components/schemas/ActivityFoodMenu" } } } } ] }, "MultiDayTourAccommodation": { "type": "object", "description": "Details for this accommodation venue", "required": [ "description" ], "properties": { "description": { "type": "string", "description": "Description of this accommodation venue\n\n - **Note**: This field contains natural language suitable for display to the user; content will be translated (if necessary) into the language specified in the Accept-Language header parameter\n" }, "location": { "$ref": "#/components/schemas/LocationReference" } } }, "MultiDayTourFoodAndDrinks": { "type": "object", "properties": { "type": { "type": "string", "description": "One of:\n \n - `\"BREAKFAST\"`,\n - `\"LUNCH\"`,\n - `\"DINNER\"`,\n - `\"SNACKS\"`,\n - `\"BOTTLED_WATER\"`,\n - `\"COFFEE_AND_TEA\"`,\n - `\"SODA_POP\"`,\n - `\"ALCOHOLIC_BEVERAGES\"`,\n - `\"REFRESHMENTS\"`'\n" }, "typeDescription": { "type": "string", "description": "Description of the `type` element in this response\n- **Note**: This field contains natural language suitable for display to the user; content will be translated (if necessary) into the language specified in the Accept-Language header parameter\n" }, "description": { "type": "string", "description": "Description of the item\n- **Note**: This field contains natural language suitable for display to the user; content will be translated (if necessary) into the language specified in the Accept-Language header parameter\n" } } }, "MultiDayTourItineraryDay": { "type": "object", "description": "Details about a single day of a multi-day tour", "required": [ "dayNumber", "items" ], "properties": { "title": { "type": "string", "description": "Title of this day of the tour\n\n - **Note**: This field contains natural language suitable for display to the user; content will be translated (if necessary) into the language specified in the Accept-Language header parameter\n" }, "dayNumber": { "type": "integer", "description": "Number of this day" }, "items": { "type": "array", "description": "Places that this product visits or passes through on this day", "items": { "$ref": "#/components/schemas/StandardItineraryItem" } }, "accommodations": { "type": "array", "description": "Accommodation available for this day of this tour", "items": { "$ref": "#/components/schemas/MultiDayTourAccommodation" } }, "foodAndDrinks": { "type": "array", "description": "Food and drinks available for this day of this tour", "items": { "$ref": "#/components/schemas/MultiDayTourFoodAndDrinks" } } } }, "MultiDayTourItinerary": { "allOf": [ { "$ref": "#/components/schemas/Itinerary" }, { "type": "object", "required": [ "days" ], "description": "Itinerary information where this product is a multi-day tour", "properties": { "duration": { "$ref": "#/components/schemas/ItineraryDuration" }, "days": { "type": "array", "description": "Each day of this multi-day tour", "items": { "$ref": "#/components/schemas/MultiDayTourItineraryDay" } } } } ] }, "HopOnHopOffStop": { "type": "object", "description": "Place at which passengers can board or alight the tour vehicle", "required": [ "stopLocation" ], "properties": { "stopLocation": { "$ref": "#/components/schemas/LocationReference" }, "description": { "type": "string", "description": "Description of this stop\n\n - **Note**: This field contains natural language suitable for display to the user; content will be translated (if necessary) into the language specified in the Accept-Language header parameter\n" } } }, "HopOnHopOffItineraryRoute": { "type": "object", "required": [ "duration", "stops", "pointsOfInterest" ], "properties": { "operatingSchedule": { "type": "string", "description": "Description of this product's operating schedule\n\n - **Note**: This field contains natural language suitable for display to the user; content will be translated (if necessary) into the language specified in the Accept-Language header parameter\n" }, "duration": { "$ref": "#/components/schemas/ItineraryDuration" }, "name": { "type": "string", "description": "Name of this route\n\n - **Note**: This field contains natural language suitable for display to the user; content will be translated (if necessary) into the language specified in the Accept-Language header parameter\n" }, "stops": { "type": "array", "description": "Stops on this route", "items": { "$ref": "#/components/schemas/HopOnHopOffStop" } }, "pointsOfInterest": { "type": "array", "description": "Locations of interest relevant to this route", "items": { "$ref": "#/components/schemas/ItineraryPoi" } } } }, "HopOnHopOffItinerary": { "allOf": [ { "$ref": "#/components/schemas/Itinerary" }, { "type": "object", "description": "Itinerary information where this product is a hop-on/hop-off tour", "required": [ "routes" ], "properties": { "duration": { "$ref": "#/components/schemas/ItineraryDuration" }, "routes": { "type": "array", "description": "Routes that this tour takes", "items": { "$ref": "#/components/schemas/HopOnHopOffItineraryRoute" } } } } ] }, "UnstructuredItinerary": { "allOf": [ { "$ref": "#/components/schemas/Itinerary" }, { "type": "object", "properties": { "unstructuredItinerary": { "type": "string", "description": "Description of this product's itinerary\n- **Note**: This field contains natural language suitable for display to the user; content will be translated (if necessary) into the language specified in the Accept-Language header parameter\n" }, "duration": { "$ref": "#/components/schemas/ItineraryDuration" }, "pointOfInterestLocations": { "type": "array", "description": "Places of interest relevant to this itinerary", "items": { "$ref": "#/components/schemas/ItineraryPoi" } } } } ] }, "ItineraryType": { "type": "string", "description": "Machine-interpretable value specifying the type of itinerary available for this product; one of:\n\n - `\"STANDARD\"`\n - `\"ACTIVITY\"`\n - `\"MULTI_DAY_TOUR\"`\n - `\"HOP_ON_HOP_OFF\"`\n - `\"UNSTRUCTURED\"`\n" }, "TravelerPickupProductOption": { "type": "object", "required": [ "pickupOptionType", "allowCustomTravelerPickup" ], "properties": { "pickupOptionType": { "$ref": "#/components/schemas/PickupOptionType" }, "allowCustomTravelerPickup": { "type": "boolean", "description": "Specifies whether travelers can choose a custom pickup or meeting location for this product option\n\n - **Note**: If 'false', answer to `\"PICKUP_POINT\"` booking question in request to [/bookings/book](#operation/bookingsBook), `unit` must be `\"LOCATION_REFERENCE\"` and not `\"FREETEXT\"`\n" }, "locations": { "type": "array", "description": "Pickup and meeting points", "items": { "$ref": "#/components/schemas/PickupLocation" } } } }, "ProductOptionLogistics": { "type": "object", "description": "Logistics details applicable to this specific product option.\n\nWhen present, use this object instead of the product-level `logistics` object for start and end points and traveler pickup behaviour for this product option.\n\nWhen absent, use the product-level `logistics` object.\n", "properties": { "start": { "type": "array", "description": "Starting point locations and descriptions", "items": { "$ref": "#/components/schemas/StartEndPoint" } }, "end": { "type": "array", "description": "Ending point locations and descriptions", "items": { "$ref": "#/components/schemas/StartEndPoint" } }, "travelerPickup": { "description": "Traveler pickup details for this product option", "allOf": [ { "$ref": "#/components/schemas/TravelerPickupProductOption" } ] } } }, "ProductOption": { "type": "object", "description": "Detail about a single product option for this product", "required": [ "title", "productOptionCode" ], "properties": { "productOptionCode": { "type": "string", "pattern": "(?s).*[\\S].*", "description": "Identification code for this product option \n\n - **Example**: `\"BCLM\"`\n\n\nFor more information see: [Key concepts: Product options](#section/Key-concepts/Product-options)\n" }, "description": { "type": "string", "description": "Description of this product option\n\n**Note**: \n- Please note that whether this field contains the phrase \"pickup included\" has implications regarding which booking questions need to be answered when booking this product option. See [Booking concepts \u2013 Conditional booking questions](#section/Booking-concepts/Booking-questions) for more information.\n- This field contains natural language suitable for display to the user; content will be translated (if necessary) into the language specified in the Accept-Language header parameter\n" }, "title": { "type": "string", "pattern": "(?s).*[\\S].*", "description": "Title of this product option\n\n - **Note**: This field contains natural language suitable for display to the user; content will be translated (if necessary) into the language specified in the Accept-Language header parameter\n" }, "logistics": { "description": "Optional logistics for this product option.", "allOf": [ { "$ref": "#/components/schemas/ProductOptionLogistics" } ] }, "languageGuides": { "type": "array", "description": "Language guides available for this product option", "items": { "$ref": "#/components/schemas/LanguageGuide" } } } }, "TranslationDetails": { "type": "object", "description": "Information about whether the text in this response was machine-translated", "required": [ "containsMachineTranslatedText", "translationSource" ], "properties": { "containsMachineTranslatedText": { "type": "boolean", "description": "Indicates whether this product description utilizes text in any of its natural language fields that was automatically machine-translated with no human oversight" }, "translationSource": { "type": "string", "description": "One of:\n- `\"MACHINE\"` \u2013 The text provided by the supplier is in a **different language** and has been **automatically translated** by our systems with no human oversight.\n- `\"ORIGINAL\"` \u2013 The text provided by the supplier is in the language that is standard for their locale.\n- `\"MANUAL\"` \u2013 The text provided by the supplier was in a different language to the standard for their locale; however, whether this is a direct translation of the original text (performed either by machine or human) or whether it is a customised description for speakers of this language is not known. \n" }, "translationAttribution": { "type": "string", "description": "Value specifying the machine-translation service vendor. At present, translation attribution is not a requirement.\n\n - **Example**: `\"GOOGLE\"`\n" } } }, "Supplier": { "type": "object", "description": "Supplier details", "required": [ "name", "reference" ], "properties": { "name": { "type": "string", "pattern": "(?s).*[\\S].*", "description": "Name of the supplier of this product" }, "reference": { "type": "string", "pattern": "(?s).*[\\S].*", "description": "Unique reference code for this supplier" } } }, "ProductReviewCount": { "type": "object", "description": "Breakdown of number of reviews for each rating of this product", "required": [ "rating", "count" ], "properties": { "rating": { "type": "number", "description": "Rating given in the review for this product", "format": "float" }, "count": { "type": "integer", "description": "How many reviews of this product have this rating", "format": "int64" } } }, "ProductReviewSource": { "type": "object", "required": [ "provider", "totalCount" ], "properties": { "provider": { "type": "string", "description": "Source of the review; one of:\n - `\"VIATOR\"`\n - `\"TRIPADVISOR\"`\n" }, "reviewCounts": { "type": "array", "items": { "$ref": "#/components/schemas/ProductReviewCount" }, "description": "Breakdown of ratings and counts for reviews from this source for this product" }, "totalCount": { "type": "integer", "description": "Total number of reviews for all ratings of this product", "format": "int64" }, "averageRating": { "description": "Average rating across all reviews from this source for this product\n\nThis average is equal to the sum of the product of each rating and its count divided by the sum of the counts.\n", "type": "number", "format": "float" } } }, "ProductReviews": { "type": "object", "description": "Summary of reviews and ratings for this product\n\n**Note**: \n\n - Review data is updated daily; i.e., all reviews received on a day will be added and averages re-calculated in a single event.\n - Viator performs checks on reviews - for more information, see [Key concepts - Review authenticity](#section/Key-concepts/Review-authenticity)\n", "required": [ "totalReviews" ], "properties": { "sources": { "type": "array", "items": { "$ref": "#/components/schemas/ProductReviewSource" }, "description": "Breakdown of ratings, counts and the sources of the reviews of this product" }, "reviewCountTotals": { "type": "array", "items": { "$ref": "#/components/schemas/ProductReviewCount" }, "description": "Combined total number of reviews per rating across all sources for this product" }, "totalReviews": { "type": "integer", "description": "Total number of reviews from all sources for this product", "format": "int64" }, "combinedAverageRating": { "description": "Average rating for all reviews from all sources for this product", "type": "number", "format": "float" } } }, "ViatorUniqueContent": { "type": "object", "description": "Product details unique to Viator.com\n\n**Note**: \n - Access to this information is only available if it is enabled for your account. Please speak to your account manager if you would like to take advantage of our unique content.\n - You must ensure that your site is configured such that **no Viator Unique Content is indexed by any search engine**. This is a requirement for site certification. For more information, see [Key concepts \u2013 Protecting unique content](#section/Key-concepts/Protecting-unique-content)\n", "properties": { "title": { "type": "string", "description": "Viator-improved title of this product\n\nThis replaces the supplier-provided-title (given in the `title` element). Improved by Viator, this is a more sales-worthy title for this product.\n\n**Note**: This field contains natural language suitable for display to the user; content will be translated (if necessary) into the language specified in the Accept-Language header parameter.\n", "pattern": "(?s).*[\\S].*" }, "shortDescription": { "type": "string", "description": "Viator-improved description of this product\n\nThis replaces the supplier-provided-description (given in the `description` element) and is used in the 'Overview' section of the product display page on Viator.com.\n\n**Note**: This field contains natural language suitable for display to the user; content will be translated (if necessary) into the language specified in the Accept-Language header parameter.\n", "pattern": "(?s).*[\\S].*" }, "longDescription": { "type": "string", "description": "Viator-improved natural-language description of this product's itinerary\n\nThis text is used in the 'What To Expect' section of the product display page on Viator.com as a preamble to the structured itinerary.\n\n**Note**: This field contains natural language suitable for display to the user; content will be translated (if necessary) into the language specified in the Accept-Language header parameter.\n", "pattern": "(?s).*[\\S].*" }, "insiderTips": { "type": "string", "description": "Viator's 'insider-tips' for this product\n\nThis text is used in the 'Overview \u2013 Why Travelers Chose This Tour' section of the product display page on Viator.com.\n\n**Note**: This field contains natural language suitable for display to the user; content will be translated (if necessary) into the language specified in the Accept-Language header parameter.\n", "pattern": "(?s).*[\\S].*" }, "highlights": { "type": "array", "description": "Viator's 'highlights' for this product\n\nThese text items are used to provide additional bullet-point highlights as part of the 'Overview' section of the product display page on Viator.com.\n\n**Note**: This field contains natural language suitable for display to the user; content will be translated (if necessary) into the language specified in the Accept-Language header parameter.\n", "items": { "type": "string" } } } }, "ActiveProduct": { "allOf": [ { "$ref": "#/components/schemas/Product" }, { "type": "object", "required": [ "ticketInfo", "timeZone", "description", "logistics", "additionalInfo", "cancellationPolicy", "bookingConfirmationSettings", "bookingRequirements", "bookingQuestions", "tags", "destinations", "pricingInfo", "supplier", "reviews" ], "properties": { "title": { "type": "string", "description": "Title of this product \n\n - **Example**: `\"Sydney BridgeClimb\"`\n\n - **Note**: This field contains natural language suitable for display to the user; content will be translated (if necessary) into the language specified in the Accept-Language header parameter \n" }, "ticketInfo": { "$ref": "#/components/schemas/TicketInfo" }, "pricingInfo": { "$ref": "#/components/schemas/PricingInfo" }, "images": { "type": "array", "description": "Images for this product.", "items": { "$ref": "#/components/schemas/Image" } }, "videos": { "type": "array", "description": "Videos for this product.", "items": { "$ref": "#/components/schemas/Video" } }, "logistics": { "$ref": "#/components/schemas/Logistics" }, "timeZone": { "type": "string", "pattern": "(?s).*[\\S].*", "description": "Code for the time zone in which this product operates (IANA TZ database name format)\n\n - **Example**: `'Australia/Sydney'` \n" }, "description": { "type": "string", "pattern": "(?s).*[\\S].*", "description": "Description of this product\n\n - **Example**: \"Climb the Sydney Harbour Bridge with an expert guide for the ultimate Sydney experience...\"\n\n - **Note**: This field contains natural language suitable for display to the user; content will be translated (if necessary) into the language specified in the Accept-Language header parameter \n" }, "inclusions": { "type": "array", "description": "Features that are **included** with this product package\n\n - **Note**: The same inclusion item may appear multiple times in this array. For example, `'Lunch'`. For a 7-day multi-day tour, 'Lunch' appearing seven times indicates that lunch is included on each of the seven days of the tour. This can be displayed as \"Lunch (7)\"\n", "items": { "allOf": [ { "$ref": "#/components/schemas/InclusionExclusionItem" } ] } }, "exclusions": { "type": "array", "description": "Features that are **not included** with this product package", "items": { "allOf": [ { "$ref": "#/components/schemas/InclusionExclusionItem" } ] } }, "additionalInfo": { "type": "array", "description": "Facts necessary to communicate to travelers regarding this product.\n \n **Note**: Items included only if they apply, if they do not apply they will not be included in the response.\n", "items": { "$ref": "#/components/schemas/AdditionalInfo" } }, "cancellationPolicy": { "$ref": "#/components/schemas/CancellationPolicy" }, "bookingConfirmationSettings": { "$ref": "#/components/schemas/BookingConfirmationSettings" }, "bookingRequirements": { "$ref": "#/components/schemas/BookingRequirements" }, "languageGuides": { "type": "array", "description": "Language guides available for this product across all product option codes", "items": { "$ref": "#/components/schemas/LanguageGuide" } }, "bookingQuestions": { "type": "array", "description": "Array of machine-interpretable values specifying the facts that the traveler must provide when booking this product; further details can be retrieved via the [/products/booking-questions](#operation/productsBookingQuestions) endpoint\n", "items": { "type": "string" } }, "tags": { "type": "array", "description": "Array of numeric tag identifiers indicating the product categories into which this product falls\nTo retrieve details about which tags these identifiers refer to, please use the [/products/tags](#operation/productsTags) endpoint.\n", "items": { "type": "integer", "description": "Possible values:\n\n - `\"DATE_OF_BIRTH\"`\n - `\"HEIGHT\"`\n - `\"PASSPORT_EXPIRY\"`\n - `\"PASSPORT_NATIONALITY\"`\n - `\"PASSPORT_PASSPORT_NO\"`\n - `\"PICKUP_POINT\"`\n - `\"TRANSFER_AIR_ARRIVAL_AIRLINE\"`\n - `\"TRANSFER_AIR_ARRIVAL_FLIGHT_NO\"`\n - `\"TRANSFER_AIR_DEPARTURE_AIRLINE\"`\n - `\"TRANSFER_AIR_DEPARTURE_FLIGHT_NO\"`\n - `\"TRANSFER_ARRIVAL_DROP_OFF\"`\n - `\"TRANSFER_ARRIVAL_TIME\"`\n - `\"TRANSFER_DEPARTURE_DATE\"`\n - `\"TRANSFER_DEPARTURE_PICKUP\"`\n - `\"TRANSFER_DEPARTURE_TIME\"`\n - `\"TRANSFER_PORT_ARRIVAL_TIME\"`\n - `\"TRANSFER_PORT_CRUISE_SHIP\"`\n - `\"TRANSFER_PORT_DEPARTURE_TIME\"`\n - `\"TRANSFER_RAIL_ARRIVAL_LINE\"`\n - `\"TRANSFER_RAIL_ARRIVAL_STATION\"`\n - `\"TRANSFER_RAIL_DEPARTURE_LINE\"`\n - `\"TRANSFER_RAIL_DEPARTURE_STATION\"`\n - `\"WEIGHT\"`\n - `\"FULL_NAMES_FIRST\"`\n - `\"FULL_NAMES_LAST\"`\n - `\"DISEMBARKATION_TIME\"`\n - `\"SPECIAL_REQUIREMENTS\"`\n - `\"AGEBAND\"`\n - `\"TRANSFER_ARRIVAL_MODE\"`\n - `\"TRANSFER_DEPARTURE_MODE\"`\n" } }, "destinations": { "type": "array", "description": "Destinations \u2013 i.e., cities, states, countries and regions \u2013 in which this product can be considered to operate", "items": { "$ref": "#/components/schemas/Destination" } }, "itinerary": { "$ref": "#/components/schemas/Itinerary" }, "productOptions": { "type": "array", "description": "Product options (tour grades) available for this product\n\nFor more information see: [Key concepts: Product options](#section/Key-concepts/Product-options)\n", "items": { "$ref": "#/components/schemas/ProductOption" } }, "translationInfo": { "$ref": "#/components/schemas/TranslationDetails" }, "supplier": { "$ref": "#/components/schemas/Supplier" }, "productUrl": { "type": "string", "description": "URL for this product on the viator.com site, where the customer will complete their booking.\n\nThis URL includes all the necessary information for viator to correctly attribute and pay commission for the sale to the referring partner.\n\nIf `campaign-value` is included in the request, this URL will also include the campaign tracking value that you set.\n\nFor more information, see our guide to [Affiliate Attribution](https://partnerresources.viator.com/travel-commerce/affiliate/attribution/) on the Viator Partner Resource Center.\n\n**Note**: \n\n- This element is only returned for affiliate partners. \n- **You must use the full URL and not modify it in any way \u2013 any changes could result in failure to attribute the sale to you, which means you will not be paid a commission for this sale.**\n- For whitelabel partners, the productUrl will dynamically retrieve the partners custom **domain URL**, instead of defaulting to viator.com\n\n**Example format**: https://www.viator.com/tours/Sydney/Sydney-and-Bondi-Hop-on-Hop-off-Tour/d357-5010SYDNEY?mcid=42383&pid=P00045135&medium=api&version=2.0&campaign=example\n" }, "reviews": { "$ref": "#/components/schemas/ProductReviews" }, "viatorUniqueContent": { "$ref": "#/components/schemas/ViatorUniqueContent" } } } ] }, "InactiveProduct": { "allOf": [ { "$ref": "#/components/schemas/Product" } ] }, "ProductStatus": { "type": "string", "description": "Machine-interpretable value indicating this product's current availablility; one of:\n\n - `\"ACTIVE\"` - product is available for sale\n - `\"INACTIVE\"` - product is not available for sale (remainder of object will be empty)\n" }, "ProductsResponse": { "type": "object", "required": [ "products" ], "properties": { "products": { "type": "array", "description": "Products that fall within the search/filter criteria", "items": { "$ref": "#/components/schemas/Product" } }, "nextCursor": { "type": "string", "description": "Pagination cursor pointing to the next page of results\n- Example: `\"MTU3NDA0NDczOQ==\"`\n" } } }, "ErrorResponse": { "type": "object", "properties": { "code": { "type": "string" }, "message": { "type": "string" }, "timestamp": { "type": "string", "format": "date-time", "description": "Timestamp of the request. \n\n**Example**: `\"2019-09-17T03:20:45.737043Z\"`\n" }, "trackingId": { "type": "string", "description": "Tracking identifier for this error response. \n\n**Example**: `\"0A871A13:DE2A_0A8712F9:01BB_5DCCC98C_260DAA:0D5B\"`\n" } } }, "BulkProductRequest": { "type": "object", "required": [ "productCodes" ], "properties": { "productCodes": { "type": "array", "description": "List of product codes for which to retrieve full product details", "maxItems": 500, "items": { "type": "string", "pattern": "(?s).*[\\S].*" } } } }, "TagWithAllLocalizations": { "type": "object", "description": "Category/subcategory tag for this product", "required": [ "tagId" ], "properties": { "tagId": { "type": "integer", "description": "Unique identifier for this tag", "format": "int32" }, "parentTagIds": { "type": "array", "description": "Unique identifiers for parent tags of this tag", "uniqueItems": true, "items": { "type": "integer", "format": "int32" } }, "allNamesByLocale": { "type": "object", "description": "Dictionary of language codes to the description of this tag in that language", "additionalProperties": { "type": "string" } } } }, "TagsResponse": { "type": "object", "description": "Numeric product category/subcategory tag identifiers for this product\n\nTo retrieve details about which tags these identifiers refer to, please use the [/products/tags](#operation/productsTags) endpoint.\n", "required": [ "tags" ], "properties": { "tags": { "type": "array", "items": { "$ref": "#/components/schemas/TagWithAllLocalizations" } } } }, "BookingQuestionFormatType": { "type": "string", "description": "Machine-interpretable value encoding the required unit type for the answer to the booking question; one of:\n\n - `\"STRING\"`\n - `\"NUMBER_AND_UNIT\"`\n - `\"DATE\"`\n - `\"TIME\"`\n - `\"LOCATION_REF_OR_FREE_TEXT\"`\n" }, "BookingQuestionGrouping": { "type": "string", "description": "Machine-interpretable value specifying whether the booking question must be answered individually for each traveler or once per group of travelers in each booking; one of:\n\n - `\"PER_TRAVELER\"`\n - `\"PER_BOOKING\"`\n" }, "BookingQuestion": { "type": "object", "description": "A single booking question", "properties": { "legacyBookingQuestionId": { "type": "integer", "description": "Unique identifier of this booking question for use with legacy (V1) booking endpoint only" }, "id": { "type": "string", "description": "Machine-interpretable value that identifies this booking question; one of:\nPossible values:\n\n - `\"DATE_OF_BIRTH\"`\n - `\"HEIGHT\"`\n - `\"PASSPORT_EXPIRY\"`\n - `\"PASSPORT_NATIONALITY\"`\n - `\"PASSPORT_PASSPORT_NO\"`\n - `\"PICKUP_POINT\"`\n - `\"TRANSFER_AIR_ARRIVAL_AIRLINE\"`\n - `\"TRANSFER_AIR_ARRIVAL_FLIGHT_NO\"`\n - `\"TRANSFER_AIR_DEPARTURE_AIRLINE\"`\n - `\"TRANSFER_AIR_DEPARTURE_FLIGHT_NO\"`\n - `\"TRANSFER_ARRIVAL_DROP_OFF\"`\n - `\"TRANSFER_ARRIVAL_TIME\"`\n - `\"TRANSFER_DEPARTURE_DATE\"`\n - `\"TRANSFER_DEPARTURE_PICKUP\"`\n - `\"TRANSFER_DEPARTURE_TIME\"`\n - `\"TRANSFER_PORT_ARRIVAL_TIME\"`\n - `\"TRANSFER_PORT_CRUISE_SHIP\"`\n - `\"TRANSFER_PORT_DEPARTURE_TIME\"`\n - `\"TRANSFER_RAIL_ARRIVAL_LINE\"`\n - `\"TRANSFER_RAIL_ARRIVAL_STATION\"`\n - `\"TRANSFER_RAIL_DEPARTURE_LINE\"`\n - `\"TRANSFER_RAIL_DEPARTURE_STATION\"`\n - `\"WEIGHT\"`\n - `\"FULL_NAMES_FIRST\"`\n - `\"FULL_NAMES_LAST\"`\n - `\"DISEMBARKATION_TIME\"`\n - `\"SPECIAL_REQUIREMENTS\"`\n - `\"AGEBAND\"`\n - `\"TRANSFER_ARRIVAL_MODE\"`\n - `\"TRANSFER_DEPARTURE_MODE\"`\n" }, "type": { "$ref": "#/components/schemas/BookingQuestionFormatType" }, "group": { "$ref": "#/components/schemas/BookingQuestionGrouping" }, "label": { "type": "string", "description": "Title of this booking question \n\n - **Example**: \"Traveler height in feet or centimeters\"\n\n - **Note**: This field contains natural language suitable for display to the user; content will be translated (if necessary) into the language specified in the Accept-Language header parameter\n" }, "hint": { "type": "string", "description": "Hint (tooltip) for this booking question;\n\n - **Example**: \"E.g. 14 July 2024, 25 May 2026\"\n\n - **Note**: This field contains natural language suitable for display to the user; content will be translated (if necessary) into the language specified in the Accept-Language header parameter\n" }, "units": { "type": "array", "description": "Units that may be used when answering this booking question", "items": { "type": "string", "description": "One of: \n\n - `kg`\n - `lbs`\n - `cm`\n - `ft`\n - `LOCATION_REFERENCE`\n - `FREETEXT`\n" } }, "allowedAnswers": { "type": "array", "description": "List of allowed answers for this booking question if the answer represents a selection from a set of specific answers", "items": { "type": "string" } }, "required": { "type": "string", "example": "MANDATORY", "description": "Key string indicating whether an answer must be provided to this question if it is included in the product's description\n\nOne of: \n\n - `MANDATORY` - it is always mandatory to provide an answer to this question\n - `OPTIONAL` - it is optional to provide an answer to this question\n - `CONDITIONAL` - it is only mandatory to answer this question if it is made so by the presence of a related booking question. See [Key concepts - Booking questions](#section/Booking-concepts/Booking-questions) for more information.\n" }, "maxLength": { "type": "integer", "description": "Maximum allowable input length for the answer, measured in characters (UTF-8)" } } }, "BookingQuestionsResponse": { "type": "object", "description": "Information about this product's booking questions", "required": [ "bookingQuestions" ], "properties": { "bookingQuestions": { "type": "array", "description": "Booking questions for this product", "items": { "$ref": "#/components/schemas/BookingQuestion" } } } }, "ProductSearchFlag": { "type": "string", "description": "One of:\n\n - `\"NEW_ON_VIATOR\"` \u2013 products that have been added to Viator's catalogue within the past 270 days\n - `\"SKIP_THE_LINE\"` \u2013 products that allow participants to attend a location without having to obtain a separate ticket on the occasion itself (`itinerary.skipTheLine` is `true`)\n - `\"PRIVATE_TOUR\"` \u2013 products where only the travelers who have booked the product will be present (`itinerary.privateTour` is `true`)\n - `\"SPECIAL_OFFER\"` \u2013 products that have a pricing discount available (i.e., `summary.fromPriceBeforeDiscount` will be present in the response from [/availability/schedules/{product-code}](#operation/availabilitySchedules))\n - `\"LIKELY_TO_SELL_OUT\"` - popular products that routinely sell out (this is equivalent to filtering by tag `20757`).\n" }, "SearchRatingInfo": { "description": "Only return products that have a rating that is in the range defined here\n", "type": "object", "properties": { "from": { "type": "integer", "minimum": 0, "description": "Only return products with a rating greater than this value\n" }, "to": { "type": "integer", "minimum": 1, "description": "Only return products with a rating less than this value\n" } } }, "SearchDurationInfo": { "description": "Only return products that have a duration that is in the range defined here.\n", "type": "object", "properties": { "from": { "type": "integer", "minimum": 0, "description": "Match products with durations equal or longer than this value.\n" }, "to": { "type": "integer", "minimum": 1, "description": "Match products with durations equal or shorter than this value.\n" } } }, "ProductSearchFiltering": { "type": "object", "required": [ "destination" ], "description": "Only return products that match **all** the criteria provided here.\n", "properties": { "destination": { "type": "string", "description": "Only return products that include the destination indicated by this numeric destination reference (as listed in the `destinations` array in the product content response), regardless of whether it is the product's primary destination.\n\nSee [Resolving references](#section/Workflows/Resolving-references) for more information about destinations.\n\n**Note**: Specifying a 'country' destination will include all 'city' destinations within that country.\n" }, "tags": { "type": "array", "items": { "type": "integer" }, "description": "Only return products that include **all** tag identifiers provided here. Products with child tags of any parent tags specified here will also be returned.\n\nSee the [Resolving references](#section/Workflows/Resolving-references) section and this article: [Viator tags, explained](https://partnerresources.viator.com/travel-commerce/tags?source=specs) for more information about tags.\n" }, "flags": { "type": "array", "items": { "$ref": "#/components/schemas/ProductSearchFlag" }, "description": "Only return products that include **all** of the given attributes, which may include any of:\n\n - `\"NEW_ON_VIATOR\"` - products that have been added to Viator's catalogue within the past 270 days\n - `\"FREE_CANCELLATION\"` \u2013 products that have a cancellation policy that allows for free cancellation (i.e., excludes products for which `cancellationPolicy.type` is `\"ALL_SALES_FINAL\"` in the product content response)\n - `\"SKIP_THE_LINE\"` \u2013 products that allow participants to attend a location without having to obtain a separate ticket on the occasion itself (`itinerary.skipTheLine` is `true`)\n - `\"PRIVATE_TOUR\"` \u2013 products where only the travelers who have booked the product will be present (`itinerary.privateTour` is `true`)\n - `\"SPECIAL_OFFER\"` \u2013 products that have a pricing discount available (i.e., `summary.fromPriceBeforeDiscount` will be present in the response from [/availability/schedules/{product-code}](#operation/availabilitySchedules))\n - `\"LIKELY_TO_SELL_OUT\"` - popular products that routinely sell out (this is equivalent to filtering by tag `20757`).\n" }, "confirmationType": { "type": "string", "description": "Only return products with this confirmation type; one of:\n \n - `\"INSTANT\"` (instant confirmation)\n" }, "rating": { "$ref": "#/components/schemas/SearchRatingInfo" }, "durationInMinutes": { "$ref": "#/components/schemas/SearchDurationInfo" }, "includeAutomaticTranslations": { "type": "boolean", "description": "Specifies whether results with machine translated content should be included or not", "default": true }, "attractionId": { "type": "integer", "description": "Only return products that are associated with the **attraction** referenced by this unique numeric identifier, which is the value of the `seoId` property in the response from the [/attractions/search](#operation/attractionsSearch) endpoint.\n" }, "lowestPrice": { "type": "number", "minimum": 0, "description": "Only return products that have a `fromPrice` that is higher than or equal to this price. If a date range is specified using `startDate` and `endDate`, pricing for the product only during this period will be considered." }, "highestPrice": { "type": "number", "minimum": 0, "exclusiveMinimum": true, "description": "Only return products that have a `fromPrice` that is lower than or equal to this price. If a date range is specified using `startDate` and `endDate`, pricing for the product only during this period will be considered." }, "startDate": { "type": "string", "format": "date", "description": "Only return products that are available during a period of time starting from this date.\n\n- **Format**: ISO-8601 (YYYY-MM-DD) in the time-zone of supplier\n- **Default**: date on which the request is made in the time-zone of supplier\n- **Note**: `startDate` cannot be in the past\n" }, "endDate": { "type": "string", "format": "date", "description": "Only return products that are available during a period of time ending on this date. \n\n- **Format**: ISO-8601 (YYYY-MM-DD) in time-zone of supplier\n- **Default**: one year in advance of the date on which the request is made in the time-zone of supplier\n- **Note**:\n - `endDate` cannot be in the past and is limited to one year from the date on which the request is made. \n - Multi-day tours that conclude after this date will still appear in the results, so long as the tour commences prior to this date, even if they conclude on a date that is further into the future than `endDate`. If you wish to exclude such products from the search results, the following options are available:\n 1. Exclude all multi-day tours from the search results by filtering out any items that contain `\"itineraryType\": \"MULTI_DAY_TOUR\"`\n 2. Implement your own logic to calculate whether a product concludes after the `endDate` specified in the request by requesting full product details for the multi-day tour using [/products/{product-code}](#operation/products), determining the duration of the tour in days by the length of the `itinerary.days[]` array, and filtering this product from the search results in the event that (`startDate` + duration) occurs after `endDate`.\n" } } }, "ProductSearchSorting": { "type": "object", "description": "How the search results will be sorted", "properties": { "sort": { "type": "string", "description": "Method by which product search results will be sorted; one of:\n \n - `\"DEFAULT\"`: the default sort, where 'featured' products appear first (**Note**: What Viator gets paid impacts this sort order). Custom ordering is not supported (therefore, the `order` field should be omitted when this sort order is chosen)\n - `\"PRICE\"`: products are sorted by `fromPrice`, with ordering based on the value of the `order` field (default is `\"ASCENDING\"` if the `order` field is omitted)\n - `\"TRAVELER_RATING\"`: Sort products by their average rating\n - **Note**: This method can only be used with an `order` of `\"DESCENDING\"`\n - `\"ITINERARY_DURATION\"` - Sort by how long the tour or activity lasts (in minutes)\n - `\"DATE_ADDED\"` - Sort according to when the product was added to the viator catalogue\n" }, "order": { "type": "string", "description": "Ordering of product search results when `sort` is `\"PRICE\"`\n\nOne of: \n - `\"ASCENDING\"`\n - `\"DESCENDING\"`\n" } } }, "ProductSearchPagination": { "type": "object", "description": "Pagination details specifying which search results to return based on start position and item count", "properties": { "start": { "type": "integer", "minimum": 1, "default": 1, "description": "Position of first filtered and ordered search result to be included in the response (1-based)" }, "count": { "type": "integer", "minimum": 1, "default": 10, "maximum": 50, "description": "Number of filtered and ordered search results to be returned in the response" } } }, "ProductSearchRequest": { "type": "object", "required": [ "filtering", "currency" ], "properties": { "filtering": { "$ref": "#/components/schemas/ProductSearchFiltering" }, "sorting": { "$ref": "#/components/schemas/ProductSearchSorting" }, "pagination": { "$ref": "#/components/schemas/ProductSearchPagination" }, "currency": { "type": "string", "format": "currency", "description": "Currency code for all prices provided in the request; and, the currency in which all pricing will be denominated in the response.\n\nOne of: \n\n - `\"AED\"`\n - `\"ARS\"`\n - `\"AUD\"`\n - `\"BRL\"`\n - `\"CAD\"`\n - `\"CHF\"`\n - `\"CLP\"`\n - `\"CNY\"`\n - `\"COP\"`\n - `\"DKK\"`\n - `\"EUR\"`\n - `\"FJD\"`\n - `\"GBP\"`\n - `\"HKD\"`\n - `\"IDR\"`\n - `\"ILS\"`\n - `\"INR\"`\n - `\"ISK\"`\n - `\"JPY\"`\n - `\"KRW\"`\n - `\"MXN\"`\n - `\"MYR\"`\n - `\"NOK\"`\n - `\"NZD\"`\n - `\"PEN\"`\n - `\"PHP\"`\n - `\"PLN\"`\n - `\"RUB\"`\n - `\"SEK\"`\n - `\"SGD\"`\n - `\"THB\"`\n - `\"TRY\"`\n - `\"TWD\"`\n - `\"USD\"`\n - `\"VND\"`\n - `\"ZAR\"`\n\n \n**Note**: The currency you display to your users may not be the currency they see when they click through to the viator.com site. Instead, they will see the default currency for the locale from which they are accessing the site.\n" } } }, "AvailabilityScheduleSummary": { "type": "object", "description": "Information about the lowest price available for this product\n\n**Note**: The pricing information given here is based on the recommended retail price (RRP). While affiliate partners must sell at this price, merchant partners set their own prices according to their own margins and booking fees; therefore, merchant partners must calculate their own from-price for display, rather than using these values, unless they have elected to sell at the RRP.\n", "required": [ "fromPrice" ], "properties": { "fromPrice": { "type": "number", "description": "Lowest per-person retail price for this product, calculated according to the price for a group of at least two standard participants (or, the smallest bookable group if more than two participants are required) for a period not exceeding 384 days into the future.\nThis value can be used to advertise a 'from'-price; e.g., \"From $99 per person\"\n" }, "fromPriceBeforeDiscount": { "type": "number", "description": "If the product is presently discounted, this field shows what the value of `fromPrice` would be if no discount had been applied; otherwise, it will be absent.\n" } } }, "AvailabilityScheduleExtraChargesSummary": { "type": "object", "description": "Information about the lowest price with extra charges available for this product", "required": [ "fromPrice", "extraCharges" ], "properties": { "fromPrice": { "type": "number", "description": "`fromPrice` value including `extraCharges` value to be paid in destination by the traveler based on their age, day of the week, time of the year or any other criteria defined by the supplier.\nThis value will only be returned if the product has Extra Charges in at least one `bookableItem`.\n" }, "fromPriceBeforeDiscount": { "type": "number", "description": "If the product is presently discounted, this field shows what the value of `fromPrice` would be if no discount had been applied; otherwise, it will be absent.\n" }, "extraCharges": { "type": "number", "description": "The highest amount that a traveler could be asked to pay in-destination based on their age, day of the week, time of the year or any other criteria defined by the supplier for the `bookableItem` used to calculate the starting price.\n" } } }, "ProductSearchPricing": { "type": "object", "description": "High-level summary of product prices\n \n - **Note**: This price may not be available during the date range specified in the `filtering` section of the request\n", "required": [ "fromPrice", "currency" ], "properties": { "summary": { "allOf": [ { "type": "object", "properties": { "fromPriceBeforeDiscount": { "type": "number", "description": "If the product is presently discounted, this field shows what the value of `fromPrice` would be if no discount had been applied; otherwise, it will be equal to `fromPrice`." } } }, { "$ref": "#/components/schemas/AvailabilityScheduleSummary" } ] }, "currency": { "type": "string", "description": "Currency code for the currency in which the prices in `summary` are denominated" }, "partnerNetFromPrice": { "type": "number", "description": "Lowest per-person price for this product expressed as the amount (excluding the booking fee)that merchant partners using the markup/booking-fee pricing scheme would be invoiced. \n\nThis value is calculated according to the price for a group of at least two standard participants (or, the smallest bookable group if more than two participants are required) for a period not exceeding 384 days into the future.\n\n**Note**: This property is only relevant to you and will only be returned if you are a markup merchant partner (i.e., you are a merchant and are not using the commission-based pricing model).\n" }, "extraChargesSummary": { "$ref": "#/components/schemas/AvailabilityScheduleExtraChargesSummary" } } }, "ProductSummary": { "type": "object", "required": [ "productCode", "destinations", "tags", "flags" ], "properties": { "productCode": { "type": "string", "description": "Code that is the unique identifier for this product.\n\n- Example: `\"5657BRIDGECLIMB\"`\n" }, "title": { "type": "string", "description": "Natural-language title of this product\n\n - **Example**: `\"Sydney BridgeClimb\"`\n - **Note**: This field contains natural language suitable for display to the user; content will be translated (if necessary) into the language specified in the Accept-Language header parameter\n" }, "description": { "type": "string", "description": "Description of this product\n\n- **Example**: \"Climb the Sydney Harbour Bridge with an expert guide for the ultimate Sydney experience...\"\n- **Note**: This field contains natural language suitable for display to the user; content will be translated (if necessary) into the language specified in the Accept-Language header parameter\n" }, "images": { "type": "array", "items": { "$ref": "#/components/schemas/Image" }, "description": "Images for this product." }, "videos": { "type": "array", "items": { "$ref": "#/components/schemas/Video" }, "description": "Videos for this product." }, "reviews": { "$ref": "#/components/schemas/ProductReviews" }, "duration": { "$ref": "#/components/schemas/ItineraryDuration" }, "pricing": { "$ref": "#/components/schemas/ProductSearchPricing" }, "productUrl": { "type": "string", "description": "URL for this product on the viator.com site, where the customer will complete their booking.\n\nThis URL includes all the necessary information for viator to correctly attribute and pay commission for the sale to the referring partner.\n\nIf `campaign-value` is included in the request, this URL will also include the campaign tracking value that you set.\n\nFor more information, see our guide to [Affiliate Attribution](https://partnerresources.viator.com/travel-commerce/affiliate/attribution/) on the Viator Partner Resource Center.\n\n**Note**: \n\n- This element is only returned for affiliate partners. \n- **You must use the full URL and not modify it in any way \u2013 any changes could result in failure to attribute the sale to you, which means you will not be paid a commission for this sale.**\n- For whitelabel partners, the productUrl will dynamically retrieve the partners custom **domain URL**, instead of defaulting to viator.com\n\n**Example format**: https://www.viator.com/tours/Sydney/Sydney-and-Bondi-Hop-on-Hop-off-Tour/d357-5010SYDNEY?mcid=42383&pid=P00045135&medium=api&version=2.0&campaign=example\n" }, "destinations": { "type": "array", "items": { "$ref": "#/components/schemas/Destination" }, "description": "Destinations in which this product operates.\n\n- **Note**: At present, only the primary destination ID is returned; i.e., the item in the `destinations` array of the product content response for which `primary` is `true`. Therefore, `primary` will always be `true` in this response. Furthermore, the destination given here may differ from the destination specified in the request.\n" }, "tags": { "type": "array", "items": { "type": "integer" }, "description": "Array of numeric tag identifiers indicating the product categories into which this product falls \n\nTo retrieve details about which tags these identifiers refer to, please use the [/products/tags](#operation/productsTags) endpoint.\n\nSee the [Resolving references](#section/Workflows/Resolving-references) section and this article: [Viator tags, explained](https://partnerresources.viator.com/travel-commerce/tags?source=specs) for more information about tags.\n" }, "flags": { "type": "array", "items": { "$ref": "#/components/schemas/ProductSearchFlag" }, "description": "List of product attribute flags specified in the request\n\nMay include any of:\n\n - `\"NEW_ON_VIATOR\"` - products that have been added to Viator's catalogue within the past 270 days\n - `\"FREE_CANCELLATION\"` \u2013 products that have a cancellation policy that allows for free cancellation (i.e., excludes products for which `cancellationPolicy.type` is `\"ALL_SALES_FINAL\"` in the product content response)\n - `\"SKIP_THE_LINE\"` \u2013 products that allow participants to attend a location without having to obtain a separate ticket on the occasion itself (`itinerary.skipTheLine` is `true`)\n - `\"PRIVATE_TOUR\"` \u2013 products where only the travelers who have booked the product will be present (`itinerary.privateTour` is `true`)\n - `\"SPECIAL_OFFER\"` \u2013 products that have a pricing discount available (i.e., `summary.fromPriceBeforeDiscount` will be present in the response from [/availability/schedules/{product-code}](#operation/availabilitySchedules))\n - `\"LIKELY_TO_SELL_OUT\"` - popular products that routinely sell out (this is equivalent to filtering by tag `20757`).\n" }, "confirmationType": { "$ref": "#/components/schemas/ConfirmationType" }, "itineraryType": { "$ref": "#/components/schemas/ItineraryType" }, "translationInfo": { "$ref": "#/components/schemas/TranslationDetails" } } }, "ProductSearchResponse": { "type": "object", "required": [ "products", "total" ], "properties": { "products": { "type": "array", "items": { "$ref": "#/components/schemas/ProductSummary" }, "description": "List of products matching the filtering criteria, sorted and paginated as specified in the request" }, "totalCount": { "type": "integer", "description": "Total number of products matching the filtering criteria \u2013 these may be accessed via multiple calls to this service using the pagination feature." } } }, "BulkProductRecommendationsRequest": { "type": "object", "required": [ "productCodes", "recommendationTypes" ], "properties": { "productCodes": { "type": "array", "items": { "type": "string", "pattern": "(?s).*[\\S].*" }, "description": "The unique identifier of the product(s) for which recommendations are being retrieved.", "maxItems": 50 }, "recommendationTypes": { "type": "array", "items": { "type": "string" }, "description": "Types of recommendation. One of:\n- `IS_SIMILAR_TO`: returns products that are deemed similar to the requested product based on machine learning algorithms, considering attributes such as location, category, itinerary, price range and others.\n\nNote: New recommendation types can be added over time, allowing flexibility for different use cases.\n" } } }, "ProductRecommendation": { "type": "object", "required": [ "productCode", "recommendations" ], "properties": { "productCode": { "type": "string", "pattern": "(?s).*[\\S].*", "description": "The unique identifier of the product for which recommendations are being retrieved." }, "recommendations": { "type": "object", "description": "A map of recommended product lists, categorized by different recommendation types. \nThe keys being the recommendation type and the values being the list of recommended product codes.\n", "additionalProperties": { "type": "array", "items": { "type": "string" }, "description": "Possible recommendation types:\n - `IS_SIMILAR_TO`: A ranked list of product codes that are considered most similar to the requested product.\n" } } } }, "FreetextSearchProductFiltering": { "type": "object", "required": [ "searchTerm" ], "description": "Criteria by which to filter product search results (i.e., when `searchTypes` includes `\"PRODUCTS\"`)\n", "properties": { "destination": { "type": "string", "description": "Match results that are assigned this destination.\nOnly Viator destination integer ID is accepted for now.\n" }, "dateRange": { "type": "object", "description": "Match products that are available to be booked on one or more of the days included in this date range\n", "properties": { "from": { "type": "string", "format": "date", "description": "Match results that are available from `from` to `to`.\n\n- **Format**: ISO-8601 (YYYY-MM-DD) in time-zone of supplier and cannot be in the past.\n", "example": "2020-05-29" }, "to": { "type": "string", "format": "date", "description": "Match results that are available from `from` to `to`.\n\n- **Format**: ISO-8601 (YYYY-MM-DD) in time-zone of supplier\n- **Note**:\n - `to` cannot be in the past and is limited to one year from the date on which the request is made. \n - Multi-day tours that conclude after this date will still appear in the results, so long as the tour commences prior to this date, even if they conclude on a date that is further into the future than `to`. If you wish to exclude such products from the search results, the following options are available:\n 1. Exclude all multi-day tours from the search results by filtering out any items that contain `\"itineraryType\": \"MULTI_DAY_TOUR\"`\n 2. Implement your own logic to calculate whether a product concludes after the `endDate` specified in the request by requesting full product details for the multi-day tour using [/products/{product-code}](#operation/products), determining the duration of the tour in days by the length of the `itinerary.days[]` array, and filtering this product from the search results in the event that (`from` + duration) occurs after `to`.\n", "example": "2020-06-29" } } }, "price": { "type": "object", "description": "Match products which have a 'from price' within the range indicated here\n", "properties": { "from": { "type": "number", "minimum": 0, "description": "Match results that with price within `from` to `to`\n" }, "to": { "type": "number", "minimum": 0.01, "description": "Match results that with price within `from` to `to`\n" } } }, "rating": { "type": "object", "description": "Match products that have an average rating within the range indicated here\n", "properties": { "from": { "type": "number", "minimum": 0, "description": "Match results that with rating within `from` to `to`\n" }, "to": { "type": "number", "minimum": 0.01, "description": "Match results that with rating within `from` to `to`\n" } } }, "durationInMinutes": { "type": "object", "description": "Match products that have a duration (length of time the experience lasts) within the range indicated here\n", "properties": { "from": { "type": "integer", "minimum": 0, "description": "Match results that with duration within `from` to `to`\n" }, "to": { "type": "integer", "minimum": 1, "description": "Match results that with duration within `from` to `to`\n" } } }, "tags": { "type": "array", "items": { "type": "integer" }, "description": "Only return products that include **all** tag identifiers provided here. Products with child tags of any parent tags specified here will also be returned.\n\nSee the [Resolving references](#section/Workflows/Resolving-references) section and this article: [Viator tags, explained](https://partnerresources.viator.com/travel-commerce/tags?source=specs) for more information about tags.\n" }, "flags": { "type": "array", "description": "Match products that have the following attributes:\n\nAny of:\n\n - `\"NEW_ON_VIATOR\"` \u2013 products that have been added to Viator's catalogue within the past 270 days\n - `\"SKIP_THE_LINE\"` \u2013 products that allow participants to attend a location without having to obtain a separate ticket on the occasion itself (`itinerary.skipTheLine` is `true`)\n - `\"PRIVATE_TOUR\"` \u2013 products where only the travelers who have booked the product will be present (`itinerary.privateTour` is `true`)\n - `\"LIKELY_TO_SELL_OUT\"` - popular products that routinely sell out (this is equivalent to filtering by tag `20757`).\n", "items": { "$ref": "#/components/schemas/ProductSearchFlag" } }, "includeAutomaticTranslations": { "type": "boolean", "description": "Specifies whether proucts with automatically machine-translated content (no human oversight) should be included in the results\n", "default": true } } }, "FreetextSearchProductSorting": { "type": "object", "description": "Specify the sorting method for product results (i.e., when `searchTypes` includes `\"PRODUCTS\"`)\n", "properties": { "sort": { "type": "string", "description": "The method of sorting product search results. One of:\n- `\"DEFAULT\"`: sorts based on search term to result relevancy in descending order.\n - **Note**: What Viator gets paid impacts this sort order). Custom ordering is not supported; therefore, the `order` field should be omitted when this sort order is chosen.\n- `\"ITINERARY_DURATION\"`: sort by `duration`. Allow custom order.\n- `\"PRICE\"`: sort by `fromPrice`. Allow custom order.\n- `\"REVIEW_AVG_RATING\"`: sort by average review ratings in descending order . Custom order is not allowed.\n- `\"DATE_ADDED\"`: sort according to when the product was added to the viator catalogue. Allow custom order.\n" }, "order": { "type": "string", "description": "The direction of sorting search results.\nOne of: \n- `\"ASCENDING\"`\n- `\"DESCENDING\"`\n" } } }, "SearchType": { "type": "object", "properties": { "searchType": { "type": "string", "description": "Specifies a domain within which the search should be performed\n\nOne of:\n- `\"ATTRACTIONS\"`\n- `\"DESTINATIONS\"`\n- `\"PRODUCTS\"`\n" }, "pagination": { "$ref": "#/components/schemas/ProductSearchPagination" } } }, "FreetextSearchRequest": { "type": "object", "required": [ "searchTerm", "currency", "searchTypes" ], "properties": { "searchTerm": { "type": "string", "description": "Return results that contain this free-text search term\n" }, "productFiltering": { "$ref": "#/components/schemas/FreetextSearchProductFiltering" }, "productSorting": { "$ref": "#/components/schemas/FreetextSearchProductSorting" }, "searchTypes": { "type": "array", "description": "Specifies the domain(s) in which to search for the `searchTerm` and the respective pagination details for each type of search results\n", "minItems": 1, "maxItems": 3, "items": { "$ref": "#/components/schemas/SearchType" } }, "currency": { "type": "string", "format": "currency", "description": "Currency code of price range in request filter and the prices in response.\n\nOne of: `\"AED\"`, `\"ARS\"`, `\"AUD\"`, `\"BRL\"`, `\"CAD\"`, `\"CHF\"`, `\"CLP\"`, `\"CNY\"`, `\"COP\"`, `\"DKK\"`, `\"EUR\"`, `\"FJD\"`, `\"GBP\"`, `\"HKD\"`, `\"IDR\"`, `\"ILS\"`, `\"INR\"`, `\"ISK\"`, `\"JPY\"`, `\"KRW\"`, `\"MXN\"`, `\"MYR\"`, `\"NOK\"`, `\"NZD\"`, `\"PEN\"`, `\"PHP\"`, `\"PLN\"`, `\"RUB\"`, `\"SEK\"`, `\"SGD\"`, `\"THB\"`, `\"TRY\"`, `\"TWD\"`, `\"USD\"`, `\"VND\"`, `\"ZAR\"`.\n" } } }, "DestinationSearchResult": { "type": "object", "properties": { "id": { "type": "integer", "description": "**unique numeric identifier** of the destination\n - use this value as the `destination` input field for other Viator API services.\n", "format": "int64" }, "name": { "type": "string", "description": "**natural-language name** of the destination\n" }, "parentDestinationId": { "type": "integer", "format": "int64", "description": "**unique numeric identifier** of the destination's parent destination\n" }, "parentDestinationName": { "type": "string", "description": "**natural-language name** of the destination's parent destination\n" }, "translationInfo": { "$ref": "#/components/schemas/TranslationDetails" }, "url": { "type": "string", "description": "URL of destination\n" } } }, "ProductReviewsSummaryCount": { "type": "object", "required": [ "rating", "count" ], "properties": { "rating": { "type": "number", "description": "This object refers to reviews with this star-rating", "format": "float" }, "count": { "type": "integer", "description": "Number of reviews for this product with a star-rating of `rating`", "format": "int64" } } }, "ProductReviewsSummarySource": { "type": "object", "required": [ "provider", "totalCount" ], "properties": { "provider": { "type": "string", "description": "Provider for this set of reviews; one of:\n- `\"VIATOR\"`\n- `\"TRIPADVISOR\"`\n" }, "reviewCounts": { "type": "array", "description": "Breakdown of number of reviews per rating for reviews sourced from this provider", "items": { "$ref": "#/components/schemas/ProductReviewsSummaryCount" } }, "totalCount": { "type": "integer", "format": "int64", "description": "Total number of reviews for this product sourced from this provider" } } }, "ProductReviewsSummary": { "type": "object", "description": "Summary of reviews and ratings for this attraction\n\n**Note**:\n - Review data is updated daily; i.e., all reviews received on a day will be added and averages re-calculated in a single event.\n - Viator performs checks on reviews - for more information, see [Review authenticity](#section/Key-concepts/Review-authenticity)\n", "required": [ "totalReviews" ], "properties": { "sources": { "type": "array", "description": "Breakdown of review summaries for each review source", "items": { "$ref": "#/components/schemas/ProductReviewsSummarySource" } }, "reviewCountTotals": { "type": "array", "description": "Breakdown of number of reviews per rating for all reviews of this product", "items": { "$ref": "#/components/schemas/ProductReviewsSummaryCount" } }, "totalReviews": { "description": "Total number of reviews available for this product from all sources", "type": "integer", "format": "int64" }, "combinedAverageRating": { "description": "Combined average rating for this product across all reviews from all sources", "type": "number", "format": "float" } } }, "AttractionResult": { "type": "object", "properties": { "id": { "type": "integer", "description": "unique numeric identifier of the attraction" }, "name": { "type": "string", "description": "natural-language title of the attraction\n\n**Note**: This field contains natural language suitable for display to the user; content will be translated (if necessary) into the language specified in the Accept-Language header parameter\n" }, "primaryDestinationId": { "type": "integer", "description": "unique numeric identifier of this attraction's primary destination" }, "description": { "type": "string", "description": "natural-language descriptive text for this attraction\n\n**Note**: This field contains natural language suitable for display to the user; content will be translated (if necessary) into the language specified in the Accept-Language header parameter\n - Access to this information is only available if it is enabled for your account. Please [reach out to our support team](#section/Support) if you would like to take advantage of our unique content.\n - You must ensure that your site is configured such that **no Viator Unique Content is indexed by any search engine**. This is a requirement for site certification. For more information, see [Key concepts \u2013 Protecting unique content](#section/Key-concepts/Protecting-unique-content)\n" }, "destinationName": { "type": "string", "description": "natural-language name of the primary destination associated with this attraction\n\n**Note**: This field contains natural language suitable for display to the user; content will be translated (if necessary) into the language specified in the Accept-Language header parameter\n" }, "productsCount": { "type": "integer", "description": "Number of products associated with this attraction" }, "translationInfo": { "$ref": "#/components/schemas/TranslationDetails" }, "reviews": { "$ref": "#/components/schemas/ProductReviewsSummary" }, "images": { "type": "array", "items": { "$ref": "#/components/schemas/Image" } } } }, "FreetextSearchResponse": { "type": "object", "properties": { "destinations": { "type": "object", "description": "Destinations that include the `searchTerm` when `\"DESTINATIONS\"` results are requested via `searchTypes`\n", "properties": { "totalCount": { "type": "integer", "format": "int64", "description": "Total number of destinations that may be returned if pagination is not specified in the request." }, "results": { "type": "array", "description": "List of matching destinations\n", "items": { "$ref": "#/components/schemas/DestinationSearchResult" } } } }, "attractions": { "type": "object", "description": "Attractions that include the `searchTerm` when `\"ATTRACTIONS\"` results are requested via `searchTypes`\n", "properties": { "totalCount": { "type": "integer", "format": "int64", "description": "Total number of attractions that may be returned if pagination is not specified in the request." }, "results": { "type": "array", "description": "List of matching attractions\n", "items": { "$ref": "#/components/schemas/AttractionResult" } } } }, "products": { "type": "object", "description": "Products that include the `searchTerm` when `\"PRODUCTS\"` results are requested via `searchTypes`\n", "properties": { "totalCount": { "type": "integer", "format": "int64", "description": "Total number of products that may be returned if pagination is not specified in the request." }, "results": { "description": "List of matching products\n", "type": "array", "items": { "$ref": "#/components/schemas/ProductSummary" } } } } } }, "PaxMixItem": { "type": "object", "required": [ "ageBand", "numberOfTravelers" ], "properties": { "ageBand": { "type": "string", "pattern": "(?s).*[\\S].*", "description": "Machine-interpretable value indicating the age-band that this/these\ntraveler(s) fall into; one of:\n\n - `\"ADULT\"`\n - `\"SENIOR\"`\n - `\"YOUTH\"`\n - `\"CHILD\"`\n - `\"INFANT\"`\n - `\"TRAVELER\"`\n\nThe valid age-band identifiers for the product are provided in the `pricingInfo.ageBands[]` array in the [product content response](#section/Key-concepts/Content-ingestion-endpoints). The `\"TRAVELER\"` age-band is to be used when the `pricingInfo.type` is `\"UNIT\"`; i.e., unit or group pricing.\n\nTo learn more about how to implement age bands, see the following guide: [Implementing age bands & pax mix](https://partnerresources.viator.com/travel-commerce/merchant/agebands-pax-mix?source=specs)\n" }, "numberOfTravelers": { "type": "integer", "description": "Number of travelers/passengers in this age-band" } } }, "CheckAvailabilityRequest": { "type": "object", "required": [ "productCode", "paxMix", "currency", "travelDate" ], "properties": { "productCode": { "type": "string", "pattern": "(?s).*[\\S].*", "description": "Retrieve availability details for the product identified by this product code" }, "productOptionCode": { "type": "string", "description": "Retrieve availability details for the product option (tour grade) identified by this product option code\n\nFor more information see: [Key concepts: Product options](#section/Key-concepts/Product-options)\n" }, "startTime": { "type": "string", "format": "time", "description": "Retrieve availability details only for items that start at this time. If this parameter is omitted, information about **all** available starting times for the specified date will be included in the response.\n- **Example**: `\"17:15\"`\n" }, "travelDate": { "type": "string", "format": "date", "description": "Retrieve availability details for items that operate on this date" }, "currency": { "type": "string", "pattern": "(?s).*[\\S].*", "description": "Display pricing in the currency identified by this 3-letter code\n- **Example**: `\"USD\"`\n" }, "paxMix": { "type": "array", "description": "Passenger-mix information", "items": { "$ref": "#/components/schemas/PaxMixItem" } } } }, "CapacityObject": { "type": "object", "description": "Provides capacity information for the selected `bookableItem`.\n\n**Note:** Capacity information is not available for all products. The absence of the capacity object or its fields does not indicate that the product is sold out or unavailable.\n", "properties": { "remainingCapacity": { "type": "integer", "description": "Indicates how many spots are available for booking at the time of the request for the specified `bookableItem` and `travelDate`." } } }, "NumberOfTravelers": { "type": "integer", "description": "The number of travelers that this line-item describes the subtotal price for." }, "RecommendedRetailPrice": { "type": "number", "description": "The recommended retail price for the item and the price at which the product is sold on the Viator.com site" }, "PartnerNetPrice": { "type": "number", "description": "The non-booking fee component of the total amount that Viator will invoice the merchant for this item" }, "PriceObject": { "type": "object", "required": [ "recommendedRetailPrice", "partnerNetPrice", "bookingFee", "partnerTotalPrice" ], "properties": { "recommendedRetailPrice": { "$ref": "#/components/schemas/RecommendedRetailPrice" }, "partnerNetPrice": { "$ref": "#/components/schemas/PartnerNetPrice" }, "bookingFee": { "type": "number", "description": "The booking fee component of the total amount that Viator will invoice the merchant for the sale of this item\n\n**Note**: \n- The rate applied is given in the merchant's contract with Viator\n- This element is only relevant to merchant partners using the markup pricing model\n" }, "commission": { "type": "number", "description": "The amount the merchant will receive as a commission for the sale of this item \n\n**Note**: This element is only relevant and will only be returned to merchant partners using the commission-based pricing model\n" }, "partnerTotalPrice": { "type": "number", "description": "The total amount that Viator will invoice the merchant for the sale of this item\n\nSee the following article to learn more about how pricing works in this API: [Calculating Product Pricing](https://partnerresources.viator.com/travel-commerce/merchant/pricing?source=specs)\n" } } }, "PriceObjectSubtotal": { "description": "Components of this price", "allOf": [ { "$ref": "#/components/schemas/PriceObject" } ] }, "LineItemPriceObjectSubtotal": { "type": "object", "description": "Subtotal pricing for this line item, including discount information if available", "required": [ "price" ], "properties": { "price": { "$ref": "#/components/schemas/PriceObjectSubtotal" }, "priceBeforeDiscount": { "$ref": "#/components/schemas/PriceObjectSubtotal" } } }, "PricingLineItem": { "type": "object", "required": [ "numberOfTravelers", "subtotalPrice" ], "properties": { "ageBand": { "type": "string", "description": "Machine-interpretable value indicating the age-band of the travelers that\nthis line-item describes the subtotal price for; one of:\n\n - `\"TRAVELER\"`\n - `\"ADULT\"`\n - `\"CHILD\"`\n - `\"YOUTH\"`\n - `\"INFANT\"`\n - `\"SENIOR\"`\n\n To learn more about how to implement age bands, see the following guide: [Implementing age bands & pax mix](https://partnerresources.viator.com/travel-commerce/merchant/agebands-pax-mix?source=specs)\n" }, "numberOfTravelers": { "$ref": "#/components/schemas/NumberOfTravelers" }, "subtotalPrice": { "$ref": "#/components/schemas/LineItemPriceObjectSubtotal" } } }, "LineItemPriceObject": { "type": "object", "required": [ "price" ], "properties": { "price": { "description": "Current price", "allOf": [ { "$ref": "#/components/schemas/PriceObject" } ] }, "priceBeforeDiscount": { "description": "Non-discounted price if `price` has a discount applied to it", "allOf": [ { "$ref": "#/components/schemas/PriceObject" } ] } } }, "ExtraChargesItemInDestinationCurrency": { "type": "object", "description": "The Extra Charges amount in destination currency.", "required": [ "amountPerUnit", "totalAmount", "currency" ], "properties": { "amountPerUnit": { "type": "number", "description": "The cost per one Extra Charges in Destination currency.\n\n**Note**:\n - Prices payable to third parties are subject to change due to Exchange rates fluctuations between the request time and the travelDate.\n" }, "totalAmount": { "type": "number", "description": "Total amount of all Extra Charges in Destination currency.\n\n**Note**:\n - Prices payable to third parties are subject to change due to Exchange rates fluctuations between the request time and the travelDate.\n" }, "currency": { "description": "The supplier preferred currency to be paid in Destination.", "type": "string" } } }, "ExtraChargesItem": { "type": "object", "description": "List of extra charges. Partners can use this to build a breakdown list of costs.", "required": [ "name", "numberOfUnits", "amountPerUnit", "totalAmount", "inDestination" ], "properties": { "name": { "type": "string", "description": "Extra Charges description." }, "numberOfUnits": { "type": "number", "description": "How many times the Extra Charges applies.\n\nIf the Extra Charges value is to be charged per person this value will match `numberOfTravelers` passed in the request.\n\nIf the Extra Charges value is to be charged per unit this value will match the amount of groups/units in the request.\n" }, "amountPerUnit": { "type": "number", "description": "The amount per unique Extra Charges." }, "totalAmount": { "type": "number", "description": "Total amount of all Extra Charges for a given item." }, "inDestination": { "$ref": "#/components/schemas/ExtraChargesItemInDestinationCurrency" } } }, "ExtraChargesSummary": { "type": "object", "description": "Information about the Extra Charges applicable to this `bookableItem`.\n\n**Note**:\n - Prices payable to third parties are provided to us by the operator, and may be subject to change.\n", "required": [ "price", "mandatory" ], "properties": { "price": { "type": "object", "description": "Pricing information applicable to this `bookableItem` including extra charges.", "required": [ "recommendedRetailPrice" ], "properties": { "recommendedRetailPrice": { "description": "The recommended retail price value including highest Extra Charges value to be paid in destination by the traveler.\nThis value will only be returned if the `bookableItem` passed in the request has Extra Charges.\n", "type": "number" } } }, "priceBeforeDiscount": { "type": "object", "description": "Pricing information applicable to this `bookableItem` including extra charges if no discount had been applied.", "required": [ "recommendedRetailPrice" ], "properties": { "recommendedRetailPrice": { "description": "Non-discounted price if price has a discount applied to it.\nIt shows what the value of `price.recommendedRetailPrice` would be if no discount had been applied; otherwise, it will be absent.\n", "type": "number" } } }, "mandatory": { "description": "Information about the mandatory Extra Charges applicable to this `bookableItem`.", "type": "object", "required": [ "totalExtraCharges", "items" ], "properties": { "totalExtraCharges": { "description": "Total amount of Extra Charges considering `bookableItem` and paxMix.", "type": "number" }, "items": { "type": "array", "items": { "$ref": "#/components/schemas/ExtraChargesItem" }, "description": "List of all Extra Charges that apply to the `bookableItem`.\nCan be used to build a breakdown list of costs.\n\nEach item corresponds to a product Exclusion that requires Extra Charges to be paid.\n" } } } } }, "CheckAvailabilityBookableItem": { "type": "object", "description": "Details of this bookable item", "required": [ "available" ], "properties": { "productOptionCode": { "type": "string", "description": "Product option code for this bookable item\n\nFor more information see: [Key concepts: Product options](#section/Key-concepts/Product-options)\n" }, "startTime": { "type": "string", "description": "Starting time for this bookable item relative to the time zone in which this product operates\n- **Example**: `\"09:00\"`\n" }, "available": { "type": "boolean", "description": "`true` if this item is available to be booked" }, "capacity": { "$ref": "#/components/schemas/CapacityObject" }, "unavailableReason": { "type": "string", "description": "Machine-interpretable reason code indicating why this bookable item is unavailable (when `available` is `false`); one of:\n\n - `\"NOT_OPERATING\"` - product is not operating on this date\n - `\"SOLD_OUT\"` - this option is unavailable because it has sold out\n - `\"PAST_BOOKING_CUTOFF\"` - it is too near to the product's starting time to book this item\n - `\"TRAVELER_MISMATCH\"` - this item is not available for the specified passenger mix\n - `\"UNKNOWN\"` - the reason is unknown\n" }, "lineItems": { "type": "array", "description": "Components of total price, each consisting of passenger(s) from a single\nage band.\n\n**Note**: This element **will not** be returned in the case that `unavailableReason` is `TRAVELER_MISMATCH`.\n", "items": { "$ref": "#/components/schemas/PricingLineItem" } }, "totalPrice": { "allOf": [ { "type": "object", "description": "Total price for this bookable item.\n\n**Note**: This element **will not** be returned in the case that `unavailableReason` is `TRAVELER_MISMATCH`.\n" }, { "$ref": "#/components/schemas/LineItemPriceObject" } ] }, "extraChargesSummary": { "$ref": "#/components/schemas/ExtraChargesSummary" }, "translationInfo": { "$ref": "#/components/schemas/TranslationDetails" } } }, "CheckAvailabilityResponse": { "type": "object", "required": [ "currency", "productCode", "travelDate", "bookableItems" ], "properties": { "currency": { "type": "string", "pattern": "(?s).*[\\S].*", "description": "Currency in which pricing is expressed in this response (as specified in the request)" }, "productCode": { "type": "string", "pattern": "(?s).*[\\S].*", "description": "Product code of the product that this availability response pertains to" }, "travelDate": { "type": "string", "format": "date", "description": "Date of travel for all bookable items returned in this response (relative to the time zone in which the product operates)\n" }, "bookableItems": { "type": "array", "description": "Bookable items for this product", "items": { "$ref": "#/components/schemas/CheckAvailabilityBookableItem" } } } }, "UnavailableDate": { "type": "object", "properties": { "date": { "type": "string", "format": "date", "description": "Date on which the product is unavailable" }, "reason": { "type": "string", "description": "Machine-interpretable reason code indicating why this bookable item is unavailable on this date; one of:\n\n - `\"NOT_OPERATING\"` - product is not operating on this date\n - `\"SOLD_OUT\"` - this option is unavailable because it has sold out\n" } } }, "TimedEntry": { "type": "object", "required": [ "startTime" ], "properties": { "startTime": { "type": "string", "pattern": "(?s).*[\\S].*", "description": "Starting time for this timed entry\n- **Example**: `\"09:00\"`\n" }, "unavailableDates": { "type": "array", "description": "Dates on which this timed entry is unavailable. If no unavailable dates exist, this array will be absent from the response.", "items": { "$ref": "#/components/schemas/UnavailableDate" } } } }, "Special": { "allOf": [ { "$ref": "#/components/schemas/PriceObject" }, { "type": "object", "properties": { "offerStartDate": { "type": "string", "format": "date", "description": "The special offer is effective for tickets purchased **from** this date\n" }, "offerEndDate": { "type": "string", "format": "date", "description": "The special offer is effective for tickets purchased **until** this date\n" }, "travelStartDate": { "type": "string", "format": "date", "description": "The special offer is effective for travel **from** this date\n" }, "travelEndDate": { "type": "string", "format": "date", "description": "The special offer is effective for travel **until** this date\n" } } } ] }, "BasicPriceWithSpecial": { "required": [ "original" ], "description": "Pricing amount information, including 'special' pricing when available.\n- **Note**: As the prices listed here may have changed by the time the booking request is made, **please only use the pricing amounts given in the responses from the [/bookings/hold](#operation/bookingsHold) and [/bookings/book](#operation/bookingsBook) endpoints** when charging customers and for invoicing purposes.\n", "allOf": [ { "type": "object", "properties": { "original": { "allOf": [ { "$ref": "#/components/schemas/PriceObject" }, { "description": "Original price" } ] } } }, { "type": "object", "description": "Price details for this item", "properties": { "special": { "allOf": [ { "$ref": "#/components/schemas/Special" }, { "description": "Special price" } ] } } } ] }, "PricingDetails": { "type": "object", "required": [ "price" ], "properties": { "pricingPackageType": { "type": "string", "description": "Machine-interpretable value indicating the pricing type; one of: \n\n - `\"PER_PERSON\"` - pricing is calculated per-person \n - `\"UNIT\"` - pricing is calculated per-group/unit\n" }, "minTravelers": { "type": "integer", "description": "**Minimum** number of travelers required to book to be eligible for this price" }, "maxTravelers": { "description": "**Maximum** number of travelers required to book to be eligible for this price", "type": "integer" }, "ageBand": { "type": "string", "description": "Machine-interpretable value indicating the age-band to which this price applies; one of:\n\n - `\"ADULT\"`\n - `\"SENIOR\"`\n - `\"YOUTH\"` \n - `\"CHILD\"`\n - `\"INFANT\"`\n - `\"TRAVELER\"`\n" }, "price": { "$ref": "#/components/schemas/BasicPriceWithSpecial" } } }, "PricingRecord": { "type": "object", "properties": { "daysOfWeek": { "type": "array", "description": "Array of machine-interpretable strings representing days of the week on which this pricing and availability information applies during the period from `startDate` to `endDate`\n\nAny of:\n \n - `\"MONDAY\"` \n - `\"TUESDAY\"` \n - `\"WEDNESDAY\"` \n - `\"THURSDAY\"` \n - `\"FRIDAY\"` \n - `\"SATURDAY\"` \n - `\"SUNDAY\"`\n", "items": { "type": "string" } }, "timedEntries": { "type": "array", "description": "Array of starting times and unavailability information for this product option code if timed entry is applicable; otherwise, this array will not be included in the response", "items": { "$ref": "#/components/schemas/TimedEntry" } }, "pricingDetails": { "type": "array", "description": "Pricing details for this season", "items": { "$ref": "#/components/schemas/PricingDetails" } }, "unavailableDates": { "type": "array", "description": "Dates on which this product is unavailable during the season. If no unavailable dates exist, this array will be absent from the response.", "items": { "$ref": "#/components/schemas/UnavailableDate" } } } }, "OperatingHours": { "type": "object", "required": [ "opensAt", "closesAt" ], "properties": { "opensAt": { "type": "string", "description": "Opening time; e.g. `\"08:30\"`", "pattern": "(?s).*[\\S].*" }, "closesAt": { "type": "string", "description": "Closing time; e.g. `\"17:30\"`", "pattern": "(?s).*[\\S].*" } } }, "DayOperatingHours": { "type": "object", "required": [ "dayOfWeek", "openTimes" ], "properties": { "dayOfWeek": { "type": "string", "description": "Day of the week that these operating hours pertain to", "enum": [ "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY" ] }, "operatingHours": { "type": "array", "description": "Opening and closing times for this day of the week", "items": { "$ref": "#/components/schemas/OperatingHours" } } } }, "BookableItemSeason": { "type": "object", "required": [ "startDate" ], "properties": { "startDate": { "type": "string", "format": "date", "description": "Starting date for when this pricing and availability information applies\n- **Example**: `\"2019-01-01\"`\n" }, "endDate": { "type": "string", "format": "date", "description": "Ending date for when this pricing and availability information applies. \n- **Note**: if this element is not returned in the response, the season extends 384 days (approximately 12.5 months) into the future from the present time.\n- **Example**: `\"2019-03-31\"`\n" }, "pricingRecords": { "type": "array", "description": "Pricing records for this season", "items": { "$ref": "#/components/schemas/PricingRecord" } }, "operatingHours": { "type": "array", "description": "Details about hours of operation for this season\n", "items": { "$ref": "#/components/schemas/DayOperatingHours" } } } }, "ProductBookableItemSchedule": { "type": "object", "required": [ "seasons" ], "properties": { "productOptionCode": { "type": "string", "description": "Product option code for this bookable item schedule\n\nFor more information see: [Key concepts: Product options](#section/Key-concepts/Product-options)\n" }, "seasons": { "type": "array", "description": "Descriptions of pricing and availability information as they pertain to periods of time", "items": { "$ref": "#/components/schemas/BookableItemSeason" } } } }, "ProductAvailabilitySchedule": { "type": "object", "required": [ "productCode", "bookableItems", "currency", "summary" ], "properties": { "productCode": { "type": "string", "pattern": "(?s).*[\\S].*", "description": "Unique identifier for this product" }, "bookableItems": { "description": "Bookable items for this product", "type": "array", "items": { "$ref": "#/components/schemas/ProductBookableItemSchedule" } }, "currency": { "type": "string", "pattern": "(?s).*[\\S].*", "description": "Three letter currency code for all pricing information in this response; based on the supplier's currency." }, "summary": { "$ref": "#/components/schemas/AvailabilityScheduleSummary" }, "extraChargesSummary": { "$ref": "#/components/schemas/AvailabilityScheduleExtraChargesSummary" } } }, "BulkAvailabilityScheduleRequest": { "type": "object", "required": [ "productCodes" ], "properties": { "productCodes": { "type": "array", "maxItems": 500, "description": "List of product codes for which to retrieve availability schedules", "items": { "type": "string", "pattern": "(?s).*[\\S].*" } } } }, "BulkAvailabilityScheduleResponse": { "type": "object", "required": [ "availabilitySchedules" ], "properties": { "availabilitySchedules": { "type": "array", "description": "Array of availability schedule objects", "items": { "$ref": "#/components/schemas/ProductAvailabilitySchedule" } } } }, "AvailabilitySchedulesResponse": { "allOf": [ { "$ref": "#/components/schemas/BulkAvailabilityScheduleResponse" }, { "type": "object", "properties": { "nextCursor": { "type": "string", "description": "A cursor to use when fetching the next set of products.\n- **Example**: `\"MTU3NDA0NDczOQ==\"`\n" } } } ] }, "PartnerCartReference": { "type": "string", "description": "Partner-generated unique cart reference for this group of bookable items.", "pattern": "(?s).*[\\S].*", "maxLength": 100 }, "Currency": { "type": "string", "description": "**Merchant Partners:** One of `USD`, `EUR`, `GBP`, `AUD`, `CAD`\n\n**Affiliate Partners with API access level \"Full Access + Booking\":** One of `USD`, `EUR`, `GBP`, `AUD`, `CAD`,\n`CHF`, `DKK`, `FJD`, `HKD`, `JPY`, `NOK`, `NZD`, `SEK`, `SGD`, `THB`, `ZAR`, `INR`, `BRL`, `TWD`, `MXN`, `CLP`, `IDR`, `ILS`, `KRW`, `PHP`, `PLN`, `TRY`\n" }, "PartnerBookingReference": { "type": "string", "description": "Partner-generated unique booking reference for this bookable item.", "pattern": "(?s).*[\\S].*", "maxLength": 100 }, "ProductCode": { "type": "string", "pattern": "(?s).*[\\S].*", "description": "Unique identifier for this product.", "example": "5657BRIDGECLIMB" }, "ProductOptionCode": { "type": "string", "description": "Product option identifier.\n\nFor more information see: [Key concepts: Product options](#section/Key-concepts/Product-options)\n", "example": "BCLM" }, "StartTime": { "type": "string", "description": "Starting time for the item in the case that the `product`/`product option` has multiple start times.\n\n**Note**: This element must be included for products that have multiple starting times.\n" }, "TravelDate": { "type": "string", "format": "date", "description": "Date of travel (according to the time zone in which the product operates).\n" }, "AgeBand-2": { "type": "string", "pattern": "(?s).*[\\S].*", "description": "Machine-interpretable value indicating the age-band that this/these\ntraveler(s) fall into; one of:\n\n - `ADULT`\n - `SENIOR`\n - `YOUTH`\n - `CHILD`\n - `INFANT`\n - `TRAVELER`\n\nThe valid age-band identifiers for the product are provided in the `pricingInfo.ageBands[]` array in the [product content response](#section/Key-concepts/Content-ingestion-endpoints). The `TRAVELER` age-band is to be used when the `pricingInfo.type` is `UNIT`; i.e., unit or group pricing.\n\nTo learn more about how to implement age bands, see the following guide: [Implementing age bands & pax mix](https://partnerresources.viator.com/travel-commerce/merchant/agebands-pax-mix?source=specs)\n" }, "PaxMixItem-2": { "type": "object", "required": [ "ageBand", "numberOfTravelers" ], "properties": { "ageBand": { "$ref": "#/components/schemas/AgeBand-2" }, "numberOfTravelers": { "type": "integer", "description": "Number of travelers/passengers in this age-band." } } }, "BookingsCartHoldRequestItem": { "type": "object", "required": [ "partnerBookingRef", "productCode", "travelDate", "paxMix" ], "properties": { "partnerBookingRef": { "$ref": "#/components/schemas/PartnerBookingReference" }, "productCode": { "$ref": "#/components/schemas/ProductCode" }, "productOptionCode": { "$ref": "#/components/schemas/ProductOptionCode" }, "startTime": { "$ref": "#/components/schemas/StartTime" }, "travelDate": { "$ref": "#/components/schemas/TravelDate" }, "paxMix": { "type": "array", "description": "Passenger details.", "items": { "$ref": "#/components/schemas/PaxMixItem-2" } } } }, "BookingsCartHoldRequest": { "allOf": [ { "type": "object", "required": [ "currency", "partnerCartRef", "items" ], "properties": { "partnerCartRef": { "$ref": "#/components/schemas/PartnerCartReference" }, "currency": { "$ref": "#/components/schemas/Currency" }, "items": { "type": "array", "description": "List of bookable items (Limited to 16)", "items": { "$ref": "#/components/schemas/BookingsCartHoldRequestItem" } }, "paymentDataSubmissionMode": { "type": "string", "description": "Defines the payment solution used to submit payment details, two modes are supported: \n- `PARTNER_FORM` for partners hosting their own payment form.\n- `VIATOR_FORM` for partners using the Viator iframe payment form.\n\n**Note**: This element is only applicable for affiliate partners with API access level \"Full Access + Booking\". \n" }, "hostingUrl": { "type": "string", "description": "The **origin** of the site where the Viator payment form is hosted (the same value the browser exposes as\n`window.location.origin` on that page). Required if `paymentDataSubmissionMode` is set to `VIATOR_FORM`.\n\nUse **only** the scheme, hostname, and a non-default port when one is in use. **Do not** include a path, query\nstring, or fragment. The Viator payment script and the browser compare this value to `window.location.origin`; sending a full\npage URL (for example a checkout path such as `https://example.com/checkout`) will not match and client-side\nvalidation will fail.\n\nE.g.: `https://www.yourdomain.com` or `https://www.yourdomain.com:8443` for a non-default port.\n" } } } ] }, "CartReference": { "type": "string", "description": "**Viator-generated** unique reference for this cart of bookable items, e.g.`CR-44e4a3f8b65d11edafa10242ac120002`\n" }, "BookingReference": { "type": "string", "description": "Unique Viator-generated booking reference for this bookable item.", "example": "BR-23345456" }, "BookingHoldStatus": { "type": "string", "description": "The status of this bookable item; one of:\n\n- `BOOKABLE` \u2013 This item can currently be booked. Check `bookingHoldInfo` for availability and pricing hold statuses.\n- `REJECTED` \u2013 This item is unavailable to be booked.\n" }, "BookingsCartHoldResponseItemBase": { "type": "object", "required": [ "partnerBookingRef", "bookingRef", "status" ], "properties": { "partnerBookingRef": { "$ref": "#/components/schemas/PartnerBookingReference" }, "bookingRef": { "$ref": "#/components/schemas/BookingReference" }, "status": { "$ref": "#/components/schemas/BookingHoldStatus" } } }, "RecommendedRetailPrice-2": { "type": "number", "description": "The recommended retail price for the item and the price at which the product is sold on the Viator.com site." }, "PartnerNetPrice-2": { "type": "number", "description": "The non-booking fee component of the amount that Viator will invoice the merchant.\n\n\nFor affiliate partners with API access level \"Full Access + Booking\" this is the amount Viator charges exclusive of commission.\n" }, "PriceSubtotal": { "type": "object", "required": [ "recommendedRetailPrice", "partnerNetPrice" ], "properties": { "recommendedRetailPrice": { "$ref": "#/components/schemas/RecommendedRetailPrice-2" }, "partnerNetPrice": { "$ref": "#/components/schemas/PartnerNetPrice-2" } } }, "PricingLineItemPriceSubtotal": { "type": "object", "required": [ "price" ], "properties": { "price": { "description": "The current price.", "allOf": [ { "$ref": "#/components/schemas/PriceSubtotal" } ] }, "priceBeforeDiscount": { "description": "Non-discounted price if `price` has a discount applied to it.", "allOf": [ { "$ref": "#/components/schemas/PriceSubtotal" } ] } } }, "PricingLineItem-2": { "type": "object", "required": [ "ageBand", "numberOfTravelers", "subtotalPrice" ], "properties": { "ageBand": { "$ref": "#/components/schemas/AgeBand-2" }, "numberOfTravelers": { "$ref": "#/components/schemas/NumberOfTravelers" }, "subtotalPrice": { "description": "Subtotal pricing for this line item.", "allOf": [ { "$ref": "#/components/schemas/PricingLineItemPriceSubtotal" } ] } } }, "CartPrice": { "type": "object", "required": [ "recommendedRetailPrice", "partnerNetPrice", "partnerTotalPrice", "bookingFee", "commission" ], "properties": { "recommendedRetailPrice": { "$ref": "#/components/schemas/RecommendedRetailPrice-2" }, "partnerNetPrice": { "$ref": "#/components/schemas/PartnerNetPrice-2" }, "bookingFee": { "type": "number", "description": "The booking fee component of the amount that Viator will invoice the merchant for the sale of this item.\n\n**Note:**\n - The rate applied is given in the merchant's contract with Viator.\n - This element is only relevant to merchant partners using the markup pricing model\n" }, "commission": { "type": "number", "description": "The amount the merchant or affiliate will receive as a commission for the sale of this item.\n\n\n**Note:** This element is only relevant to merchant partners using the commission-based pricing model and affiliate partners with API access level \"Full Access + Booking\".\n" }, "partnerTotalPrice": { "type": "number", "description": "The total amount that Viator will invoice the merchant for the sale of this item.\n\n\nFor affiliate partners with API access level \"Full Access + Booking\" this is the total amount that Viator charges exclusive of commission.\n\n\nSee the following article to learn more about how pricing works in this API: [Calculating Product Pricing](https://partnerresources.viator.com/travel-commerce/merchant/pricing?source=specs)\n" } } }, "CartLineItemPrice": { "type": "object", "required": [ "price" ], "properties": { "price": { "description": "The current price.", "allOf": [ { "$ref": "#/components/schemas/CartPrice" } ] }, "priceBeforeDiscount": { "description": "Non-discounted price if `price` has a discount applied to it.", "allOf": [ { "$ref": "#/components/schemas/CartPrice" } ] } } }, "BookingsCartResponseItemPrice": { "type": "object", "required": [ "lineItems", "itemTotalPrice" ], "properties": { "lineItems": { "type": "array", "description": "List of pricing details for each age band in this bookable item.", "items": { "$ref": "#/components/schemas/PricingLineItem-2" } }, "itemTotalPrice": { "description": "Details about the total price of this item.", "allOf": [ { "$ref": "#/components/schemas/CartLineItemPrice" } ] } } }, "HoldInfo": { "type": "object", "required": [ "status" ], "properties": { "status": { "type": "string", "pattern": "(?s).*[\\S].*", "description": "Status of the booking hold; one of:\n\n - `HOLD_NOT_PROVIDED`\n - `HOLDING`\n" }, "validUntil": { "type": "string", "format": "date-time", "description": "Timestamp (UTC) indicating when the booking hold expires." } } }, "BookingHoldInfo": { "type": "object", "description": "Availability and pricing hold information.", "required": [ "availability", "pricing" ], "properties": { "availability": { "description": "Availability hold information.", "allOf": [ { "$ref": "#/components/schemas/HoldInfo" } ] }, "pricing": { "description": "Pricing hold information.", "allOf": [ { "$ref": "#/components/schemas/HoldInfo" } ] } } }, "BookingsCartHoldResponseBookableItem": { "allOf": [ { "$ref": "#/components/schemas/BookingsCartHoldResponseItemBase" }, { "$ref": "#/components/schemas/BookingsCartResponseItemPrice" }, { "type": "object", "required": [ "bookingHoldInfo" ], "properties": { "bookingHoldInfo": { "$ref": "#/components/schemas/BookingHoldInfo" }, "extraChargesSummary": { "$ref": "#/components/schemas/ExtraChargesSummary" } } } ] }, "HoldRejectionReasonCode": { "type": "string", "description": "In the case that `status` is `REJECTED`, this field provides a code as to the reason for the rejection; one of:\n\n - `BOOKABLE_ITEM_IS_NO_LONGER_AVAILABLE` \u2013 this bookable item is no longer available\n - `FAILED_TO_CHECK_AVAILABILITY_OR_PRICING` \u2013 Unable to retrieve availability or pricing data for this bookable item\n - `OTHER` \u2013 other/unlisted reason\n" }, "BookingsCartHoldResponseRejectedItem": { "allOf": [ { "$ref": "#/components/schemas/BookingsCartHoldResponseItemBase" }, { "type": "object", "required": [ "rejectionReasonCode" ], "properties": { "rejectionReasonCode": { "$ref": "#/components/schemas/HoldRejectionReasonCode" } } } ] }, "BookingsCartHoldResponse": { "type": "object", "required": [ "cartRef", "partnerCartRef", "currency", "items", "totalHeldPrice" ], "properties": { "cartRef": { "$ref": "#/components/schemas/CartReference" }, "partnerCartRef": { "$ref": "#/components/schemas/PartnerCartReference" }, "currency": { "$ref": "#/components/schemas/Currency" }, "items": { "type": "array", "description": "List of bookable items.", "items": { "oneOf": [ { "$ref": "#/components/schemas/BookingsCartHoldResponseBookableItem" }, { "$ref": "#/components/schemas/BookingsCartHoldResponseRejectedItem" } ], "discriminator": { "propertyName": "status", "mapping": { "BOOKABLE": "#/components/schemas/BookingsCartHoldResponseBookableItem", "REJECTED": "#/components/schemas/BookingsCartHoldResponseRejectedItem" } } } }, "totalHeldPrice": { "description": "The total price of all bookable items.", "allOf": [ { "$ref": "#/components/schemas/CartLineItemPrice" } ] }, "paymentDataSubmissionUrl": { "type": "string", "description": "The API URL to provide payment details to the Viator payment gateway. Only returned if `paymentDataSubmissionMode` is set to `PARTNER_FORM`." }, "paymentSessionToken": { "type": "string", "description": "The payment session token, if `paymentDataSubmissionMode` is set, used to facilitate fraud prevention when Implementing the API Solution or providing payment details when Implementing the iFrame Solution." }, "extraChargesSummary": { "type": "object", "description": "Total amount of Extra Charges considering all cart bookable items.", "required": [ "price", "totalExtraCharges" ], "properties": { "price": { "type": "object", "description": "Pricing information applicable to all bookable items including extra charges.", "required": [ "recommendedRetailPrice" ], "properties": { "recommendedRetailPrice": { "description": "Total RRP including Extra Charges for all cart bookable items.", "type": "number" } } }, "productPriceBeforeDiscount": { "type": "object", "description": "Pricing information applicable to all bookable items including extra charges if no discount had been applied.", "required": [ "recommendedRetailPrice" ], "properties": { "recommendedRetailPrice": { "description": "Total RRP including Extra Charges for all cart bookable items if no discount had been applied.", "type": "number" } } }, "totalExtraCharges": { "type": "number", "description": "Total Extra Charges for all cart bookable items." } } }, "translationInfo": { "$ref": "#/components/schemas/TranslationDetails" } } }, "BookerInfo": { "type": "object", "description": "Name details for the person making this booking.", "required": [ "firstName", "lastName" ], "properties": { "firstName": { "type": "string", "minLength": 1, "maxLength": 50, "description": "First name (given name) of the person making this booking.\n\n**Note**: Emojis are not supported in this field; therefore, please ensure that only ordinary natural-language characters are included.\n" }, "lastName": { "type": "string", "minLength": 1, "maxLength": 50, "description": "Surname of the person making this booking.\n\n**Note**: Emojis are not supported in this field. Please ensure only ordinary natural-language characters are included.\n" } } }, "CartBookCommunicationInfo": { "type": "object", "required": [ "phone" ], "description": "Details for correspondence regarding this booking.\n\n**See**: [Booking concepts \u2013 Supplier communications](#section/Booking-concepts/Supplier-communications) for information about closed-loop communication.\n", "properties": { "phone": { "type": "string", "pattern": "^[+](?s).*[\\S].*", "maxLength": 30, "description": "Telephone number to be used for correspondence from the supplier regarding the booking. This can be a mobile or land-line number and should be the phone number at which the booker is most easily contactable.\n\n**Note**: You must perform some additional validation to ensure that this field is correctly formatted prior to sending the booking request. It is essential that this string include the plus `+` symbol at the beginning, followed by the country code, followed by the remaining numerals. Spaces, hyphens and parentheses can be included or omitted, but the string **must** start with the plus symbol and country code; e.g. `+61 400 580 860`.\n" }, "email": { "type": "string", "maxLength": 200, "description": "Email address of the customer to be used for correspondence from the supplier regarding the booking. For affiliate partners with API access level \"Full Access + Booking\" email field is required.\n\n**Note**: \n- Including this field enables CLC between supplier and customer. \n- For Merchant partners, omitting the field will result in supplier communications being sent only to your customer support address.\n- For partners with API access level \"Full Access + Booking\", if multiple email addresses are provided, the traveler\u2019s email address should always be in the first position.\n- When providing multiple email addresses in this field, all email addresses must be separated by a comma.\n" } } }, "VoucherDetails": { "type": "object", "description": "**Merchant partners only**: Additional details to display on the voucher.\n", "properties": { "companyName": { "description": "Company name to display on the voucher.", "type": "string", "maxLength": 200 }, "email": { "description": "Company / customer support email address to display on the voucher.", "type": "string", "maxLength": 200 }, "phone": { "type": "string", "description": "Company / customer support phone number to display on the voucher.", "maxLength": 30 }, "voucherText": { "type": "string", "description": "Any additional custom text to display on the voucher; e.g., Customer support URL / instructions on how to access customer support.", "maxLength": 10000 }, "format": { "type": "string", "description": "File format of the voucher; one of:\n- `PDF`\n- `HTML`\n\nDefault is `HTML` if not specified.\n" } } }, "FraudPreventionDetails": { "type": "object", "description": "Additional booking details used to enhance fraud detection accuracy.\n\n**Note**: Fraud Prevention Details only apply to affiliate partners with API access level \"Full Access + Booking\".\n", "properties": { "subChannelId": { "type": "string", "description": "For partners that operate multiple channels, a unique identifier of the channel making the booking. (i.e. different websites)", "maxLength": 100 }, "agencyId": { "type": "string", "description": "For partners that operate multiple agencies, a unique identifier representing the agency making the booking. (i.e. Agencies in different geographic locations)", "maxLength": 100 }, "agentId": { "type": "string", "description": "For partners that have agents making bookings, a unique identifier for the agent making the booking.", "maxLength": 100 }, "voucherDeliveryType": { "type": "string", "description": "Method of voucher delivery. One of: \n - `EMAIL_TO_CUSTOMER` - The voucher is emailed only to the customer.\n - `EMAIL_TO_AGENT` - The voucher is emailed only to the agent making the booking on behalf of the customer.\n - `EMAIL_TO_CUSTOMER_AND_AGENT` - The voucher is emailed to both the customer and agent making the booking on behalf of the customer.\n" }, "customerMemberSince": { "type": "string", "format": "date", "description": "For partners whose customers have a membership with the partner and the customer is making the booking, the date when the customer first became a member. e.g. `2019-09-17`", "example": "2019-09-17" } } }, "LoyaltyProgramDetails": { "type": "object", "description": "Additional booking details used to associate partner's Loyalty Program Information with the booking.\n\n**Note**:\n This data will be used only by Viator\u2019s internal teams (eg, by Customer Service in the event the traveler contacts Viator for any reason).\n", "properties": { "memberId": { "type": "string", "description": "A unique identifier assigned to the member of partner\u2019s loyalty program.", "maxLength": 100 }, "points": { "type": "integer", "description": "The amount of loyalty points redeemed in this booking." }, "totalPriceAfterPoints": { "type": "number", "description": "Actual amount paid for the booking after redeeming loyalty points." } } }, "AdditionalBookingDetails": { "type": "object", "properties": { "voucherDetails": { "$ref": "#/components/schemas/VoucherDetails" }, "fraudPreventionDetails": { "$ref": "#/components/schemas/FraudPreventionDetails" }, "loyaltyProgramDetails": { "$ref": "#/components/schemas/LoyaltyProgramDetails" } } }, "BookingQuestionAnswers": { "type": "object", "required": [ "question", "answer" ], "properties": { "question": { "type": "string", "pattern": "(?s).*[\\S].*", "description": "Booking question identifier - `id` field in response from [/products/booking-questions](#operation/productsBookingQuestions) endpoint.\nPossible values:\n\n - `DATE_OF_BIRTH`\n - `HEIGHT`\n - `PASSPORT_EXPIRY`\n - `PASSPORT_NATIONALITY`\n - `PASSPORT_PASSPORT_NO`\n - `PICKUP_POINT`\n - `TRANSFER_AIR_ARRIVAL_AIRLINE`\n - `TRANSFER_AIR_ARRIVAL_FLIGHT_NO`\n - `TRANSFER_AIR_DEPARTURE_AIRLINE`\n - `TRANSFER_AIR_DEPARTURE_FLIGHT_NO`\n - `TRANSFER_ARRIVAL_DROP_OFF`\n - `TRANSFER_ARRIVAL_TIME`\n - `TRANSFER_DEPARTURE_DATE`\n - `TRANSFER_DEPARTURE_PICKUP`\n - `TRANSFER_DEPARTURE_TIME`\n - `TRANSFER_PORT_ARRIVAL_TIME`\n - `TRANSFER_PORT_CRUISE_SHIP`\n - `TRANSFER_PORT_DEPARTURE_TIME`\n - `TRANSFER_RAIL_ARRIVAL_LINE`\n - `TRANSFER_RAIL_ARRIVAL_STATION`\n - `TRANSFER_RAIL_DEPARTURE_LINE`\n - `TRANSFER_RAIL_DEPARTURE_STATION`\n - `WEIGHT`\n - `FULL_NAMES_FIRST`\n - `FULL_NAMES_LAST`\n - `DISEMBARKATION_TIME`\n - `SPECIAL_REQUIREMENTS`\n - `AGEBAND`\n - `TRANSFER_ARRIVAL_MODE`\n - `TRANSFER_DEPARTURE_MODE`\n" }, "answer": { "type": "string", "description": "Answer to the booking question.\n\n**Note**: Emojis are not supported in this field; therefore, please ensure that only ordinary natural-language characters and numerals are included.\n" }, "unit": { "type": "string", "description": "Unit in which the answer is provided; one of `units` in response from [/products/booking-questions](#operation/productsBookingQuestions) endpoint." }, "travelerNum": { "description": "Number of the traveler to which this booking question answer pertains.", "type": "integer" } } }, "BookingQuestionAnswers-2": { "type": "array", "description": "Answers to booking questions required for this booking.\n\n**See:** [Booking concepts \u2013 Booking questions](#section/Booking-concepts/Booking-questions) for more information.\n", "items": { "$ref": "#/components/schemas/BookingQuestionAnswers" } }, "BookingsCartBookRequestItem": { "type": "object", "required": [ "bookingRef" ], "properties": { "bookingRef": { "$ref": "#/components/schemas/BookingReference" }, "languageGuide": { "$ref": "#/components/schemas/LanguageGuide" }, "bookingQuestionAnswers": { "$ref": "#/components/schemas/BookingQuestionAnswers-2" } } }, "BookingsCartBookRequest": { "type": "object", "required": [ "cartRef", "bookerInfo", "communication", "items" ], "properties": { "cartRef": { "$ref": "#/components/schemas/CartReference" }, "bookerInfo": { "$ref": "#/components/schemas/BookerInfo" }, "communication": { "$ref": "#/components/schemas/CartBookCommunicationInfo" }, "additionalBookingDetails": { "description": "Optional extra details to include with the booking.", "allOf": [ { "$ref": "#/components/schemas/AdditionalBookingDetails" } ] }, "items": { "type": "array", "description": "List of bookable items.", "items": { "$ref": "#/components/schemas/BookingsCartBookRequestItem" } }, "paymentToken": { "type": "string", "description": "The payment token obtained from the payments endpoint or from the iframe Javascript library." } } }, "BookingBookStatus": { "type": "string", "description": "One of: `CONFIRMED`, `PENDING`, `REJECTED`\n\nNote: For `\"PENDING\"` poll [/booking/status](#tag/Bookings/operation/bookingsStatus) for further booking status updates\n \n" }, "BookingsCartBookResponseItemBase": { "type": "object", "required": [ "partnerBookingRef", "bookingRef", "status" ], "properties": { "partnerBookingRef": { "$ref": "#/components/schemas/PartnerBookingReference" }, "bookingRef": { "$ref": "#/components/schemas/BookingReference" }, "status": { "$ref": "#/components/schemas/BookingBookStatus" } } }, "VoucherFormat": { "type": "string", "pattern": "(?s).*[\\S].*", "description": "File format of the voucher; one of:\n - `PDF`\n - `HTML`\n\nDefault is `HTML` if not specified.\n" }, "VoucherInfo": { "type": "object", "required": [ "url", "format", "type" ], "description": "Voucher information for this booking.", "properties": { "url": { "type": "string", "description": "URL from which this voucher can be retrieved.", "pattern": "(?s).*[\\S].*" }, "format": { "$ref": "#/components/schemas/VoucherFormat" }, "type": { "type": "string", "pattern": "(?s).*[\\S].*", "description": "Whether it is a Viator standard voucher or a supplier provided voucher; one of: \n- `STANDARD`\n- `SUPPLIER`\n" }, "isVoucherRestrictionRequired": { "type": "boolean", "description": "Indicates if the transaction was flagged as potentially fraudulent. If set to `true`, partners must make sure they ensure vouchers are delivered securely." } } }, "BookingsCartBookResponseConfirmedItem": { "allOf": [ { "$ref": "#/components/schemas/BookingsCartBookResponseItemBase" }, { "$ref": "#/components/schemas/BookingsCartResponseItemPrice" }, { "type": "object", "required": [ "cancellationPolicy", "voucherInfo" ], "properties": { "cancellationPolicy": { "$ref": "#/components/schemas/CancellationPolicy" }, "voucherInfo": { "$ref": "#/components/schemas/VoucherInfo" } } } ] }, "BookingsCartBookResponsePendingItem": { "allOf": [ { "$ref": "#/components/schemas/BookingsCartBookResponseItemBase" }, { "type": "object", "properties": { "cancellationPolicy": { "$ref": "#/components/schemas/CancellationPolicy" } } } ] }, "CartBookRejectionReasonCode": { "type": "string", "description": "In the case that `status` is `REJECTED`, this field provides a code as to the reason for the rejection; one of:\n\n - `\"BOOKABLE_ITEM_IS_NO_LONGER_AVAILABLE\"` \u2013 this bookable item is no longer available\n - `\"DUPLICATE_BOOKING\"` \u2013 this is a duplicate booking\n - `\"ISSUE_WITH_PAYMENT\"` \u2013 the customer\u2019s payment was declined due to an issue trying to process the payment. This could be caused by generic errors, suspected fraud, or incomplete billing information.\n - `\"INSUFFICIENT_FUNDS\"` - the customer's payment was declined due to insufficient funds\n - `\"INVALID_PAYMENT_DETAILS\"` - the customer's payment was declined due to invalid payment details\n - `\"SOFT_DECLINE\"` - the customer\u2019s payment was declined due to fixable issues (eg insufficient funds)\n - `\"HARD_DECLINE\"` - the customer\u2019s payment was declined due to an error or issue which can't be resolved immediately. Action such a new payment method or the customer contacting their bank will need to be taken to resolve the issue before the transaction can be retried.\n - `\"THREE_D_SECURE_REQUIRED\"` - the customer\u2019s payment was declined due to unsuccessful authentication through 3DS\n - `\"INTERNAL_ERROR\"` - the customer\u2019s payment was declined due to an internal error in our system\n - `\"PROCESSOR_UNAVAILABLE\"` - the customer\u2019s payment was declined due to temporary unavailability on the processor\u2019s end\n - `\"PROCESSOR_ISSUE_WITH_PAYMENT\"` - the customer\u2019s payment was declined due to an issue on the processor\u2019s end\n - `\"OTHER\"` \u2013 other/unlisted reason\n" }, "BookingsCartBookResponseRejectedItem": { "allOf": [ { "$ref": "#/components/schemas/BookingsCartBookResponseItemBase" }, { "type": "object", "required": [ "rejectionReasonCode" ], "properties": { "rejectionReasonCode": { "$ref": "#/components/schemas/CartBookRejectionReasonCode" } } } ] }, "VoucherInfoCart": { "type": "object", "required": [ "url", "format", "type" ], "description": "Voucher information for this booking.", "properties": { "url": { "type": "string", "description": "URL from which this voucher can be retrieved.", "pattern": "(?s).*[\\S].*" }, "format": { "type": "string", "pattern": "(?s).*[\\S].*", "description": "File format of the voucher; one of:\n - `HTML`\n\n**Note:** Only `HTML` is currently supported at the cart level.\n" }, "type": { "type": "string", "pattern": "(?s).*[\\S].*", "description": "Whether all Viator standard vouchers, supplier provided vouchers or a mix of both Viator standard and supplier provided vouchers; one of: \n- `STANDARD`\n- `SUPPLIER`\n- `MIXED`\n" }, "isVoucherRestrictionRequired": { "type": "boolean", "description": "Indicates if the transaction was flagged as potentially fraudulent. If set to `true`, partners must make sure they ensure vouchers are delivered securely." } } }, "BookingsCartBookResponse": { "type": "object", "required": [ "cartRef", "partnerCartRef", "currency", "items", "totalConfirmedPrice", "totalPendingPrice" ], "properties": { "cartRef": { "$ref": "#/components/schemas/CartReference" }, "partnerCartRef": { "$ref": "#/components/schemas/PartnerCartReference" }, "currency": { "$ref": "#/components/schemas/Currency" }, "items": { "type": "array", "description": "List of bookable items.", "items": { "oneOf": [ { "$ref": "#/components/schemas/BookingsCartBookResponseConfirmedItem" }, { "$ref": "#/components/schemas/BookingsCartBookResponsePendingItem" }, { "$ref": "#/components/schemas/BookingsCartBookResponseRejectedItem" } ], "discriminator": { "propertyName": "status", "mapping": { "CONFIRMED": "#/components/schemas/BookingsCartBookResponseConfirmedItem", "PENDING": "#/components/schemas/BookingsCartBookResponsePendingItem", "REJECTED": "#/components/schemas/BookingsCartBookResponseRejectedItem" } } } }, "voucherInfo": { "allOf": [ { "$ref": "#/components/schemas/VoucherInfoCart" }, { "description": "This voucher comprises of items in the cart that are confirmed." } ] }, "totalConfirmedPrice": { "description": "The total price of all confirmed bookable items.", "allOf": [ { "$ref": "#/components/schemas/CartLineItemPrice" } ] }, "totalPendingPrice": { "description": "The total price of all pending bookable items.", "allOf": [ { "$ref": "#/components/schemas/CartLineItemPrice" } ] } } }, "BookingRequest": { "type": "object", "required": [ "productCode", "travelDate", "paxMix", "currency" ], "properties": { "productCode": { "type": "string", "pattern": "(?s).*[\\S].*", "description": "Unique identifier for the product" }, "productOptionCode": { "type": "string", "description": "Product option identifier.\n\nFor more information see: [Key concepts: Product options](#section/Key-concepts/Product-options)\n" }, "startTime": { "type": "string", "description": "Starting time for the item in the case that the product/product option has multiple start times.\n\n**Note**: This element must be included for products that have multiple starting times.\n" }, "currency": { "type": "string", "pattern": ".*[\\S].*", "description": "Three-letter currency code for the currency in which to return pricing information; one of:\n\n - `\"USD\"`\n - `\"CAD\"`\n - `\"GBP\"`\n - `\"AUD\"`\n - `\"EUR\"`\n" }, "travelDate": { "description": "Date of travel (according to the time zone in which the product operates)", "type": "string", "format": "date" }, "paxMix": { "type": "array", "description": "Passenger details", "items": { "$ref": "#/components/schemas/PaxMixItem" } } } }, "BookingHoldRequest": { "allOf": [ { "$ref": "#/components/schemas/BookingRequest" } ] }, "BookingHoldResponse": { "type": "object", "required": [ "bookingRef", "bookingHoldInfo" ], "properties": { "bookingRef": { "type": "string", "pattern": "(?s).*[\\S].*", "description": "**Viator-generated** booking reference for this booked item in format `BR-123456789` \n\nThis value can be used in the request to:\n - [/bookings/book](#operation/bookingsBook) (`bookingRef`)\n - [/bookings/status](#operation/bookingsStatus) (`bookingRef`)\n - [/bookings/{booking-reference}/cancel-quote](#operation/bookingsCancelQuote) (in-query parameter)\n - [/bookings/{booking-reference}/cancel](#operation/bookingsCancel) (in-query parameter)\n" }, "bookingHoldInfo": { "$ref": "#/components/schemas/BookingHoldInfo" }, "currency": { "type": "string", "description": "Three-letter currency code for the currency in which pricing information is displayed; one of:\n\n - `\"USD\"`\n - `\"CAD\"`\n - `\"GBP\"`\n - `\"AUD\"`\n - `\"EUR\"`\n" }, "lineItems": { "type": "array", "description": "Array of pricing details for each traveler in this booking", "items": { "$ref": "#/components/schemas/PricingLineItem" } }, "totalPrice": { "description": "Details about the total price of this booking", "allOf": [ { "$ref": "#/components/schemas/LineItemPriceObject" } ] }, "extraChargesSummary": { "$ref": "#/components/schemas/ExtraChargesSummary" }, "translationInfo": { "$ref": "#/components/schemas/TranslationDetails" } } }, "CommunicationInfo": { "type": "object", "required": [ "phone" ], "description": "Details for correspondence regarding this booking.\n\n**See**: [Booking concepts \u2013 Supplier communications](#section/Booking-concepts/Supplier-communications) for information about closed-loop communication.\n", "properties": { "phone": { "type": "string", "pattern": "^[+](?s).*[\\S].*", "maxLength": 30, "description": "Telephone number to be used for correspondence from the supplier regarding the booking. This can be a mobile or land-line number and should be the phone number at which the booker is most easily contactable.\n\n**Note**: You must perform some additional validation to ensure that this field is correctly formatted prior to sending the booking request. It is essential that this string include the plus `+` symbol at the beginning, followed by the country code, followed by the remaining numerals. Spaces, hyphens and parentheses can be included or omitted, but the string **must** start with the plus symbol and country code; e.g. `+61 400 580 860`.\n" }, "email": { "type": "string", "maxLength": 200, "description": "Email addresses to be used for correspondence from the supplier regarding the booking.\n\n**Note**: Including this field enables CLC between supplier and the email(s) provided in the booking request; omitting the field will result in supplier communications being sent only to your customer support address.\n\nTo have a CC of each message a supplier sends to their customer sent to your (the partner's) customer support email address (in case further assistance is required) you must include your customer support email address in the email field, after the customer's email and separated from that address with a comma.\n" } } }, "AdditionalBookingDetails-2": { "type": "object", "description": "Optional extra details to include with booking", "properties": { "voucherDetails": { "$ref": "#/components/schemas/VoucherDetails" } } }, "BookingBookRequest": { "allOf": [ { "$ref": "#/components/schemas/BookingRequest" }, { "type": "object", "required": [ "bookerInfo", "communication", "partnerBookingRef" ], "properties": { "bookingRef": { "type": "string", "description": "The booking reference code that is generated by Viator and returned in the `bookingRef` element in the response from [/bookings/hold](#operation/bookingsHold)." }, "partnerBookingRef": { "type": "string", "pattern": "(?s).*[\\S].*", "maxLength": 100, "description": "Partner-generated unique booking reference for this bookable item" }, "languageGuide": { "allOf": [ { "$ref": "#/components/schemas/LanguageGuide" }, { "type": "object", "description": "Specifies which language and what type of language guide to include if language guides are available for this product. \n\n- **Note**: This element must be included in order to book products that offer language guides.\n" } ] }, "bookerInfo": { "$ref": "#/components/schemas/BookerInfo" }, "bookingQuestionAnswers": { "type": "array", "description": "Answers to booking questions required for this booking\n\n- See: [Booking concepts \u2013 Booking questions](#section/Booking-concepts/Booking-questions) for more information.\n", "items": { "$ref": "#/components/schemas/BookingQuestionAnswers" } }, "communication": { "$ref": "#/components/schemas/CommunicationInfo" }, "additionalBookingDetails": { "$ref": "#/components/schemas/AdditionalBookingDetails-2" } } } ] }, "BookingBookResponse": { "type": "object", "properties": { "status": { "type": "string", "description": "Indicates the outcome of the booking request; one of:\n\n - `\"CONFIRMED\"` \u2013 the booking has been confirmed\n - `\"REJECTED\"` \u2013 the booking request was declined\n - `\"CANCELED\"` \u2013 the booking has been canceled\n - `\"PENDING\"` \u2013 the booking request has been submitted to the supplier and is awaiting their response.\n - `\"IN_PROGRESS\"` \u2013 the booking is still being processed by the booking server. \n - `\"ON_HOLD\"` \u2013 booking hold made but no booking request made yet\n - `\"FAILED\"` \u2013 the booking request failed\n\nNote: For `\"PENDING\"` and `\"IN_PROGRESS\"` poll [/booking/status](#tag/Bookings/operation/bookingsStatus) for further booking status updates\n" }, "rejectionReasonCode": { "type": "string", "description": "In the case that `status` is `\"REJECTED\"`, this field provides a code as to the reason for the rejection; one of:\n\n - `\"BOOKABLE_ITEM_IS_NO_LONGER_AVAILABLE\"` \u2013 this bookable item is no longer available\n - `\"DUPLICATE_BOOKING\"` \u2013 this is a duplicate booking\n - `\"OTHER\"` \u2013 other/unlisted reason\n" }, "bookingRef": { "type": "string", "description": "Viator-generated booking reference number" }, "partnerBookingRef": { "type": "string", "description": "Partner-generated booking reference number (if sent in the request)" }, "currency": { "type": "string", "description": "One of the available billing currencies:\n\n - `\"USD\"`\n - `\"CAD\"`\n - `\"GBP\"`\n - `\"AUD\"`\n - `\"EUR\"`\n" }, "lineItems": { "type": "array", "description": "Array of pricing details for each traveler in this booking", "items": { "$ref": "#/components/schemas/PricingLineItem" } }, "totalPrice": { "description": "Total price of this booking", "allOf": [ { "$ref": "#/components/schemas/LineItemPriceObject" } ] }, "cancellationPolicy": { "$ref": "#/components/schemas/CancellationPolicy" }, "voucherInfo": { "$ref": "#/components/schemas/VoucherInfo" } } }, "BookingStatusRequest": { "type": "object", "properties": { "bookingRef": { "type": "string", "description": "The booking reference code (in format `BR-123456789`, which is generated by Viator and returned in the `bookingRef` element in the response from [/bookings/hold](#operation/bookingsHold)) for the booking for which to retrieve status information" }, "partnerBookingRef": { "description": "The booking reference code generated by you (the partner) that was provided in in the request to [/bookings/book](#operation/bookingsBook)) for the booking for which to retrieve status information", "type": "string", "pattern": "(?s).*[\\S].*", "maxLength": 100 }, "voucherFormat": { "type": "string", "description": "File format of the voucher; one of:\n- `PDF`\n- `HTML`\n\nDefault is `HTML` if not specified.\n" } } }, "BookingStatusResponseCommon": { "type": "object", "properties": { "bookingRef": { "type": "string", "description": "Viator-generated booking reference number" }, "partnerBookingRef": { "type": "string", "description": "Partner-generated booking reference number (if sent in the request)" }, "status": { "type": "string", "description": "Indicates the outcome of the booking request; one of:\n\n - `\"CONFIRMED\"` \u2013 the booking has been confirmed\n - `\"REJECTED\"` \u2013 the booking request was declined\n - `\"CANCELED\"` \u2013 the booking has been canceled\n - `\"PENDING\"` \u2013 the booking request has been submitted to the supplier and is awaiting their response\n - `\"IN_PROGRESS\"` \u2013 the booking is still being processed by the booking server\n - `\"ON_HOLD\"` \u2013 booking hold made but no booking request made yet\n - `\"FAILED\"` \u2013 the booking request failed\n" } }, "required": [ "bookingRef", "status" ] }, "AmendmentStatus": { "type": "string", "description": "Machine-interpretable string indicating the outcome of the booking amendment request. One of:\n - `AMENDED`: The amendment was successful\n - `REJECTED`: The amendment was rejected\n - `PENDING`: The amendment is pending\n\n**Note**: If booking has been amended multiple times, this field will only reflect the latest amendment request status (ie, if the booking was amended once and a second amendment request is rejected, the amendment status response will be `REJECTED`)\n" }, "AmendmentRejectionReasonCode": { "type": "string", "description": "Machine-interpretable reason code indicating why the amendment was `REJECTED`. One of:\n\n - `\"BOOKABLE_ITEM_IS_NO_LONGER_AMENDABLE\u201d` \u2013 this bookable item is no longer eligible to be amended due to updated restrictions or conditions.\n - `\"BOOKABLE_ITEM_IS_NO_LONGER_AVAILABLE\"` \u2013 this bookable item is no longer available. The selected bookable item is no longer available for the specified travel date /start time / pax mix combination. Retrieve current availability and generate a new quote before attempting the amendment again.\n - `\"PRICE_MISMATCH\"` \u2013 the quotePriceDifference is no longer valid. The product's price has changed since the quotePriceDifference was generated, re-submit the amendment request to receive an updated quote.\n - `\"ISSUE_WITH_PAYMENT\"` \u2013 the customer\u2019s payment was declined due to an issue trying to process the payment. This could be caused by generic errors, suspected fraud, or incomplete billing information.\n - `\"INSUFFICIENT_FUNDS\"` - the customer's payment was declined due to insufficient funds\n - `\"INVALID_PAYMENT_DETAILS\"` - the customer's payment was declined due to invalid payment details\n - `\"SOFT_DECLINE\"` - the customer\u2019s payment was declined due to fixable issues (eg insufficient funds)\n - `\"HARD_DECLINE\"` - the customer\u2019s payment was declined due to an error or issue which can't be resolved immediately. Action such a new payment method or the customer contacting their bank will need to be taken to resolve the issue before the transaction can be retried.\n - `\"THREE_D_SECURE_REQUIRED\"` - the customer\u2019s payment was declined due to unsuccessful authentication through 3DS\n - `\"INTERNAL_ERROR\"` - the customer\u2019s payment was declined due to an internal error in our system\n - `\"PROCESSOR_UNAVAILABLE\"` - the customer\u2019s payment was declined due to temporary unavailability on the processor\u2019s end\n - `\"PROCESSOR_ISSUE_WITH_PAYMENT\"` - the customer\u2019s payment was declined due to an issue on the processor\u2019s end\n - `\"OTHER\"` \u2013 other/unlisted reason\n\n**Note**: New values may be added over time, allowing flexibility for different use cases.\n" }, "NextPollAt": { "type": "string", "format": "date-time", "description": "Timestamp (UTC) indicating the recommended time the endpoint should be hit again.\n\nExample: \"2025-04-03T02:54:29.082753Z\"\n" }, "BookingStatusResponseConfirmed": { "allOf": [ { "$ref": "#/components/schemas/BookingStatusResponseCommon" }, { "type": "object", "properties": { "amendmentStatus": { "$ref": "#/components/schemas/AmendmentStatus" }, "amendmentRejectionReasonCode": { "$ref": "#/components/schemas/AmendmentRejectionReasonCode" }, "currency": { "required": true, "type": "string", "description": "One of the available billing currencies:\n\n - `\"USD\"`\n - `\"CAD\"`\n - `\"GBP\"`\n - `\"AUD\"`\n - `\"EUR\"`\n" }, "lineItems": { "type": "array", "description": "Array of pricing details for each traveler in this booking", "items": { "$ref": "#/components/schemas/PricingLineItem" } }, "totalPrice": { "description": "Total price of this booking", "allOf": [ { "$ref": "#/components/schemas/LineItemPriceObject" } ] }, "cancellationPolicy": { "$ref": "#/components/schemas/CancellationPolicy" }, "voucherInfo": { "$ref": "#/components/schemas/VoucherInfo" }, "nextPollAt": { "$ref": "#/components/schemas/NextPollAt" } }, "required": [ "currency", "lineItems", "totalPrice", "cancellationPolicy", "voucherInfo" ] } ] }, "BookingStatusResponseTransient": { "allOf": [ { "$ref": "#/components/schemas/BookingStatusResponseCommon" }, { "type": "object", "properties": { "nextPollAt": { "$ref": "#/components/schemas/NextPollAt" } } } ] }, "BookingStatusResponseRejected": { "allOf": [ { "$ref": "#/components/schemas/BookingStatusResponseCommon" }, { "type": "object", "properties": { "rejectionReasonCode": { "type": "string", "description": "In the case that `status` is `\"REJECTED\"`, this field provides a code as to the reason for the rejection; one of:\n\n - `\"BOOKABLE_ITEM_IS_NO_LONGER_AVAILABLE\"` \u2013 this bookable item is no longer available\n - `\"WEATHER\"` \u2013 this booking was rejected on account of the weather\n - `\"DUPLICATE_BOOKING\"` \u2013 this is a duplicate booking\n - `\"PRODUCT_NO_LONGER_OPERATING\"` \u2013 the product is no longer operating\n - `\"MINIMUM_NUMBER_OF_PASSENGERS_NOT_MET\"` \u2013 there are too few passengers for the product to operate\n - `\"SIGNIFICANT_GLOBAL_EVENT_FORCE_MAJEURE\"` \u2013 the booking was rejected due to a natural disaster or other large-scale catastrophe \n - `\"TOUR_WAS_CANCELLED\"` \u2013 the product was cancelled\n - `\"ISSUE_WITH_TICKET\"` \u2013 there was an issue with the ticket\n - `\"ISSUE_WITH_PICKUP\"` \u2013 there was an issue with pickup\n - `\"ISSUE_WITH_PAYMENT\"` \u2013 the customer\u2019s payment was declined due to an issue trying to process the payment. This could be caused by generic errors, suspected fraud, or incomplete billing information.\n - `\"INSUFFICIENT_FUNDS\"` - the customer's payment was declined due to insufficient funds\n - `\"INVALID_PAYMENT_DETAILS\"` - the customer's payment was declined due to invalid payment details\n - `\"SOFT_DECLINE\"` - the customer\u2019s payment was declined due to fixable issues (eg insufficient funds)\n - `\"HARD_DECLINE\"` - the customer\u2019s payment was declined due to an error or issue which can't be resolved immediately. Action such a new payment method or the customer contacting their bank will need to be taken to resolve the issue before the transaction can be retried.\n - `\"THREE_D_SECURE_REQUIRED\"` - the customer\u2019s payment was declined due to unsuccessful authentication through 3DS\n - `\"INTERNAL_ERROR\"` - the customer\u2019s payment was declined due to an internal error in our system\n - `\"PROCESSOR_UNAVAILABLE\"` - the customer\u2019s payment was declined due to temporary unavailability on the processor\u2019s end\n - `\"PROCESSOR_ISSUE_WITH_PAYMENT\"` - the customer\u2019s payment was declined due to an issue on the processor\u2019s end\n - `\"OTHER\"` \u2013 other/unlisted reason\n" } }, "required": [ "rejectionReasonCode" ] } ] }, "BookingStatusResponseOther": { "allOf": [ { "$ref": "#/components/schemas/BookingStatusResponseCommon" } ] }, "BookingStatusResponse": { "oneOf": [ { "$ref": "#/components/schemas/BookingStatusResponseConfirmed" }, { "$ref": "#/components/schemas/BookingStatusResponseTransient" }, { "$ref": "#/components/schemas/BookingStatusResponseRejected" }, { "$ref": "#/components/schemas/BookingStatusResponseOther" } ], "discriminator": { "propertyName": "status", "mapping": { "CONFIRMED": "#/components/schemas/BookingStatusResponseConfirmed", "PENDING": "#/components/schemas/BookingStatusResponseTransient", "REJECTED": "#/components/schemas/BookingStatusResponseRejected", "CANCELED": "#/components/schemas/BookingStatusResponseOther", "IN_PROGRESS": "#/components/schemas/BookingStatusResponseTransient", "ON_HOLD": "#/components/schemas/BookingStatusResponseOther", "FAILED": "#/components/schemas/BookingStatusResponseOther" } } }, "CancellationReason": { "type": "object", "properties": { "cancellationReasonText": { "type": "string", "description": "Natural-language description of this cancellation reason" }, "cancellationReasonCode": { "type": "string", "description": "Machine-interpretable identification code for this cancellation" } } }, "CancellationReasonsResponse": { "type": "object", "properties": { "reasons": { "type": "array", "description": "Array of cancellation reason codes and their asssociated texts for display to the user", "items": { "$ref": "#/components/schemas/CancellationReason" } } } }, "RefundDetails": { "type": "object", "description": "Details of the refund.\n\n**Note**: Bookings that have not been confirmed by the supplier and have a status of `\"PENDING\"` will report an `itemPrice`, `refundAmount` and `refundPercentage` of `0`, as no fees are charged until the booking has been accepted by the supplier and its status is `\"CONFIRMED\"`.\n", "properties": { "itemPrice": { "type": "number", "description": "The merchant total price at the time this product was booked." }, "refundAmount": { "type": "number", "description": "Numeric currency amount that will be refunded." }, "refundPercentage": { "type": "number", "description": "Percentage of the item price that will be refunded." }, "currencyCode": { "type": "string", "description": "Three-letter code indicating the currency in which `itemPrice` and `refundAmount` are displayed." } } }, "CancellationQuoteBookingStatus": { "type": "string", "description": "Machine-interpretable string indicating the cancellation status of this itinerary item:\n\n - `\"CANCELLABLE\"` - this booking is available to be cancelled\n - `\"CANCELLED\"` - this booking has already been cancelled\n - `\"NOT_CANCELLABLE\"` - this booking cannot be cancelled (because the product's start time was in the past)\n" }, "CancelBookingQuoteResponse": { "type": "object", "required": [ "bookingId", "status" ], "properties": { "bookingId": { "type": "string", "description": "Booking reference number for this booking\n- **Note**: For bookings made with v1 of this API, this code corresponds to `data.itemSummaries[].itemId` (in the response from v1's [/booking/book](https://docs.viator.com/partner-api/merchant/technical/#tag/Booking-services/paths/~1booking~1book/post) endpoint) but prepended with `BR-`. For example, if the `itemId` is `580669678`, this field should be `BR-580669678`.\n" }, "refundDetails": { "$ref": "#/components/schemas/RefundDetails" }, "status": { "$ref": "#/components/schemas/CancellationQuoteBookingStatus" } } }, "CancellationRequest": { "type": "object", "required": [ "reasonCode" ], "properties": { "reasonCode": { "type": "string", "description": "Machine-interpretable identification code for this cancellation reason, retrieved from [/bookings/cancel-reasons](#operation/bookingsCancelReasons)" } } }, "CancellationResultItemReason": { "type": "string", "description": "Machine-interpretable reason code indicating why the cancellation was not successful\n\n - `\"ALREADY_CANCELLED\"`: The booking has already been cancelled\n - `\"NOT_CANCELLABLE\"`: The booking cannot be canceled because the product start time was in the past\n\n\n**Note**: This field will not be present in the response if the cancellation was successful\n" }, "CancellationBookingStatus": { "type": "string", "description": "Machine-interpretable string indicating the outcome of the booking cancellation request. One of: \n\n - `\"ACCEPTED\"`: The cancellation was successful\n - `\"DECLINED\"`: The cancellation failed\n" }, "CancelBookingResponse": { "type": "object", "required": [ "bookingId", "status" ], "properties": { "bookingId": { "type": "string", "description": "Booking reference code for this booking\n\n - **Note**: For bookings made with v1 of this API, this code corresponds to `data.itemSummaries[].itemId` (in the response from v1's [/booking/book](https://docs.viator.com/partner-api/merchant/technical/#tag/Booking-services/paths/~1booking~1book/post) endpoint) but prepended with `BR-`. For example, if the `itemId` is `580669678`, this field should be `BR-580669678`.\n" }, "reason": { "$ref": "#/components/schemas/CancellationResultItemReason" }, "status": { "$ref": "#/components/schemas/CancellationBookingStatus" } } }, "BookingEventItem": { "type": "object", "required": [ "productCode", "travelDate" ], "properties": { "productCode": { "type": "string", "description": "Unique identification code for the product to which this booking event pertains\n" }, "productOptionCode": { "type": "string", "description": "Identification code for the product option of the product identified by `productCode` to which this booking event pertains\n\nFor more information about product options, see: [Key-concepts \u2013 Product Options](#section/Key-concepts/Product-options)\n" }, "travelDate": { "type": "string", "format": "date", "description": "The **date** on which the booked item was scheduled to operate\n\n**Example**: `2020-05-29`\n" }, "travelTime": { "type": "string", "format": "time", "description": "The **time of day** at which the booked item was scheduled to commence\n\n**Example**: `09:30`\n" } } }, "BookingEventCancellation": { "type": "object", "required": [ "cancellationReasonCode" ], "properties": { "cancellationReasonCode": { "type": "string", "description": "Identification code for the reason that the booking was canceled by the supplier.\n\nThis code can be used to get a natural-language description of the supplier-initiated cancellation reason from the [/bookings/cancel-reasons](#operation/bookingsCancelReasons) endpoint.\n" }, "refundDetails": { "allOf": [ { "$ref": "#/components/schemas/RefundDetails" }, { "type": "object", "description": "Details of the refund", "properties": { "refundPercentage": { "description": "Percentage of the item price that will be refunded. \n\n**Note**: Because the cancellation was carried out by the supplier, this will always be `100`.\n" }, "refundAmount": { "description": "Numeric currency amount that will be refunded" } } } ] } } }, "BookingEvent": { "type": "object", "required": [ "transactionRef", "eventType", "acknowledgeBy", "bookingRef", "partnerBookingRef", "lastUpdated", "bookedItem" ], "properties": { "transactionRef": { "type": "string", "description": "A unique reference code for this booking event notification. \n\nExample: `\"PBE-e60bb92c-f1fc-11ec-b939-0242ac120002\"`\n" }, "campaignValue": { "type": "string", "description": "**Affiliate partners only:** Specifies the campaign tracking identifier that was appended to the URL returned in productUrl as a query parameter. Campaigns allow you to track how specific links perform, with metrics such as sessions, bookings, and commission.\n" }, "eventType": { "type": "string", "description": "The type of this booking notification event\n\nOne of: \n - `\"CONFIRMATION\"` - The booking was confirmed\n - `\"REJECTION\"` - The booking was rejected by the supplier\n - `\"AMENDMENT\"` - The booking was amended. Amendments actioned via /bookings/amendment/amend endpoint will not be returned\n - `\"CANCELLATION\"` - The booking was canceled by the supplier\n - `\"CUSTOMER_CANCELLATION\"` - The booking was canceled by the customer. Cancellations initiated by the Customer and actioned via [/bookings/{booking-reference}/cancel](#operation/bookingsCancel) endpoint will not be returned\n\nNotes: \n- By default, the response will **not** include events **initiated via the API.** Bookings, Cancellations and Amendments made through the API will not be returned. Rejections of API bookings are also excluded.\n" }, "bookingRef": { "type": "string", "description": "The Viator-generated-booking-reference code for the booking to which this event notification pertains\n\n**Example**: `\"BR-204104078\"`\n" }, "partnerBookingRef": { "type": "string", "description": "The partner-nominated-booking-reference code for the booking to which this event notification pertains\n\n**Note:** For Affiliates with Basic or Full API access, this returns the same value as `bookingRef`, without the `BR-` prefix\n" }, "lastUpdated": { "type": "string", "format": "date-time", "description": "Timestamp indicating when this booking event occurred. This can be used for the value of the `modified-since` query parameter in a request to this endpoint.\n" }, "acknowledgeBy": { "type": "string", "format": "date-time", "description": "Timestamp for the point in time before which this event notification must be acknowledged by the merchant partner (using the [/bookings/modified-since/acknowledge](#operation/bookingsModifiedSinceAcknowledge) endpoint) to take ownership of the customer-communications responsibilities resulting from this event. It only applies to Supplier cancellations.\n\nNotes:\n- It only applies to Supplier cancellations.\n- No action required for eventTypes: CONFIRMATION, REJECTION, AMENDMENT, CUSTOMER_CANCELLATION\n" }, "bookedItem": { "allOf": [ { "type": "object", "description": "Details about the booked item to which this event notification pertains" }, { "$ref": "#/components/schemas/BookingEventItem" } ] }, "cancellation": { "allOf": [ { "type": "object", "description": "Details about the supplier-initiated-booking-cancellation event\n\n**Notes**: \n- This element is only returned when `eventType` is `\"CANCELLATION\"`\n- This element is not returned for Affiliate with API access level Basic or Full\n" }, { "$ref": "#/components/schemas/BookingEventCancellation" } ] } } }, "BookingsModifiedSinceResponse": { "type": "object", "required": [ "bookings" ], "properties": { "bookings": { "type": "array", "description": "List of booking event notifications", "items": { "$ref": "#/components/schemas/BookingEvent" } }, "nextCursor": { "type": "string", "description": "The cursor to use to fetch the next page of booking notification events.\n\n**Example**: `MTU3NDA0NDczOQ==`\n" } } }, "EventsAcknowledgementRequest": { "type": "object", "required": [ "transactionRefs" ], "properties": { "transactionRefs": { "description": "List of booking event notification reference codes for which to acknowledge receipt", "type": "array", "items": { "type": "string" } } } }, "Address": { "required": [ "country", "postalCode" ], "type": "object", "properties": { "country": { "type": "string", "description": "The country of the registered billing address, in two character ISO_3166-1 alpha-2 format.", "example": "US" }, "postalCode": { "type": "string", "description": "The post code of the registered billing address. 4-9 alphanumeric characters, optionally separated space.", "example": "02494" } }, "description": "Minimal billing address details for cardholder" }, "CreditCardRequest": { "required": [ "cvv", "expMonth", "expYear", "name", "number", "address" ], "type": "object", "properties": { "number": { "type": "string", "description": "The full card number, without spaces.", "example": "4111111111111111" }, "cvv": { "type": "string", "description": "The three or four digit CVV.", "example": "234" }, "expMonth": { "type": "string", "description": "Two digit representation of expiry month.", "example": "03" }, "expYear": { "type": "string", "description": "Four digit representation of expiry year.", "example": "2026" }, "name": { "type": "string", "description": "The cardholder's full name.", "example": "Jane Doe" }, "address": { "$ref": "#/components/schemas/Address" } }, "description": "PCI sensitive details for a debit or credit card and relevant metadata." }, "PaymentAccountsRequest": { "required": [ "creditCards" ], "type": "object", "properties": { "creditCards": { "type": "array", "description": "Array of card data, normal use is single item.", "items": { "$ref": "#/components/schemas/CreditCardRequest" } } }, "description": "Wrapper element around payment data." }, "VaultCardRequest": { "required": [ "paymentAccounts" ], "type": "object", "properties": { "paymentAccounts": { "$ref": "#/components/schemas/PaymentAccountsRequest" } }, "description": "The card submission payload." }, "AccountMetaData": { "type": "object", "properties": { "sessionAccountToken": { "type": "string", "description": "Token for the submitted card, to be supplied when payment is requested.", "example": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c" } } }, "CreditCard": { "required": [ "accountHead", "accountTail", "expMonth", "expYear", "name" ], "type": "object", "properties": { "cardType": { "type": "string", "description": "The name of card network for the card submitted.", "example": "Visa" }, "expMonth": { "type": "string", "description": "Two digit representation of expiry month.", "example": "03" }, "expYear": { "type": "string", "description": "Four digit representation of expiry year.", "example": "2026" }, "name": { "type": "string", "description": "The cardholder's full name.", "example": "Jane Doe" }, "accountHead": { "type": "string", "description": "The first six numbers of the card, the BIN portion.", "example": "411111" }, "accountTail": { "type": "string", "description": "The last four numbers of the card.", "example": "1111" }, "address": { "$ref": "#/components/schemas/Address" }, "accountMetaData": { "$ref": "#/components/schemas/AccountMetaData" } } }, "PaymentAccounts": { "type": "object", "properties": { "creditCards": { "uniqueItems": true, "type": "array", "items": { "$ref": "#/components/schemas/CreditCard" } } } }, "VaultPaymentResponse": { "required": [ "paymentAccounts" ], "type": "object", "properties": { "paymentAccounts": { "$ref": "#/components/schemas/PaymentAccounts" } } }, "BulkLocationReferencesRequest": { "type": "object", "required": [ "locations" ], "properties": { "locations": { "type": "array", "maxItems": 500, "description": "List of location reference identifiers for which to retrieve full location details.\n", "items": { "type": "string", "pattern": "(?s).*[\\S].*" } } } }, "Location": { "type": "object", "description": "Location detail", "required": [ "reference", "provider" ], "properties": { "reference": { "type": "string", "pattern": "(?s).*[\\S].*", "description": "Unique identifier for this location as given in the request" }, "provider": { "$ref": "#/components/schemas/LocationProvider" } }, "discriminator": { "propertyName": "provider", "mapping": { "TRIPADVISOR": "#/components/schemas/ResolvedLocation", "GOOGLE": "#/components/schemas/ProvidedLocation" } } }, "LocationAddress": { "type": "object", "description": "Address details for this location", "properties": { "street": { "type": "string", "description": "Street address of this location\n\n - **Example**: `\"1 George St.\"`\n" }, "administrativeArea": { "type": "string", "description": "Administrative area this location falls into\n\n - **Example**: `\"Sydney\"`\n" }, "state": { "type": "string", "description": "State or region of this location\n\n - **Example**: `\"New South Wales\"`\n" }, "country": { "type": "string", "description": "Country of this location\n\n - **Example**: `\"Australia\"`\n" }, "countryCode": { "type": "string", "description": "Two-character Alpha-2 country-code for this location\n\n - **Example**: `\"AU\"`\n" }, "postcode": { "type": "string", "description": "Post code of this location\n\n - **Example**: `\"2000\"`\n" } } }, "LocationCenter": { "type": "object", "description": "Geographic coordinates (latitude/longitude) for this location", "properties": { "latitude": { "type": "number", "description": "Latitude of this location\n\n - **Example**: `-33.870037`\n" }, "longitude": { "type": "number", "description": "Longitude of this location\n\n - **Example**: `151.20955`\n" } } }, "ResolvedLocation": { "allOf": [ { "$ref": "#/components/schemas/Location" }, { "type": "object", "required": [ "name" ], "properties": { "name": { "type": "string", "pattern": "(?s).*[\\S].*", "description": "Name of this location\n- **Note**: This field contains natural language suitable for display to the user; content will be translated (if necessary) into the language specified in the Accept-Language header parameter\n" }, "unstructuredAddress": { "type": "string", "description": "Summary of the address of this location in the case that structured information is unavailable\n\n - **Note**: This field contains natural language suitable for display to the user; content will be translated (if necessary) into the language specified in the Accept-Language header parameter\n" }, "address": { "$ref": "#/components/schemas/LocationAddress" }, "center": { "$ref": "#/components/schemas/LocationCenter" } } } ] }, "ProvidedLocation": { "allOf": [ { "$ref": "#/components/schemas/Location" }, { "type": "object", "required": [ "providerReference" ], "properties": { "providerReference": { "type": "string", "description": "Unique identifier (location provider reference) for this location in the case that this is not a Viator location" } } } ] }, "LocationProvider": { "type": "string", "description": "Name of the location services provider, one of:\n\n - `\"TRIPADVISOR\"` \u2013 location details will be provided in this response\n - `\"GOOGLE\"` \u2013 in order to retrieve details for these locations, you will need to use [Google's Places API](https://cloud.google.com/maps-platform/places).\n" }, "LocationsResponse": { "type": "object", "required": [ "locations" ], "properties": { "locations": { "type": "array", "description": "Locations", "items": { "$ref": "#/components/schemas/Location" } } } }, "ExchangeRatesRequest": { "type": "object", "properties": { "sourceCurrencies": { "type": "array", "description": "List of three-letter currency codes for the source currencies for which to retrieve exchange rate data", "items": { "type": "string" } }, "targetCurrencies": { "type": "array", "description": "List of three-letter currency codes for the target currencies for which to retrieve exchange rate data", "items": { "type": "string" } } } }, "ExchangeRateItem": { "type": "object", "properties": { "sourceCurrency": { "type": "string", "description": "Base currency for this conversion rate" }, "targetCurrency": { "type": "string", "description": "Target currency for this conversion rate" }, "rate": { "type": "number", "description": "Value of `targetCurrency` per unit of `sourceCurrency`" }, "lastUpdated": { "type": "string", "format": "date-time", "description": "Timestamp (UTC) indicating the last time this currency exchange rate was updated\n" }, "expiry": { "type": "string", "format": "date-time", "description": "Timestamp (UTC) indicating until when this rate will apply\n" } } }, "ExchangeRatesResponse": { "type": "object", "properties": { "rates": { "type": "array", "description": "Currency exchange rates", "items": { "$ref": "#/components/schemas/ExchangeRateItem" } } } }, "ProductReviewsRequest": { "type": "object", "required": [ "productCode", "start", "count", "provider" ], "properties": { "productCode": { "type": "string", "description": "Retrieve reviews for the product identified by this product code" }, "count": { "type": "integer", "format": "int32", "description": "Number of reviews to be returned in the response; used for pagination" }, "start": { "type": "integer", "format": "int32", "description": "Position of first review to be returned in the response; used for pagination" }, "provider": { "type": "string", "description": "Limit the reviews returned in the response to those associated with this provider; one of:\n\n- `\"VIATOR\"` \u2013 only include reviews submitted on viator.com\n- `\"TRIPADVISOR\"` \u2013 only include reviews submitted on tripdavisor.com\n- `\"ALL\"` - include reviews from all providers\n" }, "sortBy": { "type": "string", "description": "One of:\n\n- `\"HIGHEST_RATING_PER_LOCALE\"` \u2013 sort by rating (descending) *for each locale*\n- `\"MOST_RECENT_PER_LOCALE\"` \u2013 sort by publication date (descending) *for each locale*\n- `\"MOST_HELPFUL_PER_LOCALE\"` \u2013 sort by the number of 'helpful' votes (descending) *for each locale*\n- `\"HIGHEST_RATING\"` \u2013 sort by rating (descending) *across all locales*\n- `\"MOST_RECENT\"` \u2013 sort by publication date (descending) *across all locales*\n- `\"MOST_HELPFUL\"` \u2013 sort by the number of 'helpful' votes (descending) *across all locales*\n\nIf this element is omitted, the default sort option is `\"MOST_RECENT\"`\n" }, "reviewsForNonPrimaryLocale": { "type": "boolean", "description": "Controls whether reviews that cannot be provided in the requested language are included.\n\nWhen `false`, returns only reviews that can be provided in the requested language, either originally or via machine translation.\nWhen `true`, additional reviews may be returned in their original language when no requested-language version is available.\n" }, "showMachineTranslated": { "type": "boolean", "description": "When `true`, returns machine-translated review text in the requested language, where available, based on `Accept-Language`. When `false`, reviews are returned in their original language, even if a machine translation exists. This does not filter reviews by their original language.\n" }, "ratings": { "type": "array", "description": "Only include reviews with these ratings\n\n**Example**: `[3,4,5]` to receive reviews with a rating of 3 or above\n", "items": { "type": "integer", "format": "int32" } } } }, "ReviewPhoto": { "type": "object", "required": [ "height", "width", "url" ], "properties": { "height": { "type": "integer", "format": "int32", "description": "Height of image in pixels" }, "width": { "type": "integer", "format": "int32", "description": "Width of image in pixels" }, "url": { "type": "string", "description": "URL at which this image is located" } } }, "ReviewPhotoInfo": { "type": "object", "required": [ "photoVersions" ], "properties": { "photoVersions": { "type": "array", "description": "Width and height variants of this review image and associated URLs", "items": { "$ref": "#/components/schemas/ReviewPhoto" } } } }, "ProductReview": { "type": "object", "required": [ "reviewReference", "language", "publishedDate", "text", "title", "machineTranslated", "provider", "helpfulVotes" ], "properties": { "reviewReference": { "type": "string", "pattern": "(?s).*[\\S].*", "description": "Unique identification code for this review" }, "language": { "type": "string", "pattern": "(?s).*[\\S].*", "description": "Language code for the language in which this review is written" }, "avatarUrl": { "type": "string", "description": "URL for the avatar image (if available) for the reviewer that authored this review" }, "publishedDate": { "type": "string", "format": "date-time", "description": "Date-time stamp indicating when this review was published\n\nE.g.: `2021-01-02T11:17:12Z`\n" }, "userName": { "type": "string", "description": "Username of the reviewer who submitted this review" }, "rating": { "type": "integer", "format": "int32", "description": "Star-rating for this product given by this reviewer in this review" }, "text": { "type": "string", "pattern": "(?s).*[\\S].*", "description": "Main text of this review\n\n- **Note**: This field contains natural language suitable for display to the user; content will be translated (if necessary) into the language specified in the Accept-Language header parameter.\n" }, "title": { "type": "string", "pattern": "(?s).*[\\S].*", "description": "Title of this review\n\n- **Note**: This field contains natural language suitable for display to the user; content will be translated (if necessary) into the language specified in the Accept-Language header parameter.\n" }, "machineTranslated": { "type": "boolean", "description": "Indicates whether the natural-language elements of this review have been machine translated" }, "provider": { "type": "string", "pattern": "(?s).*[\\S].*", "description": "Provider for this review; one of:\n\n - `\"VIATOR\"`\n - `\"TRIPADVISOR\"`\n" }, "ownerResponse": { "type": "object", "description": "Response to this review from the supplier of this product if available", "required": [ "reviewReference", "language", "publishedDate", "text", "machineTranslated" ], "properties": { "reviewReference": { "type": "string", "description": "Unique identification code for this owner-response-review" }, "language": { "type": "string", "description": "Language code for the language in which this owner-response-review is written" }, "publishedDate": { "type": "string", "format": "date-time", "description": "Date-time stamp indicating when this owner-response-review was published\n\nE.g.: `2021-01-02T11:17:12Z`\n" }, "userName": { "type": "string", "description": "Username of the supplier who submitted this owner-response-review" }, "text": { "type": "string", "description": "Main text of this owner-response-review\n\n- **Note**: This field contains natural language suitable for display to the user; content will be translated (if necessary) into the language specified in the Accept-Language header parameter.\n" }, "machineTranslated": { "type": "boolean", "description": "Indicates whether the natural-language elements of this review have been machine translated" } } }, "helpfulVotes": { "type": "integer", "format": "int32", "description": "Number of times this review has been labeled 'helpful' by other users" }, "photosInfo": { "type": "array", "description": "Information about any photographs that were submitted with this review", "items": { "$ref": "#/components/schemas/ReviewPhotoInfo" } } } }, "ProductReviewsResponse": { "type": "object", "required": [ "reviews", "totalReviewsSummary", "totalReviewCount", "filteredReviewCountByProvider" ], "properties": { "reviews": { "type": "array", "description": "Reviews and review metadata for this product, from `start` to (`start`+`count`)\n", "items": { "$ref": "#/components/schemas/ProductReview" } }, "totalReviewsSummary": { "type": "object", "description": "Summary of the set of all reviews available for this product", "properties": { "sources": { "type": "array", "description": "Breakdown of review summaries for each review source", "items": { "$ref": "#/components/schemas/ProductReviewsSummarySource" } }, "reviewCountTotals": { "type": "array", "description": "Breakdown of number of reviews per rating for all reviews of this product from all sources", "items": { "$ref": "#/components/schemas/ProductReviewsSummaryCount" } }, "totalReviews": { "description": "Total number of reviews available for this product from all sources", "type": "integer", "format": "int64" } } }, "filteredReviewsSummary": { "type": "object", "description": "Summary of the set of reviews available for this product filtered by `provider`, `ratings`, `reviewsForNonPrimaryLocale` and `showMachineTranslated` in the request", "properties": { "sources": { "type": "array", "description": "Breakdown of review summaries for each review source", "items": { "type": "object", "properties": { "provider": { "type": "string", "description": "Provider for this set of reviews; one of:\n- `\"VIATOR\"`\n- `\"TRIPADVISOR\"`\n" }, "totalCount": { "type": "integer", "format": "int64", "description": "Total number of reviews for this product sourced from this provider" } } } }, "totalReviews": { "description": "Total number of reviews available for this product from all sources", "type": "integer", "format": "int64" } } } } }, "BulkSupplierProductRequest": { "type": "object", "required": [ "productCodes" ], "properties": { "productCodes": { "type": "array", "items": { "type": "string", "pattern": "(?s).*[\\S].*", "description": "Product code of the product you wish to find the supplier information for" } } } }, "ContactDetails": { "type": "object", "properties": { "email": { "type": "string", "description": "Email address of this supplier (for the office managing this product)" }, "address": { "type": "string", "description": "Address of this supplier (for the office managing this product)" }, "phone": { "type": "string", "description": "Phone number of this supplier (for the office managing this product)" }, "countryCode": { "type": "string", "description": "Country code of this supplier (for the office managing this product)" } } }, "SupplierProductInfo": { "type": "object", "required": [ "reference", "name", "type", "productCode" ], "properties": { "reference": { "type": "string", "pattern": "(?s).*[\\S].*", "description": "Unique reference code for this supplier" }, "name": { "type": "string", "pattern": "(?s).*[\\S].*", "description": "Name of this supplier" }, "supplierInfoVerified": { "type": "boolean", "description": "Supplier has passed Viator's 'know your business customer' checks required by the DSA." }, "supplierAgreedToLegalCompliance": { "type": "boolean", "description": "The operator has self-certified that they are committed to only offer services that comply with applicable laws, including EU law\n\nNote: If no information is passed, it means Supplier is still going through self-certification\n" }, "registrationCountry": { "type": "string", "pattern": "(?s).*[\\S].*", "description": "Country where the supplier is registered (if supplier operates through a registered business entity)" }, "tradeRegisterName": { "type": "string", "pattern": "(?s).*[\\S].*", "description": "Name of business register (if supplier operates through a registered business entity)" }, "registeredBusinessNumber": { "type": "string", "pattern": "(?s).*[\\S].*", "description": "A unique identifier assigned to a business entity by a government authority for the purpose of regulatory compliance, taxation, and other official transactions" }, "type": { "type": "string", "pattern": "(?s).*[\\S].*", "description": "Whether this supplier is a business or an individual\n\nOne of:\n - `\"BUSINESS\"`\n - `\"INDIVIDUAL\"`\n\nNote: BUSINESS includes individuals who are acting as sole traders\n" }, "logo": { "type": "string", "pattern": "(?s).*[\\S].*", "description": "Supplier logo / trademark" }, "productCode": { "type": "string", "pattern": "(?s).*[\\S].*", "description": "Product code to which this supplier search result pertains" }, "contact": { "$ref": "#/components/schemas/ContactDetails" } } }, "SupplierProductResponse": { "type": "object", "required": [ "suppliers" ], "description": "Supplier details for the given product code", "properties": { "suppliers": { "type": "array", "items": { "$ref": "#/components/schemas/SupplierProductInfo" } } } }, "AttractionsSearchRequest": { "type": "object", "required": [ "destinationId" ], "properties": { "destinationId": { "type": "integer", "description": "Unique numeric identifier of the destination to retrieve attractions for\n" }, "sorting": { "type": "object", "description": "How the search results will be sorted", "properties": { "sort": { "type": "string", "default": "DEFAULT", "description": "Method by which attraction results will be sorted; one of:\n\n- `\"DEFAULT\"`: the default sort, where 'featured' attractions appear first (Note: What Viator gets paid impacts this sort order).\n- `\"ALPHABETICAL\"`: attractions are sorted by alphabetical ascending order\n- `\"REVIEW_AVG_RATING\"`: attractions are sorted by reviews average rating descending order\n" } } }, "pagination": { "type": "object", "description": "Pagination details specifying which search results to return based on start position and item count", "properties": { "start": { "type": "integer", "default": 1, "minimum": 1, "description": "Position of first filtered and ordered search result to be included in the response (1-based)\n" }, "count": { "type": "integer", "default": 30, "maximum": 30, "minimum": 1, "description": "Number of filtered and ordered search results to be returned in the response\n" } } } } }, "AttractionDetails": { "type": "object", "required": [ "attractionId", "name", "attractionUrl", "destinations", "productCodes", "productCount", "images" ], "properties": { "attractionId": { "type": "integer", "description": "Unique numeric identifier for this attraction" }, "name": { "type": "string", "description": "Natural-language title of this attraction\n\n**Note**: This field contains natural language suitable for display to the user; content will be translated (if necessary) into the language specified in the Accept-Language header parameter\n" }, "destinations": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "integer", "format": "int64", "description": "Unique numeric identifier for this destination" }, "primary": { "type": "boolean", "description": "**True** if this is the primary destination associated with this product\n" } } }, "description": "Destinations associated with this attraction" }, "attractionUrl": { "type": "string", "description": "**URL** to forward users to in order to complete their purchase on the Viator site\n\nThis URL includes all the necessary information for Viator to correctly attribute and pay commission for the sale to the referring partner.\n\nIf `campaign-value` is included in the request, this URL will also include the campaign tracking value that you set.\n\nFor more information, see our guide to Affiliate Attribution on the Viator Partner Resource Center.\n\n**Note**:\n - This element is only returned for affiliate partners.\n - **You must use the full URL and not modify it in any way \u2013 any changes could result in failure to attribute the sale to you, which means you will not be paid a commission for this sale.**\n - For whitelabel partners, the attractionUrl will dynamically retrieve the partners custom **domain URL**, instead of defaulting to viator.com\n\nExample:\n - https://www.viator.com/Inverness-attractions/Loch-Ness/d5051-a31?mcid=42383&pid=P00045135&medium=api&version=2.0&campaign=example\n" }, "productCount": { "type": "integer", "description": "Number of products associated with the attraction" }, "productCodes": { "type": "array", "items": { "type": "string", "pattern": "(?s).*[\\S].*" }, "description": "List of `productCodes` associated with the attraction" }, "images": { "type": "array", "description": "Images for this attraction", "items": { "$ref": "#/components/schemas/ImageVariant" } }, "reviews": { "$ref": "#/components/schemas/ProductReviewsSummary" }, "freeAttraction": { "type": "boolean", "description": "Identifies if a admission fee is required to access this attraction" }, "openingHours": { "type": "string", "description": "This attraction Opening Hours" }, "viatorUniqueContent": { "type": "object", "description": "Attraction details unique to Viator.com\n\n**Note**:\n - Access to this information is only available if it is enabled for your account. Please [reach out to our support team](#section/Support) if you would like to take advantage of our unique content..\n - You must ensure that your site is configured such that **no Viator Unique Content is indexed by any search engine**. This is a requirement for site certification. For more information, see [Key concepts \u2013 Protecting unique content](#section/Key-concepts/Protecting-unique-content)\n", "properties": { "introduction": { "type": "string", "description": "Natural-language descriptive text for this attraction\n\n**Note**: This field contains natural language suitable for display to the user; content will be translated (if necessary) into the language specified in the Accept-Language header parameter\n" }, "overview": { "type": "object", "properties": { "sections": { "type": "array", "items": { "type": "object", "properties": { "title": { "type": "string", "description": "Section title" }, "text": { "type": "string", "description": "Section text\n**Note**: Certain parts of the response may HTML content\n" } } } } }, "description": "Natural-language practical information about this attraction. Amount and content of sections is not standardized across attractions.\n\n**Notes**: \n- This field contains natural language suitable for display to the user; content will be translated (if necessary) into the language specified in the Accept-Language header parameter. It will not be returned if translation is not available.\n" } } }, "translationInfo": { "$ref": "#/components/schemas/TranslationDetails" }, "center": { "$ref": "#/components/schemas/LocationCenter" }, "address": { "type": "object", "description": "Address details for this attraction", "properties": { "street": { "type": "string", "description": "Street address of the attraction" }, "city": { "type": "string", "description": "Name of the city in which the attraction is located" }, "state": { "type": "string", "description": "State in which the attraction is located" }, "postcode": { "type": "string", "description": "Postcode in which the attraction is located" } } } } }, "AttractionsSearchResponse": { "type": "object", "properties": { "attractions": { "type": "array", "items": { "$ref": "#/components/schemas/AttractionDetails" } }, "totalCount": { "type": "integer", "format": "int32", "description": "Total number of products matching the filtering criteria \u2013 these may be accessed via multiple calls to this service using the pagination feature" } } }, "DestinationDetails": { "type": "object", "required": [ "destinations", "destinationId", "name", "type", "parentDestinationId", "images", "lookupId" ], "properties": { "destinationId": { "type": "integer", "format": "int64", "description": "Unique numeric identifier of the destination\n\nUse this value as the `destinationId` input field for other Partner API services. It matches the `destinations[].ref` in /products endpoints.\n" }, "name": { "type": "string", "description": "Name of the destination" }, "type": { "type": "string", "description": "Destination type specifier. One of:\n- `\"AREA\"`\n- `\"CITY\"`\n- `\"COUNTRY\"`\n- `\"COUNTY\"`\n- `\"DISTRICT\"`\n- `\"HAMLET\"`\n- `\"ISLAND\"`\n- `\"NATIONAL PARK\"`\n- `\"NEIGHBORHOOD\"`\n- `\"PENINSULA\"`\n- `\"PROVINCE\"`\n- `\"REGION\"`\n- `\"STATE\"`\n- `\"TOWN\"`\n- `\"UNION TERRITORY\"`\n- `\"VILLAGE\"`\n- `\"WARD\"`\n\n**Note**: New values can be added and consumers should be prepared to handle this in a future-proof manner.\n" }, "parentDestinationId": { "type": "integer", "format": "int64", "description": "Unique numeric identifier of the destination's parent destination" }, "lookupId": { "type": "string", "description": "Hierarchy location specifier for the destination that is a concatenation of all parentDestinationId and destinationId codes. Hierarchy has no limitation as to the amount of levels.\n- **Example**: `\"8.77.278.672.59070\"` for Honolulu\n- **Format**: [top level parentDestinationId].[any additional parentDestinationId].[destinationId]\n" }, "destinationUrl": { "type": "string", "description": "**URL** to forward users to in order to complete their purchase on the Viator site\n\nThis URL includes all the necessary information for Viator to correctly attribute and pay commission for the sale to the referring partner.\n\nIf `campaign-value` is included in the request, this URL will also include the campaign tracking value that you set.\n\nFor more information, see our guide to Affiliate Attribution on the Viator Partner Resource Center.\n\n**Note**:\n - This element is only returned for affiliate partners.\n - **You must use the full URL and not modify it in any way \u2013 any changes could result in failure to attribute the sale to you, which means you will not be paid a commission for this sale.**\n - For whitelabel partners, the destinationUrl will dynamically retrieve the partners custom **domain URL**, instead of defaulting to viator.com\n\nExample:\n - https://www.viator.com/Las-Vegas/d684-ttd?mcid=42383&pid=P00045135&medium=api&version=2.0&campaign=example\n" }, "defaultCurrencyCode": { "type": "string", "description": "Main currency used in the destination\n\n- Example: `\"EUR\"`\n" }, "timeZone": { "type": "string", "pattern": "(?s).*[\\S].*", "description": "Main time zone of the destination\n\n- Example: `\"US/Pacific\"`\n" }, "iataCodes": { "type": "array", "items": { "type": "string" }, "description": "IATA airport code(s) for the destination: a three-letter code defined by the International Air Transport Association (IATA) used to identify many airports around the world\n\n- **Example**: [`\"VCE\"`]\n- **Note**: if `type` is `\"COUNTRY\"` this field will return all available IATA codes in destination child items.\n" }, "countryCallingCode": { "type": "string", "description": "International call prefix used to call phone numbers in this destination.\n\n- Example: `\"+351\"`\n" }, "languages": { "type": "array", "items": { "type": "string" }, "description": "Official language(s) of this destination.\n\nIf more than one languages spoken, they\u2019ll be concatenated in the response\n\n**Note**: it uses ISO-639 Set 1 and ISO-3166 Alpha-2 (optional) standards\n\n- Example: [`\"en-GB\"`, `\"es\"`]\n" }, "center": { "$ref": "#/components/schemas/LocationCenter" } } }, "DestinationsResponse": { "type": "object", "properties": { "destinations": { "type": "array", "items": { "$ref": "#/components/schemas/DestinationDetails" } }, "totalCount": { "type": "integer", "format": "int32", "description": "Total count of Destinations returned" } } }, "BookingRef": { "type": "string", "description": "The booking reference code (in format `BR-123456789`), generated by Viator and returned in the `bookingRef` element in the response from [/bookings/book](#operation/bookingsBook) and [/bookings/cart/book](#operation/bookingsCartBook)\n", "example": "BR-123456789" }, "AmendmentTypes": { "type": "array", "items": { "type": "string" }, "uniqueItems": true, "description": "List of booking components that can be amended in this booking:\n - `\"BOOKING_DETAILS\"`\n - `\"UPDATE_PAX_MIX\"`\n - `\"PER_TRAVELER_QUESTIONS\"`\n - `\"PER_BOOKING_QUESTIONS\"`\n\n**Notes**:\n - Only one amendmentType can be updated per request\n - This field will not be present in the response if `isAmendable` is `false`\n - New values may be added over time, allowing flexibility for different use cases.\n" }, "BookingQuestionTraveler": { "type": "string", "pattern": "(?s).*[\\S].*", "description": "Booking question identifier - `id` field in response from [/products/booking-questions](#operation/productsBookingQuestions) endpoint. Possible values:\n - `DATE_OF_BIRTH`\n - `HEIGHT`\n - `PASSPORT_EXPIRY`\n - `PASSPORT_NATIONALITY`\n - `PASSPORT_PASSPORT_NO`\n - `WEIGHT`\n - `FULL_NAMES_FIRST`\n - `FULL_NAMES_LAST`\n\n**Note**: only the Booking questions on the list provided are eligible to be amended\n" }, "BookingQuestionUnit": { "type": "string", "description": "Unit in which the answer is provided; one of `units` in response from [/products/booking-questions](#operation/productsBookingQuestions) endpoint.\n" }, "PaxMixSummary": { "type": "array", "description": "Summary of the current PAX MIX of the booking. \nIt ensures each traveler listed in the PaxMix is assigned a `travelerNum` and informs which Booking Questions have been answered for each at the time of the booking.\n\n**Note**: This field will not be present in the response if `isAmendable` is `false`\n", "items": { "type": "object", "required": [ "travelerNum", "ageBand" ], "properties": { "travelerNum": { "type": "integer", "description": "Traveler Number identifying each traveler on the booking.\n\n**Note**: This field reuses the `travelerNum` values provided in the [/bookings/book](#operation/bookingsBook) or [/bookings/cart/book](#operation/bookingsCartBook) request. If not supplied, new values will be generated.\n" }, "ageBand": { "type": "string", "pattern": "(?s).*[\\S].*", "description": "Machine-interpretable value indicating the age-band that each traveler falls into; one of:\n\n - `ADULT`\n - `SENIOR`\n - `YOUTH`\n - `CHILD`\n - `INFANT`\n - `TRAVELER`\n\nThe valid age-band identifiers for the product are provided in the `pricingInfo.ageBands[]` array in the [product content response](#section/Key-concepts/Content-ingestion-endpoints). The `TRAVELER` age-band is to be used when the `pricingInfo.type` is `UNIT`; i.e., unit or group pricing.\n\nTo learn more about how to implement age bands, see the following guide: [Implementing age bands & pax mix](https://partnerresources.viator.com/travel-commerce/merchant/agebands-pax-mix?source=specs)\n" }, "bookingQuestions": { "type": "object", "description": "Traveler-specific booking questions required for this booking.\n", "required": [ "question" ], "properties": { "question": { "$ref": "#/components/schemas/BookingQuestionTraveler" }, "answer": { "type": "string", "description": "Answer to the booking question provided at time of the booking.\n\n**Note**: if omitted, it means `bookingQuestion` was not answered at the time of the booking or the list of `bookingQuestions` required has been updated since the time of the booking.\n" }, "unit": { "$ref": "#/components/schemas/BookingQuestionUnit" } } } } } }, "AmendmentCheckResponse": { "type": "object", "required": [ "bookingRef", "isAmendable" ], "properties": { "bookingRef": { "$ref": "#/components/schemas/BookingRef" }, "isAmendable": { "type": "boolean", "description": "Indicates whether the booking can be amended. \nIf `false`, the booking cannot be amended.\n" }, "reason": { "type": "string", "description": "Machine-interpretable reason code indicating why the amendment can not proceed. One of:\n - `\"UNSUPPORTED_PRODUCT\"`: This booking cannot be amended due to product configurations\n - `\"UNSUPPORTED_CANCELLATION_POLICY\"`: The booking cannot be amended because of its cancellation policy\n - `\"OTHER\"`\n\n**Notes**:\n - This field will not be present in the response if `isAmendable` is `true`\n - New values may be added over time, allowing flexibility for different use cases.\n" }, "amendmentTypes": { "$ref": "#/components/schemas/AmendmentTypes" }, "paxMixSummary": { "$ref": "#/components/schemas/PaxMixSummary" } } }, "AmendmentQuoteRequestCommon": { "type": "object", "required": [ "bookingRef" ], "properties": { "bookingRef": { "$ref": "#/components/schemas/BookingRef" } } }, "AmendBookingDetails": { "type": "object", "title": "Booking Details", "allOf": [ { "$ref": "#/components/schemas/AmendmentQuoteRequestCommon" }, { "type": "object", "required": [ "bookingDetails" ], "properties": { "bookingDetails": { "type": "object", "description": "New booking details of the product being amended. \n\n**Note**: Only the fields being changed need to be included in the request \u2014 for example, if updating the `startTime` while keeping the `travelDate` unchanged, only the `startTime` field needs to be provided.\n", "properties": { "travelDate": { "$ref": "#/components/schemas/TravelDate" }, "startTime": { "$ref": "#/components/schemas/StartTime" }, "productOptionCode": { "$ref": "#/components/schemas/ProductOptionCode" } } } } } ] }, "AmendPaxMix": { "type": "object", "title": "Update PaxMix", "allOf": [ { "$ref": "#/components/schemas/AmendmentQuoteRequestCommon" }, { "type": "object", "required": [ "updatePaxMix" ], "properties": { "updatePaxMix": { "description": "Add/remove travelers from the booking.\n", "properties": { "removePaxMix": { "type": "array", "description": "List of travelers to be removed from the booking.", "items": { "type": "object", "required": [ "travelerNum" ], "properties": { "travelerNum": { "type": "integer", "description": "Traveler Number identifying the traveler(s) to remove from the booking.\n" } } } }, "addPaxMix": { "type": "array", "description": "List of new travelers to be added to the booking.", "items": { "type": "object", "required": [ "travelerNum", "ageBand" ], "properties": { "travelerNum": { "type": "integer", "description": "Traveler Number identifying the traveler(s) to add to the booking.\n" }, "ageBand": { "$ref": "#/components/schemas/AgeBand-2" }, "bookingQuestions": { "type": "object", "description": "Booking questions that must be answered for new travelers.\n", "required": [ "question", "answer" ], "properties": { "question": { "$ref": "#/components/schemas/BookingQuestionTraveler" }, "answer": { "type": "string", "description": "Answer to the booking question.\n\n**Note**: Emojis are not supported in this field; therefore, please ensure that only ordinary natural-language characters and numerals are included.\n" }, "unit": { "$ref": "#/components/schemas/BookingQuestionUnit" } } } } } } } } } } ] }, "AmendPerTravelerQuestions": { "type": "object", "title": "Per Traveler Questions", "allOf": [ { "$ref": "#/components/schemas/AmendmentQuoteRequestCommon" }, { "type": "object", "required": [ "perTravelerQuestions" ], "properties": { "perTravelerQuestions": { "type": "object", "description": "Booking questions to be changed for a given traveler.\n", "required": [ "travelerNum", "bookingQuestions" ], "properties": { "travelerNum": { "type": "integer", "description": "Traveler number identifying the traveler to be amended.\n" }, "bookingQuestions": { "type": "object", "description": "Booking questions for the existing traveler (pax mix).\n", "required": [ "question", "answer" ], "properties": { "question": { "type": "string", "pattern": "(?s).*[\\S].*", "description": "Booking question to be amended. Identifier - `id` field in response from [/products/booking-questions](#operation/productsBookingQuestions) endpoint. Possible values:\n - `DATE_OF_BIRTH`\n - `HEIGHT`\n - `PASSPORT_EXPIRY`\n - `PASSPORT_NATIONALITY`\n - `PASSPORT_PASSPORT_NO`\n - `WEIGHT`\n - `FULL_NAMES_FIRST`\n - `FULL_NAMES_LAST`\n\n**Note**: only the Booking questions on the list provided are eligible to be amended\n" }, "answer": { "type": "string", "description": "Amended answer to the booking question.\n\n**Note**: Emojis are not supported in this field; therefore, please ensure that only ordinary natural-language characters and numerals are included.\n" }, "unit": { "$ref": "#/components/schemas/BookingQuestionUnit" } } } } } } } ] }, "AmendPerBookingQuestions": { "type": "object", "title": "Per Booking Questions", "allOf": [ { "$ref": "#/components/schemas/AmendmentQuoteRequestCommon" }, { "type": "object", "required": [ "perBookingQuestions" ], "properties": { "perBookingQuestions": { "type": "object", "description": "Per booking booking questions.\n", "required": [ "question", "answer" ], "properties": { "question": { "type": "string", "pattern": "(?s).*[\\S].*", "description": "Booking question to be amended. Identifier - `id` field in response from [/products/booking-questions](#operation/productsBookingQuestions) endpoint. \nPossible values:\n - `PICKUP_POINT`\n - `TRANSFER_AIR_ARRIVAL_AIRLINE`\n - `TRANSFER_AIR_ARRIVAL_FLIGHT_NO`\n - `TRANSFER_AIR_DEPARTURE_AIRLINE`\n - `TRANSFER_AIR_DEPARTURE_FLIGHT_NO`\n - `TRANSFER_ARRIVAL_DROP_OFF`\n - `TRANSFER_ARRIVAL_TIME`\n - `TRANSFER_DEPARTURE_DATE`\n - `TRANSFER_DEPARTURE_PICKUP`\n - `TRANSFER_DEPARTURE_TIME`\n - `TRANSFER_PORT_ARRIVAL_TIME`\n - `TRANSFER_PORT_CRUISE_SHIP`\n - `TRANSFER_PORT_DEPARTURE_TIME`\n - `TRANSFER_RAIL_ARRIVAL_LINE`\n - `TRANSFER_RAIL_ARRIVAL_STATION`\n - `TRANSFER_RAIL_DEPARTURE_LINE`\n - `TRANSFER_RAIL_DEPARTURE_STATION`\n" }, "answer": { "type": "string", "description": "Answer to the booking question.\n\n**Note**: Emojis are not supported in this field; therefore, please ensure that only ordinary natural-language characters and numerals are included.\n" }, "unit": { "$ref": "#/components/schemas/BookingQuestionUnit" } } } } } ] }, "AmendmentQuoteRequest": { "type": "object", "properties": { "voucherFormat": { "$ref": "#/components/schemas/VoucherFormat" } }, "oneOf": [ { "$ref": "#/components/schemas/AmendBookingDetails" }, { "$ref": "#/components/schemas/AmendPaxMix" }, { "$ref": "#/components/schemas/AmendPerTravelerQuestions" }, { "$ref": "#/components/schemas/AmendPerBookingQuestions" } ] }, "QuoteStatus": { "type": "string", "description": "Machine-interpretable string indicating the outcome of the quote request. One of:\n - `CONFIRMED`: The quote was successful\n - `REJECTED`: The quote was rejected\n" }, "AmendmentQuoteResponseCommon": { "type": "object", "required": [ "bookingRef", "status" ], "properties": { "bookingRef": { "$ref": "#/components/schemas/BookingRef" }, "status": { "$ref": "#/components/schemas/QuoteStatus" } } }, "QuoteReference": { "type": "string", "description": "Unique Viator-generated quote reference for a booking.", "example": "QR-4891fddc-7e2e-4203-9517-ec75703daa8a" }, "QuoteValidUntil": { "type": "string", "format": "date-time", "description": "Timestamp (UTC) indicating when the quote expires.", "example": "2019-04-03T02:54:29.082753Z" }, "QuoteInitialPrice": { "type": "number", "description": "Total price of the booking at the time of purchase." }, "QuotePriceDifference": { "type": "object", "description": "The price difference that must be paid (or refunded, if negative) to apply the requested amendment to the booking. This value reflects the cost impact of the proposed changes compared to the original booking.\n", "required": [ "recommendedRetailPrice", "partnerNetPrice", "bookingFee", "partnerTotalPrice" ], "properties": { "recommendedRetailPrice": { "type": "number", "description": "The recommended retail price difference for the booking based at price which the product is sold on the Viator.com site." }, "partnerNetPrice": { "type": "number", "description": "The non-booking fee component of the total amount that Viator will invoice the merchant for this amendment. \n\nFor affiliate partners with API access level \"Full Access + Booking\" this is the amount Viator charges exclusive of commission\n" }, "bookingFee": { "type": "number", "description": "The booking fee component of the total amount that Viator will invoice the merchant for the amendment of this item. \n\n**Note**:\n - The rate applied is given in the merchant's contract with Viator.\n - This element is only relevant to merchant partners using the markup based pricing model\n" }, "commission": { "type": "number", "description": "The amount the merchant will receive as a commission for the amendment of this item. \n\n**Note**: This element is only relevant to merchant partners using the commission-based pricing model and affiliate partners with API access level \"Full Access + Booking\".\n" }, "partnerTotalPrice": { "type": "number", "description": "The total amount that Viator will invoice the merchant for the amendment of this item. \n\nFor affiliate partners with API access level \"Full Access + Booking\" this is the total amount that Viator charges exclusive of commission. \n\nSee the following article to learn more about how pricing works in this API: [Calculating Product Pricing](https://partnerresources.viator.com/travel-commerce/merchant/pricing?source=specs).\n" } } }, "AmendmentPricingLineItem": { "type": "object", "required": [ "numberOfTravelers", "subtotalPrice" ], "properties": { "ageBand": { "type": "string", "pattern": "(?s).*[\\S].*", "description": "Machine-interpretable value indicating the age-band of the travelers that this line-item describes the subtotal price for; one of:\n - `ADULT`\n - `SENIOR`\n - `YOUTH`\n - `CHILD`\n - `INFANT`\n - `TRAVELER`\n" }, "numberOfTravelers": { "$ref": "#/components/schemas/NumberOfTravelers" }, "subtotalPrice": { "type": "object", "description": "Subtotal pricing for this line item.", "required": [ "price" ], "properties": { "price": { "type": "object", "description": "Components of this price", "required": [ "recommendedRetailPrice", "partnerNetPrice" ], "properties": { "recommendedRetailPrice": { "$ref": "#/components/schemas/RecommendedRetailPrice" }, "partnerNetPrice": { "type": "number", "description": "The non-booking fee component of the total amount that Viator will invoice the merchant for this item. \n\nFor affiliate partners with API access level \"Full Access + Booking\" this is the amount Viator charges exclusive of commission\n" } } } } } } }, "AmendmentLineItemPriceObject": { "type": "object", "required": [ "price" ], "properties": { "price": { "type": "object", "description": "Current price", "required": [ "recommendedRetailPrice", "partnerNetPrice", "bookingFee", "partnerTotalPrice" ], "properties": { "recommendedRetailPrice": { "$ref": "#/components/schemas/RecommendedRetailPrice" }, "partnerNetPrice": { "type": "number", "description": "The non-booking fee component of the total amount that Viator will invoice the merchant for this item. \n\nFor affiliate partners with API access level \"Full Access + Booking\" this is the amount Viator charges exclusive of commission.\n" }, "bookingFee": { "type": "number", "description": "The booking fee component of the total amount that Viator will invoice the merchant for the sale of this item. \n\n**Note**:\n - The rate applied is given in the merchant's contract with Viator.\n - This element is only relevant to merchant partners using the markup pricing model\n" }, "commission": { "type": "number", "description": "The amount the merchant will receive as a commission for the sale of this item. \n\nNote: This element is only relevant to merchant partners using the commission-based pricing model and affiliate partners with API access level \"Full Access + Booking\".\n" }, "partnerTotalPrice": { "type": "number", "description": "The total amount that Viator will invoice the merchant for the sale of this item. \n\nFor affiliate partners with API access level \"Full Access + Booking\" this is the total amount that Viator charges exclusive of commission. \n\nSee the following article to learn more about how pricing works in this API: [Calculating Product Pricing](https://partnerresources.viator.com/travel-commerce/merchant/pricing?source=specs).\n" } } } } }, "QuoteAmendedPrice": { "type": "object", "description": "A detailed breakdown of the total booking price after the requested amendment has been applied.", "required": [ "lineItems", "totalPrice" ], "properties": { "lineItems": { "type": "array", "description": "Array of pricing details for each traveler in this booking.", "items": { "$ref": "#/components/schemas/AmendmentPricingLineItem" } }, "totalPrice": { "description": "Total price of this booking.", "allOf": [ { "$ref": "#/components/schemas/AmendmentLineItemPriceObject" } ] } } }, "PaymentMethod": { "type": "object", "description": "Information about the payment method to be used for this transaction.\n\n**Notes:**\n - The transaction will be processed using the payment method already associated with the booking being amended.\n - Payment method is only relevant for transactional affiliates.\n", "required": [ "type", "identifierType", "identifier" ], "properties": { "type": { "type": "string", "description": "Payment method type. Possible values:\n - `CARD`\n\n**Note:** new values may be added over time, allowing flexibility for different use cases.\n" }, "identifierType": { "type": "string", "description": "Determines how the value of the identifier should be interpreted. One of the following.\n - `CARD_LAST_FOUR`\n\n**Note:** new values may be added over time, allowing flexibility for different use cases.\n" }, "identifier": { "type": "string", "description": "Value which should be used to identify the payment method.\n" } } }, "AmendmentQuoteResponseConfirmed": { "allOf": [ { "$ref": "#/components/schemas/AmendmentQuoteResponseCommon" }, { "type": "object", "required": [ "quoteRef", "quoteExpiresAt", "initialBookingPrice", "quotePriceDifference", "amendedBookingPrice", "currency" ], "properties": { "quoteRef": { "$ref": "#/components/schemas/QuoteReference" }, "quoteExpiresAt": { "$ref": "#/components/schemas/QuoteValidUntil" }, "initialBookingPrice": { "$ref": "#/components/schemas/QuoteInitialPrice" }, "quotePriceDifference": { "$ref": "#/components/schemas/QuotePriceDifference" }, "amendedBookingPrice": { "$ref": "#/components/schemas/QuoteAmendedPrice" }, "currency": { "type": "string", "description": "Currency in which the amendment will be processed.\n**Merchant Partners:** One of `USD`, `EUR`, `GBP`, `AUD`, `CAD`\n\n**Affiliate Partners with API access level \"Full Access + Booking\":** One of `USD`, `EUR`, `GBP`, `AUD`, `CAD`,\n`CHF`, `DKK`, `FJD`, `HKD`, `JPY`, `NOK`, `NZD`, `SEK`, `SGD`, `THB`, `ZAR`, `INR`, `BRL`, `TWD`, `MXN`, `CLP`, `IDR`, `ILS`, `KRW`, `PHP`, `PLN`, `TRY`\n\n**Note:** The currency for all price values will always match the currency used in the original booking.\n" }, "paymentMethod": { "$ref": "#/components/schemas/PaymentMethod" } } } ] }, "QuoteRejectionReasonCode": { "type": "string", "description": "Machine-interpretable reason code indicating why the quote was rejected. One of:\n - `\"NO_AVAILABILITY\"`: This bookable item is not available for the specified combination of date, time and passenger mix\n - `\"BOOKABLE_ITEM_IS_NO_LONGER_AMENDABLE\"` \u2013 this bookable item is no longer eligible to be amended due to updated restrictions or conditions.\n \n" }, "AmendmentQuoteResponseRejected": { "allOf": [ { "$ref": "#/components/schemas/AmendmentQuoteResponseCommon" }, { "type": "object", "required": [ "rejectionReasonCode" ], "properties": { "rejectionReasonCode": { "$ref": "#/components/schemas/QuoteRejectionReasonCode" } } } ] }, "AmendmentQuoteResponse": { "oneOf": [ { "$ref": "#/components/schemas/AmendmentQuoteResponseConfirmed" }, { "$ref": "#/components/schemas/AmendmentQuoteResponseRejected" } ], "discriminator": { "propertyName": "status", "mapping": { "CONFIRMED": "#/components/schemas/AmendmentQuoteResponseConfirmed", "REJECTED": "#/components/schemas/AmendmentQuoteResponseRejected" } } }, "AmendmentAmendResponseCommon": { "type": "object", "required": [ "status" ], "properties": { "status": { "$ref": "#/components/schemas/AmendmentStatus" } } }, "AmendmentAmendResponseInProgress": { "allOf": [ { "$ref": "#/components/schemas/AmendmentAmendResponseCommon" }, { "type": "object", "properties": { "initialBookingPrice": { "$ref": "#/components/schemas/QuoteInitialPrice" }, "quotePriceDifference": { "$ref": "#/components/schemas/QuotePriceDifference" }, "amendedBookingPrice": { "$ref": "#/components/schemas/QuoteAmendedPrice" }, "currency": { "type": "string", "description": "Currency in which the amendment will be processed.\n**Merchant Partners:** One of `USD`, `EUR`, `GBP`, `AUD`, `CAD`\n\n**Affiliate Partners with API access level \"Full Access + Booking\":** One of `USD`, `EUR`, `GBP`, `AUD`, `CAD`,\n`CHF`, `DKK`, `FJD`, `HKD`, `JPY`, `NOK`, `NZD`, `SEK`, `SGD`, `THB`, `ZAR`, `INR`, `BRL`, `TWD`, `MXN`, `CLP`, `IDR`, `ILS`, `KRW`, `PHP`, `PLN`, `TRY`\n\n**Note:** The currency for all price values will always match the currency used in the original booking.\n" }, "paymentMethod": { "$ref": "#/components/schemas/PaymentMethod" } } } ] }, "AmendmentAmendResponseAmended": { "allOf": [ { "$ref": "#/components/schemas/AmendmentAmendResponseCommon" }, { "$ref": "#/components/schemas/AmendmentAmendResponseInProgress" }, { "type": "object", "required": [ "initialBookingPrice", "quotePriceDifference", "amendedBookingPrice", "currency", "voucherInfo" ], "properties": { "voucherInfo": { "$ref": "#/components/schemas/VoucherInfo" } } } ] }, "AmendmentAmendResponseRejected": { "allOf": [ { "$ref": "#/components/schemas/AmendmentAmendResponseCommon" }, { "type": "object", "required": [ "rejectionReasonCode" ], "properties": { "rejectionReasonCode": { "$ref": "#/components/schemas/AmendmentRejectionReasonCode" } } } ] }, "AmendmentAmendResponse": { "oneOf": [ { "$ref": "#/components/schemas/AmendmentAmendResponseAmended" }, { "$ref": "#/components/schemas/AmendmentAmendResponseInProgress" }, { "$ref": "#/components/schemas/AmendmentAmendResponseRejected" } ], "discriminator": { "propertyName": "status", "mapping": { "AMENDED": "#/components/schemas/AmendmentAmendResponseAmended", "IN_PROGRESS": "#/components/schemas/AmendmentAmendResponseInProgress", "REJECTED": "#/components/schemas/AmendmentAmendResponseRejected" } } } }, "examples": { "products-modified-since-example": { "summary": "/products/modified-since", "value": { "products": [ { "status": "INACTIVE", "productCode": "6550P3", "language": "en", "createdAt": "2020-12-10T00:00:00Z", "lastUpdatedAt": "2021-05-31T02:01:01Z" }, { "status": "INACTIVE", "productCode": "259269P1", "language": "en", "createdAt": "2020-12-10T00:00:00Z", "lastUpdatedAt": "2021-05-31T06:26:37Z" }, { "status": "ACTIVE", "productCode": "17556P22", "language": "en-US", "createdAt": "2020-03-18T08:04:02.760786Z", "lastUpdatedAt": "2021-05-31T06:26:37Z", "title": " Private Ho Chi Minh City Shopping Tour \u2013 Phu My Shore Excursions", "ticketInfo": { "ticketTypes": [ "MOBILE_ONLY" ], "ticketTypeDescription": "Mobile or paper ticket accepted", "ticketsPerBooking": "ONE_PER_BOOKING", "ticketsPerBookingDescription": "One per booking" }, "pricingInfo": { "type": "PER_PERSON", "ageBands": [ { "ageBand": "INFANT", "startAge": 0, "endAge": 2, "minTravelersPerBooking": 0, "maxTravelersPerBooking": 15 }, { "ageBand": "CHILD", "startAge": 3, "endAge": 11, "minTravelersPerBooking": 0, "maxTravelersPerBooking": 15 }, { "ageBand": "ADULT", "startAge": 12, "endAge": 80, "minTravelersPerBooking": 1, "maxTravelersPerBooking": 15 } ] }, "images": [ { "imageSource": "SUPPLIER_PROVIDED", "caption": "", "isCover": true, "variants": [ { "height": 50, "width": 50, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-50x50/0a/a0/8f/3a.jpg" }, { "height": 100, "width": 100, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-100x100/0a/a0/8f/3a.jpg" }, { "height": 200, "width": 200, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-200x200/0a/a0/8f/3a.jpg" }, { "height": 400, "width": 400, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-400x400/0a/a0/8f/3a.jpg" }, { "height": 40, "width": 60, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-60x40/0a/a0/8f/3a.jpg" }, { "height": 80, "width": 120, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-120x80/0a/a0/8f/3a.jpg" }, { "height": 120, "width": 180, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-180x120/0a/a0/8f/3a.jpg" }, { "height": 160, "width": 240, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-240x160/0a/a0/8f/3a.jpg" }, { "height": 240, "width": 360, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-360x240/0a/a0/8f/3a.jpg" }, { "height": 320, "width": 480, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-480x320/0a/a0/8f/3a.jpg" }, { "height": 360, "width": 540, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-540x360/0a/a0/8f/3a.jpg" }, { "height": 446, "width": 674, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-674x446/0a/a0/8f/3a.jpg" }, { "height": 480, "width": 720, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-720x480/0a/a0/8f/3a.jpg" }, { "height": 118, "width": 210, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-210x118/0a/a0/8f/3a.jpg" }, { "height": 75, "width": 75, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-75x75/0a/a0/8f/3a.jpg" }, { "height": 109, "width": 154, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-154x109/0a/a0/8f/3a.jpg" } ] }, { "imageSource": "SUPPLIER_PROVIDED", "caption": "", "isCover": false, "variants": [ { "height": 50, "width": 50, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-50x50/0a/a3/0d/6b.jpg" }, { "height": 100, "width": 100, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-100x100/0a/a3/0d/6b.jpg" }, { "height": 200, "width": 200, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-200x200/0a/a3/0d/6b.jpg" }, { "height": 400, "width": 400, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-400x400/0a/a3/0d/6b.jpg" }, { "height": 40, "width": 60, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-60x40/0a/a3/0d/6b.jpg" }, { "height": 80, "width": 120, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-120x80/0a/a3/0d/6b.jpg" }, { "height": 120, "width": 180, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-180x120/0a/a3/0d/6b.jpg" }, { "height": 160, "width": 240, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-240x160/0a/a3/0d/6b.jpg" }, { "height": 240, "width": 360, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-360x240/0a/a3/0d/6b.jpg" }, { "height": 320, "width": 480, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-480x320/0a/a3/0d/6b.jpg" }, { "height": 360, "width": 540, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-540x360/0a/a3/0d/6b.jpg" }, { "height": 446, "width": 674, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-674x446/0a/a3/0d/6b.jpg" }, { "height": 480, "width": 720, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-720x480/0a/a3/0d/6b.jpg" }, { "height": 118, "width": 210, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-210x118/0a/a3/0d/6b.jpg" }, { "height": 75, "width": 75, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-75x75/0a/a3/0d/6b.jpg" }, { "height": 109, "width": 154, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-154x109/0a/a3/0d/6b.jpg" } ] }, { "imageSource": "SUPPLIER_PROVIDED", "caption": "", "isCover": false, "variants": [ { "height": 50, "width": 50, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-50x50/0a/a3/09/56.jpg" }, { "height": 100, "width": 100, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-100x100/0a/a3/09/56.jpg" }, { "height": 200, "width": 200, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-200x200/0a/a3/09/56.jpg" }, { "height": 400, "width": 400, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-400x400/0a/a3/09/56.jpg" }, { "height": 40, "width": 60, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-60x40/0a/a3/09/56.jpg" }, { "height": 80, "width": 120, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-120x80/0a/a3/09/56.jpg" }, { "height": 120, "width": 180, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-180x120/0a/a3/09/56.jpg" }, { "height": 160, "width": 240, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-240x160/0a/a3/09/56.jpg" }, { "height": 240, "width": 360, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-360x240/0a/a3/09/56.jpg" }, { "height": 320, "width": 480, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-480x320/0a/a3/09/56.jpg" }, { "height": 360, "width": 540, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-540x360/0a/a3/09/56.jpg" }, { "height": 446, "width": 674, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-674x446/0a/a3/09/56.jpg" }, { "height": 480, "width": 720, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-720x480/0a/a3/09/56.jpg" }, { "height": 118, "width": 210, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-210x118/0a/a3/09/56.jpg" }, { "height": 75, "width": 75, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-75x75/0a/a3/09/56.jpg" }, { "height": 109, "width": 154, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-154x109/0a/a3/09/56.jpg" } ] }, { "imageSource": "SUPPLIER_PROVIDED", "caption": "", "isCover": false, "variants": [ { "height": 50, "width": 50, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-50x50/0a/a3/04/ce.jpg" }, { "height": 100, "width": 100, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-100x100/0a/a3/04/ce.jpg" }, { "height": 200, "width": 200, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-200x200/0a/a3/04/ce.jpg" }, { "height": 400, "width": 400, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-400x400/0a/a3/04/ce.jpg" }, { "height": 40, "width": 60, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-60x40/0a/a3/04/ce.jpg" }, { "height": 80, "width": 120, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-120x80/0a/a3/04/ce.jpg" }, { "height": 120, "width": 180, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-180x120/0a/a3/04/ce.jpg" }, { "height": 160, "width": 240, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-240x160/0a/a3/04/ce.jpg" }, { "height": 240, "width": 360, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-360x240/0a/a3/04/ce.jpg" }, { "height": 320, "width": 480, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-480x320/0a/a3/04/ce.jpg" }, { "height": 360, "width": 540, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-540x360/0a/a3/04/ce.jpg" }, { "height": 446, "width": 674, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-674x446/0a/a3/04/ce.jpg" }, { "height": 480, "width": 720, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-720x480/0a/a3/04/ce.jpg" }, { "height": 118, "width": 210, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-210x118/0a/a3/04/ce.jpg" }, { "height": 75, "width": 75, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-75x75/0a/a3/04/ce.jpg" }, { "height": 109, "width": 154, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-154x109/0a/a3/04/ce.jpg" } ] }, { "imageSource": "SUPPLIER_PROVIDED", "caption": "", "isCover": false, "variants": [ { "height": 50, "width": 50, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-50x50/0a/a3/0a/24.jpg" }, { "height": 100, "width": 100, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-100x100/0a/a3/0a/24.jpg" }, { "height": 200, "width": 200, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-200x200/0a/a3/0a/24.jpg" }, { "height": 400, "width": 400, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-400x400/0a/a3/0a/24.jpg" }, { "height": 40, "width": 60, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-60x40/0a/a3/0a/24.jpg" }, { "height": 80, "width": 120, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-120x80/0a/a3/0a/24.jpg" }, { "height": 120, "width": 180, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-180x120/0a/a3/0a/24.jpg" }, { "height": 160, "width": 240, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-240x160/0a/a3/0a/24.jpg" }, { "height": 240, "width": 360, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-360x240/0a/a3/0a/24.jpg" }, { "height": 320, "width": 480, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-480x320/0a/a3/0a/24.jpg" }, { "height": 360, "width": 540, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-540x360/0a/a3/0a/24.jpg" }, { "height": 446, "width": 674, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-674x446/0a/a3/0a/24.jpg" }, { "height": 480, "width": 720, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-720x480/0a/a3/0a/24.jpg" }, { "height": 118, "width": 210, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-210x118/0a/a3/0a/24.jpg" }, { "height": 75, "width": 75, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-75x75/0a/a3/0a/24.jpg" }, { "height": 109, "width": 154, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-154x109/0a/a3/0a/24.jpg" } ] } ], "logistics": { "redemption": { "redemptionType": "NONE", "specialInstructions": "" }, "travelerPickup": { "pickupOptionType": "PICKUP_AND_MEET_AT_START_POINT", "allowCustomTravelerPickup": false, "locations": [ { "location": { "ref": "LOC-o0AXGEKPN4wJ9sIG0RAn5GZSKUbt1OQ9sKzR4DSmFzFolySbPhFCpna5D0/PG6wD" }, "pickupType": "PORT" }, { "location": { "ref": "LOC-o0AXGEKPN4wJ9sIG0RAn5Prp0akVv8qE+SrTYXPKopPmLfiCZTK/BzhXU1fvlnTf" }, "pickupType": "PORT" }, { "location": { "ref": "LOC-o0AXGEKPN4wJ9sIG0RAn5JaRZv8vmwh2yoeXyutiSDy2yRssmYRUnIVJWxcYHvcR" }, "pickupType": "PORT" }, { "location": { "ref": "LOC-o0AXGEKPN4wJ9sIG0RAn5MLAp1gTj0p0epB6IVH86ncW0isQ0Kt/ApmYGB5zBcGJ" }, "pickupType": "PORT" }, { "location": { "ref": "CONTACT_SUPPLIER_LATER" }, "pickupType": "OTHER" } ], "additionalInfo": "\u2b50 Meeting point: at port gate (Nha Rong, Hiep Phuoc, Phu Huu, or Phu My port)\n\u2b50 Port Permit Service:\n 1. Opt to purchase port permit service: For a fee of 25USD/person, our guide and transport can go inside the port, right to your cruise ship for pick-up and drop off. This requires passport details such as full name, passport number, DOB, expiry date and nationality. We recommend this service for safety and comfort during the hot or rainy days, as well a reliable transport service.\n 2. Opt not to purchase port service fee: Please walk out of the port for 7 minutes \u2013 15 minutes or take a shuttle bus inside port gate where our guide and driver will welcome you with a sign and a smile. This does not include a fee." } }, "timeZone": "Asia/Ho_Chi_Minh", "description": "With the brand name of bustle and hustle center in Asia, Ho Chi Minh City is charmed with plenty of shopping malls, souvenir shops, and traditional art showrooms. Explore all of them by joining this Ho Chi Minh City day tour from Phu My port, or Nha Rong, Hiep Phuoc, Phu Huu port.\n\n\u2b50 HIGHLIGHTS:\n\n - Go shopping like locals,\n - Best things, best prices, various choices;\n - Hustle and bustle city;\n - Enjoy lunch with Vietnamese traditional food as Vietnamese pancake & rice noodles with grilled pork/fried roll or Pho\u2013 specialty food of the city\n\n\u2b50 Meeting point: port gate outside. (inside optional) \n\n\u2b50 Duration: This private tour is approximately 8 hours or longer depending on your time constraints. At the end of the private tour, we always make sure that you return on-time to board the cruise ship.\n\n\u2b50Tour customizable: Absolutely! (Tell us your specific requirements in the special request form)", "inclusions": [ { "category": "OTHER", "categoryDescription": "Other", "type": "OTHER", "typeDescription": "Other", "otherDescription": "All entrance fees" }, { "category": "FOOD_AND_DRINK", "categoryDescription": "Food and drink", "type": "LUNCH", "typeDescription": "Lunch", "description": "Lunch as indicated in the itinerary (please note we can cater for any dietary requirements, just be sure to get in touch beforehand)" }, { "category": "OTHER", "categoryDescription": "Other", "type": "OTHER", "typeDescription": "Other", "otherDescription": "Unlimited Bottles of Water" }, { "category": "OTHER", "categoryDescription": "Other", "type": "OTHER", "typeDescription": "Other", "otherDescription": "Round trip on private air-conditioner vehicle from the ports to Ho Chi Minh City" }, { "category": "OTHER", "categoryDescription": "Other", "type": "OTHER", "typeDescription": "Other", "otherDescription": "English-speaking local guide" } ], "exclusions": [ { "category": "OTHER", "categoryDescription": "Other", "type": "OTHER", "typeDescription": "Other", "otherDescription": "Tips & Other drinks" }, { "category": "OTHER", "categoryDescription": "Other", "type": "OTHER", "typeDescription": "Other", "otherDescription": "Other personal expenses" }, { "category": "OTHER", "categoryDescription": "Other", "type": "OTHER", "typeDescription": "Other", "otherDescription": "Port fee (port permit service)" } ], "additionalInfo": [ { "type": "PETS_WELCOME", "description": "Pets and service animals are welcome" }, { "type": "PUBLIC_TRANSPORTATION_NEARBY", "description": "Public transportation options are available nearby" }, { "type": "NO_BACK_PROBLEMS", "description": "Not recommended for travelers with spinal injuries" }, { "type": "PHYSICAL_EASY", "description": "Suitable for all physical fitness levels" }, { "type": "OTHER", "description": "What to bring: Sunscreen \u2022 Hat \u2022 Insect Repellent \u2022 Light Jacket \u2022 Flashlight or Torch " }, { "type": "OTHER", "description": "What to wear: Please ensure you dress respectfully. Knees and shoulders should be covered at all times. " } ], "cancellationPolicy": { "type": "STANDARD", "description": "For a full refund, cancel at least 24 hours before the scheduled departure time.", "cancelIfBadWeather": false, "cancelIfInsufficientTravelers": false, "refundEligibility": [ { "dayRangeMin": 1, "percentageRefundable": 100 }, { "dayRangeMin": 0, "dayRangeMax": 1, "percentageRefundable": 0 } ] }, "bookingConfirmationSettings": { "bookingCutoffType": "START_TIME", "bookingCutoffInMinutes": 1440, "confirmationType": "INSTANT" }, "bookingRequirements": { "minTravelersPerBooking": 1, "maxTravelersPerBooking": 15, "requiresAdultForBooking": true }, "languageGuides": [ { "type": "GUIDE", "language": "en", "legacyGuide": "en/SERVICE_GUIDE" } ], "bookingQuestions": [ "PICKUP_POINT", "SPECIAL_REQUIREMENTS" ], "tags": [ 11928, 12039, 21736, 21946, 11930, 12075, 12056, 21733, 21768, 11941 ], "destinations": [ { "ref": "25711", "primary": true } ], "itinerary": { "itineraryType": "STANDARD", "skipTheLine": false, "privateTour": true, "duration": { "fixedDurationInMinutes": 510 }, "itineraryItems": [ { "pointOfInterestLocation": { "location": { "ref": "LOC-6eKJ+or5y8o99Qw0C8xWyGlAxNYBHe0Ep2+3MEW9ikM=" } }, "duration": { "fixedDurationInMinutes": 10 }, "passByWithoutStopping": false, "admissionIncluded": "NOT_APPLICABLE", "description": "Welcome to Ho Chi Minh! Our team will be waiting with name signs, big smiles at your port to take you to your cool air-conditioned transport." }, { "pointOfInterestLocation": { "location": { "ref": "LOC-6eKJ+or5y8o99Qw0C8xWyHeMs3iO6+A/+DAlt3qilgw=" } }, "duration": { "fixedDurationInMinutes": 300 }, "passByWithoutStopping": false, "admissionIncluded": "NOT_APPLICABLE", "description": " We start our Ho Chi Minh Shore Excursions and visit a local Lacquerware shop. Get a glimpse of this ancient art form by witnessing every detailed step of the manufacturing process under the guidance of local artisans.\nThen, head to the XQ showroom where you can admire how embroidery was made. Gazed at a high quality of artistic embroidery designed with traditional Vietnamese images such as lotus, home-dwelling animals, flowers, landscapes, and so on. Moreover, you have a chance to pick up some unique products as gifts and souvenirs for your friends and family.\nThe next stop is in Sai Gon Square. The center contains a huge scale of retailers and Mercian selling local goods from food, snacks, and fruits to clothing. Most of them are prepared for export that you can purchase some interesting items with reasonable prices. Remember to bargain before deciding to buy anything.\nAfter a delicious meal sampling Pho \u2013 Vietnamese traditional noodle soup and spring rolls.\nAfter that, visit Ben Thanh Market \u2013 the most famous and bustling market in Ho Chi Minh City. Witness the sight of various stalls full with interesting products from traditional to modern as well as Vietnamese and other countries cuisines. Continue on to the most modern center of the city \u2013 Vincom Center Shopping Mall where you enjoy a stroll along hundreds of department stores. The trip ends with a drive back to port." }, { "pointOfInterestLocation": { "location": { "ref": "LOC-6eKJ+or5y8o99Qw0C8xWyGlAxNYBHe0Ep2+3MEW9ikM=" } }, "duration": { "fixedDurationInMinutes": 10 }, "passByWithoutStopping": false, "admissionIncluded": "NOT_APPLICABLE", "description": "Trip ends when the driver drops you at the port for the next departure." } ] }, "productOptions": [ { "productOptionCode": "TG2", "description": "Duration: 8 hours: We will meet you at Nha Rong port gate.
Pickup included", "title": "Pickup at Nha Rong Port gate!", "logistics": { "travelerPickup": { "pickupOptionType": "PICKUP_AND_MEET_AT_START_POINT", "allowCustomTravelerPickup": false, "locations": [ { "location": { "ref": "LOC-o0AXGEKPN4wJ9sIG0RAn5GZSKUbt1OQ9sKzR4DSmFzFolySbPhFCpna5D0/PG6wD" }, "pickupType": "PORT" } ] } }, "languageGuides": [ { "type": "GUIDE", "language": "en", "legacyGuide": "en/SERVICE_GUIDE" } ] }, { "productOptionCode": "TG3", "description": "Duration: 8 hours 30 minutes: We will meet you at Phu Huu or Hiep Phuoc port gate!
Pickup included", "title": "Phu Huu, Hiep Phuoc Port", "languageGuides": [ { "type": "GUIDE", "language": "en", "legacyGuide": "en/SERVICE_GUIDE" } ] }, { "productOptionCode": "TG1", "description": "Pickup included", "title": "Phu My Port & Cai Mep Port", "languageGuides": [ { "type": "GUIDE", "language": "en", "legacyGuide": "en/SERVICE_GUIDE" } ] } ], "translationInfo": { "containsMachineTranslatedText": false }, "supplier": { "name": "Scooter Saigon Tour" }, "reviews": { "reviewCountTotals": [ { "rating": 1, "count": 0 }, { "rating": 2, "count": 0 }, { "rating": 3, "count": 0 }, { "rating": 4, "count": 0 }, { "rating": 5, "count": 0 } ], "totalReviews": 0 }, "viatorUniqueContent": {} } ], "nextCursor": "MTYyMjQ0MjM5N3wyNTkyNjlQMXxJTkFDVElWRQ==" } }, "products-bulk-example": { "summary": "/products/bulk", "value": [ { "status": "ACTIVE", "productCode": "2855KENNEDY_TKTS", "language": "en-US", "createdAt": "2001-04-01T08:00:00Z", "title": "Kennedy Space Center at Cape Canaveral Admission Ticket", "ticketInfo": { "ticketTypes": [ "MOBILE_ONLY" ], "ticketTypeDescription": "Mobile or paper ticket accepted", "ticketsPerBooking": "ONE_PER_TRAVELER", "ticketsPerBookingDescription": "One per traveler" }, "pricingInfo": { "type": "PER_PERSON", "ageBands": [ { "ageBand": "CHILD", "startAge": 3, "endAge": 11, "minTravelersPerBooking": 0, "maxTravelersPerBooking": 9 }, { "ageBand": "ADULT", "startAge": 12, "endAge": 99, "minTravelersPerBooking": 1, "maxTravelersPerBooking": 9 } ] }, "images": [ { "imageSource": "SUPPLIER_PROVIDED", "caption": "Kennedy Space Center at Cape Canaveral", "isCover": true, "variants": [ { "height": 50, "width": 50, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-50x50/06/f1/2c/9e.jpg" }, { "height": 100, "width": 100, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-100x100/06/f1/2c/9e.jpg" }, { "height": 200, "width": 200, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-200x200/06/f1/2c/9e.jpg" }, { "height": 400, "width": 400, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-400x400/06/f1/2c/9e.jpg" }, { "height": 40, "width": 60, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-60x40/06/f1/2c/9e.jpg" }, { "height": 80, "width": 120, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-120x80/06/f1/2c/9e.jpg" }, { "height": 120, "width": 180, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-180x120/06/f1/2c/9e.jpg" }, { "height": 160, "width": 240, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-240x160/06/f1/2c/9e.jpg" }, { "height": 240, "width": 360, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-360x240/06/f1/2c/9e.jpg" }, { "height": 320, "width": 480, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-480x320/06/f1/2c/9e.jpg" }, { "height": 360, "width": 540, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-540x360/06/f1/2c/9e.jpg" }, { "height": 446, "width": 674, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-674x446/06/f1/2c/9e.jpg" }, { "height": 480, "width": 720, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-720x480/06/f1/2c/9e.jpg" }, { "height": 118, "width": 210, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-210x118/06/f1/2c/9e.jpg" }, { "height": 75, "width": 75, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-75x75/06/f1/2c/9e.jpg" }, { "height": 109, "width": 154, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-154x109/06/f1/2c/9e.jpg" } ] }, { "imageSource": "SUPPLIER_PROVIDED", "caption": "", "isCover": false, "variants": [ { "height": 50, "width": 50, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-50x50/06/fa/b9/16.jpg" }, { "height": 100, "width": 100, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-100x100/06/fa/b9/16.jpg" }, { "height": 200, "width": 200, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-200x200/06/fa/b9/16.jpg" }, { "height": 400, "width": 400, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-400x400/06/fa/b9/16.jpg" }, { "height": 40, "width": 60, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-60x40/06/fa/b9/16.jpg" }, { "height": 80, "width": 120, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-120x80/06/fa/b9/16.jpg" }, { "height": 120, "width": 180, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-180x120/06/fa/b9/16.jpg" }, { "height": 160, "width": 240, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-240x160/06/fa/b9/16.jpg" }, { "height": 240, "width": 360, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-360x240/06/fa/b9/16.jpg" }, { "height": 320, "width": 480, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-480x320/06/fa/b9/16.jpg" }, { "height": 360, "width": 540, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-540x360/06/fa/b9/16.jpg" }, { "height": 446, "width": 674, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-674x446/06/fa/b9/16.jpg" }, { "height": 480, "width": 720, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-720x480/06/fa/b9/16.jpg" }, { "height": 118, "width": 210, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-210x118/06/fa/b9/16.jpg" }, { "height": 75, "width": 75, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-75x75/06/fa/b9/16.jpg" }, { "height": 109, "width": 154, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-154x109/06/fa/b9/16.jpg" } ] }, { "imageSource": "SUPPLIER_PROVIDED", "caption": "", "isCover": false, "variants": [ { "height": 50, "width": 50, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-50x50/06/fa/b8/c5.jpg" }, { "height": 100, "width": 100, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-100x100/06/fa/b8/c5.jpg" }, { "height": 200, "width": 200, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-200x200/06/fa/b8/c5.jpg" }, { "height": 400, "width": 400, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-400x400/06/fa/b8/c5.jpg" }, { "height": 40, "width": 60, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-60x40/06/fa/b8/c5.jpg" }, { "height": 80, "width": 120, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-120x80/06/fa/b8/c5.jpg" }, { "height": 120, "width": 180, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-180x120/06/fa/b8/c5.jpg" }, { "height": 160, "width": 240, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-240x160/06/fa/b8/c5.jpg" }, { "height": 240, "width": 360, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-360x240/06/fa/b8/c5.jpg" }, { "height": 320, "width": 480, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-480x320/06/fa/b8/c5.jpg" }, { "height": 360, "width": 540, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-540x360/06/fa/b8/c5.jpg" }, { "height": 446, "width": 674, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-674x446/06/fa/b8/c5.jpg" }, { "height": 480, "width": 720, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-720x480/06/fa/b8/c5.jpg" }, { "height": 118, "width": 210, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-210x118/06/fa/b8/c5.jpg" }, { "height": 75, "width": 75, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-75x75/06/fa/b8/c5.jpg" }, { "height": 109, "width": 154, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-154x109/06/fa/b8/c5.jpg" } ] }, { "imageSource": "SUPPLIER_PROVIDED", "caption": "", "isCover": false, "variants": [ { "height": 50, "width": 50, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-50x50/06/fa/b9/11.jpg" }, { "height": 100, "width": 100, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-100x100/06/fa/b9/11.jpg" }, { "height": 200, "width": 200, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-200x200/06/fa/b9/11.jpg" }, { "height": 400, "width": 400, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-400x400/06/fa/b9/11.jpg" }, { "height": 40, "width": 60, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-60x40/06/fa/b9/11.jpg" }, { "height": 80, "width": 120, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-120x80/06/fa/b9/11.jpg" }, { "height": 120, "width": 180, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-180x120/06/fa/b9/11.jpg" }, { "height": 160, "width": 240, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-240x160/06/fa/b9/11.jpg" }, { "height": 240, "width": 360, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-360x240/06/fa/b9/11.jpg" }, { "height": 320, "width": 480, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-480x320/06/fa/b9/11.jpg" }, { "height": 360, "width": 540, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-540x360/06/fa/b9/11.jpg" }, { "height": 446, "width": 674, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-674x446/06/fa/b9/11.jpg" }, { "height": 480, "width": 720, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-720x480/06/fa/b9/11.jpg" }, { "height": 118, "width": 210, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-210x118/06/fa/b9/11.jpg" }, { "height": 75, "width": 75, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-75x75/06/fa/b9/11.jpg" }, { "height": 109, "width": 154, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-154x109/06/fa/b9/11.jpg" } ] }, { "imageSource": "SUPPLIER_PROVIDED", "caption": "Kennedy Space Center at Cape Canaveral", "isCover": false, "variants": [ { "height": 50, "width": 50, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-50x50/06/f1/2c/a0.jpg" }, { "height": 100, "width": 100, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-100x100/06/f1/2c/a0.jpg" }, { "height": 200, "width": 200, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-200x200/06/f1/2c/a0.jpg" }, { "height": 400, "width": 400, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-400x400/06/f1/2c/a0.jpg" }, { "height": 40, "width": 60, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-60x40/06/f1/2c/a0.jpg" }, { "height": 80, "width": 120, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-120x80/06/f1/2c/a0.jpg" }, { "height": 120, "width": 180, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-180x120/06/f1/2c/a0.jpg" }, { "height": 160, "width": 240, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-240x160/06/f1/2c/a0.jpg" }, { "height": 240, "width": 360, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-360x240/06/f1/2c/a0.jpg" }, { "height": 320, "width": 480, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-480x320/06/f1/2c/a0.jpg" }, { "height": 360, "width": 540, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-540x360/06/f1/2c/a0.jpg" }, { "height": 446, "width": 674, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-674x446/06/f1/2c/a0.jpg" }, { "height": 480, "width": 720, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-720x480/06/f1/2c/a0.jpg" }, { "height": 118, "width": 210, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-210x118/06/f1/2c/a0.jpg" }, { "height": 75, "width": 75, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-75x75/06/f1/2c/a0.jpg" }, { "height": 109, "width": 154, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-154x109/06/f1/2c/a0.jpg" } ] }, { "imageSource": "SUPPLIER_PROVIDED", "caption": "", "isCover": false, "variants": [ { "height": 50, "width": 50, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-50x50/06/fa/b8/b1.jpg" }, { "height": 100, "width": 100, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-100x100/06/fa/b8/b1.jpg" }, { "height": 200, "width": 200, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-200x200/06/fa/b8/b1.jpg" }, { "height": 400, "width": 400, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-400x400/06/fa/b8/b1.jpg" }, { "height": 40, "width": 60, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-60x40/06/fa/b8/b1.jpg" }, { "height": 80, "width": 120, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-120x80/06/fa/b8/b1.jpg" }, { "height": 120, "width": 180, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-180x120/06/fa/b8/b1.jpg" }, { "height": 160, "width": 240, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-240x160/06/fa/b8/b1.jpg" }, { "height": 240, "width": 360, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-360x240/06/fa/b8/b1.jpg" }, { "height": 320, "width": 480, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-480x320/06/fa/b8/b1.jpg" }, { "height": 360, "width": 540, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-540x360/06/fa/b8/b1.jpg" }, { "height": 446, "width": 674, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-674x446/06/fa/b8/b1.jpg" }, { "height": 480, "width": 720, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-720x480/06/fa/b8/b1.jpg" }, { "height": 118, "width": 210, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-210x118/06/fa/b8/b1.jpg" }, { "height": 75, "width": 75, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-75x75/06/fa/b8/b1.jpg" }, { "height": 109, "width": 154, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-154x109/06/fa/b8/b1.jpg" } ] }, { "imageSource": "SUPPLIER_PROVIDED", "caption": "", "isCover": false, "variants": [ { "height": 50, "width": 50, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-50x50/0b/77/55/02.jpg" }, { "height": 100, "width": 100, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-100x100/0b/77/55/02.jpg" }, { "height": 200, "width": 200, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-200x200/0b/77/55/02.jpg" }, { "height": 400, "width": 400, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-400x400/0b/77/55/02.jpg" }, { "height": 40, "width": 60, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-60x40/0b/77/55/02.jpg" }, { "height": 80, "width": 120, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-120x80/0b/77/55/02.jpg" }, { "height": 120, "width": 180, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-180x120/0b/77/55/02.jpg" }, { "height": 160, "width": 240, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-240x160/0b/77/55/02.jpg" }, { "height": 240, "width": 360, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-360x240/0b/77/55/02.jpg" }, { "height": 320, "width": 480, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-480x320/0b/77/55/02.jpg" }, { "height": 360, "width": 540, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-540x360/0b/77/55/02.jpg" }, { "height": 446, "width": 674, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-674x446/0b/77/55/02.jpg" }, { "height": 480, "width": 720, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-720x480/0b/77/55/02.jpg" }, { "height": 118, "width": 210, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-210x118/0b/77/55/02.jpg" }, { "height": 75, "width": 75, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-75x75/0b/77/55/02.jpg" }, { "height": 109, "width": 154, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-154x109/0b/77/55/02.jpg" } ] }, { "imageSource": "SUPPLIER_PROVIDED", "caption": "", "isCover": false, "variants": [ { "height": 50, "width": 50, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-50x50/0b/77/55/03.jpg" }, { "height": 100, "width": 100, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-100x100/0b/77/55/03.jpg" }, { "height": 200, "width": 200, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-200x200/0b/77/55/03.jpg" }, { "height": 400, "width": 400, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-400x400/0b/77/55/03.jpg" }, { "height": 40, "width": 60, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-60x40/0b/77/55/03.jpg" }, { "height": 80, "width": 120, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-120x80/0b/77/55/03.jpg" }, { "height": 120, "width": 180, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-180x120/0b/77/55/03.jpg" }, { "height": 160, "width": 240, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-240x160/0b/77/55/03.jpg" }, { "height": 240, "width": 360, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-360x240/0b/77/55/03.jpg" }, { "height": 320, "width": 480, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-480x320/0b/77/55/03.jpg" }, { "height": 360, "width": 540, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-540x360/0b/77/55/03.jpg" }, { "height": 446, "width": 674, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-674x446/0b/77/55/03.jpg" }, { "height": 480, "width": 720, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-720x480/0b/77/55/03.jpg" }, { "height": 118, "width": 210, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-210x118/0b/77/55/03.jpg" }, { "height": 75, "width": 75, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-75x75/0b/77/55/03.jpg" }, { "height": 109, "width": 154, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-154x109/0b/77/55/03.jpg" } ] }, { "imageSource": "SUPPLIER_PROVIDED", "caption": "", "isCover": false, "variants": [ { "height": 50, "width": 50, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-50x50/0b/77/55/04.jpg" }, { "height": 100, "width": 100, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-100x100/0b/77/55/04.jpg" }, { "height": 200, "width": 200, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-200x200/0b/77/55/04.jpg" }, { "height": 400, "width": 400, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-400x400/0b/77/55/04.jpg" }, { "height": 40, "width": 60, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-60x40/0b/77/55/04.jpg" }, { "height": 80, "width": 120, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-120x80/0b/77/55/04.jpg" }, { "height": 120, "width": 180, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-180x120/0b/77/55/04.jpg" }, { "height": 160, "width": 240, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-240x160/0b/77/55/04.jpg" }, { "height": 240, "width": 360, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-360x240/0b/77/55/04.jpg" }, { "height": 320, "width": 480, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-480x320/0b/77/55/04.jpg" }, { "height": 360, "width": 540, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-540x360/0b/77/55/04.jpg" }, { "height": 446, "width": 674, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-674x446/0b/77/55/04.jpg" }, { "height": 480, "width": 720, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-720x480/0b/77/55/04.jpg" }, { "height": 118, "width": 210, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-210x118/0b/77/55/04.jpg" }, { "height": 75, "width": 75, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-75x75/0b/77/55/04.jpg" }, { "height": 109, "width": 154, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-154x109/0b/77/55/04.jpg" } ] }, { "imageSource": "SUPPLIER_PROVIDED", "caption": "", "isCover": false, "variants": [ { "height": 50, "width": 50, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-50x50/0b/77/55/06.jpg" }, { "height": 100, "width": 100, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-100x100/0b/77/55/06.jpg" }, { "height": 200, "width": 200, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-200x200/0b/77/55/06.jpg" }, { "height": 400, "width": 400, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-400x400/0b/77/55/06.jpg" }, { "height": 40, "width": 60, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-60x40/0b/77/55/06.jpg" }, { "height": 80, "width": 120, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-120x80/0b/77/55/06.jpg" }, { "height": 120, "width": 180, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-180x120/0b/77/55/06.jpg" }, { "height": 160, "width": 240, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-240x160/0b/77/55/06.jpg" }, { "height": 240, "width": 360, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-360x240/0b/77/55/06.jpg" }, { "height": 320, "width": 480, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-480x320/0b/77/55/06.jpg" }, { "height": 360, "width": 540, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-540x360/0b/77/55/06.jpg" }, { "height": 446, "width": 674, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-674x446/0b/77/55/06.jpg" }, { "height": 480, "width": 720, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-720x480/0b/77/55/06.jpg" }, { "height": 118, "width": 210, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-210x118/0b/77/55/06.jpg" }, { "height": 75, "width": 75, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-75x75/0b/77/55/06.jpg" }, { "height": 109, "width": 154, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-154x109/0b/77/55/06.jpg" } ] }, { "imageSource": "SUPPLIER_PROVIDED", "caption": "", "isCover": false, "variants": [ { "height": 50, "width": 50, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-50x50/0b/77/55/07.jpg" }, { "height": 100, "width": 100, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-100x100/0b/77/55/07.jpg" }, { "height": 200, "width": 200, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-200x200/0b/77/55/07.jpg" }, { "height": 400, "width": 400, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-400x400/0b/77/55/07.jpg" }, { "height": 40, "width": 60, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-60x40/0b/77/55/07.jpg" }, { "height": 80, "width": 120, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-120x80/0b/77/55/07.jpg" }, { "height": 120, "width": 180, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-180x120/0b/77/55/07.jpg" }, { "height": 160, "width": 240, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-240x160/0b/77/55/07.jpg" }, { "height": 240, "width": 360, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-360x240/0b/77/55/07.jpg" }, { "height": 320, "width": 480, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-480x320/0b/77/55/07.jpg" }, { "height": 360, "width": 540, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-540x360/0b/77/55/07.jpg" }, { "height": 446, "width": 674, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-674x446/0b/77/55/07.jpg" }, { "height": 480, "width": 720, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-720x480/0b/77/55/07.jpg" }, { "height": 118, "width": 210, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-210x118/0b/77/55/07.jpg" }, { "height": 75, "width": 75, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-75x75/0b/77/55/07.jpg" }, { "height": 109, "width": 154, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-154x109/0b/77/55/07.jpg" } ] } ], "logistics": { "start": [ { "location": { "ref": "LOC-6eKJ+or5y8o99Qw0C8xWyFED5zR8LzZDEzLhzr8k6P4=" } } ], "redemption": { "redemptionType": "INDIRECT_DELIVERY", "specialInstructions": "\u2022 This is not your Entrance Ticket.\n\u2022 IMPORTANT NOTE: You will receive a gate ready e-ticket or confirmation number from City Sightseeing Orlando within 24 hours of your travel date. Please check your email for the e-ticket or confirmation # and use that on the day of travel for your admission ticket. \n\u2022 This Viator voucher is a receipt only\n\u2022 KSCVC reserves the right to require photo ID for entry and can cancel ticket for misuse at any time\n\u2022 All tickets are nontransferable, non-refundable, and valid only during regularly scheduled operating hours excluding activities/events priced separately.\n\u2022 Tours, films, exhibits may be altered or closed due to operational requirements. Not responsible for lost or stolen tickets. No refunds or exchanges." }, "travelerPickup": { "pickupOptionType": "MEET_EVERYONE_AT_START_POINT", "allowCustomTravelerPickup": false } }, "timeZone": "America/New_York", "description": "Spend the day exploring the fascinating Kennedy Space Center at Cape Canaveral, just 45 minutes from Orlando. Learn about the history of the US space program and watch stunning IMAX films. Don't miss the chance to walk under a Saturn V rocket, get a close-up view of the Space Shuttle launch pad, try your skills in a shuttle simulator, and experience a virtual moonwalk!\n* Due to COVID-19 tours and exhibits may close due to operational requirements and may not be guaranteed. ", "inclusions": [ { "category": "OTHER", "categoryDescription": "Other", "type": "OTHER", "typeDescription": "Other", "otherDescription": "Kennedy Space Center Bus Tour (when available)" }, { "category": "OTHER", "categoryDescription": "Other", "type": "OTHER", "typeDescription": "Other", "otherDescription": "Astronaut Encounter featuring a veteran NASA astronaut" }, { "category": "OTHER", "categoryDescription": "Other", "type": "OTHER", "typeDescription": "Other", "otherDescription": "Space Shuttle Atlantis" }, { "category": "OTHER", "categoryDescription": "Other", "type": "OTHER", "typeDescription": "Other", "otherDescription": "All local taxes" }, { "category": "OTHER", "categoryDescription": "Other", "type": "OTHER", "typeDescription": "Other", "otherDescription": "The Apollo/Saturn V Center (when available)" }, { "category": "OTHER", "categoryDescription": "Other", "type": "OTHER", "typeDescription": "Other", "otherDescription": "Heroes and Legends exhibit featuring the U.S. Astronaut Hall of Fame" }, { "category": "OTHER", "categoryDescription": "Other", "type": "OTHER", "typeDescription": "Other", "otherDescription": "Admission to Kennedy Space Center" } ], "exclusions": [ { "category": "OTHER", "categoryDescription": "Other", "type": "OTHER", "typeDescription": "Other", "otherDescription": "Transportation to and from Kennedy Space Center" }, { "category": "OTHER", "categoryDescription": "Other", "type": "OTHER", "typeDescription": "Other", "otherDescription": "Parking Fees" }, { "category": "OTHER", "categoryDescription": "Other", "type": "OTHER", "typeDescription": "Other", "otherDescription": "Admission during a rocket launch" } ], "additionalInfo": [ { "type": "WHEELCHAIR_ACCESSIBLE", "description": "Wheelchair accessible" }, { "type": "STROLLER_ACCESSIBLE", "description": "Infants and small children can ride in a pram or stroller" }, { "type": "INFANTS_MUST_SIT_ON_LAPS", "description": "Infants are required to sit on an adult\u2019s lap" }, { "type": "SURFACES_WHEELCHAIR_ACCESSIBLE", "description": "All areas and surfaces are wheelchair accessible" }, { "type": "PHYSICAL_EASY", "description": "Suitable for all physical fitness levels" }, { "type": "OTHER", "description": "Pet kennels are available at no additional charge from the Information Counter inside the entrance" }, { "type": "OTHER", "description": "Strollers are available for rental for $5 plus tax payable at the Space Shop; strollers are on a self-serve basis at the tour stops" }, { "type": "OTHER", "description": "Tickets to view a launch are not included with this ticket and must be purchased separately" }, { "type": "OTHER", "description": "Guests with Disabilities:" }, { "type": "OTHER", "description": "Wheelchair accessible; wheelchairs are available for rental for $10 plus tax payable at the Space Shop" }, { "type": "OTHER", "description": "At the tour stops, wheelchairs will be reserved for guests purchasing rentals" }, { "type": "OTHER", "description": "Captioning systems and descriptive narration are available for the IMAX Theatre presentations" }, { "type": "OTHER", "description": "Crew members are available to retrieve items and assist when necessary" } ], "cancellationPolicy": { "type": "STANDARD", "description": "For a full refund, cancel at least 24 hours before the scheduled departure time.", "cancelIfBadWeather": true, "cancelIfInsufficientTravelers": false, "refundEligibility": [ { "dayRangeMin": 1, "percentageRefundable": 100 }, { "dayRangeMin": 0, "dayRangeMax": 1, "percentageRefundable": 0 } ] }, "bookingConfirmationSettings": { "bookingCutoffType": "OPENING_TIME", "bookingCutoffInMinutes": 0, "confirmationType": "INSTANT" }, "bookingRequirements": { "minTravelersPerBooking": 1, "maxTravelersPerBooking": 9, "requiresAdultForBooking": true }, "bookingQuestions": [ "SPECIAL_REQUIREMENTS" ], "tags": [ 21957, 21514, 21953, 21958, 11909, 21955, 21949, 21954, 12716, 21948, 21952, 11901, 11919, 21972 ], "destinations": [ { "ref": "25319", "primary": true } ], "itinerary": { "itineraryType": "STANDARD", "skipTheLine": false, "privateTour": false, "duration": { "fixedDurationInMinutes": 1440 }, "itineraryItems": [ { "pointOfInterestLocation": { "location": { "ref": "LOC-6eKJ+or5y8o99Qw0C8xWyFED5zR8LzZDEzLhzr8k6P4=" }, "attractionId": 98 }, "duration": { "fixedDurationInMinutes": 60 }, "passByWithoutStopping": false, "admissionIncluded": "YES", "description": "The greatest space adventure on Earth begins at the Kennedy Space Center Visitor Complex. Be sure to check out the 5-story IMAX theaters for breathtaking images captured by the Hubble Space Telescope, plus an astronaut\u2019s view of space in Science on a Sphere.\n\nFor the kids, stop by the Children\u2019s Play Dome, a one-of-a-kind space-themed playground where youngsters can take off in a spacecraft, climb a moon rock wall, crawl through rocket tunnels and slide to the surface of the Moon." }, { "pointOfInterestLocation": { "location": { "ref": "LOC-6eKJ+or5y8o99Qw0C8xWyBtn6upKBXhdHUkpF3/q6Z8=" }, "attractionId": 98 }, "duration": { "fixedDurationInMinutes": 60 }, "passByWithoutStopping": false, "admissionIncluded": "YES", "description": "In the Apollo/Saturn V Center, relive the wonder and excitement of the Apollo era in this one-of-a-kind exhibit that celebrates the unprecedented achievement of putting a man on the moon and the joy that was realized in that moment around the world. Also, take a bus tour past some of the most iconic NASA landmarks. Meet a veteran NASA astronaut at the Astronaut Encounter Show. Visit the impressive Rocket Garden, featuring the first rocket to break free from gravity, and honor NASA\u2019s fallen heroes at the 'Heroes and Legends' exhibit featuring the U.S. Astronaut Hall of Fame\u00ae. Then learn more about what it takes to explore Mars at Journey to Mars: Explorers Wanted." }, { "pointOfInterestLocation": { "location": { "ref": "LOC-6eKJ+or5y8o99Qw0C8xWyIoyDBQ8+Sp2VzaklauyUP4=" } }, "duration": { "fixedDurationInMinutes": 60 }, "passByWithoutStopping": false, "admissionIncluded": "YES", "description": "The journey starts in the Atlantis theater with a close-up view of Space Shuttle Atlantis and more than 60 interactive exhibits. It's a moving celebration of humankind\u2019s greatest achievements. Then in the Shuttle Launch Experience, discover the sights, sounds and feelings of a real Space Shuttle launch. Buckle up and get ready for launch in a one-of-a-kind, custom-designed crew cabin." } ] }, "productOptions": [ { "productOptionCode": "KSCAD", "description": "Kennedy Space Center Admission. This is a general admission ticket only which includes local taxes, the KSC Tour and Shuttle Launch Experience. ", "title": "KSC Admission" } ], "translationInfo": { "containsMachineTranslatedText": false }, "supplier": { "name": "City Sightseeing Orlando" }, "reviews": { "sources": [ { "provider": "VIATOR", "reviewCounts": [ { "rating": 1, "count": 8 }, { "rating": 2, "count": 6 }, { "rating": 3, "count": 8 }, { "rating": 4, "count": 14 }, { "rating": 5, "count": 54 } ], "totalCount": 90, "averageRating": 4 } ], "reviewCountTotals": [ { "rating": 1, "count": 8 }, { "rating": 2, "count": 6 }, { "rating": 3, "count": 8 }, { "rating": 4, "count": 14 }, { "rating": 5, "count": 54 } ], "totalReviews": 90, "combinedAverageRating": 4 }, "viatorUniqueContent": { "title": "Kennedy Space Center at Cape Canaveral", "shortDescription": "Visit a landmark of space exploration with admission to the Kennedy Space Center at Cape Canaveral, the launch site for some of America\u2019s most important missions. Your ticket to the Kennedy Space Center includes access to the Space Shuttle 'Atlantis,' a bus tour of the grounds, an astronaut encounter, and the chance to try a shuttle simulator and virtual moonwalk.", "longDescription": "Make your way to the Kennedy Space Center at Cape Canaveral, a short drive from Orlando, then spend the day exploring this history and future of the United States\u2019 space program. \n\nGet your bearings on the grounds on a guided bus tour of the Kennedy Space Center, including restricted parts of the working spaceflight facility. One highlight of the Kennedy Space Center is an\u00a0exhibit of the Space Shuttle 'Atlantis,' with interactive experiences that introduce the people behind this important NASA program, the Hubble Space Telescope, and the International Space Station. \n\nTake a turn at the helm, feel what it\u2019s like to float in space, explore a replica of the International Space Station, and more. Every day at the Kennedy Space Center, a real astronaut joins visitors\u00a0to discuss missions and the personal experience of space travel, and two IMAX theaters help bring space travel to vivid life. \n\nContinue to a Shuttle Launch Experience for a simulation of the space shuttle\u2019s ascent, with a pre-launch briefing by a space commander veteran, then walk the length of the Saturn V rocket that launched some of America\u2019s brave astronauts and honor NASA\u2019s fallen heroes at the 'Heroes and Legends' exhibit featuring the U.S. Astronaut Hall of Fame\u00ae.", "highlights": [ "Admission to the Kennedy Space Center", "Bus tour including restricted areas", "Explore interactive exhibits", "Watch IMAX films", "Strap in to a space shuttle simulator", "Ideal choice for families" ] } }, { "status": "ACTIVE", "productCode": "2050_PA", "language": "en-US", "createdAt": "2004-01-01T08:00:00Z", "title": "Louvre Museum Skip the Line Access Guided Tour", "ticketInfo": { "ticketTypes": [ "MOBILE_ONLY" ], "ticketTypeDescription": "Mobile or paper ticket accepted", "ticketsPerBooking": "ONE_PER_BOOKING", "ticketsPerBookingDescription": "One per booking" }, "pricingInfo": { "type": "PER_PERSON", "ageBands": [ { "ageBand": "INFANT", "startAge": 0, "endAge": 2, "minTravelersPerBooking": 0, "maxTravelersPerBooking": 0 }, { "ageBand": "CHILD", "startAge": 3, "endAge": 17, "minTravelersPerBooking": 0, "maxTravelersPerBooking": 9 }, { "ageBand": "ADULT", "startAge": 18, "endAge": 99, "minTravelersPerBooking": 1, "maxTravelersPerBooking": 9 } ] }, "images": [ { "imageSource": "SUPPLIER_PROVIDED", "caption": "", "isCover": true, "variants": [ { "height": 50, "width": 50, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-50x50/07/41/3e/59.jpg" }, { "height": 100, "width": 100, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-100x100/07/41/3e/59.jpg" }, { "height": 200, "width": 200, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-200x200/07/41/3e/59.jpg" }, { "height": 400, "width": 400, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-400x400/07/41/3e/59.jpg" }, { "height": 40, "width": 60, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-60x40/07/41/3e/59.jpg" }, { "height": 80, "width": 120, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-120x80/07/41/3e/59.jpg" }, { "height": 120, "width": 180, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-180x120/07/41/3e/59.jpg" }, { "height": 160, "width": 240, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-240x160/07/41/3e/59.jpg" }, { "height": 240, "width": 360, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-360x240/07/41/3e/59.jpg" }, { "height": 320, "width": 480, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-480x320/07/41/3e/59.jpg" }, { "height": 360, "width": 540, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-540x360/07/41/3e/59.jpg" }, { "height": 446, "width": 674, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-674x446/07/41/3e/59.jpg" }, { "height": 480, "width": 720, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-720x480/07/41/3e/59.jpg" }, { "height": 118, "width": 210, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-210x118/07/41/3e/59.jpg" }, { "height": 75, "width": 75, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-75x75/07/41/3e/59.jpg" }, { "height": 109, "width": 154, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-154x109/07/41/3e/59.jpg" } ] }, { "imageSource": "SUPPLIER_PROVIDED", "caption": "", "isCover": false, "variants": [ { "height": 50, "width": 50, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-50x50/0b/d3/99/41.jpg" }, { "height": 100, "width": 100, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-100x100/0b/d3/99/41.jpg" }, { "height": 200, "width": 200, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-200x200/0b/d3/99/41.jpg" }, { "height": 400, "width": 400, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-400x400/0b/d3/99/41.jpg" }, { "height": 40, "width": 60, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-60x40/0b/d3/99/41.jpg" }, { "height": 80, "width": 120, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-120x80/0b/d3/99/41.jpg" }, { "height": 120, "width": 180, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-180x120/0b/d3/99/41.jpg" }, { "height": 160, "width": 240, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-240x160/0b/d3/99/41.jpg" }, { "height": 240, "width": 360, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-360x240/0b/d3/99/41.jpg" }, { "height": 320, "width": 480, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-480x320/0b/d3/99/41.jpg" }, { "height": 360, "width": 540, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-540x360/0b/d3/99/41.jpg" }, { "height": 446, "width": 674, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-674x446/0b/d3/99/41.jpg" }, { "height": 480, "width": 720, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-720x480/0b/d3/99/41.jpg" }, { "height": 118, "width": 210, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-210x118/0b/d3/99/41.jpg" }, { "height": 75, "width": 75, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-75x75/0b/d3/99/41.jpg" }, { "height": 109, "width": 154, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-154x109/0b/d3/99/41.jpg" } ] }, { "imageSource": "SUPPLIER_PROVIDED", "caption": "Louvre Museum Tour", "isCover": false, "variants": [ { "height": 50, "width": 50, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-50x50/06/6f/4c/27.jpg" }, { "height": 100, "width": 100, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-100x100/06/6f/4c/27.jpg" }, { "height": 200, "width": 200, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-200x200/06/6f/4c/27.jpg" }, { "height": 400, "width": 400, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-400x400/06/6f/4c/27.jpg" }, { "height": 40, "width": 60, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-60x40/06/6f/4c/27.jpg" }, { "height": 80, "width": 120, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-120x80/06/6f/4c/27.jpg" }, { "height": 120, "width": 180, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-180x120/06/6f/4c/27.jpg" }, { "height": 160, "width": 240, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-240x160/06/6f/4c/27.jpg" }, { "height": 240, "width": 360, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-360x240/06/6f/4c/27.jpg" }, { "height": 320, "width": 480, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-480x320/06/6f/4c/27.jpg" }, { "height": 360, "width": 540, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-540x360/06/6f/4c/27.jpg" }, { "height": 446, "width": 674, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-674x446/06/6f/4c/27.jpg" }, { "height": 480, "width": 720, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-720x480/06/6f/4c/27.jpg" }, { "height": 118, "width": 210, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-210x118/06/6f/4c/27.jpg" }, { "height": 75, "width": 75, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-75x75/06/6f/4c/27.jpg" }, { "height": 109, "width": 154, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-154x109/06/6f/4c/27.jpg" } ] }, { "imageSource": "SUPPLIER_PROVIDED", "caption": "See the Mona Lisa", "isCover": false, "variants": [ { "height": 50, "width": 50, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-50x50/07/2b/95/3c.jpg" }, { "height": 100, "width": 100, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-100x100/07/2b/95/3c.jpg" }, { "height": 200, "width": 200, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-200x200/07/2b/95/3c.jpg" }, { "height": 400, "width": 400, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-400x400/07/2b/95/3c.jpg" }, { "height": 40, "width": 60, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-60x40/07/2b/95/3c.jpg" }, { "height": 80, "width": 120, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-120x80/07/2b/95/3c.jpg" }, { "height": 120, "width": 180, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-180x120/07/2b/95/3c.jpg" }, { "height": 160, "width": 240, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-240x160/07/2b/95/3c.jpg" }, { "height": 240, "width": 360, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-360x240/07/2b/95/3c.jpg" }, { "height": 320, "width": 480, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-480x320/07/2b/95/3c.jpg" }, { "height": 360, "width": 540, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-540x360/07/2b/95/3c.jpg" }, { "height": 446, "width": 674, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-674x446/07/2b/95/3c.jpg" }, { "height": 480, "width": 720, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-720x480/07/2b/95/3c.jpg" }, { "height": 118, "width": 210, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-210x118/07/2b/95/3c.jpg" }, { "height": 75, "width": 75, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-75x75/07/2b/95/3c.jpg" }, { "height": 109, "width": 154, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-154x109/07/2b/95/3c.jpg" } ] }, { "imageSource": "SUPPLIER_PROVIDED", "caption": "", "isCover": false, "variants": [ { "height": 50, "width": 50, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-50x50/06/fb/58/1a.jpg" }, { "height": 100, "width": 100, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-100x100/06/fb/58/1a.jpg" }, { "height": 200, "width": 200, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-200x200/06/fb/58/1a.jpg" }, { "height": 400, "width": 400, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-400x400/06/fb/58/1a.jpg" }, { "height": 40, "width": 60, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-60x40/06/fb/58/1a.jpg" }, { "height": 80, "width": 120, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-120x80/06/fb/58/1a.jpg" }, { "height": 120, "width": 180, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-180x120/06/fb/58/1a.jpg" }, { "height": 160, "width": 240, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-240x160/06/fb/58/1a.jpg" }, { "height": 240, "width": 360, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-360x240/06/fb/58/1a.jpg" }, { "height": 320, "width": 480, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-480x320/06/fb/58/1a.jpg" }, { "height": 360, "width": 540, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-540x360/06/fb/58/1a.jpg" }, { "height": 446, "width": 674, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-674x446/06/fb/58/1a.jpg" }, { "height": 480, "width": 720, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-720x480/06/fb/58/1a.jpg" }, { "height": 118, "width": 210, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-210x118/06/fb/58/1a.jpg" }, { "height": 75, "width": 75, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-75x75/06/fb/58/1a.jpg" }, { "height": 109, "width": 154, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-154x109/06/fb/58/1a.jpg" } ] }, { "imageSource": "SUPPLIER_PROVIDED", "caption": "", "isCover": false, "variants": [ { "height": 50, "width": 50, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-50x50/07/42/20/91.jpg" }, { "height": 100, "width": 100, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-100x100/07/42/20/91.jpg" }, { "height": 200, "width": 200, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-200x200/07/42/20/91.jpg" }, { "height": 400, "width": 400, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-400x400/07/42/20/91.jpg" }, { "height": 40, "width": 60, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-60x40/07/42/20/91.jpg" }, { "height": 80, "width": 120, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-120x80/07/42/20/91.jpg" }, { "height": 120, "width": 180, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-180x120/07/42/20/91.jpg" }, { "height": 160, "width": 240, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-240x160/07/42/20/91.jpg" }, { "height": 240, "width": 360, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-360x240/07/42/20/91.jpg" }, { "height": 320, "width": 480, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-480x320/07/42/20/91.jpg" }, { "height": 360, "width": 540, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-540x360/07/42/20/91.jpg" }, { "height": 446, "width": 674, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-674x446/07/42/20/91.jpg" }, { "height": 480, "width": 720, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-720x480/07/42/20/91.jpg" }, { "height": 118, "width": 210, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-210x118/07/42/20/91.jpg" }, { "height": 75, "width": 75, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-75x75/07/42/20/91.jpg" }, { "height": 109, "width": 154, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-154x109/07/42/20/91.jpg" } ] }, { "imageSource": "SUPPLIER_PROVIDED", "caption": "Louvre", "isCover": false, "variants": [ { "height": 50, "width": 50, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-50x50/06/6f/4d/18.jpg" }, { "height": 100, "width": 100, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-100x100/06/6f/4d/18.jpg" }, { "height": 200, "width": 200, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-200x200/06/6f/4d/18.jpg" }, { "height": 400, "width": 400, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-400x400/06/6f/4d/18.jpg" }, { "height": 40, "width": 60, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-60x40/06/6f/4d/18.jpg" }, { "height": 80, "width": 120, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-120x80/06/6f/4d/18.jpg" }, { "height": 120, "width": 180, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-180x120/06/6f/4d/18.jpg" }, { "height": 160, "width": 240, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-240x160/06/6f/4d/18.jpg" }, { "height": 240, "width": 360, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-360x240/06/6f/4d/18.jpg" }, { "height": 320, "width": 480, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-480x320/06/6f/4d/18.jpg" }, { "height": 360, "width": 540, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-540x360/06/6f/4d/18.jpg" }, { "height": 446, "width": 674, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-674x446/06/6f/4d/18.jpg" }, { "height": 480, "width": 720, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-720x480/06/6f/4d/18.jpg" }, { "height": 118, "width": 210, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-210x118/06/6f/4d/18.jpg" }, { "height": 75, "width": 75, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-75x75/06/6f/4d/18.jpg" }, { "height": 109, "width": 154, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-154x109/06/6f/4d/18.jpg" } ] }, { "imageSource": "SUPPLIER_PROVIDED", "caption": "", "isCover": false, "variants": [ { "height": 50, "width": 50, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-50x50/07/42/16/1e.jpg" }, { "height": 100, "width": 100, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-100x100/07/42/16/1e.jpg" }, { "height": 200, "width": 200, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-200x200/07/42/16/1e.jpg" }, { "height": 400, "width": 400, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-400x400/07/42/16/1e.jpg" }, { "height": 40, "width": 60, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-60x40/07/42/16/1e.jpg" }, { "height": 80, "width": 120, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-120x80/07/42/16/1e.jpg" }, { "height": 120, "width": 180, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-180x120/07/42/16/1e.jpg" }, { "height": 160, "width": 240, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-240x160/07/42/16/1e.jpg" }, { "height": 240, "width": 360, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-360x240/07/42/16/1e.jpg" }, { "height": 320, "width": 480, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-480x320/07/42/16/1e.jpg" }, { "height": 360, "width": 540, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-540x360/07/42/16/1e.jpg" }, { "height": 446, "width": 674, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-674x446/07/42/16/1e.jpg" }, { "height": 480, "width": 720, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-720x480/07/42/16/1e.jpg" }, { "height": 118, "width": 210, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-210x118/07/42/16/1e.jpg" }, { "height": 75, "width": 75, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-75x75/07/42/16/1e.jpg" }, { "height": 109, "width": 154, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-154x109/07/42/16/1e.jpg" } ] }, { "imageSource": "SUPPLIER_PROVIDED", "caption": "", "isCover": false, "variants": [ { "height": 50, "width": 50, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-50x50/07/42/20/0c.jpg" }, { "height": 100, "width": 100, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-100x100/07/42/20/0c.jpg" }, { "height": 200, "width": 200, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-200x200/07/42/20/0c.jpg" }, { "height": 400, "width": 400, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-400x400/07/42/20/0c.jpg" }, { "height": 40, "width": 60, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-60x40/07/42/20/0c.jpg" }, { "height": 80, "width": 120, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-120x80/07/42/20/0c.jpg" }, { "height": 120, "width": 180, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-180x120/07/42/20/0c.jpg" }, { "height": 160, "width": 240, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-240x160/07/42/20/0c.jpg" }, { "height": 240, "width": 360, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-360x240/07/42/20/0c.jpg" }, { "height": 320, "width": 480, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-480x320/07/42/20/0c.jpg" }, { "height": 360, "width": 540, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-540x360/07/42/20/0c.jpg" }, { "height": 446, "width": 674, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-674x446/07/42/20/0c.jpg" }, { "height": 480, "width": 720, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-720x480/07/42/20/0c.jpg" }, { "height": 118, "width": 210, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-210x118/07/42/20/0c.jpg" }, { "height": 75, "width": 75, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-75x75/07/42/20/0c.jpg" }, { "height": 109, "width": 154, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-154x109/07/42/20/0c.jpg" } ] }, { "imageSource": "SUPPLIER_PROVIDED", "caption": "", "isCover": false, "variants": [ { "height": 50, "width": 50, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-50x50/0b/d3/99/4a.jpg" }, { "height": 100, "width": 100, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-100x100/0b/d3/99/4a.jpg" }, { "height": 200, "width": 200, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-200x200/0b/d3/99/4a.jpg" }, { "height": 400, "width": 400, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-400x400/0b/d3/99/4a.jpg" }, { "height": 40, "width": 60, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-60x40/0b/d3/99/4a.jpg" }, { "height": 80, "width": 120, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-120x80/0b/d3/99/4a.jpg" }, { "height": 120, "width": 180, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-180x120/0b/d3/99/4a.jpg" }, { "height": 160, "width": 240, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-240x160/0b/d3/99/4a.jpg" }, { "height": 240, "width": 360, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-360x240/0b/d3/99/4a.jpg" }, { "height": 320, "width": 480, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-480x320/0b/d3/99/4a.jpg" }, { "height": 360, "width": 540, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-540x360/0b/d3/99/4a.jpg" }, { "height": 446, "width": 674, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-674x446/0b/d3/99/4a.jpg" }, { "height": 480, "width": 720, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-720x480/0b/d3/99/4a.jpg" }, { "height": 118, "width": 210, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-210x118/0b/d3/99/4a.jpg" }, { "height": 75, "width": 75, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-75x75/0b/d3/99/4a.jpg" }, { "height": 109, "width": 154, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-154x109/0b/d3/99/4a.jpg" } ] }, { "imageSource": "SUPPLIER_PROVIDED", "caption": "", "isCover": false, "variants": [ { "height": 50, "width": 50, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-50x50/07/42/21/6d.jpg" }, { "height": 100, "width": 100, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-100x100/07/42/21/6d.jpg" }, { "height": 200, "width": 200, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-200x200/07/42/21/6d.jpg" }, { "height": 400, "width": 400, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-400x400/07/42/21/6d.jpg" }, { "height": 40, "width": 60, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-60x40/07/42/21/6d.jpg" }, { "height": 80, "width": 120, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-120x80/07/42/21/6d.jpg" }, { "height": 120, "width": 180, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-180x120/07/42/21/6d.jpg" }, { "height": 160, "width": 240, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-240x160/07/42/21/6d.jpg" }, { "height": 240, "width": 360, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-360x240/07/42/21/6d.jpg" }, { "height": 320, "width": 480, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-480x320/07/42/21/6d.jpg" }, { "height": 360, "width": 540, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-540x360/07/42/21/6d.jpg" }, { "height": 446, "width": 674, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-674x446/07/42/21/6d.jpg" }, { "height": 480, "width": 720, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-720x480/07/42/21/6d.jpg" }, { "height": 118, "width": 210, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-210x118/07/42/21/6d.jpg" }, { "height": 75, "width": 75, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-75x75/07/42/21/6d.jpg" }, { "height": 109, "width": 154, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-154x109/07/42/21/6d.jpg" } ] }, { "imageSource": "SUPPLIER_PROVIDED", "caption": "", "isCover": false, "variants": [ { "height": 50, "width": 50, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-50x50/0b/d3/99/4b.jpg" }, { "height": 100, "width": 100, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-100x100/0b/d3/99/4b.jpg" }, { "height": 200, "width": 200, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-200x200/0b/d3/99/4b.jpg" }, { "height": 400, "width": 400, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-400x400/0b/d3/99/4b.jpg" }, { "height": 40, "width": 60, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-60x40/0b/d3/99/4b.jpg" }, { "height": 80, "width": 120, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-120x80/0b/d3/99/4b.jpg" }, { "height": 120, "width": 180, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-180x120/0b/d3/99/4b.jpg" }, { "height": 160, "width": 240, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-240x160/0b/d3/99/4b.jpg" }, { "height": 240, "width": 360, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-360x240/0b/d3/99/4b.jpg" }, { "height": 320, "width": 480, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-480x320/0b/d3/99/4b.jpg" }, { "height": 360, "width": 540, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-540x360/0b/d3/99/4b.jpg" }, { "height": 446, "width": 674, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-674x446/0b/d3/99/4b.jpg" }, { "height": 480, "width": 720, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-720x480/0b/d3/99/4b.jpg" }, { "height": 118, "width": 210, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-210x118/0b/d3/99/4b.jpg" }, { "height": 75, "width": 75, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-75x75/0b/d3/99/4b.jpg" }, { "height": 109, "width": 154, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-154x109/0b/d3/99/4b.jpg" } ] } ], "logistics": { "start": [ { "location": { "ref": "LOC-o0AXGEKPN4wJ9sIG0RAn5AEkWiInxLxdH8tQtvT+kdqUjMYFOwoWWohdiS9yg8u5" }, "description": "ARC DE TRIOMPHE DU CARROUSEL 75001 Paris Meeting point at the Arc the Triomphe du Carrousel facing the Louvre pyramid" } ], "end": [ { "location": { "ref": "LOC-o0AXGEKPN4wJ9sIG0RAn5K9r4Q6Z1F8mMsmWcDvWM4MeZHgn16lfc7Tnz+w9PNGr" }, "description": "After the Guided Tour, you can stay longer in the museum to visit, to eat or enjoy shopping for souvenirs." } ], "redemption": { "redemptionType": "ATTRACTION_START_POINT", "specialInstructions": "Meeting time 15 minutes prior to the departure, ARC DE TRIOMPHE DU CARROUSEL 75001 - Paris Meeting point at the Arc the Triomphe du Carrousel facing the Louvre pyramid with our guide with a Paris City Vision sign. [GPS : 48\u00b051'42.3\"N 2\u00b019'59.3\"E]" }, "travelerPickup": { "pickupOptionType": "MEET_EVERYONE_AT_START_POINT", "allowCustomTravelerPickup": false } }, "timeZone": "Europe/Paris", "description": "Paris\u2019s Louvre Museum is no less than the world\u2019s biggest museum, visited by 10.5 million in 2018 alone. Learn the secrets of three of its biggest crowd-pleasers, including the mysterious Mona Lisa, on your two-and-a-half-hour guided tour. You\u2019ll waste no time waiting in line and head straight to the Mona Lisa where your knowledgeable guide will regale you with fascinating tales and tidbits about the lady with the unavoidable gaze and the wry smile, before whisking you off to discover two more unmissable masterpieces. Then you\u2019re free to wander around the museum on your own, coming face to face with works by great masters and discovering new personal favorites by lesser-known artists.", "inclusions": [ { "category": "OTHER", "categoryDescription": "Other", "type": "OTHER", "typeDescription": "Other", "otherDescription": "Entry/Admission - Louvre Museum" }, { "category": "OTHER", "categoryDescription": "Other", "type": "OTHER", "typeDescription": "Other", "otherDescription": "Discover the pyramid of Ieoh Ming Pei" }, { "category": "OTHER", "categoryDescription": "Other", "type": "OTHER", "typeDescription": "Other", "otherDescription": "Skip-the-line access to the Louvre Museum" }, { "category": "OTHER", "categoryDescription": "Other", "type": "OTHER", "typeDescription": "Other", "otherDescription": "Live guide" } ], "exclusions": [ { "category": "OTHER", "categoryDescription": "Other", "type": "OTHER", "typeDescription": "Other", "otherDescription": "Lunch" }, { "category": "OTHER", "categoryDescription": "Other", "type": "OTHER", "typeDescription": "Other", "otherDescription": "Hotel pickup and drop-off" }, { "category": "OTHER", "categoryDescription": "Other", "type": "OTHER", "typeDescription": "Other", "otherDescription": "Access to temporary exhibitions" } ], "additionalInfo": [ { "type": "STROLLER_ACCESSIBLE", "description": "Infants and small children can ride in a pram or stroller" }, { "type": "PUBLIC_TRANSPORTATION_NEARBY", "description": "Public transportation options are available nearby" }, { "type": "NO_HEART_PROBLEMS", "description": "Not recommended for travelers with poor cardiovascular health" }, { "type": "PHYSICAL_EASY", "description": "Suitable for all physical fitness levels" }, { "type": "OTHER", "description": "Cloakroom compulsory for umbrellas, luggage, pushchairs that are not to be taken in the exhibition rooms." }, { "type": "OTHER", "description": "No elevators available during the visit" }, { "type": "OTHER", "description": "This tour does not include the access to temporary exhibitions" }, { "type": "OTHER", "description": "Some works are likely to be temporarily inaccessible due to renovations or work loans" }, { "type": "OTHER", "description": "At the end of the tour, possibility to stay longer after the visit" } ], "cancellationPolicy": { "type": "STANDARD", "description": "For a full refund, cancel at least 24 hours before the scheduled departure time.", "cancelIfBadWeather": false, "cancelIfInsufficientTravelers": false, "refundEligibility": [ { "dayRangeMin": 1, "percentageRefundable": 100 }, { "dayRangeMin": 0, "dayRangeMax": 1, "percentageRefundable": 0 } ] }, "bookingConfirmationSettings": { "bookingCutoffType": "START_TIME", "bookingCutoffInMinutes": 60, "confirmationType": "INSTANT" }, "bookingRequirements": { "minTravelersPerBooking": 1, "maxTravelersPerBooking": 9, "requiresAdultForBooking": true }, "languageGuides": [ { "type": "GUIDE", "language": "en", "legacyGuide": "en/SERVICE_GUIDE" }, { "type": "GUIDE", "language": "fr", "legacyGuide": "fr/SERVICE_GUIDE" }, { "type": "GUIDE", "language": "es", "legacyGuide": "es/SERVICE_GUIDE" } ], "bookingQuestions": [ "FULL_NAMES_LAST", "SPECIAL_REQUIREMENTS", "FULL_NAMES_FIRST", "AGEBAND", "DATE_OF_BIRTH" ], "tags": [ 21953, 21956, 21951, 21971, 21960, 21949, 12029, 21959, 21954, 11938, 21948, 12046, 12028 ], "destinations": [ { "ref": "479", "primary": true } ], "itinerary": { "itineraryType": "STANDARD", "skipTheLine": false, "privateTour": false, "duration": { "fixedDurationInMinutes": 150 }, "itineraryItems": [ { "pointOfInterestLocation": { "location": { "ref": "LOC-6eKJ+or5y8o99Qw0C8xWyPJQi8F9Q4nGteUvo9GtA7c=" } }, "duration": {}, "passByWithoutStopping": true, "admissionIncluded": "NOT_APPLICABLE", "description": "Start your tour in the center of Paris where your guide awaits, eager to impart their extensive art history knowledge. Your tour strats at the meeting point, Arc de Triomphe du Carroussel, facing the Louvre Pyramid, it commemorates the victory of Napoleon I at the Battle of Austerlitz." }, { "pointOfInterestLocation": { "location": { "ref": "LOC-6eKJ+or5y8o99Qw0C8xWyG9I3amfEs6tVmERGo1ogOs=" }, "attractionId": 572 }, "duration": { "fixedDurationInMinutes": 10 }, "passByWithoutStopping": false, "admissionIncluded": "NOT_APPLICABLE", "description": "First, take a short stroll through the Tuileries Garden to Paris' Louvre Museum and appreciate the grandeur of this former palace as you approach." }, { "pointOfInterestLocation": { "location": { "ref": "LOC-6eKJ+or5y8o99Qw0C8xWyEK+bImyj6InAoXhp5mNP2A=" }, "attractionId": 73 }, "duration": { "fixedDurationInMinutes": 120 }, "passByWithoutStopping": false, "admissionIncluded": "YES", "description": "Want an in-depth description of the Louvre\u2019s most famous pieces? Don\u2019t want to wait in line? This is the tour for you! The Louvre, formerly a royal palace, has become the world\u2019s largest museums. You will discover the museum\u2019s most famous works: Leonardo da Vinci\u2019s Mona Lisa, the Venus de Milo, the Winged Victory of Samothrace...\nLearn everything you\u2019ve ever wanted to know about Da Vinci and his illustrious Mona Lisa. Then turn your attention to the 18-foot tall Victory of Samothrace, one of the world\u2019s most renowned sculptures. Now you\u2019re on a cultural roll, and can\u2019t wait to hear about the Venus de Milo, your second armless sculpture of the day. With your appetite truly whetted, bid your guide farewell then you\u2019re free investigate the rest of the museum, head to the gift shop or grab a bench and watch the world go by! " }, { "pointOfInterestLocation": { "location": { "ref": "LOC-6eKJ+or5y8o99Qw0C8xWyEK+bImyj6InAoXhp5mNP2A=" }, "attractionId": 73 }, "duration": {}, "passByWithoutStopping": true, "admissionIncluded": "NOT_APPLICABLE", "description": "End of the tour at the Louvre Museum where you can spend more time after the guided visit." } ] }, "productOptions": [ { "productOptionCode": "TG13", "description": "Louvre Afternoon: Standard walking tour with maximum 25 people. Commentary from your English speaking guide. ", "title": "Guided in English", "languageGuides": [ { "type": "GUIDE", "language": "en", "legacyGuide": "en/SERVICE_GUIDE" } ] }, { "productOptionCode": "TG17", "description": "", "title": "Guided in Spanish", "languageGuides": [ { "type": "GUIDE", "language": "es", "legacyGuide": "es/SERVICE_GUIDE" } ] }, { "productOptionCode": "TG23", "description": "(GLPG) Small Group Option ", "title": "Small Group 1 to 8 PAX Max", "languageGuides": [ { "type": "GUIDE", "language": "en", "legacyGuide": "en/SERVICE_GUIDE" } ] } ], "translationInfo": { "containsMachineTranslatedText": false }, "supplier": { "name": "Paris CityVision" }, "reviews": { "sources": [ { "provider": "VIATOR", "reviewCounts": [ { "rating": 1, "count": 143 }, { "rating": 2, "count": 187 }, { "rating": 3, "count": 214 }, { "rating": 4, "count": 616 }, { "rating": 5, "count": 982 } ], "totalCount": 2142, "averageRating": 4 } ], "reviewCountTotals": [ { "rating": 1, "count": 143 }, { "rating": 2, "count": 187 }, { "rating": 3, "count": 214 }, { "rating": 4, "count": 616 }, { "rating": 5, "count": 982 } ], "totalReviews": 2142, "combinedAverageRating": 4 }, "viatorUniqueContent": { "shortDescription": "Paris\u2019 Louvre is one of the world\u2019s largest art museums, so\u00a0don't waste your time waiting in line. Head straight inside, with your priority access admission, to see three of its biggest\u00a0crowd-pleasers, including the\u00a0unavoidable gaze and wry smile of Da Vinci\u2019s \u201cMona Lisa.\" On this\u00a0guided tour,\u00a0hear fascinating tales and tidbits about\u00a0these unmissable masterpieces.\u00a0After coming face to face with several artworks by great masters, you\u2019re free to explore the Louvre independently.", "longDescription": "Start your tour in central Paris where your guide awaits, eager to impart their extensive art history knowledge with an in-depth description of the\u00a0Louvre\u2019s most famous artworks. First, take\u00a0a\u00a0short stroll\u00a0through the Tuileries Garden to\u00a0Paris' Louvre Museum and appreciate the grandeur of this former palace as you approach. Your skip-the-line ticket\u00a0lets you sail right past the long lines, right\u00a0into the heart of the galleries with a direct route to the \"Mona Lisa.\"\n\nLearn about Da Vinci and his globally renowned\u00a0painting\u00a0while\u00a0you benefit from\u00a0your guide's expert insights. Then turn your attention to the \"Winged Victory of Samothrace,\" one of the world\u2019s most acclaimed\u00a0sculptures.\u00a0Finally,\u00a0gazing at\u00a0the \"Venus de Milo\" armless sculpture, your guide continues to reveal stories surrounding both the\u00a0artwork\u00a0and the\u00a0artist. \n\nWith your appetite whetted, bid your guide farewell once your tour has finished. Then you\u2019re free to explore\u00a0the rest of the museum independently, including the gift shop.", "insiderTips": "Skip the lines with this guided tour into the Louvre and stay as long as you want after it closes.\u00a0", "highlights": [ "Guided tour of the Louvre Museum's three most famous artworks", "Skip the line with prioritized entry without queuing", "Head straight to the \u201cMona Lisa\u201d and gain insight about its artistic heritage", "Opportunity to stay on at the Louvre after your tour has finished" ] } }, { "status": "ACTIVE", "productCode": "5010SYDNEY", "language": "en-US", "createdAt": "2008-01-22T08:00:00Z", "title": "Big Bus Sydney and Bondi Hop-on Hop-off Tour", "ticketInfo": { "ticketTypes": [ "MOBILE_ONLY" ], "ticketTypeDescription": "Mobile or paper ticket accepted", "ticketsPerBooking": "ONE_PER_BOOKING", "ticketsPerBookingDescription": "One per booking" }, "pricingInfo": { "type": "PER_PERSON", "ageBands": [ { "ageBand": "INFANT", "startAge": 0, "endAge": 4, "minTravelersPerBooking": 0, "maxTravelersPerBooking": 9 }, { "ageBand": "CHILD", "startAge": 5, "endAge": 15, "minTravelersPerBooking": 0, "maxTravelersPerBooking": 9 }, { "ageBand": "ADULT", "startAge": 16, "endAge": 99, "minTravelersPerBooking": 0, "maxTravelersPerBooking": 9 } ] }, "images": [ { "imageSource": "SUPPLIER_PROVIDED", "caption": "", "isCover": true, "variants": [ { "height": 50, "width": 50, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-50x50/07/94/40/f3.jpg" }, { "height": 100, "width": 100, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-100x100/07/94/40/f3.jpg" }, { "height": 200, "width": 200, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-200x200/07/94/40/f3.jpg" }, { "height": 400, "width": 400, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-400x400/07/94/40/f3.jpg" }, { "height": 40, "width": 60, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-60x40/07/94/40/f3.jpg" }, { "height": 80, "width": 120, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-120x80/07/94/40/f3.jpg" }, { "height": 120, "width": 180, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-180x120/07/94/40/f3.jpg" }, { "height": 160, "width": 240, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-240x160/07/94/40/f3.jpg" }, { "height": 240, "width": 360, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-360x240/07/94/40/f3.jpg" }, { "height": 320, "width": 480, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-480x320/07/94/40/f3.jpg" }, { "height": 360, "width": 540, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-540x360/07/94/40/f3.jpg" }, { "height": 446, "width": 674, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-674x446/07/94/40/f3.jpg" }, { "height": 480, "width": 720, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-720x480/07/94/40/f3.jpg" }, { "height": 118, "width": 210, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-210x118/07/94/40/f3.jpg" }, { "height": 75, "width": 75, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-75x75/07/94/40/f3.jpg" }, { "height": 109, "width": 154, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-154x109/07/94/40/f3.jpg" } ] }, { "imageSource": "SUPPLIER_PROVIDED", "caption": "", "isCover": false, "variants": [ { "height": 50, "width": 50, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-50x50/09/c5/d2/d1.jpg" }, { "height": 100, "width": 100, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-100x100/09/c5/d2/d1.jpg" }, { "height": 200, "width": 200, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-200x200/09/c5/d2/d1.jpg" }, { "height": 400, "width": 400, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-400x400/09/c5/d2/d1.jpg" }, { "height": 40, "width": 60, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-60x40/09/c5/d2/d1.jpg" }, { "height": 80, "width": 120, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-120x80/09/c5/d2/d1.jpg" }, { "height": 120, "width": 180, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-180x120/09/c5/d2/d1.jpg" }, { "height": 160, "width": 240, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-240x160/09/c5/d2/d1.jpg" }, { "height": 240, "width": 360, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-360x240/09/c5/d2/d1.jpg" }, { "height": 320, "width": 480, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-480x320/09/c5/d2/d1.jpg" }, { "height": 360, "width": 540, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-540x360/09/c5/d2/d1.jpg" }, { "height": 446, "width": 674, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-674x446/09/c5/d2/d1.jpg" }, { "height": 480, "width": 720, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-720x480/09/c5/d2/d1.jpg" }, { "height": 118, "width": 210, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-210x118/09/c5/d2/d1.jpg" }, { "height": 75, "width": 75, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-75x75/09/c5/d2/d1.jpg" }, { "height": 109, "width": 154, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-154x109/09/c5/d2/d1.jpg" } ] }, { "imageSource": "SUPPLIER_PROVIDED", "caption": "Sydney and Bondi Hop-On Hop-Off Tour", "isCover": false, "variants": [ { "height": 50, "width": 50, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-50x50/09/c5/d2/d4.jpg" }, { "height": 100, "width": 100, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-100x100/09/c5/d2/d4.jpg" }, { "height": 200, "width": 200, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-200x200/09/c5/d2/d4.jpg" }, { "height": 400, "width": 400, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-400x400/09/c5/d2/d4.jpg" }, { "height": 40, "width": 60, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-60x40/09/c5/d2/d4.jpg" }, { "height": 80, "width": 120, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-120x80/09/c5/d2/d4.jpg" }, { "height": 120, "width": 180, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-180x120/09/c5/d2/d4.jpg" }, { "height": 160, "width": 240, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-240x160/09/c5/d2/d4.jpg" }, { "height": 240, "width": 360, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-360x240/09/c5/d2/d4.jpg" }, { "height": 320, "width": 480, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-480x320/09/c5/d2/d4.jpg" }, { "height": 360, "width": 540, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-540x360/09/c5/d2/d4.jpg" }, { "height": 446, "width": 674, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-674x446/09/c5/d2/d4.jpg" }, { "height": 480, "width": 720, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-720x480/09/c5/d2/d4.jpg" }, { "height": 118, "width": 210, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-210x118/09/c5/d2/d4.jpg" }, { "height": 75, "width": 75, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-75x75/09/c5/d2/d4.jpg" }, { "height": 109, "width": 154, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-154x109/09/c5/d2/d4.jpg" } ] }, { "imageSource": "SUPPLIER_PROVIDED", "caption": "The Rocks", "isCover": false, "variants": [ { "height": 50, "width": 50, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-50x50/07/90/5a/7d.jpg" }, { "height": 100, "width": 100, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-100x100/07/90/5a/7d.jpg" }, { "height": 200, "width": 200, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-200x200/07/90/5a/7d.jpg" }, { "height": 400, "width": 400, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-400x400/07/90/5a/7d.jpg" }, { "height": 40, "width": 60, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-60x40/07/90/5a/7d.jpg" }, { "height": 80, "width": 120, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-120x80/07/90/5a/7d.jpg" }, { "height": 120, "width": 180, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-180x120/07/90/5a/7d.jpg" }, { "height": 160, "width": 240, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-240x160/07/90/5a/7d.jpg" }, { "height": 240, "width": 360, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-360x240/07/90/5a/7d.jpg" }, { "height": 320, "width": 480, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-480x320/07/90/5a/7d.jpg" }, { "height": 360, "width": 540, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-540x360/07/90/5a/7d.jpg" }, { "height": 446, "width": 674, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-674x446/07/90/5a/7d.jpg" }, { "height": 480, "width": 720, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-720x480/07/90/5a/7d.jpg" }, { "height": 118, "width": 210, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-210x118/07/90/5a/7d.jpg" }, { "height": 75, "width": 75, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-75x75/07/90/5a/7d.jpg" }, { "height": 109, "width": 154, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-154x109/07/90/5a/7d.jpg" } ] }, { "imageSource": "SUPPLIER_PROVIDED", "caption": "Bondi Beach", "isCover": false, "variants": [ { "height": 50, "width": 50, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-50x50/09/c5/d2/c7.jpg" }, { "height": 100, "width": 100, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-100x100/09/c5/d2/c7.jpg" }, { "height": 200, "width": 200, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-200x200/09/c5/d2/c7.jpg" }, { "height": 400, "width": 400, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-400x400/09/c5/d2/c7.jpg" }, { "height": 40, "width": 60, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-60x40/09/c5/d2/c7.jpg" }, { "height": 80, "width": 120, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-120x80/09/c5/d2/c7.jpg" }, { "height": 120, "width": 180, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-180x120/09/c5/d2/c7.jpg" }, { "height": 160, "width": 240, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-240x160/09/c5/d2/c7.jpg" }, { "height": 240, "width": 360, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-360x240/09/c5/d2/c7.jpg" }, { "height": 320, "width": 480, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-480x320/09/c5/d2/c7.jpg" }, { "height": 360, "width": 540, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-540x360/09/c5/d2/c7.jpg" }, { "height": 446, "width": 674, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-674x446/09/c5/d2/c7.jpg" }, { "height": 480, "width": 720, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-720x480/09/c5/d2/c7.jpg" }, { "height": 118, "width": 210, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-210x118/09/c5/d2/c7.jpg" }, { "height": 75, "width": 75, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-75x75/09/c5/d2/c7.jpg" }, { "height": 109, "width": 154, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-154x109/09/c5/d2/c7.jpg" } ] }, { "imageSource": "SUPPLIER_PROVIDED", "caption": "Selfies at Bondi Beach", "isCover": false, "variants": [ { "height": 50, "width": 50, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-50x50/09/c5/d3/87.jpg" }, { "height": 100, "width": 100, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-100x100/09/c5/d3/87.jpg" }, { "height": 200, "width": 200, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-200x200/09/c5/d3/87.jpg" }, { "height": 400, "width": 400, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-400x400/09/c5/d3/87.jpg" }, { "height": 40, "width": 60, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-60x40/09/c5/d3/87.jpg" }, { "height": 80, "width": 120, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-120x80/09/c5/d3/87.jpg" }, { "height": 120, "width": 180, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-180x120/09/c5/d3/87.jpg" }, { "height": 160, "width": 240, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-240x160/09/c5/d3/87.jpg" }, { "height": 240, "width": 360, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-360x240/09/c5/d3/87.jpg" }, { "height": 320, "width": 480, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-480x320/09/c5/d3/87.jpg" }, { "height": 360, "width": 540, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-540x360/09/c5/d3/87.jpg" }, { "height": 446, "width": 674, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-674x446/09/c5/d3/87.jpg" }, { "height": 480, "width": 720, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-720x480/09/c5/d3/87.jpg" }, { "height": 118, "width": 210, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-210x118/09/c5/d3/87.jpg" }, { "height": 75, "width": 75, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-75x75/09/c5/d3/87.jpg" }, { "height": 109, "width": 154, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-154x109/09/c5/d3/87.jpg" } ] }, { "imageSource": "SUPPLIER_PROVIDED", "caption": "Visit icons", "isCover": false, "variants": [ { "height": 50, "width": 50, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-50x50/07/90/5a/68.jpg" }, { "height": 100, "width": 100, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-100x100/07/90/5a/68.jpg" }, { "height": 200, "width": 200, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-200x200/07/90/5a/68.jpg" }, { "height": 400, "width": 400, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-400x400/07/90/5a/68.jpg" }, { "height": 40, "width": 60, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-60x40/07/90/5a/68.jpg" }, { "height": 80, "width": 120, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-120x80/07/90/5a/68.jpg" }, { "height": 120, "width": 180, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-180x120/07/90/5a/68.jpg" }, { "height": 160, "width": 240, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-240x160/07/90/5a/68.jpg" }, { "height": 240, "width": 360, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-360x240/07/90/5a/68.jpg" }, { "height": 320, "width": 480, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-480x320/07/90/5a/68.jpg" }, { "height": 360, "width": 540, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-540x360/07/90/5a/68.jpg" }, { "height": 446, "width": 674, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-674x446/07/90/5a/68.jpg" }, { "height": 480, "width": 720, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-720x480/07/90/5a/68.jpg" }, { "height": 118, "width": 210, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-210x118/07/90/5a/68.jpg" }, { "height": 75, "width": 75, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-75x75/07/90/5a/68.jpg" }, { "height": 109, "width": 154, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-154x109/07/90/5a/68.jpg" } ] }, { "imageSource": "SUPPLIER_PROVIDED", "caption": "Big Bus App provides live tracking", "isCover": false, "variants": [ { "height": 50, "width": 50, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-50x50/07/90/5a/6a.jpg" }, { "height": 100, "width": 100, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-100x100/07/90/5a/6a.jpg" }, { "height": 200, "width": 200, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-200x200/07/90/5a/6a.jpg" }, { "height": 400, "width": 400, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-400x400/07/90/5a/6a.jpg" }, { "height": 40, "width": 60, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-60x40/07/90/5a/6a.jpg" }, { "height": 80, "width": 120, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-120x80/07/90/5a/6a.jpg" }, { "height": 120, "width": 180, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-180x120/07/90/5a/6a.jpg" }, { "height": 160, "width": 240, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-240x160/07/90/5a/6a.jpg" }, { "height": 240, "width": 360, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-360x240/07/90/5a/6a.jpg" }, { "height": 320, "width": 480, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-480x320/07/90/5a/6a.jpg" }, { "height": 360, "width": 540, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-540x360/07/90/5a/6a.jpg" }, { "height": 446, "width": 674, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-674x446/07/90/5a/6a.jpg" }, { "height": 480, "width": 720, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-720x480/07/90/5a/6a.jpg" }, { "height": 118, "width": 210, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-210x118/07/90/5a/6a.jpg" }, { "height": 75, "width": 75, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-75x75/07/90/5a/6a.jpg" }, { "height": 109, "width": 154, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-154x109/07/90/5a/6a.jpg" } ] }, { "imageSource": "SUPPLIER_PROVIDED", "caption": "", "isCover": false, "variants": [ { "height": 50, "width": 50, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-50x50/0a/f4/94/e0.jpg" }, { "height": 100, "width": 100, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-100x100/0a/f4/94/e0.jpg" }, { "height": 200, "width": 200, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-200x200/0a/f4/94/e0.jpg" }, { "height": 400, "width": 400, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-400x400/0a/f4/94/e0.jpg" }, { "height": 40, "width": 60, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-60x40/0a/f4/94/e0.jpg" }, { "height": 80, "width": 120, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-120x80/0a/f4/94/e0.jpg" }, { "height": 120, "width": 180, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-180x120/0a/f4/94/e0.jpg" }, { "height": 160, "width": 240, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-240x160/0a/f4/94/e0.jpg" }, { "height": 240, "width": 360, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-360x240/0a/f4/94/e0.jpg" }, { "height": 320, "width": 480, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-480x320/0a/f4/94/e0.jpg" }, { "height": 360, "width": 540, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-540x360/0a/f4/94/e0.jpg" }, { "height": 446, "width": 674, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-674x446/0a/f4/94/e0.jpg" }, { "height": 480, "width": 720, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-720x480/0a/f4/94/e0.jpg" }, { "height": 118, "width": 210, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-210x118/0a/f4/94/e0.jpg" }, { "height": 75, "width": 75, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-75x75/0a/f4/94/e0.jpg" }, { "height": 109, "width": 154, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-154x109/0a/f4/94/e0.jpg" } ] }, { "imageSource": "SUPPLIER_PROVIDED", "caption": "", "isCover": false, "variants": [ { "height": 50, "width": 50, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-50x50/0a/f4/94/e1.jpg" }, { "height": 100, "width": 100, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-100x100/0a/f4/94/e1.jpg" }, { "height": 200, "width": 200, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-200x200/0a/f4/94/e1.jpg" }, { "height": 400, "width": 400, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-400x400/0a/f4/94/e1.jpg" }, { "height": 40, "width": 60, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-60x40/0a/f4/94/e1.jpg" }, { "height": 80, "width": 120, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-120x80/0a/f4/94/e1.jpg" }, { "height": 120, "width": 180, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-180x120/0a/f4/94/e1.jpg" }, { "height": 160, "width": 240, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-240x160/0a/f4/94/e1.jpg" }, { "height": 240, "width": 360, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-360x240/0a/f4/94/e1.jpg" }, { "height": 320, "width": 480, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-480x320/0a/f4/94/e1.jpg" }, { "height": 360, "width": 540, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-540x360/0a/f4/94/e1.jpg" }, { "height": 446, "width": 674, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-674x446/0a/f4/94/e1.jpg" }, { "height": 480, "width": 720, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-720x480/0a/f4/94/e1.jpg" }, { "height": 118, "width": 210, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-210x118/0a/f4/94/e1.jpg" }, { "height": 75, "width": 75, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-75x75/0a/f4/94/e1.jpg" }, { "height": 109, "width": 154, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-154x109/0a/f4/94/e1.jpg" } ] }, { "imageSource": "SUPPLIER_PROVIDED", "caption": "", "isCover": false, "variants": [ { "height": 50, "width": 50, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-50x50/0a/f4/95/18.jpg" }, { "height": 100, "width": 100, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-100x100/0a/f4/95/18.jpg" }, { "height": 200, "width": 200, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-200x200/0a/f4/95/18.jpg" }, { "height": 400, "width": 400, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-400x400/0a/f4/95/18.jpg" }, { "height": 40, "width": 60, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-60x40/0a/f4/95/18.jpg" }, { "height": 80, "width": 120, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-120x80/0a/f4/95/18.jpg" }, { "height": 120, "width": 180, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-180x120/0a/f4/95/18.jpg" }, { "height": 160, "width": 240, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-240x160/0a/f4/95/18.jpg" }, { "height": 240, "width": 360, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-360x240/0a/f4/95/18.jpg" }, { "height": 320, "width": 480, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-480x320/0a/f4/95/18.jpg" }, { "height": 360, "width": 540, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-540x360/0a/f4/95/18.jpg" }, { "height": 446, "width": 674, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-674x446/0a/f4/95/18.jpg" }, { "height": 480, "width": 720, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-720x480/0a/f4/95/18.jpg" }, { "height": 118, "width": 210, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-210x118/0a/f4/95/18.jpg" }, { "height": 75, "width": 75, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-75x75/0a/f4/95/18.jpg" }, { "height": 109, "width": 154, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-154x109/0a/f4/95/18.jpg" } ] }, { "imageSource": "SUPPLIER_PROVIDED", "caption": "", "isCover": false, "variants": [ { "height": 50, "width": 50, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-50x50/0a/f4/95/1a.jpg" }, { "height": 100, "width": 100, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-100x100/0a/f4/95/1a.jpg" }, { "height": 200, "width": 200, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-200x200/0a/f4/95/1a.jpg" }, { "height": 400, "width": 400, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-400x400/0a/f4/95/1a.jpg" }, { "height": 40, "width": 60, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-60x40/0a/f4/95/1a.jpg" }, { "height": 80, "width": 120, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-120x80/0a/f4/95/1a.jpg" }, { "height": 120, "width": 180, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-180x120/0a/f4/95/1a.jpg" }, { "height": 160, "width": 240, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-240x160/0a/f4/95/1a.jpg" }, { "height": 240, "width": 360, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-360x240/0a/f4/95/1a.jpg" }, { "height": 320, "width": 480, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-480x320/0a/f4/95/1a.jpg" }, { "height": 360, "width": 540, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-540x360/0a/f4/95/1a.jpg" }, { "height": 446, "width": 674, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-674x446/0a/f4/95/1a.jpg" }, { "height": 480, "width": 720, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-720x480/0a/f4/95/1a.jpg" }, { "height": 118, "width": 210, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-210x118/0a/f4/95/1a.jpg" }, { "height": 75, "width": 75, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-75x75/0a/f4/95/1a.jpg" }, { "height": 109, "width": 154, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-154x109/0a/f4/95/1a.jpg" } ] } ], "logistics": { "redemption": { "redemptionType": "NONE", "specialInstructions": "Sydney tours depart and finish at Stop 1. First tour starts at 10am, frequency every 2hrs\n\nDeparture point: Board the bus at any of the following stops:\n\nSydney Route\nStop 1 Circular Quay \nStop 2 Sydney Tower/Westfield Sydney\nStop 3 Cook and Phillip Park/Australian Museum\nStop 4 William Street\nStop 5 Kings Cross\nStop 6 El Alamein Fountain\nStop 7 Woolloomooloo\nStop 8\u00a0 Sydney Opera House\nStop 9 Botanic Gardens\nStop 10 State Library\nStop 11 Hyde Park North\nStop 12 Central Station\nStop 13 Power House Museum\nStop 14 Sydney Fish Markets\nStop 15 The Star\nStop 16 Maritime Museum\nStop 17 International Convention Centre\nStop 18 Chinese Gardens/Chinatown\nStop 19 SEA LIFE Sydney Aquarium\nStop 20 King Street Wharf\nStop 21 Barangaroo\nStop 22 Sydney Harbour Bridge\nStop 23 The Rocks\n\nFor Cruise Ship Passengers:\nThe Overseas Passenger Terminal: Stop 23 The Rocks\nFor White Bay Terminal Customers shuttled to SEA LIFE Sydney Aquarium: Stop 19 SEA LIFE Sydney Aquarium\nFor White Bay Terminal Customers shuttled to Dawes Point: Stop 22 Sydney Harbour Bridge\n\nWe have introduced a number of new health & safety measures to reduce the risk associated with the spread of Covid-19 in line with government advice and requirements of the local health authorities. These include regular cleaning of buses & social distancing measures. To uphold these new safety and hygiene standards in keeping our guests safe during the Covid-19 Pandemic, we may have to operate a reduced service and changes to ticket inclusions. This may also include frequency of departures, changes to routes & reduction/removal of stops. Customers are advised to visit our website or download our app to find out more on the new health & safety measures\n*Departure and frequency subject to change" }, "travelerPickup": { "pickupOptionType": "PICKUP_AND_MEET_AT_START_POINT", "allowCustomTravelerPickup": true, "locations": [ { "location": { "ref": "MEET_AT_DEPARTURE_POINT" }, "pickupType": "OTHER" }, { "location": { "ref": "CONTACT_SUPPLIER_LATER" }, "pickupType": "OTHER" } ], "additionalInfo": "Location Name: Main Stops: Central Station or Circular Quay \n\nOR \n\nBoard the bus at any of the following stops:\n\nSydney Route\n\nStop 1 Circular Quay (Corner of Alfred and George Streets)\n\nStop 2 Sydney Tower / Westfield Sydney\n\nStop 3 Cook and Phillip Park / Australian Museum\n\nStop 4 William Street\n\nStop 5 Kings Cross\n\nStop 6 El Almein Fountain\n\nStop 7 Woolloomooloo\n\nStop 8\u00a0 Sydney Opera House\n\nStop 9 Botanic Gardens\n\nStop 10 State Library\n\nStop 11 Hyde Park North\n\nStop 12 Central Station\n\nStop 13 Power House Museum\n\nStop 14 Sydney Fish Markets\n\nStop 15 The Star\n\nStop 16 Maritime Museum\n\nStop 17 International Convention Centre (ICC) \n\nStop 18 Chinese Gardens / Chinatown\n\nStop 19 SEA LIFE Sydney Aquarium\n\nStop 20 King Street Wharf\n\nStop 21 Barangaroo\n\nStop 22 Sydney Harbour Bridge\n\nStop 23 The Rocks\n\nStop 1 Circular Quay (Corner of Alfred and George Streets)\n\nBondi Tour \n\nStop 24 Central Station\n\nStop 25 Town Hall (Stop temporarily closed)\n\nStop 26 Australian Museum \n\nStop 27 100 William Street\n\nStop 28 Paddington Town Hall\n\nStop 29 Centennial Parklands\n\nStop 30 Bondi Beach\n\nStop 31 North Bondi\n\nStop 32 Rose Bay\n\nStop 33 Double Bay\n\nStop 24 Central Station\nLocation Address: Central Station on Eddy Avenue\n\nDirections: Information for Cruise Ship Passengers:\u00a0\n\nDepending on where your ship is docking, the closest stops to board the Big Bus are: \n\nFor ships docked at the Overseas Passenger Terminal: Stop 23 The Rocks\n\nFor White Bay Terminal Customers shuttled to SEA LIFE Sydney Aquairum: Stop 19 SEA LIFE Sydney Aquarium\n\nFor White Bay Terminal Customers shuttled to Dawes Point: Stop 22 Sydney Harbour Bridge\n" } }, "timeZone": "Australia/Sydney", "description": "Explore Sydney and Bondi Beach on this hop-on hop-off sightseeing tour, which takes you by double-decker bus to 34 stops around the city including Sydney Opera House, Sydney Harbour Bridge, Darling Harbour, Bondi Beach and more. Enjoy unobstructed views and recorded commentary on board. Simply hop off to walk around and sightsee in depth. Your ticket is valid for 24 or 48 hours, so you can experience Sydney and Bondi's most noteworthy attractions, sights, and shopping and dining areas at your own pace.", "inclusions": [ { "category": "OTHER", "categoryDescription": "Other", "type": "OTHER", "typeDescription": "Other", "otherDescription": "Up to 23 stops to Hop-on and Hop-off " }, { "category": "OTHER", "categoryDescription": "Other", "type": "OTHER", "typeDescription": "Other", "otherDescription": "Pre-recorded commentary in English, French, Spanish, German, Italian, Mandarin, Japanese, Korean" }, { "category": "OTHER", "categoryDescription": "Other", "type": "OTHER", "typeDescription": "Other", "otherDescription": "Choice of 24 hour or 48 hour pass" }, { "category": "OTHER", "categoryDescription": "Other", "type": "OTHER", "typeDescription": "Other", "otherDescription": "4 Merlin Attractions with Deluxe Plus: Tower Eye, Madame Tussauds, Sea Life Aquarium, Sydney Zoo" } ], "exclusions": [ { "category": "OTHER", "categoryDescription": "Other", "type": "OTHER", "typeDescription": "Other", "otherDescription": "Food and drinks" }, { "category": "OTHER", "categoryDescription": "Other", "type": "OTHER", "typeDescription": "Other", "otherDescription": "Admission" } ], "additionalInfo": [ { "type": "WHEELCHAIR_ACCESSIBLE", "description": "Wheelchair accessible" }, { "type": "STROLLER_ACCESSIBLE", "description": "Infants and small children can ride in a pram or stroller" }, { "type": "PUBLIC_TRANSPORTATION_NEARBY", "description": "Public transportation options are available nearby" }, { "type": "INFANTS_MUST_SIT_ON_LAPS", "description": "Infants are required to sit on an adult\u2019s lap" }, { "type": "TRANSPORTATION_WHEELCHAIR_ACCESSIBLE", "description": "Transportation options are wheelchair accessible" }, { "type": "SURFACES_WHEELCHAIR_ACCESSIBLE", "description": "All areas and surfaces are wheelchair accessible" }, { "type": "PHYSICAL_EASY", "description": "Suitable for all physical fitness levels" }, { "type": "OTHER", "description": "When booking the 24 or 48 hour Family Pass, only the lead passenger name is required for a booking of up to 2 Adults and 2 children 16 years and under. At time of booking you only need to enter 1 adult to complete your booking" }, { "type": "OTHER", "description": "Infants aged 0 to 4 years travel free of charge" } ], "cancellationPolicy": { "type": "STANDARD", "description": "For a full refund, cancel at least 24 hours before the scheduled departure time.", "cancelIfBadWeather": false, "cancelIfInsufficientTravelers": false, "refundEligibility": [ { "dayRangeMin": 1, "percentageRefundable": 100 }, { "dayRangeMin": 0, "dayRangeMax": 1, "percentageRefundable": 0 } ] }, "bookingConfirmationSettings": { "bookingCutoffType": "CLOSING_TIME", "bookingCutoffInMinutes": 0, "confirmationType": "INSTANT" }, "bookingRequirements": { "minTravelersPerBooking": 1, "maxTravelersPerBooking": 9, "requiresAdultForBooking": false }, "languageGuides": [ { "type": "AUDIO", "language": "de", "legacyGuide": "de/SERVICE_AUDIO" }, { "type": "AUDIO", "language": "ko", "legacyGuide": "ko/SERVICE_AUDIO" }, { "type": "AUDIO", "language": "cmn", "legacyGuide": "cmn/SERVICE_AUDIO" }, { "type": "AUDIO", "language": "ja", "legacyGuide": "ja/SERVICE_AUDIO" }, { "type": "AUDIO", "language": "en", "legacyGuide": "en/SERVICE_AUDIO" }, { "type": "AUDIO", "language": "it", "legacyGuide": "it/SERVICE_AUDIO" }, { "type": "AUDIO", "language": "fr", "legacyGuide": "fr/SERVICE_AUDIO" }, { "type": "AUDIO", "language": "es", "legacyGuide": "es/SERVICE_AUDIO" } ], "bookingQuestions": [ "PICKUP_POINT", "SPECIAL_REQUIREMENTS" ], "tags": [ 20226, 21957, 21954, 12011, 21953, 11930, 12075, 21951, 21952, 21955, 21960, 12058 ], "destinations": [ { "ref": "357", "primary": true } ], "itinerary": { "itineraryType": "HOP_ON_HOP_OFF", "skipTheLine": false, "privateTour": false, "duration": { "fixedDurationInMinutes": 90 }, "routes": [ { "operatingSchedule": "1st bus departs from Stop 1 Circular Quay at 10.00am.\nFrequency every approx. 2hrs\nLast bus departs from stop 1 at 2.00pm\n\nWe have introduced a number of new health & safety measures to reduce the risk associated with the spread of Covid-19 in line with government advice and requirements of the local health authorities. These include regular cleaning of buses and social distancing measures.\n\nTo uphold these new safety and hygiene standards in keeping our guests safe during the Covid-19 Pandemic, we may have to operate a reduced service and changes to ticket inclusions. This may also include frequency of departures, changes to routes and reduction/removal of stops.\n\nCustomers are advised to visit our website or to download our app to find out more about our new health and safety measures and for the most update service information.", "duration": { "fixedDurationInMinutes": 90 }, "name": "Red Route - Sydney Icons", "stops": [ { "stopLocation": { "ref": "LOC-o0AXGEKPN4wJ9sIG0RAn5K7G12Q1llmLrmRJIk0TdocBlTVEtwme9qSWX6C278au" }, "description": "Circular Quay, George St, cnr Alfred St. (opp DFS Galleria)" }, { "stopLocation": { "ref": "LOC-o0AXGEKPN4wJ9sIG0RAn5HJ50dRnnDILDxHC0aDaFxp7pTMyhWhGCLGcIKI9V5BA" }, "description": "Sydney Tower/ Westfield" }, { "stopLocation": { "ref": "LOC-o0AXGEKPN4wJ9sIG0RAn5Mv6/3Z1RgMBjz9oqxyhztkA6KfIY6OeeBp2qBzILHki" }, "description": "Australian Museum" }, { "stopLocation": { "ref": "LOC-o0AXGEKPN4wJ9sIG0RAn5GfD9/r94v5E7ec6JhnTyPBYBVIlTPe90wri6KfBJ/3r" }, "description": "William St, Kings Cross" }, { "stopLocation": { "ref": "LOC-o0AXGEKPN4wJ9sIG0RAn5EArKxA8IGKJOAtvZA9gnG293GkjeAbMJpoT5DSKVehb" }, "description": "Kings Cross Train Station on Darlinghurst Rd." }, { "stopLocation": { "ref": "LOC-o0AXGEKPN4wJ9sIG0RAn5P7POvXGTsgLr6rGhJvV1wLWD9oxK1S8ZuFp0s3YwlJE" }, "description": "El Alamein Fountain" }, { "stopLocation": { "ref": "LOC-o0AXGEKPN4wJ9sIG0RAn5ACff5Q2zP9vFXOw9FH3eF7yRd7bGGRtyk2lqFhlREAt" }, "description": "Cowper Wharf Rd, outside the Woollomooloo Hotel" }, { "stopLocation": { "ref": "LOC-o0AXGEKPN4wJ9sIG0RAn5I5AE5g4LP5dY98J8ghN4/vPyoUmNn0HAueiT/4BsTiA" }, "description": "Sydney Opera House" }, { "stopLocation": { "ref": "LOC-RaYlfRSLaIsd0SlazqDQk8e54+y7uNF4J0I11kE8Ii8cwkm0vCSG+ZztYfJJRbt0KTk0NysGp6dMWXv4p77oUmK3coCyUqu6DXxO76qTrWsLalj/zVmVD2J+1NP6fLzuMq0WIkTksMvfwmuPHz2N9rNji8WDeSEgjNKqwoFyCRIDqCtU5RfaZK9jt8drOR43" }, "description": "Botanical Garden, Scenic Walk to Mrs Macquarie Chair" }, { "stopLocation": { "ref": "LOC-o0AXGEKPN4wJ9sIG0RAn5LRwqJKFdYT/NE2veaGkHLWENZDuCwCCiRLcjTd7PqGY" }, "description": "State Library" }, { "stopLocation": { "ref": "LOC-o0AXGEKPN4wJ9sIG0RAn5BbfWr/ii8iOxx2DStje8nHIdx9CAh7gf7NPEIFCHKL1" }, "description": "Hyde Park" }, { "stopLocation": { "ref": "LOC-o0AXGEKPN4wJ9sIG0RAn5FI1mHyCaXwS9wxehYVQCOOTTK4QPvyWSsuyJVy56VaP" }, "description": "Central Station, Pitt Street, Bus Bay 18" }, { "stopLocation": { "ref": "LOC-o0AXGEKPN4wJ9sIG0RAn5NHfg7MK3dZMTjtjXEnP5D/jV7Yy7mPzODBPDoeVZr9e" }, "description": "Powerhouse Museum" }, { "stopLocation": { "ref": "LOC-o0AXGEKPN4wJ9sIG0RAn5HBLzybR31ZsrP5qW3qwBjRHx6ntCZRNm8cOOvKxxGyd" }, "description": "Harris St, cnr Pyrmont Bridge Rd" }, { "stopLocation": { "ref": "LOC-o0AXGEKPN4wJ9sIG0RAn5DX5DvzbKukJ55Me52VGaWSV8CWqkzPk6r2wuRX3U3yA" }, "description": "The Star Casino" }, { "stopLocation": { "ref": "LOC-o0AXGEKPN4wJ9sIG0RAn5HpFZkDuM/qUVqhNXtjdmVzLEhp+BkbuI8eNpIbpbFqX" }, "description": "" }, { "stopLocation": { "ref": "LOC-o0AXGEKPN4wJ9sIG0RAn5PGU0wAVQ0RW8MeIV5ohu7OBBjnRF+BV8/noyelhf/VY" }, "description": "" }, { "stopLocation": { "ref": "LOC-o0AXGEKPN4wJ9sIG0RAn5LPxfFx4wrlGiogB0uCdwnR8xwXSMViDV9xHSZFXwlgF" }, "description": "" }, { "stopLocation": { "ref": "LOC-o0AXGEKPN4wJ9sIG0RAn5CNRoVowNq5eTkOjeSjSf9EwwqEbn2u377NW1YQ+RvtO" }, "description": "" }, { "stopLocation": { "ref": "LOC-o0AXGEKPN4wJ9sIG0RAn5BNxjJyUZVdmHdWkDLSLjPyXs3j6l/Vqe3GSLEHU9HRp" }, "description": "Kings Street Wharf" }, { "stopLocation": { "ref": "LOC-RaYlfRSLaIsd0SlazqDQk4LV2eLlxVCe/1kX91/IlstRTqHdLI0/0vzEAOQaCcSUjmQIRfYW00qGw6sm037L4jV0gLdiqLx7h3dOq3ZyyCuQBdMO3uEtHX3dHjSNC6AS8nW6DHvbz7JX4X6Stw784gMC89fy0iCGSReZVvB4zexP75e3NmpGZ9dYuPlDINoN" }, "description": "" }, { "stopLocation": { "ref": "LOC-o0AXGEKPN4wJ9sIG0RAn5I9yyQO1tqD6mYvR0+/R3hfkBFH5QSJjP1VJ0a/86OPO" }, "description": "Sydney Harbour Bridge" }, { "stopLocation": { "ref": "LOC-o0AXGEKPN4wJ9sIG0RAn5OiZZJfU/dyO0L+ERI/TFlA102O66T1JygFmomnS5cve" }, "description": "" } ], "pointsOfInterest": [ { "location": { "ref": "LOC-6eKJ+or5y8o99Qw0C8xWyGniY1cnTSNGXvoWDyr5vhs=" }, "attractionId": 14165 }, { "location": { "ref": "LOC-6eKJ+or5y8o99Qw0C8xWyCzyo6wwCKGRHcxNqYlfatw=" }, "attractionId": 13157 }, { "location": { "ref": "LOC-6eKJ+or5y8o99Qw0C8xWyHJe5R5nK3iDf2MIKn5yhsk=" }, "attractionId": 283 }, { "location": { "ref": "LOC-6eKJ+or5y8o99Qw0C8xWyBvBUWF3oTuQ+A4WgL/BbWE=" }, "attractionId": 299 }, { "location": { "ref": "LOC-6eKJ+or5y8o99Qw0C8xWyHLWgpJJiuuNR8fSoRCktCk=" } }, { "location": { "ref": "LOC-6eKJ+or5y8o99Qw0C8xWyHB77jr9RLFsREdqFdB0ns0=" }, "attractionId": 297 }, { "location": { "ref": "LOC-6eKJ+or5y8o99Qw0C8xWyEOSe30+PQplXmvYDB6Y69o=" }, "attractionId": 285 }, { "location": { "ref": "LOC-6eKJ+or5y8o99Qw0C8xWyPjdOMb6oyegNKsCaMW+mC8=" }, "attractionId": 293 }, { "location": { "ref": "LOC-6eKJ+or5y8o99Qw0C8xWyJAUw730EjP5mWrCgpu+F0E=" }, "attractionId": 13185 }, { "location": { "ref": "LOC-6eKJ+or5y8o99Qw0C8xWyCEGaRsghN+Rpgi6nKCvmYM=" }, "attractionId": 8355 }, { "location": { "ref": "LOC-6eKJ+or5y8o99Qw0C8xWyHH90UK3yOaKctqyRQZnZas=" }, "attractionId": 292 }, { "location": { "ref": "LOC-6eKJ+or5y8o99Qw0C8xWyOpVZOtDzRIQN0hQemyFBDs=" } }, { "location": { "ref": "LOC-6eKJ+or5y8o99Qw0C8xWyEppV2gz4/8Tq3G15eOtfUM=" }, "attractionId": 14103 }, { "location": { "ref": "LOC-6eKJ+or5y8o99Qw0C8xWyKFpdgR8oQgOUV8gzqyVpVo=" } }, { "location": { "ref": "LOC-6eKJ+or5y8o99Qw0C8xWyKPQsNtBopr25P980NGeKOQ=" }, "attractionId": 298 } ] }, { "operatingSchedule": "1st bus departs from Stop 12/24 Central Station at 10.15am.\nFrequency every 2hrs\nLast bus departs from stop 12/24 at 2.15pm", "duration": { "fixedDurationInMinutes": 90 }, "name": "Blue Route - Bondi Lifestyle", "stops": [ { "stopLocation": { "ref": "LOC-o0AXGEKPN4wJ9sIG0RAn5Psa0O7zv6as2RgNgIaUx0EFjKH/7fL3wV6nAS8iPXkO" }, "description": "Central Station, Pitt Street, Bus Bay 18" }, { "stopLocation": { "ref": "LOC-o0AXGEKPN4wJ9sIG0RAn5Mv6/3Z1RgMBjz9oqxyhztkA6KfIY6OeeBp2qBzILHki" }, "description": "Australian Museum " }, { "stopLocation": { "ref": "LOC-o0AXGEKPN4wJ9sIG0RAn5Nh4BzPY4JhOxIuD4/Do8pUJ7t+9MCl62rbq6KVnaek/" }, "description": "" }, { "stopLocation": { "ref": "LOC-o0AXGEKPN4wJ9sIG0RAn5HyrAalNU3M4hS1T1NGhMtCdFsSEh+RkFpJBmFZX9No8" }, "description": "" }, { "stopLocation": { "ref": "LOC-o0AXGEKPN4wJ9sIG0RAn5ADNeEAMR25x+3AtosA/mPk102O66T1JygFmomnS5cve" }, "description": "" }, { "stopLocation": { "ref": "LOC-o0AXGEKPN4wJ9sIG0RAn5DlsAklW6JtKr4LQsnhsvv7JxEYbLQWAsKDqTrCu41p4" }, "description": "" }, { "stopLocation": { "ref": "LOC-o0AXGEKPN4wJ9sIG0RAn5BLsCa3M6INxXNpkE2r1BTHxvB0gY1MP6WB9Yxso16Ot" }, "description": "" }, { "stopLocation": { "ref": "LOC-o0AXGEKPN4wJ9sIG0RAn5PrdhQ/J96Gq+dweFD3sOSrkBFH5QSJjP1VJ0a/86OPO" }, "description": "" } ], "pointsOfInterest": [ { "location": { "ref": "LOC-6eKJ+or5y8o99Qw0C8xWyIiKlXuqcCaUR/8Ng7CZSLI=" }, "attractionId": 14159 }, { "location": { "ref": "LOC-6eKJ+or5y8o99Qw0C8xWyOEUrjaNrfQuPK4sfYmEGio=" } }, { "location": { "ref": "LOC-6eKJ+or5y8o99Qw0C8xWyPTry/4ZvItH2jj+ziZ16zY=" } }, { "location": { "ref": "LOC-6eKJ+or5y8o99Qw0C8xWyCs+n26oP6pvXz2mRpQ6QlA=" } }, { "location": { "ref": "LOC-6eKJ+or5y8o99Qw0C8xWyI5+u+JgfxCzNB+Yaph1xug=" } } ] } ] }, "productOptions": [ { "productOptionCode": "48HOUR", "description": "48 Hour Premium Ticket: Unlimited use on Big Bus Sydney & Bondi Tour for 48 hours from time of first use PLUS a guided walking tour of The Rocks, Syd", "title": "48 Hour Premium Ticket ", "languageGuides": [ { "type": "AUDIO", "language": "cmn", "legacyGuide": "cmn/SERVICE_AUDIO" }, { "type": "AUDIO", "language": "fr", "legacyGuide": "fr/SERVICE_AUDIO" }, { "type": "AUDIO", "language": "ko", "legacyGuide": "ko/SERVICE_AUDIO" }, { "type": "AUDIO", "language": "ja", "legacyGuide": "ja/SERVICE_AUDIO" }, { "type": "AUDIO", "language": "it", "legacyGuide": "it/SERVICE_AUDIO" }, { "type": "AUDIO", "language": "en", "legacyGuide": "en/SERVICE_AUDIO" }, { "type": "AUDIO", "language": "de", "legacyGuide": "de/SERVICE_AUDIO" }, { "type": "AUDIO", "language": "es", "legacyGuide": "es/SERVICE_AUDIO" } ] }, { "productOptionCode": "TG1", "description": "Hop-on Hop-Off and Attractions: 48hr Big Bus Tours, 1-day Hop-On Hop-Off Harbour Cruise, 4 Attractions: Tower Eye, Madame Tussauds, Wildlife Zoo, Aquarium
Duration: 2 days
2 routes: Sydney & Bondi Beach", "title": "48Hour Deluxe PLUS Attractions", "languageGuides": [ { "type": "AUDIO", "language": "cmn", "legacyGuide": "cmn/SERVICE_AUDIO" }, { "type": "AUDIO", "language": "fr", "legacyGuide": "fr/SERVICE_AUDIO" }, { "type": "AUDIO", "language": "ko", "legacyGuide": "ko/SERVICE_AUDIO" }, { "type": "AUDIO", "language": "ja", "legacyGuide": "ja/SERVICE_AUDIO" }, { "type": "AUDIO", "language": "it", "legacyGuide": "it/SERVICE_AUDIO" }, { "type": "AUDIO", "language": "en", "legacyGuide": "en/SERVICE_AUDIO" }, { "type": "AUDIO", "language": "de", "legacyGuide": "de/SERVICE_AUDIO" }, { "type": "AUDIO", "language": "es", "legacyGuide": "es/SERVICE_AUDIO" } ] }, { "productOptionCode": "DELUXE", "description": "Big Bus and Habour Cruise: Combine two great Sydney experiences into one with a hop-on hop off Big Bus Tours and a hop-on hop-off Sydney Harbour cruise
2 routes: Sydney & Bondi Beach", "title": "48 Hour Deluxe Bus and Cruise", "languageGuides": [ { "type": "AUDIO", "language": "cmn", "legacyGuide": "cmn/SERVICE_AUDIO" }, { "type": "AUDIO", "language": "fr", "legacyGuide": "fr/SERVICE_AUDIO" }, { "type": "AUDIO", "language": "ko", "legacyGuide": "ko/SERVICE_AUDIO" }, { "type": "AUDIO", "language": "ja", "legacyGuide": "ja/SERVICE_AUDIO" }, { "type": "AUDIO", "language": "it", "legacyGuide": "it/SERVICE_AUDIO" }, { "type": "AUDIO", "language": "en", "legacyGuide": "en/SERVICE_AUDIO" }, { "type": "AUDIO", "language": "de", "legacyGuide": "de/SERVICE_AUDIO" }, { "type": "AUDIO", "language": "es", "legacyGuide": "es/SERVICE_AUDIO" } ] }, { "productOptionCode": "TG2", "description": "Suggested Start point: Departure from Stop 1 - Circular Quay, George St (opposite DFS Galleria near the corner of Alfred St) at 10am, 12pm and 2pm.
Duration: 1 day
Red Route: Limited Hop on Hop off with stops around the city including Sydney Opera House, Sydney Harbour Bridge, Darling Harbour & more
One Free Child Ticket: For a limited time, you get one free child tickets with every adult ticket purchased.", "title": "Sydney Highlights Tour", "languageGuides": [ { "type": "AUDIO", "language": "cmn", "legacyGuide": "cmn/SERVICE_AUDIO" }, { "type": "AUDIO", "language": "fr", "legacyGuide": "fr/SERVICE_AUDIO" }, { "type": "AUDIO", "language": "ko", "legacyGuide": "ko/SERVICE_AUDIO" }, { "type": "AUDIO", "language": "ja", "legacyGuide": "ja/SERVICE_AUDIO" }, { "type": "AUDIO", "language": "it", "legacyGuide": "it/SERVICE_AUDIO" }, { "type": "AUDIO", "language": "en", "legacyGuide": "en/SERVICE_AUDIO" }, { "type": "AUDIO", "language": "de", "legacyGuide": "de/SERVICE_AUDIO" }, { "type": "AUDIO", "language": "es", "legacyGuide": "es/SERVICE_AUDIO" } ] }, { "productOptionCode": "24HOUR", "description": "Unlimited use on Big Bus Sydney & Bondi Hop-on Hop-off Tour for 24 hours from time of first use", "title": "24 Hour Classic Ticket ", "languageGuides": [ { "type": "AUDIO", "language": "cmn", "legacyGuide": "cmn/SERVICE_AUDIO" }, { "type": "AUDIO", "language": "fr", "legacyGuide": "fr/SERVICE_AUDIO" }, { "type": "AUDIO", "language": "ko", "legacyGuide": "ko/SERVICE_AUDIO" }, { "type": "AUDIO", "language": "ja", "legacyGuide": "ja/SERVICE_AUDIO" }, { "type": "AUDIO", "language": "it", "legacyGuide": "it/SERVICE_AUDIO" }, { "type": "AUDIO", "language": "en", "legacyGuide": "en/SERVICE_AUDIO" }, { "type": "AUDIO", "language": "de", "legacyGuide": "de/SERVICE_AUDIO" }, { "type": "AUDIO", "language": "es", "legacyGuide": "es/SERVICE_AUDIO" } ] } ], "translationInfo": { "containsMachineTranslatedText": false }, "supplier": { "name": "Big Bus Tours" }, "reviews": { "sources": [ { "provider": "VIATOR", "reviewCounts": [ { "rating": 1, "count": 36 }, { "rating": 2, "count": 100 }, { "rating": 3, "count": 169 }, { "rating": 4, "count": 390 }, { "rating": 5, "count": 578 } ], "totalCount": 1273, "averageRating": 4 } ], "reviewCountTotals": [ { "rating": 1, "count": 36 }, { "rating": 2, "count": 100 }, { "rating": 3, "count": 169 }, { "rating": 4, "count": 390 }, { "rating": 5, "count": 578 } ], "totalReviews": 1273, "combinedAverageRating": 4 }, "viatorUniqueContent": { "shortDescription": "Join a hop-on hop-off sightseeing tour by double-decker bus to discover the highlights of Sydney and Bondi Beach. Enjoy unobstructed views and recorded onboard commentary as you travel along two routes to top destinations like Sydney Harbour Bridge, Sydney Opera House, Darling Harbour, and Bondi Beach. Go in-depth at any given place by simply hopping off the bus to explore. You can experience Sydney and Bondi's most noteworthy attractions at your own pace with your choice of ticket, valid for either 24 or 48 hours.", "longDescription": "The warm and mild year-round climate in Sydney and Bondi makes the open-air double-decker bus tour an ideal sightseeing option. Travel to numerous Sydney highlights, including the historic Rocks district, Sydney Opera House, Sydney Harbour Bridge and Sydney\u2019s CBD (Central Business District). Bondi Beach is a suburb with a popular beach located just east of Sydney\u2019s city center. Enjoy the spacious beach and warm sea, or check out the cafes, restaurants, and shops around town, many with fantastic ocean views. \n\nHop off the bus to browse the stores in modern shopping areas or admire local institutions like the bustling Sydney Fish Market. Stretch your legs as you stroll around the Royal Botanic Gardens or take tree-shaded paths through Hyde Park. \n\nHop aboard the open-top, double-decker bus at any of the conveniently located stops around the city. Enjoy pre-recorded commentary, available in several languages, as you sit back and relax on the full ride. Hop off the bus to explore any given destination at your own pace.\n\nThe Sydney and Bondi tours connect at Cook and Phillip Park, 100 William Street or Central Station stop. Tickets are valid for 24 or 48 hours from first use. Please check the current schedule for operating hours; the bus does not operate 24 hours per day. Families can save with the Family Pass, which is valid for two adults and two children.", "insiderTips": "This tour takes you to Sydney\u2019s top destinations so you don\u2019t have to worry about transportation.", "highlights": [ "Big Bus hop-on hop-off bus tour of Sydney and Bondi Beach\n", "Enjoy great views of Sydney's highlights from the open-top, double-decker bus", "Learn about Sydney's sights and history from onboard pre-recorded commentary\n", "Sightsee at your own pace with your ticket that is valid for 24 or 48 hours" ] } } ] }, "products-5010SYDNEY-example": { "summary": "/products/5010SYDNEY", "value": { "status": "ACTIVE", "productCode": "5010SYDNEY", "language": "en", "createdAt": "2008-01-22T08:00:00Z", "title": "Big Bus Sydney and Bondi Hop-on Hop-off Tour", "ticketInfo": { "ticketTypes": [ "MOBILE_ONLY" ], "ticketTypeDescription": "Mobile or paper ticket accepted", "ticketsPerBooking": "ONE_PER_BOOKING", "ticketsPerBookingDescription": "One per booking" }, "pricingInfo": { "type": "PER_PERSON", "ageBands": [ { "ageBand": "INFANT", "startAge": 0, "endAge": 4, "minTravelersPerBooking": 0, "maxTravelersPerBooking": 9 }, { "ageBand": "CHILD", "startAge": 5, "endAge": 15, "minTravelersPerBooking": 0, "maxTravelersPerBooking": 9 }, { "ageBand": "ADULT", "startAge": 16, "endAge": 99, "minTravelersPerBooking": 0, "maxTravelersPerBooking": 9 } ] }, "images": [ { "imageSource": "SUPPLIER_PROVIDED", "caption": "", "isCover": true, "variants": [ { "height": 50, "width": 50, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-50x50/07/94/40/f3.jpg" }, { "height": 100, "width": 100, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-100x100/07/94/40/f3.jpg" }, { "height": 200, "width": 200, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-200x200/07/94/40/f3.jpg" }, { "height": 400, "width": 400, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-400x400/07/94/40/f3.jpg" }, { "height": 40, "width": 60, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-60x40/07/94/40/f3.jpg" }, { "height": 80, "width": 120, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-120x80/07/94/40/f3.jpg" }, { "height": 120, "width": 180, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-180x120/07/94/40/f3.jpg" }, { "height": 160, "width": 240, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-240x160/07/94/40/f3.jpg" }, { "height": 240, "width": 360, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-360x240/07/94/40/f3.jpg" }, { "height": 320, "width": 480, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-480x320/07/94/40/f3.jpg" }, { "height": 360, "width": 540, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-540x360/07/94/40/f3.jpg" }, { "height": 446, "width": 674, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-674x446/07/94/40/f3.jpg" }, { "height": 480, "width": 720, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-720x480/07/94/40/f3.jpg" }, { "height": 118, "width": 210, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-210x118/07/94/40/f3.jpg" }, { "height": 75, "width": 75, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-75x75/07/94/40/f3.jpg" }, { "height": 109, "width": 154, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-154x109/07/94/40/f3.jpg" } ] }, { "imageSource": "SUPPLIER_PROVIDED", "caption": "", "isCover": false, "variants": [ { "height": 50, "width": 50, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-50x50/09/c5/d2/d1.jpg" }, { "height": 100, "width": 100, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-100x100/09/c5/d2/d1.jpg" }, { "height": 200, "width": 200, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-200x200/09/c5/d2/d1.jpg" }, { "height": 400, "width": 400, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-400x400/09/c5/d2/d1.jpg" }, { "height": 40, "width": 60, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-60x40/09/c5/d2/d1.jpg" }, { "height": 80, "width": 120, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-120x80/09/c5/d2/d1.jpg" }, { "height": 120, "width": 180, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-180x120/09/c5/d2/d1.jpg" }, { "height": 160, "width": 240, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-240x160/09/c5/d2/d1.jpg" }, { "height": 240, "width": 360, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-360x240/09/c5/d2/d1.jpg" }, { "height": 320, "width": 480, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-480x320/09/c5/d2/d1.jpg" }, { "height": 360, "width": 540, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-540x360/09/c5/d2/d1.jpg" }, { "height": 446, "width": 674, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-674x446/09/c5/d2/d1.jpg" }, { "height": 480, "width": 720, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-720x480/09/c5/d2/d1.jpg" }, { "height": 118, "width": 210, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-210x118/09/c5/d2/d1.jpg" }, { "height": 75, "width": 75, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-75x75/09/c5/d2/d1.jpg" }, { "height": 109, "width": 154, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-154x109/09/c5/d2/d1.jpg" } ] }, { "imageSource": "SUPPLIER_PROVIDED", "caption": "Sydney and Bondi Hop-On Hop-Off Tour", "isCover": false, "variants": [ { "height": 50, "width": 50, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-50x50/09/c5/d2/d4.jpg" }, { "height": 100, "width": 100, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-100x100/09/c5/d2/d4.jpg" }, { "height": 200, "width": 200, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-200x200/09/c5/d2/d4.jpg" }, { "height": 400, "width": 400, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-400x400/09/c5/d2/d4.jpg" }, { "height": 40, "width": 60, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-60x40/09/c5/d2/d4.jpg" }, { "height": 80, "width": 120, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-120x80/09/c5/d2/d4.jpg" }, { "height": 120, "width": 180, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-180x120/09/c5/d2/d4.jpg" }, { "height": 160, "width": 240, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-240x160/09/c5/d2/d4.jpg" }, { "height": 240, "width": 360, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-360x240/09/c5/d2/d4.jpg" }, { "height": 320, "width": 480, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-480x320/09/c5/d2/d4.jpg" }, { "height": 360, "width": 540, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-540x360/09/c5/d2/d4.jpg" }, { "height": 446, "width": 674, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-674x446/09/c5/d2/d4.jpg" }, { "height": 480, "width": 720, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-720x480/09/c5/d2/d4.jpg" }, { "height": 118, "width": 210, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-210x118/09/c5/d2/d4.jpg" }, { "height": 75, "width": 75, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-75x75/09/c5/d2/d4.jpg" }, { "height": 109, "width": 154, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-154x109/09/c5/d2/d4.jpg" } ] }, { "imageSource": "SUPPLIER_PROVIDED", "caption": "The Rocks", "isCover": false, "variants": [ { "height": 50, "width": 50, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-50x50/07/90/5a/7d.jpg" }, { "height": 100, "width": 100, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-100x100/07/90/5a/7d.jpg" }, { "height": 200, "width": 200, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-200x200/07/90/5a/7d.jpg" }, { "height": 400, "width": 400, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-400x400/07/90/5a/7d.jpg" }, { "height": 40, "width": 60, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-60x40/07/90/5a/7d.jpg" }, { "height": 80, "width": 120, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-120x80/07/90/5a/7d.jpg" }, { "height": 120, "width": 180, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-180x120/07/90/5a/7d.jpg" }, { "height": 160, "width": 240, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-240x160/07/90/5a/7d.jpg" }, { "height": 240, "width": 360, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-360x240/07/90/5a/7d.jpg" }, { "height": 320, "width": 480, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-480x320/07/90/5a/7d.jpg" }, { "height": 360, "width": 540, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-540x360/07/90/5a/7d.jpg" }, { "height": 446, "width": 674, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-674x446/07/90/5a/7d.jpg" }, { "height": 480, "width": 720, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-720x480/07/90/5a/7d.jpg" }, { "height": 118, "width": 210, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-210x118/07/90/5a/7d.jpg" }, { "height": 75, "width": 75, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-75x75/07/90/5a/7d.jpg" }, { "height": 109, "width": 154, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-154x109/07/90/5a/7d.jpg" } ] }, { "imageSource": "SUPPLIER_PROVIDED", "caption": "Bondi Beach", "isCover": false, "variants": [ { "height": 50, "width": 50, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-50x50/09/c5/d2/c7.jpg" }, { "height": 100, "width": 100, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-100x100/09/c5/d2/c7.jpg" }, { "height": 200, "width": 200, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-200x200/09/c5/d2/c7.jpg" }, { "height": 400, "width": 400, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-400x400/09/c5/d2/c7.jpg" }, { "height": 40, "width": 60, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-60x40/09/c5/d2/c7.jpg" }, { "height": 80, "width": 120, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-120x80/09/c5/d2/c7.jpg" }, { "height": 120, "width": 180, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-180x120/09/c5/d2/c7.jpg" }, { "height": 160, "width": 240, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-240x160/09/c5/d2/c7.jpg" }, { "height": 240, "width": 360, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-360x240/09/c5/d2/c7.jpg" }, { "height": 320, "width": 480, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-480x320/09/c5/d2/c7.jpg" }, { "height": 360, "width": 540, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-540x360/09/c5/d2/c7.jpg" }, { "height": 446, "width": 674, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-674x446/09/c5/d2/c7.jpg" }, { "height": 480, "width": 720, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-720x480/09/c5/d2/c7.jpg" }, { "height": 118, "width": 210, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-210x118/09/c5/d2/c7.jpg" }, { "height": 75, "width": 75, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-75x75/09/c5/d2/c7.jpg" }, { "height": 109, "width": 154, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-154x109/09/c5/d2/c7.jpg" } ] }, { "imageSource": "SUPPLIER_PROVIDED", "caption": "Selfies at Bondi Beach", "isCover": false, "variants": [ { "height": 50, "width": 50, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-50x50/09/c5/d3/87.jpg" }, { "height": 100, "width": 100, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-100x100/09/c5/d3/87.jpg" }, { "height": 200, "width": 200, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-200x200/09/c5/d3/87.jpg" }, { "height": 400, "width": 400, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-400x400/09/c5/d3/87.jpg" }, { "height": 40, "width": 60, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-60x40/09/c5/d3/87.jpg" }, { "height": 80, "width": 120, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-120x80/09/c5/d3/87.jpg" }, { "height": 120, "width": 180, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-180x120/09/c5/d3/87.jpg" }, { "height": 160, "width": 240, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-240x160/09/c5/d3/87.jpg" }, { "height": 240, "width": 360, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-360x240/09/c5/d3/87.jpg" }, { "height": 320, "width": 480, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-480x320/09/c5/d3/87.jpg" }, { "height": 360, "width": 540, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-540x360/09/c5/d3/87.jpg" }, { "height": 446, "width": 674, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-674x446/09/c5/d3/87.jpg" }, { "height": 480, "width": 720, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-720x480/09/c5/d3/87.jpg" }, { "height": 118, "width": 210, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-210x118/09/c5/d3/87.jpg" }, { "height": 75, "width": 75, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-75x75/09/c5/d3/87.jpg" }, { "height": 109, "width": 154, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-154x109/09/c5/d3/87.jpg" } ] }, { "imageSource": "SUPPLIER_PROVIDED", "caption": "Visit icons", "isCover": false, "variants": [ { "height": 50, "width": 50, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-50x50/07/90/5a/68.jpg" }, { "height": 100, "width": 100, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-100x100/07/90/5a/68.jpg" }, { "height": 200, "width": 200, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-200x200/07/90/5a/68.jpg" }, { "height": 400, "width": 400, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-400x400/07/90/5a/68.jpg" }, { "height": 40, "width": 60, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-60x40/07/90/5a/68.jpg" }, { "height": 80, "width": 120, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-120x80/07/90/5a/68.jpg" }, { "height": 120, "width": 180, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-180x120/07/90/5a/68.jpg" }, { "height": 160, "width": 240, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-240x160/07/90/5a/68.jpg" }, { "height": 240, "width": 360, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-360x240/07/90/5a/68.jpg" }, { "height": 320, "width": 480, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-480x320/07/90/5a/68.jpg" }, { "height": 360, "width": 540, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-540x360/07/90/5a/68.jpg" }, { "height": 446, "width": 674, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-674x446/07/90/5a/68.jpg" }, { "height": 480, "width": 720, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-720x480/07/90/5a/68.jpg" }, { "height": 118, "width": 210, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-210x118/07/90/5a/68.jpg" }, { "height": 75, "width": 75, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-75x75/07/90/5a/68.jpg" }, { "height": 109, "width": 154, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-154x109/07/90/5a/68.jpg" } ] }, { "imageSource": "SUPPLIER_PROVIDED", "caption": "Big Bus App provides live tracking", "isCover": false, "variants": [ { "height": 50, "width": 50, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-50x50/07/90/5a/6a.jpg" }, { "height": 100, "width": 100, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-100x100/07/90/5a/6a.jpg" }, { "height": 200, "width": 200, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-200x200/07/90/5a/6a.jpg" }, { "height": 400, "width": 400, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-400x400/07/90/5a/6a.jpg" }, { "height": 40, "width": 60, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-60x40/07/90/5a/6a.jpg" }, { "height": 80, "width": 120, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-120x80/07/90/5a/6a.jpg" }, { "height": 120, "width": 180, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-180x120/07/90/5a/6a.jpg" }, { "height": 160, "width": 240, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-240x160/07/90/5a/6a.jpg" }, { "height": 240, "width": 360, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-360x240/07/90/5a/6a.jpg" }, { "height": 320, "width": 480, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-480x320/07/90/5a/6a.jpg" }, { "height": 360, "width": 540, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-540x360/07/90/5a/6a.jpg" }, { "height": 446, "width": 674, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-674x446/07/90/5a/6a.jpg" }, { "height": 480, "width": 720, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-720x480/07/90/5a/6a.jpg" }, { "height": 118, "width": 210, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-210x118/07/90/5a/6a.jpg" }, { "height": 75, "width": 75, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-75x75/07/90/5a/6a.jpg" }, { "height": 109, "width": 154, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-154x109/07/90/5a/6a.jpg" } ] }, { "imageSource": "SUPPLIER_PROVIDED", "caption": "", "isCover": false, "variants": [ { "height": 50, "width": 50, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-50x50/0a/f4/94/e0.jpg" }, { "height": 100, "width": 100, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-100x100/0a/f4/94/e0.jpg" }, { "height": 200, "width": 200, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-200x200/0a/f4/94/e0.jpg" }, { "height": 400, "width": 400, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-400x400/0a/f4/94/e0.jpg" }, { "height": 40, "width": 60, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-60x40/0a/f4/94/e0.jpg" }, { "height": 80, "width": 120, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-120x80/0a/f4/94/e0.jpg" }, { "height": 120, "width": 180, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-180x120/0a/f4/94/e0.jpg" }, { "height": 160, "width": 240, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-240x160/0a/f4/94/e0.jpg" }, { "height": 240, "width": 360, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-360x240/0a/f4/94/e0.jpg" }, { "height": 320, "width": 480, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-480x320/0a/f4/94/e0.jpg" }, { "height": 360, "width": 540, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-540x360/0a/f4/94/e0.jpg" }, { "height": 446, "width": 674, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-674x446/0a/f4/94/e0.jpg" }, { "height": 480, "width": 720, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-720x480/0a/f4/94/e0.jpg" }, { "height": 118, "width": 210, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-210x118/0a/f4/94/e0.jpg" }, { "height": 75, "width": 75, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-75x75/0a/f4/94/e0.jpg" }, { "height": 109, "width": 154, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-154x109/0a/f4/94/e0.jpg" } ] }, { "imageSource": "SUPPLIER_PROVIDED", "caption": "", "isCover": false, "variants": [ { "height": 50, "width": 50, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-50x50/0a/f4/94/e1.jpg" }, { "height": 100, "width": 100, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-100x100/0a/f4/94/e1.jpg" }, { "height": 200, "width": 200, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-200x200/0a/f4/94/e1.jpg" }, { "height": 400, "width": 400, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-400x400/0a/f4/94/e1.jpg" }, { "height": 40, "width": 60, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-60x40/0a/f4/94/e1.jpg" }, { "height": 80, "width": 120, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-120x80/0a/f4/94/e1.jpg" }, { "height": 120, "width": 180, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-180x120/0a/f4/94/e1.jpg" }, { "height": 160, "width": 240, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-240x160/0a/f4/94/e1.jpg" }, { "height": 240, "width": 360, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-360x240/0a/f4/94/e1.jpg" }, { "height": 320, "width": 480, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-480x320/0a/f4/94/e1.jpg" }, { "height": 360, "width": 540, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-540x360/0a/f4/94/e1.jpg" }, { "height": 446, "width": 674, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-674x446/0a/f4/94/e1.jpg" }, { "height": 480, "width": 720, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-720x480/0a/f4/94/e1.jpg" }, { "height": 118, "width": 210, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-210x118/0a/f4/94/e1.jpg" }, { "height": 75, "width": 75, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-75x75/0a/f4/94/e1.jpg" }, { "height": 109, "width": 154, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-154x109/0a/f4/94/e1.jpg" } ] }, { "imageSource": "SUPPLIER_PROVIDED", "caption": "", "isCover": false, "variants": [ { "height": 50, "width": 50, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-50x50/0a/f4/95/18.jpg" }, { "height": 100, "width": 100, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-100x100/0a/f4/95/18.jpg" }, { "height": 200, "width": 200, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-200x200/0a/f4/95/18.jpg" }, { "height": 400, "width": 400, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-400x400/0a/f4/95/18.jpg" }, { "height": 40, "width": 60, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-60x40/0a/f4/95/18.jpg" }, { "height": 80, "width": 120, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-120x80/0a/f4/95/18.jpg" }, { "height": 120, "width": 180, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-180x120/0a/f4/95/18.jpg" }, { "height": 160, "width": 240, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-240x160/0a/f4/95/18.jpg" }, { "height": 240, "width": 360, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-360x240/0a/f4/95/18.jpg" }, { "height": 320, "width": 480, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-480x320/0a/f4/95/18.jpg" }, { "height": 360, "width": 540, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-540x360/0a/f4/95/18.jpg" }, { "height": 446, "width": 674, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-674x446/0a/f4/95/18.jpg" }, { "height": 480, "width": 720, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-720x480/0a/f4/95/18.jpg" }, { "height": 118, "width": 210, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-210x118/0a/f4/95/18.jpg" }, { "height": 75, "width": 75, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-75x75/0a/f4/95/18.jpg" }, { "height": 109, "width": 154, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-154x109/0a/f4/95/18.jpg" } ] }, { "imageSource": "SUPPLIER_PROVIDED", "caption": "", "isCover": false, "variants": [ { "height": 50, "width": 50, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-50x50/0a/f4/95/1a.jpg" }, { "height": 100, "width": 100, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-100x100/0a/f4/95/1a.jpg" }, { "height": 200, "width": 200, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-200x200/0a/f4/95/1a.jpg" }, { "height": 400, "width": 400, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-400x400/0a/f4/95/1a.jpg" }, { "height": 40, "width": 60, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-60x40/0a/f4/95/1a.jpg" }, { "height": 80, "width": 120, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-120x80/0a/f4/95/1a.jpg" }, { "height": 120, "width": 180, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-180x120/0a/f4/95/1a.jpg" }, { "height": 160, "width": 240, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-240x160/0a/f4/95/1a.jpg" }, { "height": 240, "width": 360, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-360x240/0a/f4/95/1a.jpg" }, { "height": 320, "width": 480, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-480x320/0a/f4/95/1a.jpg" }, { "height": 360, "width": 540, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-540x360/0a/f4/95/1a.jpg" }, { "height": 446, "width": 674, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-674x446/0a/f4/95/1a.jpg" }, { "height": 480, "width": 720, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-720x480/0a/f4/95/1a.jpg" }, { "height": 118, "width": 210, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-210x118/0a/f4/95/1a.jpg" }, { "height": 75, "width": 75, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-75x75/0a/f4/95/1a.jpg" }, { "height": 109, "width": 154, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-154x109/0a/f4/95/1a.jpg" } ] } ], "logistics": { "redemption": { "redemptionType": "NONE", "specialInstructions": "Sydney tours depart and finish at Stop 1. First tour starts at 10am, frequency every 2hrs\n\nDeparture point: Board the bus at any of the following stops:\n\nSydney Route\nStop 1 Circular Quay \nStop 2 Sydney Tower/Westfield Sydney\nStop 3 Cook and Phillip Park/Australian Museum\nStop 4 William Street\nStop 5 Kings Cross\nStop 6 El Alamein Fountain\nStop 7 Woolloomooloo\nStop 8\u00a0 Sydney Opera House\nStop 9 Botanic Gardens\nStop 10 State Library\nStop 11 Hyde Park North\nStop 12 Central Station\nStop 13 Power House Museum\nStop 14 Sydney Fish Markets\nStop 15 The Star\nStop 16 Maritime Museum\nStop 17 International Convention Centre\nStop 18 Chinese Gardens/Chinatown\nStop 19 SEA LIFE Sydney Aquarium\nStop 20 King Street Wharf\nStop 21 Barangaroo\nStop 22 Sydney Harbour Bridge\nStop 23 The Rocks\n\nFor Cruise Ship Passengers:\nThe Overseas Passenger Terminal: Stop 23 The Rocks\nFor White Bay Terminal Customers shuttled to SEA LIFE Sydney Aquarium: Stop 19 SEA LIFE Sydney Aquarium\nFor White Bay Terminal Customers shuttled to Dawes Point: Stop 22 Sydney Harbour Bridge\n\nWe have introduced a number of new health & safety measures to reduce the risk associated with the spread of Covid-19 in line with government advice and requirements of the local health authorities. These include regular cleaning of buses & social distancing measures. To uphold these new safety and hygiene standards in keeping our guests safe during the Covid-19 Pandemic, we may have to operate a reduced service and changes to ticket inclusions. This may also include frequency of departures, changes to routes & reduction/removal of stops. Customers are advised to visit our website or download our app to find out more on the new health & safety measures\n*Departure and frequency subject to change" }, "travelerPickup": { "pickupOptionType": "PICKUP_AND_MEET_AT_START_POINT", "allowCustomTravelerPickup": true, "locations": [ { "location": { "ref": "MEET_AT_DEPARTURE_POINT" }, "pickupType": "OTHER" }, { "location": { "ref": "CONTACT_SUPPLIER_LATER" }, "pickupType": "OTHER" } ], "additionalInfo": "Location Name: Main Stops: Central Station or Circular Quay \n\nOR \n\nBoard the bus at any of the following stops:\n\nSydney Route\n\nStop 1 Circular Quay (Corner of Alfred and George Streets)\n\nStop 2 Sydney Tower / Westfield Sydney\n\nStop 3 Cook and Phillip Park / Australian Museum\n\nStop 4 William Street\n\nStop 5 Kings Cross\n\nStop 6 El Almein Fountain\n\nStop 7 Woolloomooloo\n\nStop 8\u00a0 Sydney Opera House\n\nStop 9 Botanic Gardens\n\nStop 10 State Library\n\nStop 11 Hyde Park North\n\nStop 12 Central Station\n\nStop 13 Power House Museum\n\nStop 14 Sydney Fish Markets\n\nStop 15 The Star\n\nStop 16 Maritime Museum\n\nStop 17 International Convention Centre (ICC) \n\nStop 18 Chinese Gardens / Chinatown\n\nStop 19 SEA LIFE Sydney Aquarium\n\nStop 20 King Street Wharf\n\nStop 21 Barangaroo\n\nStop 22 Sydney Harbour Bridge\n\nStop 23 The Rocks\n\nStop 1 Circular Quay (Corner of Alfred and George Streets)\n\nBondi Tour \n\nStop 24 Central Station\n\nStop 25 Town Hall (Stop temporarily closed)\n\nStop 26 Australian Museum \n\nStop 27 100 William Street\n\nStop 28 Paddington Town Hall\n\nStop 29 Centennial Parklands\n\nStop 30 Bondi Beach\n\nStop 31 North Bondi\n\nStop 32 Rose Bay\n\nStop 33 Double Bay\n\nStop 24 Central Station\nLocation Address: Central Station on Eddy Avenue\n\nDirections: Information for Cruise Ship Passengers:\u00a0\n\nDepending on where your ship is docking, the closest stops to board the Big Bus are: \n\nFor ships docked at the Overseas Passenger Terminal: Stop 23 The Rocks\n\nFor White Bay Terminal Customers shuttled to SEA LIFE Sydney Aquairum: Stop 19 SEA LIFE Sydney Aquarium\n\nFor White Bay Terminal Customers shuttled to Dawes Point: Stop 22 Sydney Harbour Bridge\n" } }, "timeZone": "Australia/Sydney", "description": "Explore Sydney and Bondi Beach on this hop-on hop-off sightseeing tour, which takes you by double-decker bus to 34 stops around the city including Sydney Opera House, Sydney Harbour Bridge, Darling Harbour, Bondi Beach and more. Enjoy unobstructed views and recorded commentary on board. Simply hop off to walk around and sightsee in depth. Your ticket is valid for 24 or 48 hours, so you can experience Sydney and Bondi's most noteworthy attractions, sights, and shopping and dining areas at your own pace.", "inclusions": [ { "category": "OTHER", "categoryDescription": "Other", "type": "OTHER", "typeDescription": "Other", "otherDescription": "Up to 23 stops to Hop-on and Hop-off " }, { "category": "OTHER", "categoryDescription": "Other", "type": "OTHER", "typeDescription": "Other", "otherDescription": "Pre-recorded commentary in English, French, Spanish, German, Italian, Mandarin, Japanese, Korean" }, { "category": "OTHER", "categoryDescription": "Other", "type": "OTHER", "typeDescription": "Other", "otherDescription": "Choice of 24 hour or 48 hour pass" }, { "category": "OTHER", "categoryDescription": "Other", "type": "OTHER", "typeDescription": "Other", "otherDescription": "4 Merlin Attractions with Deluxe Plus: Tower Eye, Madame Tussauds, Sea Life Aquarium, Sydney Zoo" } ], "exclusions": [ { "category": "OTHER", "categoryDescription": "Other", "type": "OTHER", "typeDescription": "Other", "otherDescription": "Food and drinks" }, { "category": "OTHER", "categoryDescription": "Other", "type": "OTHER", "typeDescription": "Other", "otherDescription": "Admission" } ], "additionalInfo": [ { "type": "WHEELCHAIR_ACCESSIBLE", "description": "Wheelchair accessible" }, { "type": "STROLLER_ACCESSIBLE", "description": "Infants and small children can ride in a pram or stroller" }, { "type": "PUBLIC_TRANSPORTATION_NEARBY", "description": "Public transportation options are available nearby" }, { "type": "INFANTS_MUST_SIT_ON_LAPS", "description": "Infants are required to sit on an adult\u2019s lap" }, { "type": "TRANSPORTATION_WHEELCHAIR_ACCESSIBLE", "description": "Transportation options are wheelchair accessible" }, { "type": "SURFACES_WHEELCHAIR_ACCESSIBLE", "description": "All areas and surfaces are wheelchair accessible" }, { "type": "PHYSICAL_EASY", "description": "Suitable for all physical fitness levels" }, { "type": "OTHER", "description": "When booking the 24 or 48 hour Family Pass, only the lead passenger name is required for a booking of up to 2 Adults and 2 children 16 years and under. At time of booking you only need to enter 1 adult to complete your booking" }, { "type": "OTHER", "description": "Infants aged 0 to 4 years travel free of charge" } ], "cancellationPolicy": { "type": "STANDARD", "description": "For a full refund, cancel at least 24 hours before the scheduled departure time.", "cancelIfBadWeather": false, "cancelIfInsufficientTravelers": false, "refundEligibility": [ { "dayRangeMin": 1, "percentageRefundable": 100 }, { "dayRangeMin": 0, "dayRangeMax": 1, "percentageRefundable": 0 } ] }, "bookingConfirmationSettings": { "bookingCutoffType": "CLOSING_TIME", "bookingCutoffInMinutes": 0, "confirmationType": "INSTANT" }, "bookingRequirements": { "minTravelersPerBooking": 1, "maxTravelersPerBooking": 9, "requiresAdultForBooking": false }, "languageGuides": [ { "type": "AUDIO", "language": "de", "legacyGuide": "de/SERVICE_AUDIO" }, { "type": "AUDIO", "language": "ko", "legacyGuide": "ko/SERVICE_AUDIO" }, { "type": "AUDIO", "language": "cmn", "legacyGuide": "cmn/SERVICE_AUDIO" }, { "type": "AUDIO", "language": "ja", "legacyGuide": "ja/SERVICE_AUDIO" }, { "type": "AUDIO", "language": "en", "legacyGuide": "en/SERVICE_AUDIO" }, { "type": "AUDIO", "language": "it", "legacyGuide": "it/SERVICE_AUDIO" }, { "type": "AUDIO", "language": "fr", "legacyGuide": "fr/SERVICE_AUDIO" }, { "type": "AUDIO", "language": "es", "legacyGuide": "es/SERVICE_AUDIO" } ], "bookingQuestions": [ "PICKUP_POINT", "SPECIAL_REQUIREMENTS" ], "tags": [ 20226, 21957, 21954, 12011, 21953, 11930, 12075, 21951, 21952, 21955, 21960, 12058 ], "destinations": [ { "ref": "357", "primary": true } ], "itinerary": { "itineraryType": "HOP_ON_HOP_OFF", "skipTheLine": false, "privateTour": false, "duration": { "fixedDurationInMinutes": 90 }, "routes": [ { "operatingSchedule": "1st bus departs from Stop 1 Circular Quay at 10.00am.\nFrequency every approx. 2hrs\nLast bus departs from stop 1 at 2.00pm\n\nWe have introduced a number of new health & safety measures to reduce the risk associated with the spread of Covid-19 in line with government advice and requirements of the local health authorities. These include regular cleaning of buses and social distancing measures.\n\nTo uphold these new safety and hygiene standards in keeping our guests safe during the Covid-19 Pandemic, we may have to operate a reduced service and changes to ticket inclusions. This may also include frequency of departures, changes to routes and reduction/removal of stops.\n\nCustomers are advised to visit our website or to download our app to find out more about our new health and safety measures and for the most update service information.", "duration": { "fixedDurationInMinutes": 90 }, "name": "Red Route - Sydney Icons", "stops": [ { "stopLocation": { "ref": "LOC-o0AXGEKPN4wJ9sIG0RAn5K7G12Q1llmLrmRJIk0TdocBlTVEtwme9qSWX6C278au" }, "description": "Circular Quay, George St, cnr Alfred St. (opp DFS Galleria)" }, { "stopLocation": { "ref": "LOC-o0AXGEKPN4wJ9sIG0RAn5HJ50dRnnDILDxHC0aDaFxp7pTMyhWhGCLGcIKI9V5BA" }, "description": "Sydney Tower/ Westfield" }, { "stopLocation": { "ref": "LOC-o0AXGEKPN4wJ9sIG0RAn5Mv6/3Z1RgMBjz9oqxyhztkA6KfIY6OeeBp2qBzILHki" }, "description": "Australian Museum" }, { "stopLocation": { "ref": "LOC-o0AXGEKPN4wJ9sIG0RAn5GfD9/r94v5E7ec6JhnTyPBYBVIlTPe90wri6KfBJ/3r" }, "description": "William St, Kings Cross" }, { "stopLocation": { "ref": "LOC-o0AXGEKPN4wJ9sIG0RAn5EArKxA8IGKJOAtvZA9gnG293GkjeAbMJpoT5DSKVehb" }, "description": "Kings Cross Train Station on Darlinghurst Rd." }, { "stopLocation": { "ref": "LOC-o0AXGEKPN4wJ9sIG0RAn5P7POvXGTsgLr6rGhJvV1wLWD9oxK1S8ZuFp0s3YwlJE" }, "description": "El Alamein Fountain" }, { "stopLocation": { "ref": "LOC-o0AXGEKPN4wJ9sIG0RAn5ACff5Q2zP9vFXOw9FH3eF7yRd7bGGRtyk2lqFhlREAt" }, "description": "Cowper Wharf Rd, outside the Woollomooloo Hotel" }, { "stopLocation": { "ref": "LOC-o0AXGEKPN4wJ9sIG0RAn5I5AE5g4LP5dY98J8ghN4/vPyoUmNn0HAueiT/4BsTiA" }, "description": "Sydney Opera House" }, { "stopLocation": { "ref": "LOC-RaYlfRSLaIsd0SlazqDQk8e54+y7uNF4J0I11kE8Ii8cwkm0vCSG+ZztYfJJRbt0KTk0NysGp6dMWXv4p77oUmK3coCyUqu6DXxO76qTrWsLalj/zVmVD2J+1NP6fLzuMq0WIkTksMvfwmuPHz2N9rNji8WDeSEgjNKqwoFyCRIDqCtU5RfaZK9jt8drOR43" }, "description": "Botanical Garden, Scenic Walk to Mrs Macquarie Chair" }, { "stopLocation": { "ref": "LOC-o0AXGEKPN4wJ9sIG0RAn5LRwqJKFdYT/NE2veaGkHLWENZDuCwCCiRLcjTd7PqGY" }, "description": "State Library" }, { "stopLocation": { "ref": "LOC-o0AXGEKPN4wJ9sIG0RAn5BbfWr/ii8iOxx2DStje8nHIdx9CAh7gf7NPEIFCHKL1" }, "description": "Hyde Park" }, { "stopLocation": { "ref": "LOC-o0AXGEKPN4wJ9sIG0RAn5FI1mHyCaXwS9wxehYVQCOOTTK4QPvyWSsuyJVy56VaP" }, "description": "Central Station, Pitt Street, Bus Bay 18" }, { "stopLocation": { "ref": "LOC-o0AXGEKPN4wJ9sIG0RAn5NHfg7MK3dZMTjtjXEnP5D/jV7Yy7mPzODBPDoeVZr9e" }, "description": "Powerhouse Museum" }, { "stopLocation": { "ref": "LOC-o0AXGEKPN4wJ9sIG0RAn5HBLzybR31ZsrP5qW3qwBjRHx6ntCZRNm8cOOvKxxGyd" }, "description": "Harris St, cnr Pyrmont Bridge Rd" }, { "stopLocation": { "ref": "LOC-o0AXGEKPN4wJ9sIG0RAn5DX5DvzbKukJ55Me52VGaWSV8CWqkzPk6r2wuRX3U3yA" }, "description": "The Star Casino" }, { "stopLocation": { "ref": "LOC-o0AXGEKPN4wJ9sIG0RAn5HpFZkDuM/qUVqhNXtjdmVzLEhp+BkbuI8eNpIbpbFqX" }, "description": "" }, { "stopLocation": { "ref": "LOC-o0AXGEKPN4wJ9sIG0RAn5PGU0wAVQ0RW8MeIV5ohu7OBBjnRF+BV8/noyelhf/VY" }, "description": "" }, { "stopLocation": { "ref": "LOC-o0AXGEKPN4wJ9sIG0RAn5LPxfFx4wrlGiogB0uCdwnR8xwXSMViDV9xHSZFXwlgF" }, "description": "" }, { "stopLocation": { "ref": "LOC-o0AXGEKPN4wJ9sIG0RAn5CNRoVowNq5eTkOjeSjSf9EwwqEbn2u377NW1YQ+RvtO" }, "description": "" }, { "stopLocation": { "ref": "LOC-o0AXGEKPN4wJ9sIG0RAn5BNxjJyUZVdmHdWkDLSLjPyXs3j6l/Vqe3GSLEHU9HRp" }, "description": "Kings Street Wharf" }, { "stopLocation": { "ref": "LOC-RaYlfRSLaIsd0SlazqDQk4LV2eLlxVCe/1kX91/IlstRTqHdLI0/0vzEAOQaCcSUjmQIRfYW00qGw6sm037L4jV0gLdiqLx7h3dOq3ZyyCuQBdMO3uEtHX3dHjSNC6AS8nW6DHvbz7JX4X6Stw784gMC89fy0iCGSReZVvB4zexP75e3NmpGZ9dYuPlDINoN" }, "description": "" }, { "stopLocation": { "ref": "LOC-o0AXGEKPN4wJ9sIG0RAn5I9yyQO1tqD6mYvR0+/R3hfkBFH5QSJjP1VJ0a/86OPO" }, "description": "Sydney Harbour Bridge" }, { "stopLocation": { "ref": "LOC-o0AXGEKPN4wJ9sIG0RAn5OiZZJfU/dyO0L+ERI/TFlA102O66T1JygFmomnS5cve" }, "description": "" } ], "pointsOfInterest": [ { "location": { "ref": "LOC-6eKJ+or5y8o99Qw0C8xWyGniY1cnTSNGXvoWDyr5vhs=" }, "attractionId": 14165 }, { "location": { "ref": "LOC-6eKJ+or5y8o99Qw0C8xWyCzyo6wwCKGRHcxNqYlfatw=" }, "attractionId": 13157 }, { "location": { "ref": "LOC-6eKJ+or5y8o99Qw0C8xWyHJe5R5nK3iDf2MIKn5yhsk=" }, "attractionId": 283 }, { "location": { "ref": "LOC-6eKJ+or5y8o99Qw0C8xWyBvBUWF3oTuQ+A4WgL/BbWE=" }, "attractionId": 299 }, { "location": { "ref": "LOC-6eKJ+or5y8o99Qw0C8xWyHLWgpJJiuuNR8fSoRCktCk=" } }, { "location": { "ref": "LOC-6eKJ+or5y8o99Qw0C8xWyHB77jr9RLFsREdqFdB0ns0=" }, "attractionId": 297 }, { "location": { "ref": "LOC-6eKJ+or5y8o99Qw0C8xWyEOSe30+PQplXmvYDB6Y69o=" }, "attractionId": 285 }, { "location": { "ref": "LOC-6eKJ+or5y8o99Qw0C8xWyPjdOMb6oyegNKsCaMW+mC8=" }, "attractionId": 293 }, { "location": { "ref": "LOC-6eKJ+or5y8o99Qw0C8xWyJAUw730EjP5mWrCgpu+F0E=" }, "attractionId": 13185 }, { "location": { "ref": "LOC-6eKJ+or5y8o99Qw0C8xWyCEGaRsghN+Rpgi6nKCvmYM=" }, "attractionId": 8355 }, { "location": { "ref": "LOC-6eKJ+or5y8o99Qw0C8xWyHH90UK3yOaKctqyRQZnZas=" }, "attractionId": 292 }, { "location": { "ref": "LOC-6eKJ+or5y8o99Qw0C8xWyOpVZOtDzRIQN0hQemyFBDs=" } }, { "location": { "ref": "LOC-6eKJ+or5y8o99Qw0C8xWyEppV2gz4/8Tq3G15eOtfUM=" }, "attractionId": 14103 }, { "location": { "ref": "LOC-6eKJ+or5y8o99Qw0C8xWyKFpdgR8oQgOUV8gzqyVpVo=" } }, { "location": { "ref": "LOC-6eKJ+or5y8o99Qw0C8xWyKPQsNtBopr25P980NGeKOQ=" }, "attractionId": 298 } ] }, { "operatingSchedule": "1st bus departs from Stop 12/24 Central Station at 10.15am.\nFrequency every 2hrs\nLast bus departs from stop 12/24 at 2.15pm", "duration": { "fixedDurationInMinutes": 90 }, "name": "Blue Route - Bondi Lifestyle", "stops": [ { "stopLocation": { "ref": "LOC-o0AXGEKPN4wJ9sIG0RAn5Psa0O7zv6as2RgNgIaUx0EFjKH/7fL3wV6nAS8iPXkO" }, "description": "Central Station, Pitt Street, Bus Bay 18" }, { "stopLocation": { "ref": "LOC-o0AXGEKPN4wJ9sIG0RAn5Mv6/3Z1RgMBjz9oqxyhztkA6KfIY6OeeBp2qBzILHki" }, "description": "Australian Museum " }, { "stopLocation": { "ref": "LOC-o0AXGEKPN4wJ9sIG0RAn5Nh4BzPY4JhOxIuD4/Do8pUJ7t+9MCl62rbq6KVnaek/" }, "description": "" }, { "stopLocation": { "ref": "LOC-o0AXGEKPN4wJ9sIG0RAn5HyrAalNU3M4hS1T1NGhMtCdFsSEh+RkFpJBmFZX9No8" }, "description": "" }, { "stopLocation": { "ref": "LOC-o0AXGEKPN4wJ9sIG0RAn5ADNeEAMR25x+3AtosA/mPk102O66T1JygFmomnS5cve" }, "description": "" }, { "stopLocation": { "ref": "LOC-o0AXGEKPN4wJ9sIG0RAn5DlsAklW6JtKr4LQsnhsvv7JxEYbLQWAsKDqTrCu41p4" }, "description": "" }, { "stopLocation": { "ref": "LOC-o0AXGEKPN4wJ9sIG0RAn5BLsCa3M6INxXNpkE2r1BTHxvB0gY1MP6WB9Yxso16Ot" }, "description": "" }, { "stopLocation": { "ref": "LOC-o0AXGEKPN4wJ9sIG0RAn5PrdhQ/J96Gq+dweFD3sOSrkBFH5QSJjP1VJ0a/86OPO" }, "description": "" } ], "pointsOfInterest": [ { "location": { "ref": "LOC-6eKJ+or5y8o99Qw0C8xWyIiKlXuqcCaUR/8Ng7CZSLI=" }, "attractionId": 14159 }, { "location": { "ref": "LOC-6eKJ+or5y8o99Qw0C8xWyOEUrjaNrfQuPK4sfYmEGio=" } }, { "location": { "ref": "LOC-6eKJ+or5y8o99Qw0C8xWyPTry/4ZvItH2jj+ziZ16zY=" } }, { "location": { "ref": "LOC-6eKJ+or5y8o99Qw0C8xWyCs+n26oP6pvXz2mRpQ6QlA=" } }, { "location": { "ref": "LOC-6eKJ+or5y8o99Qw0C8xWyI5+u+JgfxCzNB+Yaph1xug=" } } ] } ] }, "productOptions": [ { "productOptionCode": "48HOUR", "description": "48 Hour Premium Ticket: Unlimited use on Big Bus Sydney & Bondi Tour for 48 hours from time of first use PLUS a guided walking tour of The Rocks, Syd", "title": "48 Hour Premium Ticket ", "languageGuides": [ { "type": "AUDIO", "language": "cmn", "legacyGuide": "cmn/SERVICE_AUDIO" }, { "type": "AUDIO", "language": "fr", "legacyGuide": "fr/SERVICE_AUDIO" }, { "type": "AUDIO", "language": "ko", "legacyGuide": "ko/SERVICE_AUDIO" }, { "type": "AUDIO", "language": "ja", "legacyGuide": "ja/SERVICE_AUDIO" }, { "type": "AUDIO", "language": "it", "legacyGuide": "it/SERVICE_AUDIO" }, { "type": "AUDIO", "language": "en", "legacyGuide": "en/SERVICE_AUDIO" }, { "type": "AUDIO", "language": "de", "legacyGuide": "de/SERVICE_AUDIO" }, { "type": "AUDIO", "language": "es", "legacyGuide": "es/SERVICE_AUDIO" } ] }, { "productOptionCode": "TG1", "description": "Hop-on Hop-Off and Attractions: 48hr Big Bus Tours, 1-day Hop-On Hop-Off Harbour Cruise, 4 Attractions: Tower Eye, Madame Tussauds, Wildlife Zoo, Aquarium
Duration: 2 days
2 routes: Sydney & Bondi Beach", "title": "48Hour Deluxe PLUS Attractions", "languageGuides": [ { "type": "AUDIO", "language": "cmn", "legacyGuide": "cmn/SERVICE_AUDIO" }, { "type": "AUDIO", "language": "fr", "legacyGuide": "fr/SERVICE_AUDIO" }, { "type": "AUDIO", "language": "ko", "legacyGuide": "ko/SERVICE_AUDIO" }, { "type": "AUDIO", "language": "ja", "legacyGuide": "ja/SERVICE_AUDIO" }, { "type": "AUDIO", "language": "it", "legacyGuide": "it/SERVICE_AUDIO" }, { "type": "AUDIO", "language": "en", "legacyGuide": "en/SERVICE_AUDIO" }, { "type": "AUDIO", "language": "de", "legacyGuide": "de/SERVICE_AUDIO" }, { "type": "AUDIO", "language": "es", "legacyGuide": "es/SERVICE_AUDIO" } ] }, { "productOptionCode": "DELUXE", "description": "Big Bus and Habour Cruise: Combine two great Sydney experiences into one with a hop-on hop off Big Bus Tours and a hop-on hop-off Sydney Harbour cruise
2 routes: Sydney & Bondi Beach", "title": "48 Hour Deluxe Bus and Cruise", "languageGuides": [ { "type": "AUDIO", "language": "cmn", "legacyGuide": "cmn/SERVICE_AUDIO" }, { "type": "AUDIO", "language": "fr", "legacyGuide": "fr/SERVICE_AUDIO" }, { "type": "AUDIO", "language": "ko", "legacyGuide": "ko/SERVICE_AUDIO" }, { "type": "AUDIO", "language": "ja", "legacyGuide": "ja/SERVICE_AUDIO" }, { "type": "AUDIO", "language": "it", "legacyGuide": "it/SERVICE_AUDIO" }, { "type": "AUDIO", "language": "en", "legacyGuide": "en/SERVICE_AUDIO" }, { "type": "AUDIO", "language": "de", "legacyGuide": "de/SERVICE_AUDIO" }, { "type": "AUDIO", "language": "es", "legacyGuide": "es/SERVICE_AUDIO" } ] }, { "productOptionCode": "TG2", "description": "Suggested Start point: Departure from Stop 1 - Circular Quay, George St (opposite DFS Galleria near the corner of Alfred St) at 10am, 12pm and 2pm.
Duration: 1 day
Red Route: Limited Hop on Hop off with stops around the city including Sydney Opera House, Sydney Harbour Bridge, Darling Harbour & more
One Free Child Ticket: For a limited time, you get one free child tickets with every adult ticket purchased.", "title": "Sydney Highlights Tour", "languageGuides": [ { "type": "AUDIO", "language": "cmn", "legacyGuide": "cmn/SERVICE_AUDIO" }, { "type": "AUDIO", "language": "fr", "legacyGuide": "fr/SERVICE_AUDIO" }, { "type": "AUDIO", "language": "ko", "legacyGuide": "ko/SERVICE_AUDIO" }, { "type": "AUDIO", "language": "ja", "legacyGuide": "ja/SERVICE_AUDIO" }, { "type": "AUDIO", "language": "it", "legacyGuide": "it/SERVICE_AUDIO" }, { "type": "AUDIO", "language": "en", "legacyGuide": "en/SERVICE_AUDIO" }, { "type": "AUDIO", "language": "de", "legacyGuide": "de/SERVICE_AUDIO" }, { "type": "AUDIO", "language": "es", "legacyGuide": "es/SERVICE_AUDIO" } ] }, { "productOptionCode": "24HOUR", "description": "Unlimited use on Big Bus Sydney & Bondi Hop-on Hop-off Tour for 24 hours from time of first use", "title": "24 Hour Classic Ticket ", "languageGuides": [ { "type": "AUDIO", "language": "cmn", "legacyGuide": "cmn/SERVICE_AUDIO" }, { "type": "AUDIO", "language": "fr", "legacyGuide": "fr/SERVICE_AUDIO" }, { "type": "AUDIO", "language": "ko", "legacyGuide": "ko/SERVICE_AUDIO" }, { "type": "AUDIO", "language": "ja", "legacyGuide": "ja/SERVICE_AUDIO" }, { "type": "AUDIO", "language": "it", "legacyGuide": "it/SERVICE_AUDIO" }, { "type": "AUDIO", "language": "en", "legacyGuide": "en/SERVICE_AUDIO" }, { "type": "AUDIO", "language": "de", "legacyGuide": "de/SERVICE_AUDIO" }, { "type": "AUDIO", "language": "es", "legacyGuide": "es/SERVICE_AUDIO" } ] } ], "translationInfo": { "containsMachineTranslatedText": false }, "supplier": { "name": "Big Bus Tours" }, "reviews": { "sources": [ { "provider": "VIATOR", "reviewCounts": [ { "rating": 1, "count": 36 }, { "rating": 2, "count": 100 }, { "rating": 3, "count": 169 }, { "rating": 4, "count": 390 }, { "rating": 5, "count": 578 } ], "totalCount": 1273, "averageRating": 4 } ], "reviewCountTotals": [ { "rating": 1, "count": 36 }, { "rating": 2, "count": 100 }, { "rating": 3, "count": 169 }, { "rating": 4, "count": 390 }, { "rating": 5, "count": 578 } ], "totalReviews": 1273, "combinedAverageRating": 4 }, "viatorUniqueContent": { "shortDescription": "Join a hop-on hop-off sightseeing tour by double-decker bus to discover the highlights of Sydney and Bondi Beach. Enjoy unobstructed views and recorded onboard commentary as you travel along two routes to top destinations like Sydney Harbour Bridge, Sydney Opera House, Darling Harbour, and Bondi Beach. Go in-depth at any given place by simply hopping off the bus to explore. You can experience Sydney and Bondi's most noteworthy attractions at your own pace with your choice of ticket, valid for either 24 or 48 hours.", "longDescription": "The warm and mild year-round climate in Sydney and Bondi makes the open-air double-decker bus tour an ideal sightseeing option. Travel to numerous Sydney highlights, including the historic Rocks district, Sydney Opera House, Sydney Harbour Bridge and Sydney\u2019s CBD (Central Business District). Bondi Beach is a suburb with a popular beach located just east of Sydney\u2019s city center. Enjoy the spacious beach and warm sea, or check out the cafes, restaurants, and shops around town, many with fantastic ocean views. \n\nHop off the bus to browse the stores in modern shopping areas or admire local institutions like the bustling Sydney Fish Market. Stretch your legs as you stroll around the Royal Botanic Gardens or take tree-shaded paths through Hyde Park. \n\nHop aboard the open-top, double-decker bus at any of the conveniently located stops around the city. Enjoy pre-recorded commentary, available in several languages, as you sit back and relax on the full ride. Hop off the bus to explore any given destination at your own pace.\n\nThe Sydney and Bondi tours connect at Cook and Phillip Park, 100 William Street or Central Station stop. Tickets are valid for 24 or 48 hours from first use. Please check the current schedule for operating hours; the bus does not operate 24 hours per day. Families can save with the Family Pass, which is valid for two adults and two children.", "insiderTips": "This tour takes you to Sydney\u2019s top destinations so you don\u2019t have to worry about transportation.", "highlights": [ "Big Bus hop-on hop-off bus tour of Sydney and Bondi Beach\n", "Enjoy great views of Sydney's highlights from the open-top, double-decker bus", "Learn about Sydney's sights and history from onboard pre-recorded commentary\n", "Sightsee at your own pace with your ticket that is valid for 24 or 48 hours" ] } } }, "products-250380P1-example": { "summary": "/products/250380P1", "value": { "status": "ACTIVE", "productCode": "250380P1", "language": "en", "createdAt": "2020-02-19T10:40:44.224025Z", "title": "Surf lessons Bali, Canggu", "ticketInfo": { "ticketTypes": [ "MOBILE_ONLY" ], "ticketTypeDescription": "Mobile or paper ticket accepted", "ticketsPerBooking": "ONE_PER_BOOKING", "ticketsPerBookingDescription": "One per booking" }, "pricingInfo": { "type": "PER_PERSON", "ageBands": [ { "ageBand": "CHILD", "startAge": 6, "endAge": 14, "minTravelersPerBooking": 0, "maxTravelersPerBooking": 7 }, { "ageBand": "ADULT", "startAge": 15, "endAge": 99, "minTravelersPerBooking": 0, "maxTravelersPerBooking": 7 } ] }, "images": [ { "imageSource": "SUPPLIER_PROVIDED", "caption": "", "isCover": false, "variants": [ { "height": 50, "width": 50, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-50x50/0a/78/b6/f6.jpg" }, { "height": 100, "width": 100, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-100x100/0a/78/b6/f6.jpg" }, { "height": 200, "width": 200, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-200x200/0a/78/b6/f6.jpg" }, { "height": 400, "width": 400, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-400x400/0a/78/b6/f6.jpg" }, { "height": 40, "width": 60, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-60x40/0a/78/b6/f6.jpg" }, { "height": 80, "width": 120, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-120x80/0a/78/b6/f6.jpg" }, { "height": 120, "width": 180, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-180x120/0a/78/b6/f6.jpg" }, { "height": 160, "width": 240, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-240x160/0a/78/b6/f6.jpg" }, { "height": 240, "width": 360, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-360x240/0a/78/b6/f6.jpg" }, { "height": 320, "width": 480, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-480x320/0a/78/b6/f6.jpg" }, { "height": 360, "width": 540, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-540x360/0a/78/b6/f6.jpg" }, { "height": 446, "width": 674, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-674x446/0a/78/b6/f6.jpg" }, { "height": 480, "width": 720, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-720x480/0a/78/b6/f6.jpg" }, { "height": 118, "width": 210, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-210x118/0a/78/b6/f6.jpg" }, { "height": 75, "width": 75, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-75x75/0a/78/b6/f6.jpg" }, { "height": 109, "width": 154, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-154x109/0a/78/b6/f6.jpg" } ] }, { "imageSource": "SUPPLIER_PROVIDED", "caption": "", "isCover": false, "variants": [ { "height": 50, "width": 50, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-50x50/0a/78/b8/4c.jpg" }, { "height": 100, "width": 100, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-100x100/0a/78/b8/4c.jpg" }, { "height": 200, "width": 200, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-200x200/0a/78/b8/4c.jpg" }, { "height": 400, "width": 400, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-400x400/0a/78/b8/4c.jpg" }, { "height": 40, "width": 60, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-60x40/0a/78/b8/4c.jpg" }, { "height": 80, "width": 120, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-120x80/0a/78/b8/4c.jpg" }, { "height": 120, "width": 180, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-180x120/0a/78/b8/4c.jpg" }, { "height": 160, "width": 240, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-240x160/0a/78/b8/4c.jpg" }, { "height": 240, "width": 360, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-360x240/0a/78/b8/4c.jpg" }, { "height": 320, "width": 480, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-480x320/0a/78/b8/4c.jpg" }, { "height": 360, "width": 540, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-540x360/0a/78/b8/4c.jpg" }, { "height": 446, "width": 674, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-674x446/0a/78/b8/4c.jpg" }, { "height": 480, "width": 720, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-720x480/0a/78/b8/4c.jpg" }, { "height": 118, "width": 210, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-210x118/0a/78/b8/4c.jpg" }, { "height": 75, "width": 75, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-75x75/0a/78/b8/4c.jpg" }, { "height": 109, "width": 154, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-154x109/0a/78/b8/4c.jpg" } ] }, { "imageSource": "SUPPLIER_PROVIDED", "caption": "", "isCover": false, "variants": [ { "height": 50, "width": 50, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-50x50/0a/79/b5/11.jpg" }, { "height": 100, "width": 100, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-100x100/0a/79/b5/11.jpg" }, { "height": 200, "width": 200, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-200x200/0a/79/b5/11.jpg" }, { "height": 400, "width": 400, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-400x400/0a/79/b5/11.jpg" }, { "height": 40, "width": 60, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-60x40/0a/79/b5/11.jpg" }, { "height": 80, "width": 120, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-120x80/0a/79/b5/11.jpg" }, { "height": 120, "width": 180, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-180x120/0a/79/b5/11.jpg" }, { "height": 160, "width": 240, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-240x160/0a/79/b5/11.jpg" }, { "height": 240, "width": 360, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-360x240/0a/79/b5/11.jpg" }, { "height": 320, "width": 480, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-480x320/0a/79/b5/11.jpg" }, { "height": 360, "width": 540, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-540x360/0a/79/b5/11.jpg" }, { "height": 446, "width": 674, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-674x446/0a/79/b5/11.jpg" }, { "height": 480, "width": 720, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-720x480/0a/79/b5/11.jpg" }, { "height": 118, "width": 210, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-210x118/0a/79/b5/11.jpg" }, { "height": 75, "width": 75, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-75x75/0a/79/b5/11.jpg" }, { "height": 109, "width": 154, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-154x109/0a/79/b5/11.jpg" } ] }, { "imageSource": "SUPPLIER_PROVIDED", "caption": "", "isCover": false, "variants": [ { "height": 50, "width": 50, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-50x50/0a/79/b5/c1.jpg" }, { "height": 100, "width": 100, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-100x100/0a/79/b5/c1.jpg" }, { "height": 200, "width": 200, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-200x200/0a/79/b5/c1.jpg" }, { "height": 400, "width": 400, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-400x400/0a/79/b5/c1.jpg" }, { "height": 40, "width": 60, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-60x40/0a/79/b5/c1.jpg" }, { "height": 80, "width": 120, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-120x80/0a/79/b5/c1.jpg" }, { "height": 120, "width": 180, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-180x120/0a/79/b5/c1.jpg" }, { "height": 160, "width": 240, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-240x160/0a/79/b5/c1.jpg" }, { "height": 240, "width": 360, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-360x240/0a/79/b5/c1.jpg" }, { "height": 320, "width": 480, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-480x320/0a/79/b5/c1.jpg" }, { "height": 360, "width": 540, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-540x360/0a/79/b5/c1.jpg" }, { "height": 446, "width": 674, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-674x446/0a/79/b5/c1.jpg" }, { "height": 480, "width": 720, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-720x480/0a/79/b5/c1.jpg" }, { "height": 118, "width": 210, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-210x118/0a/79/b5/c1.jpg" }, { "height": 75, "width": 75, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-75x75/0a/79/b5/c1.jpg" }, { "height": 109, "width": 154, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-154x109/0a/79/b5/c1.jpg" } ] }, { "imageSource": "SUPPLIER_PROVIDED", "caption": "", "isCover": false, "variants": [ { "height": 50, "width": 50, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-50x50/0a/79/b5/f3.jpg" }, { "height": 100, "width": 100, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-100x100/0a/79/b5/f3.jpg" }, { "height": 200, "width": 200, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-200x200/0a/79/b5/f3.jpg" }, { "height": 400, "width": 400, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-400x400/0a/79/b5/f3.jpg" }, { "height": 40, "width": 60, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-60x40/0a/79/b5/f3.jpg" }, { "height": 80, "width": 120, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-120x80/0a/79/b5/f3.jpg" }, { "height": 120, "width": 180, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-180x120/0a/79/b5/f3.jpg" }, { "height": 160, "width": 240, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-240x160/0a/79/b5/f3.jpg" }, { "height": 240, "width": 360, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-360x240/0a/79/b5/f3.jpg" }, { "height": 320, "width": 480, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-480x320/0a/79/b5/f3.jpg" }, { "height": 360, "width": 540, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-540x360/0a/79/b5/f3.jpg" }, { "height": 446, "width": 674, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-674x446/0a/79/b5/f3.jpg" }, { "height": 480, "width": 720, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-720x480/0a/79/b5/f3.jpg" }, { "height": 118, "width": 210, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-210x118/0a/79/b5/f3.jpg" }, { "height": 75, "width": 75, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-75x75/0a/79/b5/f3.jpg" }, { "height": 109, "width": 154, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-154x109/0a/79/b5/f3.jpg" } ] }, { "imageSource": "SUPPLIER_PROVIDED", "caption": "", "isCover": false, "variants": [ { "height": 50, "width": 50, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-50x50/0a/79/b6/7b.jpg" }, { "height": 100, "width": 100, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-100x100/0a/79/b6/7b.jpg" }, { "height": 200, "width": 200, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-200x200/0a/79/b6/7b.jpg" }, { "height": 400, "width": 400, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-400x400/0a/79/b6/7b.jpg" }, { "height": 40, "width": 60, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-60x40/0a/79/b6/7b.jpg" }, { "height": 80, "width": 120, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-120x80/0a/79/b6/7b.jpg" }, { "height": 120, "width": 180, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-180x120/0a/79/b6/7b.jpg" }, { "height": 160, "width": 240, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-240x160/0a/79/b6/7b.jpg" }, { "height": 240, "width": 360, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-360x240/0a/79/b6/7b.jpg" }, { "height": 320, "width": 480, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-480x320/0a/79/b6/7b.jpg" }, { "height": 360, "width": 540, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-540x360/0a/79/b6/7b.jpg" }, { "height": 446, "width": 674, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-674x446/0a/79/b6/7b.jpg" }, { "height": 480, "width": 720, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-720x480/0a/79/b6/7b.jpg" }, { "height": 118, "width": 210, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-210x118/0a/79/b6/7b.jpg" }, { "height": 75, "width": 75, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-75x75/0a/79/b6/7b.jpg" }, { "height": 109, "width": 154, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-154x109/0a/79/b6/7b.jpg" } ] }, { "imageSource": "SUPPLIER_PROVIDED", "caption": "", "isCover": false, "variants": [ { "height": 50, "width": 50, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-50x50/0a/79/b7/12.jpg" }, { "height": 100, "width": 100, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-100x100/0a/79/b7/12.jpg" }, { "height": 200, "width": 200, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-200x200/0a/79/b7/12.jpg" }, { "height": 400, "width": 400, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-400x400/0a/79/b7/12.jpg" }, { "height": 40, "width": 60, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-60x40/0a/79/b7/12.jpg" }, { "height": 80, "width": 120, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-120x80/0a/79/b7/12.jpg" }, { "height": 120, "width": 180, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-180x120/0a/79/b7/12.jpg" }, { "height": 160, "width": 240, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-240x160/0a/79/b7/12.jpg" }, { "height": 240, "width": 360, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-360x240/0a/79/b7/12.jpg" }, { "height": 320, "width": 480, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-480x320/0a/79/b7/12.jpg" }, { "height": 360, "width": 540, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-540x360/0a/79/b7/12.jpg" }, { "height": 446, "width": 674, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-674x446/0a/79/b7/12.jpg" }, { "height": 480, "width": 720, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-720x480/0a/79/b7/12.jpg" }, { "height": 118, "width": 210, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-210x118/0a/79/b7/12.jpg" }, { "height": 75, "width": 75, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-75x75/0a/79/b7/12.jpg" }, { "height": 109, "width": 154, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-154x109/0a/79/b7/12.jpg" } ] }, { "imageSource": "SUPPLIER_PROVIDED", "caption": "", "isCover": false, "variants": [ { "height": 50, "width": 50, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-50x50/0a/79/b7/48.jpg" }, { "height": 100, "width": 100, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-100x100/0a/79/b7/48.jpg" }, { "height": 200, "width": 200, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-200x200/0a/79/b7/48.jpg" }, { "height": 400, "width": 400, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-400x400/0a/79/b7/48.jpg" }, { "height": 40, "width": 60, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-60x40/0a/79/b7/48.jpg" }, { "height": 80, "width": 120, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-120x80/0a/79/b7/48.jpg" }, { "height": 120, "width": 180, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-180x120/0a/79/b7/48.jpg" }, { "height": 160, "width": 240, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-240x160/0a/79/b7/48.jpg" }, { "height": 240, "width": 360, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-360x240/0a/79/b7/48.jpg" }, { "height": 320, "width": 480, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-480x320/0a/79/b7/48.jpg" }, { "height": 360, "width": 540, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-540x360/0a/79/b7/48.jpg" }, { "height": 446, "width": 674, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-674x446/0a/79/b7/48.jpg" }, { "height": 480, "width": 720, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-720x480/0a/79/b7/48.jpg" }, { "height": 118, "width": 210, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-210x118/0a/79/b7/48.jpg" }, { "height": 75, "width": 75, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-75x75/0a/79/b7/48.jpg" }, { "height": 109, "width": 154, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-154x109/0a/79/b7/48.jpg" } ] }, { "imageSource": "SUPPLIER_PROVIDED", "caption": "", "isCover": false, "variants": [ { "height": 50, "width": 50, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-50x50/0a/78/b4/ae.jpg" }, { "height": 100, "width": 100, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-100x100/0a/78/b4/ae.jpg" }, { "height": 200, "width": 200, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-200x200/0a/78/b4/ae.jpg" }, { "height": 400, "width": 400, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-400x400/0a/78/b4/ae.jpg" }, { "height": 40, "width": 60, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-60x40/0a/78/b4/ae.jpg" }, { "height": 80, "width": 120, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-120x80/0a/78/b4/ae.jpg" }, { "height": 120, "width": 180, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-180x120/0a/78/b4/ae.jpg" }, { "height": 160, "width": 240, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-240x160/0a/78/b4/ae.jpg" }, { "height": 240, "width": 360, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-360x240/0a/78/b4/ae.jpg" }, { "height": 320, "width": 480, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-480x320/0a/78/b4/ae.jpg" }, { "height": 360, "width": 540, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-540x360/0a/78/b4/ae.jpg" }, { "height": 446, "width": 674, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-674x446/0a/78/b4/ae.jpg" }, { "height": 480, "width": 720, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-720x480/0a/78/b4/ae.jpg" }, { "height": 118, "width": 210, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-210x118/0a/78/b4/ae.jpg" }, { "height": 75, "width": 75, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-75x75/0a/78/b4/ae.jpg" }, { "height": 109, "width": 154, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-154x109/0a/78/b4/ae.jpg" } ] }, { "imageSource": "SUPPLIER_PROVIDED", "caption": "", "isCover": false, "variants": [ { "height": 50, "width": 50, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-50x50/0a/79/b9/2c.jpg" }, { "height": 100, "width": 100, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-100x100/0a/79/b9/2c.jpg" }, { "height": 200, "width": 200, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-200x200/0a/79/b9/2c.jpg" }, { "height": 400, "width": 400, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-400x400/0a/79/b9/2c.jpg" }, { "height": 40, "width": 60, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-60x40/0a/79/b9/2c.jpg" }, { "height": 80, "width": 120, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-120x80/0a/79/b9/2c.jpg" }, { "height": 120, "width": 180, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-180x120/0a/79/b9/2c.jpg" }, { "height": 160, "width": 240, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-240x160/0a/79/b9/2c.jpg" }, { "height": 240, "width": 360, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-360x240/0a/79/b9/2c.jpg" }, { "height": 320, "width": 480, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-480x320/0a/79/b9/2c.jpg" }, { "height": 360, "width": 540, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-540x360/0a/79/b9/2c.jpg" }, { "height": 446, "width": 674, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-674x446/0a/79/b9/2c.jpg" }, { "height": 480, "width": 720, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-720x480/0a/79/b9/2c.jpg" }, { "height": 118, "width": 210, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-210x118/0a/79/b9/2c.jpg" }, { "height": 75, "width": 75, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-75x75/0a/79/b9/2c.jpg" }, { "height": 109, "width": 154, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-154x109/0a/79/b9/2c.jpg" } ] }, { "imageSource": "SUPPLIER_PROVIDED", "caption": "", "isCover": false, "variants": [ { "height": 50, "width": 50, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-50x50/0a/79/b9/43.jpg" }, { "height": 100, "width": 100, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-100x100/0a/79/b9/43.jpg" }, { "height": 200, "width": 200, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-200x200/0a/79/b9/43.jpg" }, { "height": 400, "width": 400, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-400x400/0a/79/b9/43.jpg" }, { "height": 40, "width": 60, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-60x40/0a/79/b9/43.jpg" }, { "height": 80, "width": 120, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-120x80/0a/79/b9/43.jpg" }, { "height": 120, "width": 180, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-180x120/0a/79/b9/43.jpg" }, { "height": 160, "width": 240, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-240x160/0a/79/b9/43.jpg" }, { "height": 240, "width": 360, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-360x240/0a/79/b9/43.jpg" }, { "height": 320, "width": 480, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-480x320/0a/79/b9/43.jpg" }, { "height": 360, "width": 540, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-540x360/0a/79/b9/43.jpg" }, { "height": 446, "width": 674, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-674x446/0a/79/b9/43.jpg" }, { "height": 480, "width": 720, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-720x480/0a/79/b9/43.jpg" }, { "height": 118, "width": 210, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-210x118/0a/79/b9/43.jpg" }, { "height": 75, "width": 75, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-75x75/0a/79/b9/43.jpg" }, { "height": 109, "width": 154, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-154x109/0a/79/b9/43.jpg" } ] }, { "imageSource": "SUPPLIER_PROVIDED", "caption": "", "isCover": false, "variants": [ { "height": 50, "width": 50, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-50x50/0a/9e/af/7a.jpg" }, { "height": 100, "width": 100, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-100x100/0a/9e/af/7a.jpg" }, { "height": 200, "width": 200, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-200x200/0a/9e/af/7a.jpg" }, { "height": 400, "width": 400, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-400x400/0a/9e/af/7a.jpg" }, { "height": 40, "width": 60, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-60x40/0a/9e/af/7a.jpg" }, { "height": 80, "width": 120, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-120x80/0a/9e/af/7a.jpg" }, { "height": 120, "width": 180, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-180x120/0a/9e/af/7a.jpg" }, { "height": 160, "width": 240, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-240x160/0a/9e/af/7a.jpg" }, { "height": 240, "width": 360, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-360x240/0a/9e/af/7a.jpg" }, { "height": 320, "width": 480, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-480x320/0a/9e/af/7a.jpg" }, { "height": 360, "width": 540, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-540x360/0a/9e/af/7a.jpg" }, { "height": 446, "width": 674, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-674x446/0a/9e/af/7a.jpg" }, { "height": 480, "width": 720, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-720x480/0a/9e/af/7a.jpg" }, { "height": 118, "width": 210, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-210x118/0a/9e/af/7a.jpg" }, { "height": 75, "width": 75, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-75x75/0a/9e/af/7a.jpg" }, { "height": 109, "width": 154, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-154x109/0a/9e/af/7a.jpg" } ] }, { "imageSource": "SUPPLIER_PROVIDED", "caption": "", "isCover": false, "variants": [ { "height": 50, "width": 50, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-50x50/0a/9e/af/7d.jpg" }, { "height": 100, "width": 100, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-100x100/0a/9e/af/7d.jpg" }, { "height": 200, "width": 200, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-200x200/0a/9e/af/7d.jpg" }, { "height": 400, "width": 400, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-400x400/0a/9e/af/7d.jpg" }, { "height": 40, "width": 60, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-60x40/0a/9e/af/7d.jpg" }, { "height": 80, "width": 120, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-120x80/0a/9e/af/7d.jpg" }, { "height": 120, "width": 180, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-180x120/0a/9e/af/7d.jpg" }, { "height": 160, "width": 240, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-240x160/0a/9e/af/7d.jpg" }, { "height": 240, "width": 360, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-360x240/0a/9e/af/7d.jpg" }, { "height": 320, "width": 480, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-480x320/0a/9e/af/7d.jpg" }, { "height": 360, "width": 540, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-540x360/0a/9e/af/7d.jpg" }, { "height": 446, "width": 674, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-674x446/0a/9e/af/7d.jpg" }, { "height": 480, "width": 720, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-720x480/0a/9e/af/7d.jpg" }, { "height": 118, "width": 210, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-210x118/0a/9e/af/7d.jpg" }, { "height": 75, "width": 75, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-75x75/0a/9e/af/7d.jpg" }, { "height": 109, "width": 154, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-154x109/0a/9e/af/7d.jpg" } ] }, { "imageSource": "SUPPLIER_PROVIDED", "caption": "", "isCover": false, "variants": [ { "height": 50, "width": 50, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-50x50/0a/9e/af/7e.jpg" }, { "height": 100, "width": 100, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-100x100/0a/9e/af/7e.jpg" }, { "height": 200, "width": 200, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-200x200/0a/9e/af/7e.jpg" }, { "height": 400, "width": 400, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-400x400/0a/9e/af/7e.jpg" }, { "height": 40, "width": 60, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-60x40/0a/9e/af/7e.jpg" }, { "height": 80, "width": 120, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-120x80/0a/9e/af/7e.jpg" }, { "height": 120, "width": 180, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-180x120/0a/9e/af/7e.jpg" }, { "height": 160, "width": 240, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-240x160/0a/9e/af/7e.jpg" }, { "height": 240, "width": 360, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-360x240/0a/9e/af/7e.jpg" }, { "height": 320, "width": 480, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-480x320/0a/9e/af/7e.jpg" }, { "height": 360, "width": 540, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-540x360/0a/9e/af/7e.jpg" }, { "height": 446, "width": 674, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-674x446/0a/9e/af/7e.jpg" }, { "height": 480, "width": 720, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-720x480/0a/9e/af/7e.jpg" }, { "height": 118, "width": 210, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-210x118/0a/9e/af/7e.jpg" }, { "height": 75, "width": 75, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-75x75/0a/9e/af/7e.jpg" }, { "height": 109, "width": 154, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-154x109/0a/9e/af/7e.jpg" } ] }, { "imageSource": "SUPPLIER_PROVIDED", "caption": "", "isCover": false, "variants": [ { "height": 50, "width": 50, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-50x50/0a/9e/af/7f.jpg" }, { "height": 100, "width": 100, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-100x100/0a/9e/af/7f.jpg" }, { "height": 200, "width": 200, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-200x200/0a/9e/af/7f.jpg" }, { "height": 400, "width": 400, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-400x400/0a/9e/af/7f.jpg" }, { "height": 40, "width": 60, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-60x40/0a/9e/af/7f.jpg" }, { "height": 80, "width": 120, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-120x80/0a/9e/af/7f.jpg" }, { "height": 120, "width": 180, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-180x120/0a/9e/af/7f.jpg" }, { "height": 160, "width": 240, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-240x160/0a/9e/af/7f.jpg" }, { "height": 240, "width": 360, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-360x240/0a/9e/af/7f.jpg" }, { "height": 320, "width": 480, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-480x320/0a/9e/af/7f.jpg" }, { "height": 360, "width": 540, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-540x360/0a/9e/af/7f.jpg" }, { "height": 446, "width": 674, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-674x446/0a/9e/af/7f.jpg" }, { "height": 480, "width": 720, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-720x480/0a/9e/af/7f.jpg" }, { "height": 118, "width": 210, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-210x118/0a/9e/af/7f.jpg" }, { "height": 75, "width": 75, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-75x75/0a/9e/af/7f.jpg" }, { "height": 109, "width": 154, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-154x109/0a/9e/af/7f.jpg" } ] } ], "logistics": { "start": [ { "location": { "ref": "LOC-o0AXGEKPN4wJ9sIG0RAn5IC3EgQiTcJbahKnNOKwVn3ZLxlRDoFhTyB7WA1hB/RN" }, "description": "Canggu, Batu Bolong beach, Warung Eka - from the Temple in Old man\u2019s car park facing the beach go 100m to the left and it\u2019s 8th Warung (shop)\n\nOr I can meet you at Old man\u2019s car park" } ], "end": [ { "location": { "ref": "LOC-o0AXGEKPN4wJ9sIG0RAn5IC3EgQiTcJbahKnNOKwVn3ZLxlRDoFhTyB7WA1hB/RN" }, "description": "Canggu, Batu Bolong beach, Warung Eka - from the Temple in Old man\u2019s car park facing the beach go 100m to the left and it\u2019s 8th Warung (shop)\n\nOr I can meet you at Old man\u2019s car park" } ], "redemption": { "redemptionType": "NONE", "specialInstructions": "" }, "travelerPickup": { "pickupOptionType": "PICKUP_AND_MEET_AT_START_POINT", "allowCustomTravelerPickup": false, "locations": [ { "location": { "ref": "MEET_AT_DEPARTURE_POINT" }, "pickupType": "OTHER" }, { "location": { "ref": "CONTACT_SUPPLIER_LATER" }, "pickupType": "OTHER" } ], "minutesBeforeDepartureTimeForPickup": 15, "additionalInfo": "Pick up/drop off only immediate Canggu area by motorbike " } }, "timeZone": "Asia/Makassar", "description": "Surfing is amazing sport with awesome vibes! Let me show you and teach you how to surf, how to read the waves and surf conditions. \n\nWhen I\u00b4m teaching my clients surfing I always want them to enjoy it and have fun and I make them feel welcome. Based on my experiences it also help my client not to panic.\n\nI\u00b4m offering private lessons with professional and experienced istructor for complete begginers (1 instructor 1 client). This allows me to give you personal attention, safety, feedback for improving your surfind and of course buddy system. \n\nFor intermediate, advanced surfers I\u00b4m as well offering to be their guid in different surf spots around Bali. I will show you different types of waves, diffrent breaks and I will teach you how to get behind the breaking point safely and how to catch the waves. If it is necessary I will correct your style. All of that may affect to becoming a better surfer or improving your skills.", "inclusions": [ { "category": "FOOD_AND_DRINK", "categoryDescription": "Food and drink", "type": "BOTTLED_WATER", "typeDescription": "Bottled water", "description": "Bottled water" }, { "category": "EQUIPMENT", "categoryDescription": "Use of equipment", "type": "OTHER", "typeDescription": "Other", "otherDescription": "Surf board and Rash shirt " } ], "additionalInfo": [ { "type": "PETS_WELCOME", "description": "Pets and service animals are welcome" }, { "type": "NO_BACK_PROBLEMS", "description": "Not recommended for travelers with spinal injuries" }, { "type": "NO_PREGNANT", "description": "Not recommended for pregnant travelers" }, { "type": "NO_HEART_PROBLEMS", "description": "Not recommended for travelers with poor cardiovascular health" }, { "type": "PHYSICAL_EASY", "description": "Suitable for all physical fitness levels" } ], "cancellationPolicy": { "type": "STANDARD", "description": "For a full refund, cancel at least 24 hours before the scheduled departure time.", "cancelIfBadWeather": true, "cancelIfInsufficientTravelers": false, "refundEligibility": [ { "dayRangeMin": 1, "percentageRefundable": 100 }, { "dayRangeMin": 0, "dayRangeMax": 1, "percentageRefundable": 0 } ] }, "bookingConfirmationSettings": { "bookingCutoffType": "START_TIME", "bookingCutoffInMinutes": 180, "confirmationType": "INSTANT" }, "bookingRequirements": { "minTravelersPerBooking": 1, "maxTravelersPerBooking": 7, "requiresAdultForBooking": false }, "languageGuides": [ { "type": "GUIDE", "language": "en", "legacyGuide": "en/SERVICE_GUIDE" }, { "type": "GUIDE", "language": "jv", "legacyGuide": "jv/SERVICE_GUIDE" } ], "bookingQuestions": [ "FULL_NAMES_LAST", "PICKUP_POINT", "SPECIAL_REQUIREMENTS", "FULL_NAMES_FIRST", "AGEBAND" ], "tags": [ 20246, 21946, 20244 ], "destinations": [ { "ref": "34198", "primary": true } ], "itinerary": { "itineraryType": "ACTIVITY", "skipTheLine": false, "privateTour": true, "duration": { "fixedDurationInMinutes": 120 }, "activityInfo": { "location": { "ref": "LOC-o0AXGEKPN4wJ9sIG0RAn5IC3EgQiTcJbahKnNOKwVn3ZLxlRDoFhTyB7WA1hB/RN" }, "description": "Beginner Surf Lesson - 2 hours:\n\n- Pick up from Canggu (by scooter) or meet at the beach\n- Go through basic surf guidance whilst on land\n- Explain health and safety points\n- Warm-up exercises on land\n- Practice paddling and standing up on the surfboard (with close instructor guidance) in waves suitable for your skill level" } }, "productOptions": [ { "productOptionCode": "TG1", "description": "Pickup included", "title": "Surf lessons Bali, Canggu", "languageGuides": [ { "type": "GUIDE", "language": "en", "legacyGuide": "en/SERVICE_GUIDE" }, { "type": "GUIDE", "language": "jv", "legacyGuide": "jv/SERVICE_GUIDE" } ] } ], "translationInfo": { "containsMachineTranslatedText": false }, "supplier": { "name": "Yahya Zakaria" }, "reviews": { "sources": [ { "provider": "VIATOR", "reviewCounts": [ { "rating": 1, "count": 0 }, { "rating": 2, "count": 0 }, { "rating": 3, "count": 0 }, { "rating": 4, "count": 0 }, { "rating": 5, "count": 1 } ], "totalCount": 1, "averageRating": 5 } ], "reviewCountTotals": [ { "rating": 1, "count": 0 }, { "rating": 2, "count": 0 }, { "rating": 3, "count": 0 }, { "rating": 4, "count": 0 }, { "rating": 5, "count": 1 } ], "totalReviews": 1, "combinedAverageRating": 5 }, "viatorUniqueContent": {} } }, "products-tags-example": { "summary": "/products/tags", "value": { "tags": [ { "tagId": 11980, "allNamesByLocale": { "de": "Mehrt\u00e4gige Touren von Mailand an die italienische Riviera", "no": "Turer over flere dager fra Milan til den italienske riviera", "sv": "Turer p\u00e5 flera dagar till italienska rivieran fr\u00e5n Milano", "pt": "Viagens de um dia para a Riviera Italiana saindo de Mil\u00e3o", "en_AU": "Italian Riviera Multi Day Trips from Milan", "en": "Italian Riviera Multi Day Trips from Milan", "it": "Escursioni di pi\u00f9 giorni sulla riviera ligure da Milano", "fr": "Excursions de plusieurs jours sur la riviera italienne depuis Milan", "en_UK": "Italian Riviera Multi Day Trips from Milan", "es": "Excursiones de varios d\u00edas a la Riviera italiana desde Mil\u00e1n", "zh": "\u7c73\u5170\u81f3\u610f\u5927\u5229\u91cc\u7ef4\u57c3\u62c9\u591a\u65e5\u6e38", "zh_HK": "\u7c73\u862d\u51fa\u767c\u610f\u5927\u5229\u91cc\u7dad\u57c3\u62c9\u591a\u65e5\u904a", "zh_TW": "\u7c73\u862d\u51fa\u767c\u7684\u7fa9\u5927\u5229\u91cc\u7dad\u8036\u62c9\u4e00\u65e5\u904a", "ja": "\u30df\u30e9\u30ce\u767a\u30a4\u30bf\u30ea\u30a2\u30f3 \u30ea\u30f4\u30a3\u30a8\u30e9\u306e\u8907\u6570\u65e5\u306b\u307e\u305f\u304c\u308b\u30c4\u30a2\u30fc", "zh_CN": "\u7c73\u5170\u81f3\u610f\u5927\u5229\u91cc\u7ef4\u57c3\u62c9\u591a\u65e5\u6e38", "da": "Flerdagesture til Den Italienske Riviera fra Milano", "nl": "Meerdaagse tochten naar de Italiaanse Rivi\u00e8ra vanaf Milaan" } }, { "tagId": 21768, "parentTagIds": [ 21701, 21913 ], "allNamesByLocale": { "de": "Landausfl\u00fcge", "no": "Utflukter p\u00e5 land", "sv": "Utflykter i land", "pt": "Excurs\u00f5es de cruzeiro", "en_AU": "Shore Excursions", "en": "Shore Excursions", "it": "Escursioni a terra", "fr": "Excursions en bord de mer", "en_UK": "Shore Excursions", "es": "Excursiones por la costa", "zh": "\u5cb8\u4e0a\u6e38\u89c8", "zh_HK": "\u6d77\u5cb8\u77ed\u7a0b\u65c5\u884c", "zh_TW": "\u5cb8\u4e0a\u89c0\u5149", "ja": "\u5bc4\u6e2f\u5730\u89b3\u5149", "zh_CN": "\u5cb8\u4e0a\u6e38\u89c8", "da": "Kystudflugter", "nl": "Kustexcursies" } }, { "tagId": 21767, "parentTagIds": [ 12040, 21912 ], "allNamesByLocale": { "de": "Schwimmwettbewerbe", "no": "Sv\u00f8mmekonkurranser", "sv": "Simningst\u00e4vlingar", "pt": "Competi\u00e7\u00f5es de nata\u00e7\u00e3o", "en_AU": "Swimming Competitions", "en": "Swimming Competitions", "it": "Gare di nuoto", "fr": "Comp\u00e9titions de natation", "en_UK": "Swimming Competitions", "es": "Competiciones de nataci\u00f3n", "zh": "\u6e38\u6cf3\u6bd4\u8d5b", "zh_HK": "\u6e38\u6cf3\u6bd4\u8cfd", "zh_TW": "\u6e38\u6cf3\u6bd4\u8cfd", "ja": "\u6c34\u6cf3\u5927\u4f1a", "zh_CN": "\u6e38\u6cf3\u6bd4\u8d5b", "da": "Sv\u00f8mmekonkurrencer", "nl": "Zwemwedstrijden" } }, { "tagId": 21766, "parentTagIds": [ 12040, 21912 ], "allNamesByLocale": { "de": "Snowboard-Wettbewerbe", "no": "Konkurranser i sn\u00f8brettkj\u00f8ring", "sv": "Snowboardt\u00e4vlingar", "pt": "Competi\u00e7\u00f5es de snowboard", "en_AU": "Snowboarding Competitions", "en": "Snowboarding Competitions", "it": "Gare di snowboard", "fr": "Comp\u00e9titions de snowboard", "en_UK": "Snowboarding Competitions", "es": "Competiciones de snowboard", "zh": "\u5355\u677f\u6ed1\u96ea\u7ade\u8d5b", "zh_HK": "\u55ae\u677f\u6ed1\u96ea\u7af6\u8cfd", "zh_TW": "\u6ed1\u96ea\u677f\u6bd4\u8cfd", "ja": "\u30b9\u30ce\u30fc\u30dc\u30fc\u30c9\u5927\u4f1a", "zh_CN": "\u5355\u677f\u6ed1\u96ea\u7ade\u8d5b", "da": "Snowboardkonkurrencer", "nl": "Snowboardwedstrijden" } }, { "tagId": 11966, "parentTagIds": [ 21442, 21909, 21715, 21913 ], "allNamesByLocale": { "de": "Fahrten im Glasbodenboot", "no": "B\u00e5tturer med glassbunn", "sv": "Rundturer med glasbottenb\u00e5t", "pt": "Passeios em barcos com fundo de vidro", "en_AU": "Glass Bottom Boat Tours", "en": "Glass Bottom Boat Tours", "it": "Escursioni in barca con il fondo in vetro", "fr": "Tours en bateau \u00e0 fond vitr\u00e9", "en_UK": "Glass Bottom Boat Tours", "es": "Paseos en barco con fondo de cristal", "zh": "\u73bb\u7483\u5e95\u5c0f\u8239\u6e38\u89c8", "zh_HK": "\u73bb\u7483\u8239\u65c5\u904a", "zh_TW": "\u73bb\u7483\u8239\u904a\u89bd", "ja": "\u30b0\u30e9\u30b9\u30dc\u30c8\u30e0\u30dc\u30fc\u30c8\u30c4\u30a2\u30fc", "zh_CN": "\u73bb\u7483\u5e95\u5c0f\u8239\u6e38\u89c8", "da": "Airboat-ture", "nl": "Tours in boot met glazen bodem" } }, { "tagId": 11965, "parentTagIds": [ 11890, 21911, 21442, 21909, 21701, 21913 ], "allNamesByLocale": { "de": "Bootstouren mit Abendessen", "no": "Middagscruise", "sv": "Middagskryssningar", "pt": "Cruzeiros com jantar", "en_AU": "Dinner Cruises", "en": "Dinner Cruises", "it": "Crociere con cena", "fr": "D\u00eeners-croisi\u00e8res", "en_UK": "Dinner Cruises", "es": "Cruceros con cena", "zh": "\u665a\u9910\u6e38\u89c8\u8239", "zh_HK": "\u665a\u9910\u90f5\u8f2a", "zh_TW": "\u665a\u9910\u90f5\u8f2a\u4e4b\u65c5", "ja": "\u30c7\u30a3\u30ca\u30fc\u30af\u30eb\u30fc\u30ba", "zh_CN": "\u665a\u9910\u6e38\u89c8\u8239", "da": "Sejlture med middag", "nl": "Dinercruises" } }, { "tagId": 11968, "parentTagIds": [ 21442, 21909, 21715, 21913 ], "allNamesByLocale": { "de": "Airboat-Touren", "no": "Luftb\u00e5t-turer", "sv": "Tr\u00e4skb\u00e5tsturer", "pt": "Passeios de aerobarco", "en_AU": "Airboat Tours", "en": "Airboat Tours", "it": "Gite in idroscivolante", "fr": "Circuits en hydroglisseur", "en_UK": "Airboat Tours", "es": "Recorridos en hidrodeslizador", "zh": "\u98de\u8247\u6e38\u89c8", "zh_HK": "\u6c7d\u8239\u65c5\u904a", "zh_TW": "\u6c7d\u8239\u904a\u89bd", "ja": "\u30a8\u30a2\u30dc\u30fc\u30c8\u30c4\u30a2\u30fc", "zh_CN": "\u98de\u8247\u6e38\u89c8", "da": "Luftb\u00e5dsture", "nl": "Moerasboottours" } }, { "tagId": 11967, "parentTagIds": [ 21442, 21909, 11890, 21911, 21701, 21913 ], "allNamesByLocale": { "de": "Bootstouren mit Brunch", "no": "Brunsjcruise", "sv": "Brunchkryssningar", "pt": "Cruzeiros com brunch", "en_AU": "Brunch Cruises", "en": "Brunch Cruises", "it": "Crociere con brunch", "fr": "Croisi\u00e8res brunch", "en_UK": "Brunch Cruises", "es": "Cruceros con brunch", "zh": "\u65e9\u5348\u9910\u6e38\u89c8\u8239", "zh_HK": "\u65e9\u5348\u9910\u90f5\u8f2a", "zh_TW": "\u65e9\u5348\u9910\u90f5\u8f2a\u4e4b\u65c5", "ja": "\u30d6\u30e9\u30f3\u30c1\u30af\u30eb\u30fc\u30ba", "zh_CN": "\u65e9\u5348\u9910\u6e38\u89c8\u8239", "da": "Sejlture med brunch", "nl": "Brunchcruises" } } ] } }, "products-booking-questions-example": { "summary": "/products/booking-questions", "value": { "bookingQuestions": [ { "legacyBookingQuestionId": 1, "id": "DATE_OF_BIRTH", "type": "DATE", "group": "PER_TRAVELER", "label": "Date of birth", "required": "MANDATORY", "maxLength": 100 }, { "legacyBookingQuestionId": 2, "id": "HEIGHT", "type": "NUMBER_AND_UNIT", "group": "PER_TRAVELER", "label": "Traveler height in feet or centimeters (required for safety reasons)", "units": [ "cm", "ft" ], "required": "MANDATORY", "maxLength": 50 }, { "legacyBookingQuestionId": 3, "id": "PASSPORT_EXPIRY", "type": "DATE", "group": "PER_TRAVELER", "label": "Passport expiration date", "required": "MANDATORY", "maxLength": 100 }, { "legacyBookingQuestionId": 4, "id": "PASSPORT_NATIONALITY", "type": "STRING", "group": "PER_TRAVELER", "label": "Passport country of issue", "hint": "E.g. Australia, China", "required": "MANDATORY", "maxLength": 255 }, { "legacyBookingQuestionId": 5, "id": "PASSPORT_PASSPORT_NO", "type": "STRING", "group": "PER_TRAVELER", "label": "Passport number", "hint": "E.g. 0123456, 6543210", "required": "MANDATORY", "maxLength": 255 }, { "legacyBookingQuestionId": 6, "id": "PICKUP_POINT", "type": "LOCATION_REF_OR_FREE_TEXT", "group": "PER_BOOKING", "label": "Hotel pickup", "hint": "E.g. 1234 Cedar Way, Brooklyn NY 00123", "units": [ "LOCATION_REFERENCE", "FREETEXT" ], "required": "CONDITIONAL", "maxLength": 1000 }, { "legacyBookingQuestionId": 7, "id": "TRANSFER_AIR_ARRIVAL_AIRLINE", "type": "STRING", "group": "PER_BOOKING", "label": "Name of arrival airline", "hint": "E.g. United Airlines", "required": "CONDITIONAL", "maxLength": 255 }, { "legacyBookingQuestionId": 8, "id": "TRANSFER_AIR_ARRIVAL_FLIGHT_NO", "type": "STRING", "group": "PER_BOOKING", "label": "Arrival flight number", "hint": "E.g. UA864", "required": "CONDITIONAL", "maxLength": 255 }, { "legacyBookingQuestionId": 9, "id": "TRANSFER_AIR_DEPARTURE_AIRLINE", "type": "STRING", "group": "PER_BOOKING", "label": "Name of departure airline", "hint": "E.g. United Airlines", "required": "CONDITIONAL", "maxLength": 255 }, { "legacyBookingQuestionId": 10, "id": "TRANSFER_AIR_DEPARTURE_FLIGHT_NO", "type": "STRING", "group": "PER_BOOKING", "label": "Departure flight number", "hint": "E.g. UA864", "required": "CONDITIONAL", "maxLength": 255 }, { "legacyBookingQuestionId": 11, "id": "TRANSFER_ARRIVAL_DROP_OFF", "type": "LOCATION_REF_OR_FREE_TEXT", "group": "PER_BOOKING", "label": "Dropoff address", "hint": "E.g. 1234 Cedar Way, Brooklyn NY 00123", "units": [ "LOCATION_REFERENCE", "FREETEXT" ], "required": "CONDITIONAL", "maxLength": 1000 }, { "legacyBookingQuestionId": 12, "id": "TRANSFER_ARRIVAL_TIME", "type": "TIME", "group": "PER_BOOKING", "label": "Arrival time", "required": "CONDITIONAL", "maxLength": 100 }, { "legacyBookingQuestionId": 13, "id": "TRANSFER_DEPARTURE_DATE", "type": "DATE", "group": "PER_BOOKING", "label": "Departure date", "required": "CONDITIONAL", "maxLength": 100 }, { "legacyBookingQuestionId": 14, "id": "TRANSFER_DEPARTURE_PICKUP", "type": "LOCATION_REF_OR_FREE_TEXT", "group": "PER_BOOKING", "label": "Pickup address", "hint": "E.g. 1234 Cedar Way, Brooklyn NY 00123", "units": [ "LOCATION_REFERENCE", "FREETEXT" ], "required": "CONDITIONAL", "maxLength": 1000 }, { "legacyBookingQuestionId": 15, "id": "TRANSFER_DEPARTURE_TIME", "type": "TIME", "group": "PER_BOOKING", "label": "Departure time", "required": "CONDITIONAL", "maxLength": 100 }, { "legacyBookingQuestionId": 16, "id": "TRANSFER_PORT_ARRIVAL_TIME", "type": "TIME", "group": "PER_BOOKING", "label": "Disembarkation time", "required": "CONDITIONAL", "maxLength": 100 }, { "legacyBookingQuestionId": 17, "id": "TRANSFER_PORT_CRUISE_SHIP", "type": "STRING", "group": "PER_BOOKING", "label": "Name of cruise ship", "hint": "E.g. Brilliance of the Seas", "required": "CONDITIONAL", "maxLength": 255 }, { "legacyBookingQuestionId": 18, "id": "TRANSFER_PORT_DEPARTURE_TIME", "type": "STRING", "group": "PER_BOOKING", "label": "Boarding time", "required": "CONDITIONAL", "maxLength": 100 }, { "legacyBookingQuestionId": 19, "id": "TRANSFER_RAIL_ARRIVAL_LINE", "type": "TIME", "group": "PER_BOOKING", "label": "Name of arrival rail provider", "hint": "E.g. Amtrak", "required": "CONDITIONAL", "maxLength": 255 }, { "legacyBookingQuestionId": 20, "id": "TRANSFER_RAIL_ARRIVAL_STATION", "type": "STRING", "group": "PER_BOOKING", "label": "Name of arrival station", "hint": "E.g. Central Station", "required": "CONDITIONAL", "maxLength": 255 }, { "legacyBookingQuestionId": 21, "id": "TRANSFER_RAIL_DEPARTURE_LINE", "type": "TIME", "group": "PER_BOOKING", "label": "Name of departure rail provider", "hint": "E.g. Amtrak", "required": "CONDITIONAL", "maxLength": 255 }, { "legacyBookingQuestionId": 22, "id": "TRANSFER_RAIL_DEPARTURE_STATION", "type": "STRING", "group": "PER_BOOKING", "label": "Name of departure station", "hint": "E.g. Central Station", "required": "CONDITIONAL", "maxLength": 255 }, { "legacyBookingQuestionId": 23, "id": "WEIGHT", "type": "NUMBER_AND_UNIT", "group": "PER_TRAVELER", "label": "Traveler weight in pounds or kilograms (required for safety reasons)", "units": [ "kg", "lbs" ], "required": "MANDATORY", "maxLength": 50 }, { "legacyBookingQuestionId": 24, "id": "FULL_NAMES_FIRST", "type": "STRING", "group": "PER_TRAVELER", "label": "First name", "required": "MANDATORY", "maxLength": 50 }, { "legacyBookingQuestionId": 25, "id": "FULL_NAMES_LAST", "type": "STRING", "group": "PER_TRAVELER", "label": "Last name", "required": "MANDATORY", "maxLength": 50 }, { "legacyBookingQuestionId": 26, "id": "DISEMBARKATION_TIME", "type": "TIME", "group": "PER_BOOKING", "label": "Disembarkation time", "required": "MANDATORY", "maxLength": 100 }, { "legacyBookingQuestionId": 27, "id": "SPECIAL_REQUIREMENTS", "type": "STRING", "group": "PER_BOOKING", "label": "Special requirements", "required": "OPTIONAL", "maxLength": 1000 }, { "legacyBookingQuestionId": 30, "id": "AGEBAND", "type": "STRING", "group": "PER_TRAVELER", "label": "Age band", "allowedAnswers": [ "ADULT", "SENIOR", "YOUTH", "CHILD", "INFANT", "TRAVELER" ], "required": "MANDATORY", "maxLength": 50 }, { "legacyBookingQuestionId": 31, "id": "TRANSFER_ARRIVAL_MODE", "type": "STRING", "group": "PER_BOOKING", "label": "Arrival mode", "allowedAnswers": [ "AIR", "RAIL", "SEA", "OTHER" ], "required": "MANDATORY", "maxLength": 50 }, { "legacyBookingQuestionId": 32, "id": "TRANSFER_DEPARTURE_MODE", "type": "STRING", "group": "PER_BOOKING", "label": "Departure mode", "allowedAnswers": [ "AIR", "RAIL", "SEA" ], "required": "MANDATORY", "maxLength": 50 } ] } }, "products-search-example-affiliates": { "summary": "Affiliates", "value": { "products": [ { "productCode": "62330P2", "title": "Private 4 Hour Tour of Edinburgh in a Spacious 6-seater Mercedes", "description": "During your private 4-Hour Tour soak up the amazing sights of both the Old and New Town of Edinburgh. You will be shown around in a comfortable and spacious vehicle by one of our experienced driver-guides. \n\nThis private tour is perfect for the visitor who has limited time and who wants to see all of the major attractions. You will have time to get\u00a0out, walk around and take photos and to learn about this beautiful medieval city from your\u00a0guide. \n\nOr perhaps, you are a visitor who simply wants a shorter tour to orientate yourself\u00a0to the layout of the city with hints and tips from your\u00a0guide on the best places to visit, eat and shop in your\u00a0own time. Here are just some of the places that you will be able to stop at on\u00a0your tour:\n\nEdinburgh Castle\n\nGrassmarket\n\nGreyfriars Bobby\n\nRoyal Mile\n\nSt Giles Cathedral\n\nMercat Cross\n\nPalace of Holyrood House\n\nArthur's Seat\n\nCalton Hill\n\nWalter Scott Monument\n\nNew Town\n\nDean Village", "images": [ { "imageSource": "SUPPLIER_PROVIDED", "caption": "Your Guide and Vehicle", "isCover": true, "variants": [ { "height": 50, "width": 50, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-50x50/06/71/ef/dc.jpg" }, { "height": 100, "width": 100, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-100x100/06/71/ef/dc.jpg" }, { "height": 200, "width": 200, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-200x200/06/71/ef/dc.jpg" }, { "height": 400, "width": 400, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-400x400/06/71/ef/dc.jpg" }, { "height": 40, "width": 60, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-60x40/06/71/ef/dc.jpg" }, { "height": 80, "width": 120, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-120x80/06/71/ef/dc.jpg" }, { "height": 120, "width": 180, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-180x120/06/71/ef/dc.jpg" }, { "height": 160, "width": 240, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-240x160/06/71/ef/dc.jpg" }, { "height": 240, "width": 360, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-360x240/06/71/ef/dc.jpg" }, { "height": 320, "width": 480, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-480x320/06/71/ef/dc.jpg" }, { "height": 360, "width": 540, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-540x360/06/71/ef/dc.jpg" }, { "height": 446, "width": 674, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-674x446/06/71/ef/dc.jpg" }, { "height": 480, "width": 720, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-720x480/06/71/ef/dc.jpg" }, { "height": 118, "width": 210, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-210x118/06/71/ef/dc.jpg" }, { "height": 75, "width": 75, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-75x75/06/71/ef/dc.jpg" }, { "height": 109, "width": 154, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-154x109/06/71/ef/dc.jpg" } ] } ], "reviews": { "sources": [ { "provider": "VIATOR", "totalCount": 9, "averageRating": 5 }, { "provider": "TRIPADVISOR", "totalCount": 44, "averageRating": 5 } ], "totalReviews": 53, "combinedAverageRating": 5 }, "duration": { "fixedDurationInMinutes": 240 }, "confirmationType": "INSTANT", "itineraryType": "STANDARD", "pricing": { "summary": { "fromPrice": 402.32, "fromPriceBeforeDiscount": 402.32 }, "currency": "USD" }, "productUrl": "https://shop.live.rc.viator.com/tours/Edinburgh/Private-4-Hour-Tour-of-Edinburgh-in-a-Spacious-6-seater-Mercedes/d739-62330P2?mcid=42383&pid=P00045135&medium=api&api_version=2.0", "destinations": [ { "ref": "739", "primary": true } ], "tags": [ 21946, 11930, 21956, 21951, 21955, 21960, 12029, 11938, 20757, 21952, 22083, 11929, 12028, 11941, 21972 ], "flags": [ "FREE_CANCELLATION", "PRIVATE_TOUR", "LIKELY_TO_SELL_OUT" ], "translationInfo": { "containsMachineTranslatedText": false, "translationSource": "ORIGINAL" } }, { "productCode": "196210P1", "title": "Award-winning circular cycle tour of Edinburgh! ", "description": "This is a cycle tour you won't find anywhere else. I shall take you where other tourists will not know about. There are other cycle tours in Edinburgh, but as I take small groups, you will be able to go at your own pace, ask as many questions as you like and take numerous photos without pressure of being rushed. This tour requires you to be able to cycle for a maximum distance of 20 miles with regular stops and at a slow -steady pace. This tour is not suitable for under 12 years. From Craigmillar Caste, to the stunning Dean Village, Leith and Portobello, you will be cycling through all the 'must-see' parts of Edinburgh that are off the tourist trail. E-bikes can be hired at an additional cost of \u00a315pp cash on the day. Please let me know if you would like this option. (If you think you would prefer a shorter tour, please check out our 'cycle tour to the coast' which is 12 miles, 3 hours)", "images": [ { "imageSource": "SUPPLIER_PROVIDED", "caption": "Foothills of Arthur's Seat, our extinct Volcano ", "isCover": true, "variants": [ { "height": 50, "width": 50, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-50x50/09/2a/19/47.jpg" }, { "height": 100, "width": 100, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-100x100/09/2a/19/47.jpg" }, { "height": 200, "width": 200, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-200x200/09/2a/19/47.jpg" }, { "height": 400, "width": 400, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-400x400/09/2a/19/47.jpg" }, { "height": 40, "width": 60, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-60x40/09/2a/19/47.jpg" }, { "height": 80, "width": 120, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-120x80/09/2a/19/47.jpg" }, { "height": 120, "width": 180, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-180x120/09/2a/19/47.jpg" }, { "height": 160, "width": 240, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-240x160/09/2a/19/47.jpg" }, { "height": 240, "width": 360, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-360x240/09/2a/19/47.jpg" }, { "height": 320, "width": 480, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-480x320/09/2a/19/47.jpg" }, { "height": 360, "width": 540, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-540x360/09/2a/19/47.jpg" }, { "height": 446, "width": 674, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-674x446/09/2a/19/47.jpg" }, { "height": 480, "width": 720, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-720x480/09/2a/19/47.jpg" }, { "height": 118, "width": 210, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-210x118/09/2a/19/47.jpg" }, { "height": 75, "width": 75, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-75x75/09/2a/19/47.jpg" }, { "height": 109, "width": 154, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-154x109/09/2a/19/47.jpg" } ] } ], "reviews": { "sources": [ { "provider": "VIATOR", "totalCount": 2, "averageRating": 5 }, { "provider": "TRIPADVISOR", "totalCount": 37, "averageRating": 5 } ], "totalReviews": 39, "combinedAverageRating": 5 }, "duration": { "fixedDurationInMinutes": 270 }, "confirmationType": "INSTANT", "itineraryType": "ACTIVITY", "pricing": { "summary": { "fromPrice": 87.89, "fromPriceBeforeDiscount": 87.89 }, "currency": "USD" }, "productUrl": "https://shop.live.rc.viator.com/tours/Edinburgh/The-Ultimate-cycle-tour-of-Edinburgh/d739-196210P1?mcid=42383&pid=P00045135&medium=api&api_version=2.0", "destinations": [ { "ref": "739", "primary": true } ], "tags": [ 21946, 22083, 12046, 21702, 21860, 21972, 11911 ], "flags": [ "FREE_CANCELLATION" ], "translationInfo": { "containsMachineTranslatedText": false, "translationSource": "ORIGINAL" } }, { "productCode": "196210P3", "title": "Award-winning cycle tour to Edinburgh's coast ", "description": "Leanne, your guide will ensure we go at your pace, ask as many questions as you like and enjoy the ride with your little ones, without the feeling of being rushed in a large group.\nLeanne can modify the route to suit your families' ability and the beauty of this ride is that is it mainly on dedicated cycle paths. This is a fun ride with the promise of an ice cream (or coffee!) on the beach or inside to warm up if in winter. It is a 10 mile round trip. \n", "images": [ { "imageSource": "SUPPLIER_PROVIDED", "caption": "", "isCover": true, "variants": [ { "height": 50, "width": 50, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-50x50/09/9c/63/39.jpg" }, { "height": 100, "width": 100, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-100x100/09/9c/63/39.jpg" }, { "height": 200, "width": 200, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-200x200/09/9c/63/39.jpg" }, { "height": 400, "width": 400, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-400x400/09/9c/63/39.jpg" }, { "height": 40, "width": 60, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-60x40/09/9c/63/39.jpg" }, { "height": 80, "width": 120, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-120x80/09/9c/63/39.jpg" }, { "height": 120, "width": 180, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-180x120/09/9c/63/39.jpg" }, { "height": 160, "width": 240, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-240x160/09/9c/63/39.jpg" }, { "height": 240, "width": 360, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-360x240/09/9c/63/39.jpg" }, { "height": 320, "width": 480, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-480x320/09/9c/63/39.jpg" }, { "height": 360, "width": 540, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-540x360/09/9c/63/39.jpg" }, { "height": 446, "width": 674, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-674x446/09/9c/63/39.jpg" }, { "height": 480, "width": 720, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-720x480/09/9c/63/39.jpg" }, { "height": 118, "width": 210, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-210x118/09/9c/63/39.jpg" }, { "height": 75, "width": 75, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-75x75/09/9c/63/39.jpg" }, { "height": 109, "width": 154, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-154x109/09/9c/63/39.jpg" } ] } ], "reviews": { "sources": [ { "provider": "VIATOR", "totalCount": 2, "averageRating": 5 }, { "provider": "TRIPADVISOR", "totalCount": 28, "averageRating": 5 } ], "totalReviews": 30, "combinedAverageRating": 5 }, "duration": { "fixedDurationInMinutes": 180 }, "confirmationType": "INSTANT", "itineraryType": "ACTIVITY", "pricing": { "summary": { "fromPrice": 71.8, "fromPriceBeforeDiscount": 71.8 }, "currency": "USD" }, "productUrl": "https://shop.live.rc.viator.com/tours/Edinburgh/Family-friendly-cycle-tour-to-Edinburghs-coast/d739-196210P3?mcid=42383&pid=P00045135&medium=api&api_version=2.0", "destinations": [ { "ref": "739", "primary": true } ], "tags": [ 21946, 22083, 12046, 21702, 21860, 21972, 11911 ], "flags": [ "FREE_CANCELLATION" ], "translationInfo": { "containsMachineTranslatedText": false, "translationSource": "ORIGINAL" } }, { "productCode": "3830P1", "title": "Small-Group 90-minute Tour in Greyfriars Kirkyard", "description": "Visit the graves of some of the lesser-known characters buried in Greyfriars Kirkyard, including the lecturer who taught Charles Darwin, the actor buried in full theatrical costume, and the First World War ace pilot.\n\nDid you know Greyfriars cemetery has links to golf, the moon ... and turnips? Who was the mysterious Miss Cathcart? Who was the man who fought a duel in London's Hyde Park? Where is the bestselling novelist from the 1770s buried? \n\nAlthough not our main focus, we will also point out the graves with links to Harry Potter on this fascinating walk around Greyfriars cemetery. No pesky ghosts interrupting! ", "images": [ { "imageSource": "SUPPLIER_PROVIDED", "caption": "", "isCover": true, "variants": [ { "height": 50, "width": 50, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-50x50/0b/d1/b6/d2.jpg" }, { "height": 100, "width": 100, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-100x100/0b/d1/b6/d2.jpg" }, { "height": 200, "width": 200, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-200x200/0b/d1/b6/d2.jpg" }, { "height": 400, "width": 400, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-400x400/0b/d1/b6/d2.jpg" }, { "height": 40, "width": 60, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-60x40/0b/d1/b6/d2.jpg" }, { "height": 80, "width": 120, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-120x80/0b/d1/b6/d2.jpg" }, { "height": 120, "width": 180, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-180x120/0b/d1/b6/d2.jpg" }, { "height": 160, "width": 240, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-240x160/0b/d1/b6/d2.jpg" }, { "height": 240, "width": 360, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-360x240/0b/d1/b6/d2.jpg" }, { "height": 320, "width": 480, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-480x320/0b/d1/b6/d2.jpg" }, { "height": 360, "width": 540, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-540x360/0b/d1/b6/d2.jpg" }, { "height": 446, "width": 674, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-674x446/0b/d1/b6/d2.jpg" }, { "height": 480, "width": 720, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-720x480/0b/d1/b6/d2.jpg" }, { "height": 118, "width": 210, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-210x118/0b/d1/b6/d2.jpg" }, { "height": 75, "width": 75, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-75x75/0b/d1/b6/d2.jpg" }, { "height": 109, "width": 154, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-154x109/0b/d1/b6/d2.jpg" } ] } ], "reviews": { "sources": [ { "provider": "TRIPADVISOR", "totalCount": 70, "averageRating": 5 } ], "totalReviews": 70, "combinedAverageRating": 4.9857144 }, "duration": { "fixedDurationInMinutes": 90 }, "confirmationType": "INSTANT", "itineraryType": "STANDARD", "pricing": { "summary": { "fromPrice": 18.57, "fromPriceBeforeDiscount": 18.57 }, "currency": "USD" }, "productUrl": "https://shop.live.rc.viator.com/tours/Edinburgh/Edinburgh-Greyfriars-Cemetery-Tour/d739-3830P1?mcid=42383&pid=P00045135&medium=api&api_version=2.0", "destinations": [ { "ref": "739", "primary": true } ], "tags": [ 21953, 21956, 22107, 21951, 12029, 21959, 21954, 21510, 21952, 12046, 21860, 12028, 21972 ], "flags": [ "FREE_CANCELLATION" ], "translationInfo": { "containsMachineTranslatedText": false, "translationSource": "ORIGINAL" } }, { "productCode": "195458P1", "title": "The Chocolatarium Chocolate Tour Experience in Edinburgh", "description": "A chocolate experience to remember! \n\nSee and touch the fruit of the chocolate tree, and learn all about how the beans are transformed into delicious chocolate.\n\nHave fun making your own Scottish-themed chocolate to take home! You can even make a chocolate Greyfriar's Bobby, a chocolate Nessie or a chocolate Edinburgh Castle!\n\nNext, come to the tasting room with a wide selection of chocolates from both Scottish and international chocolate makers. There are over 30 varieties to choose from including Haggis chocolate, Japanese chocolate, chilli chocolate, gin chocolate and many, many more. \n\nFinally, wrap your delicious chocolates to take home to enjoy or give as a gift.\n\nChocolate samples are provided throughout the tour. Vegan or milk-free options are available. \n\nSuitable for adults and children aged 6+.\n(Not suitable for children under 6)", "images": [ { "imageSource": "SUPPLIER_PROVIDED", "caption": "", "isCover": true, "variants": [ { "height": 50, "width": 50, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-50x50/0b/39/1c/ce.jpg" }, { "height": 100, "width": 100, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-100x100/0b/39/1c/ce.jpg" }, { "height": 200, "width": 200, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-200x200/0b/39/1c/ce.jpg" }, { "height": 400, "width": 400, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-400x400/0b/39/1c/ce.jpg" }, { "height": 40, "width": 60, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-60x40/0b/39/1c/ce.jpg" }, { "height": 80, "width": 120, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-120x80/0b/39/1c/ce.jpg" }, { "height": 120, "width": 180, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-180x120/0b/39/1c/ce.jpg" }, { "height": 160, "width": 240, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-240x160/0b/39/1c/ce.jpg" }, { "height": 240, "width": 360, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-360x240/0b/39/1c/ce.jpg" }, { "height": 320, "width": 480, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-480x320/0b/39/1c/ce.jpg" }, { "height": 360, "width": 540, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-540x360/0b/39/1c/ce.jpg" }, { "height": 446, "width": 674, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-674x446/0b/39/1c/ce.jpg" }, { "height": 480, "width": 720, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-720x480/0b/39/1c/ce.jpg" }, { "height": 118, "width": 210, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-210x118/0b/39/1c/ce.jpg" }, { "height": 75, "width": 75, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-75x75/0b/39/1c/ce.jpg" }, { "height": 109, "width": 154, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-154x109/0b/39/1c/ce.jpg" } ] } ], "reviews": { "sources": [ { "provider": "VIATOR", "totalCount": 119, "averageRating": 5 }, { "provider": "TRIPADVISOR", "totalCount": 1736, "averageRating": 5 } ], "totalReviews": 1855, "combinedAverageRating": 4.967116 }, "duration": { "fixedDurationInMinutes": 90 }, "confirmationType": "INSTANT", "itineraryType": "ACTIVITY", "pricing": { "summary": { "fromPrice": 27.23, "fromPriceBeforeDiscount": 27.23 }, "currency": "USD" }, "productUrl": "https://shop.live.rc.viator.com/tours/Edinburgh/The-Chocolatarium-Chocolate-Tour-Experience/d739-195458P1?mcid=42383&pid=P00045135&medium=api&api_version=2.0", "destinations": [ { "ref": "739", "primary": true } ], "tags": [ 21571, 20757, 20205, 22083, 11890, 21860, 21972, 22097 ], "flags": [ "FREE_CANCELLATION", "LIKELY_TO_SELL_OUT" ], "translationInfo": { "containsMachineTranslatedText": false, "translationSource": "ORIGINAL" } } ], "totalCount": 14 } }, "products-search-example-merchants": { "summary": "Merchants", "value": { "products": [ { "productCode": "62330P2", "title": "Private 4 Hour Tour of Edinburgh in a Spacious 6-seater Mercedes", "description": "During your private 4-Hour Tour soak up the amazing sights of both the Old and New Town of Edinburgh. You will be shown around in a comfortable and spacious vehicle by one of our experienced driver-guides. \n\nThis private tour is perfect for the visitor who has limited time and who wants to see all of the major attractions. You will have time to get\u00a0out, walk around and take photos and to learn about this beautiful medieval city from your\u00a0guide. \n\nOr perhaps, you are a visitor who simply wants a shorter tour to orientate yourself\u00a0to the layout of the city with hints and tips from your\u00a0guide on the best places to visit, eat and shop in your\u00a0own time. Here are just some of the places that you will be able to stop at on\u00a0your tour:\n\nEdinburgh Castle\n\nGrassmarket\n\nGreyfriars Bobby\n\nRoyal Mile\n\nSt Giles Cathedral\n\nMercat Cross\n\nPalace of Holyrood House\n\nArthur's Seat\n\nCalton Hill\n\nWalter Scott Monument\n\nNew Town\n\nDean Village", "images": [ { "imageSource": "SUPPLIER_PROVIDED", "caption": "Your Guide and Vehicle", "isCover": true, "variants": [ { "height": 50, "width": 50, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-50x50/06/71/ef/dc.jpg" }, { "height": 100, "width": 100, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-100x100/06/71/ef/dc.jpg" }, { "height": 200, "width": 200, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-200x200/06/71/ef/dc.jpg" }, { "height": 400, "width": 400, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-400x400/06/71/ef/dc.jpg" }, { "height": 40, "width": 60, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-60x40/06/71/ef/dc.jpg" }, { "height": 80, "width": 120, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-120x80/06/71/ef/dc.jpg" }, { "height": 120, "width": 180, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-180x120/06/71/ef/dc.jpg" }, { "height": 160, "width": 240, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-240x160/06/71/ef/dc.jpg" }, { "height": 240, "width": 360, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-360x240/06/71/ef/dc.jpg" }, { "height": 320, "width": 480, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-480x320/06/71/ef/dc.jpg" }, { "height": 360, "width": 540, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-540x360/06/71/ef/dc.jpg" }, { "height": 446, "width": 674, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-674x446/06/71/ef/dc.jpg" }, { "height": 480, "width": 720, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-720x480/06/71/ef/dc.jpg" }, { "height": 118, "width": 210, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-210x118/06/71/ef/dc.jpg" }, { "height": 75, "width": 75, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-75x75/06/71/ef/dc.jpg" }, { "height": 109, "width": 154, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-154x109/06/71/ef/dc.jpg" } ] } ], "reviews": { "sources": [ { "provider": "VIATOR", "totalCount": 9, "averageRating": 5 }, { "provider": "TRIPADVISOR", "totalCount": 44, "averageRating": 5 } ], "totalReviews": 53, "combinedAverageRating": 5 }, "duration": { "fixedDurationInMinutes": 240 }, "confirmationType": "INSTANT", "itineraryType": "STANDARD", "pricing": { "summary": { "fromPrice": 402.32, "fromPriceBeforeDiscount": 402.32 }, "partnerNetFromPrice": 317.5, "currency": "USD" }, "destinations": [ { "ref": "739", "primary": true } ], "tags": [ 21946, 11930, 21956, 21951, 21955, 21960, 12029, 11938, 20757, 21952, 22083, 11929, 12028, 11941, 21972 ], "flags": [ "FREE_CANCELLATION", "PRIVATE_TOUR", "LIKELY_TO_SELL_OUT" ], "translationInfo": { "containsMachineTranslatedText": false, "translationSource": "ORIGINAL" } }, { "productCode": "196210P1", "title": "Award-winning circular cycle tour of Edinburgh! ", "description": "This is a cycle tour you won't find anywhere else. I shall take you where other tourists will not know about. There are other cycle tours in Edinburgh, but as I take small groups, you will be able to go at your own pace, ask as many questions as you like and take numerous photos without pressure of being rushed. This tour requires you to be able to cycle for a maximum distance of 20 miles with regular stops and at a slow -steady pace. This tour is not suitable for under 12 years. From Craigmillar Caste, to the stunning Dean Village, Leith and Portobello, you will be cycling through all the 'must-see' parts of Edinburgh that are off the tourist trail. E-bikes can be hired at an additional cost of \u00a315pp cash on the day. Please let me know if you would like this option. (If you think you would prefer a shorter tour, please check out our 'cycle tour to the coast' which is 12 miles, 3 hours)", "images": [ { "imageSource": "SUPPLIER_PROVIDED", "caption": "Foothills of Arthur's Seat, our extinct Volcano ", "isCover": true, "variants": [ { "height": 50, "width": 50, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-50x50/09/2a/19/47.jpg" }, { "height": 100, "width": 100, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-100x100/09/2a/19/47.jpg" }, { "height": 200, "width": 200, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-200x200/09/2a/19/47.jpg" }, { "height": 400, "width": 400, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-400x400/09/2a/19/47.jpg" }, { "height": 40, "width": 60, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-60x40/09/2a/19/47.jpg" }, { "height": 80, "width": 120, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-120x80/09/2a/19/47.jpg" }, { "height": 120, "width": 180, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-180x120/09/2a/19/47.jpg" }, { "height": 160, "width": 240, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-240x160/09/2a/19/47.jpg" }, { "height": 240, "width": 360, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-360x240/09/2a/19/47.jpg" }, { "height": 320, "width": 480, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-480x320/09/2a/19/47.jpg" }, { "height": 360, "width": 540, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-540x360/09/2a/19/47.jpg" }, { "height": 446, "width": 674, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-674x446/09/2a/19/47.jpg" }, { "height": 480, "width": 720, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-720x480/09/2a/19/47.jpg" }, { "height": 118, "width": 210, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-210x118/09/2a/19/47.jpg" }, { "height": 75, "width": 75, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-75x75/09/2a/19/47.jpg" }, { "height": 109, "width": 154, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-154x109/09/2a/19/47.jpg" } ] } ], "reviews": { "sources": [ { "provider": "VIATOR", "totalCount": 2, "averageRating": 5 }, { "provider": "TRIPADVISOR", "totalCount": 37, "averageRating": 5 } ], "totalReviews": 39, "combinedAverageRating": 5 }, "duration": { "fixedDurationInMinutes": 270 }, "confirmationType": "INSTANT", "itineraryType": "ACTIVITY", "pricing": { "summary": { "fromPrice": 87.89, "fromPriceBeforeDiscount": 87.89 }, "partnerNetFromPrice": 72.08, "currency": "USD" }, "destinations": [ { "ref": "739", "primary": true } ], "tags": [ 21946, 22083, 12046, 21702, 21860, 21972, 11911 ], "flags": [ "FREE_CANCELLATION" ], "translationInfo": { "containsMachineTranslatedText": false, "translationSource": "ORIGINAL" } }, { "productCode": "196210P3", "title": "Award-winning cycle tour to Edinburgh's coast ", "description": "Leanne, your guide will ensure we go at your pace, ask as many questions as you like and enjoy the ride with your little ones, without the feeling of being rushed in a large group.\nLeanne can modify the route to suit your families' ability and the beauty of this ride is that is it mainly on dedicated cycle paths. This is a fun ride with the promise of an ice cream (or coffee!) on the beach or inside to warm up if in winter. It is a 10 mile round trip. \n", "images": [ { "imageSource": "SUPPLIER_PROVIDED", "caption": "", "isCover": true, "variants": [ { "height": 50, "width": 50, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-50x50/09/9c/63/39.jpg" }, { "height": 100, "width": 100, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-100x100/09/9c/63/39.jpg" }, { "height": 200, "width": 200, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-200x200/09/9c/63/39.jpg" }, { "height": 400, "width": 400, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-400x400/09/9c/63/39.jpg" }, { "height": 40, "width": 60, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-60x40/09/9c/63/39.jpg" }, { "height": 80, "width": 120, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-120x80/09/9c/63/39.jpg" }, { "height": 120, "width": 180, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-180x120/09/9c/63/39.jpg" }, { "height": 160, "width": 240, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-240x160/09/9c/63/39.jpg" }, { "height": 240, "width": 360, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-360x240/09/9c/63/39.jpg" }, { "height": 320, "width": 480, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-480x320/09/9c/63/39.jpg" }, { "height": 360, "width": 540, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-540x360/09/9c/63/39.jpg" }, { "height": 446, "width": 674, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-674x446/09/9c/63/39.jpg" }, { "height": 480, "width": 720, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-720x480/09/9c/63/39.jpg" }, { "height": 118, "width": 210, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-210x118/09/9c/63/39.jpg" }, { "height": 75, "width": 75, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-75x75/09/9c/63/39.jpg" }, { "height": 109, "width": 154, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-154x109/09/9c/63/39.jpg" } ] } ], "reviews": { "sources": [ { "provider": "VIATOR", "totalCount": 2, "averageRating": 5 }, { "provider": "TRIPADVISOR", "totalCount": 28, "averageRating": 5 } ], "totalReviews": 30, "combinedAverageRating": 5 }, "duration": { "fixedDurationInMinutes": 180 }, "confirmationType": "INSTANT", "itineraryType": "ACTIVITY", "pricing": { "summary": { "fromPrice": 71.8, "fromPriceBeforeDiscount": 71.8 }, "partnerNetFromPrice": 58.88, "currency": "USD" }, "destinations": [ { "ref": "739", "primary": true } ], "tags": [ 21946, 22083, 12046, 21702, 21860, 21972, 11911 ], "flags": [ "FREE_CANCELLATION" ], "translationInfo": { "containsMachineTranslatedText": false, "translationSource": "ORIGINAL" } }, { "productCode": "3830P1", "title": "Small-Group 90-minute Tour in Greyfriars Kirkyard", "description": "Visit the graves of some of the lesser-known characters buried in Greyfriars Kirkyard, including the lecturer who taught Charles Darwin, the actor buried in full theatrical costume, and the First World War ace pilot.\n\nDid you know Greyfriars cemetery has links to golf, the moon ... and turnips? Who was the mysterious Miss Cathcart? Who was the man who fought a duel in London's Hyde Park? Where is the bestselling novelist from the 1770s buried? \n\nAlthough not our main focus, we will also point out the graves with links to Harry Potter on this fascinating walk around Greyfriars cemetery. No pesky ghosts interrupting! ", "images": [ { "imageSource": "SUPPLIER_PROVIDED", "caption": "", "isCover": true, "variants": [ { "height": 50, "width": 50, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-50x50/0b/d1/b6/d2.jpg" }, { "height": 100, "width": 100, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-100x100/0b/d1/b6/d2.jpg" }, { "height": 200, "width": 200, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-200x200/0b/d1/b6/d2.jpg" }, { "height": 400, "width": 400, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-400x400/0b/d1/b6/d2.jpg" }, { "height": 40, "width": 60, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-60x40/0b/d1/b6/d2.jpg" }, { "height": 80, "width": 120, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-120x80/0b/d1/b6/d2.jpg" }, { "height": 120, "width": 180, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-180x120/0b/d1/b6/d2.jpg" }, { "height": 160, "width": 240, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-240x160/0b/d1/b6/d2.jpg" }, { "height": 240, "width": 360, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-360x240/0b/d1/b6/d2.jpg" }, { "height": 320, "width": 480, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-480x320/0b/d1/b6/d2.jpg" }, { "height": 360, "width": 540, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-540x360/0b/d1/b6/d2.jpg" }, { "height": 446, "width": 674, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-674x446/0b/d1/b6/d2.jpg" }, { "height": 480, "width": 720, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-720x480/0b/d1/b6/d2.jpg" }, { "height": 118, "width": 210, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-210x118/0b/d1/b6/d2.jpg" }, { "height": 75, "width": 75, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-75x75/0b/d1/b6/d2.jpg" }, { "height": 109, "width": 154, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-154x109/0b/d1/b6/d2.jpg" } ] } ], "reviews": { "sources": [ { "provider": "TRIPADVISOR", "totalCount": 70, "averageRating": 5 } ], "totalReviews": 70, "combinedAverageRating": 4.9857144 }, "duration": { "fixedDurationInMinutes": 90 }, "confirmationType": "INSTANT", "itineraryType": "STANDARD", "pricing": { "summary": { "fromPrice": 18.57, "fromPriceBeforeDiscount": 18.57 }, "partnerNetFromPrice": 14.64, "currency": "USD" }, "destinations": [ { "ref": "739", "primary": true } ], "tags": [ 21953, 21956, 22107, 21951, 12029, 21959, 21954, 21510, 21952, 12046, 21860, 12028, 21972 ], "flags": [ "FREE_CANCELLATION" ], "translationInfo": { "containsMachineTranslatedText": false, "translationSource": "ORIGINAL" } }, { "productCode": "195458P1", "title": "The Chocolatarium Chocolate Tour Experience in Edinburgh", "description": "A chocolate experience to remember! \n\nSee and touch the fruit of the chocolate tree, and learn all about how the beans are transformed into delicious chocolate.\n\nHave fun making your own Scottish-themed chocolate to take home! You can even make a chocolate Greyfriar's Bobby, a chocolate Nessie or a chocolate Edinburgh Castle!\n\nNext, come to the tasting room with a wide selection of chocolates from both Scottish and international chocolate makers. There are over 30 varieties to choose from including Haggis chocolate, Japanese chocolate, chilli chocolate, gin chocolate and many, many more. \n\nFinally, wrap your delicious chocolates to take home to enjoy or give as a gift.\n\nChocolate samples are provided throughout the tour. Vegan or milk-free options are available. \n\nSuitable for adults and children aged 6+.\n(Not suitable for children under 6)", "images": [ { "imageSource": "SUPPLIER_PROVIDED", "caption": "", "isCover": true, "variants": [ { "height": 50, "width": 50, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-50x50/0b/39/1c/ce.jpg" }, { "height": 100, "width": 100, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-100x100/0b/39/1c/ce.jpg" }, { "height": 200, "width": 200, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-200x200/0b/39/1c/ce.jpg" }, { "height": 400, "width": 400, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-400x400/0b/39/1c/ce.jpg" }, { "height": 40, "width": 60, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-60x40/0b/39/1c/ce.jpg" }, { "height": 80, "width": 120, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-120x80/0b/39/1c/ce.jpg" }, { "height": 120, "width": 180, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-180x120/0b/39/1c/ce.jpg" }, { "height": 160, "width": 240, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-240x160/0b/39/1c/ce.jpg" }, { "height": 240, "width": 360, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-360x240/0b/39/1c/ce.jpg" }, { "height": 320, "width": 480, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-480x320/0b/39/1c/ce.jpg" }, { "height": 360, "width": 540, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-540x360/0b/39/1c/ce.jpg" }, { "height": 446, "width": 674, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-674x446/0b/39/1c/ce.jpg" }, { "height": 480, "width": 720, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-720x480/0b/39/1c/ce.jpg" }, { "height": 118, "width": 210, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-210x118/0b/39/1c/ce.jpg" }, { "height": 75, "width": 75, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-75x75/0b/39/1c/ce.jpg" }, { "height": 109, "width": 154, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-154x109/0b/39/1c/ce.jpg" } ] } ], "reviews": { "sources": [ { "provider": "VIATOR", "totalCount": 119, "averageRating": 5 }, { "provider": "TRIPADVISOR", "totalCount": 1736, "averageRating": 5 } ], "totalReviews": 1855, "combinedAverageRating": 4.967116 }, "duration": { "fixedDurationInMinutes": 90 }, "confirmationType": "INSTANT", "itineraryType": "ACTIVITY", "pricing": { "summary": { "fromPrice": 27.23, "fromPriceBeforeDiscount": 27.23 }, "partnerNetFromPrice": 22.62, "currency": "USD" }, "destinations": [ { "ref": "739", "primary": true } ], "tags": [ 21571, 20757, 20205, 22083, 11890, 21860, 21972, 22097 ], "flags": [ "FREE_CANCELLATION", "LIKELY_TO_SELL_OUT" ], "translationInfo": { "containsMachineTranslatedText": false, "translationSource": "ORIGINAL" } } ], "totalCount": 14 } }, "products-search-example-extra-charges": { "summary": "ExtraCharges", "value": { "products": [ { "productCode": "128216P66", "title": "4-Days Nile Cruise From Aswan To Luxor including Abu Simbel and Hot Air Balloon", "description": "The Beauty of Egypt Upper Nile Valley, is best appreciated from the deck of a Nile Cruise ship. Enjoy the riverside scenery and discover the ancient wonders of Egypt passing by pharaonic sites en route between Aswan and Luxor. Explore the highlights of the sightseeing in Luxor and Aswan, two stops in the way to visit the pharaonic sites of interest such as; Kom Ombo and Edfu Temples. Discover one of the most impressive temples in Egypt by visiting Abu Simbel 285 km south of Aswan. Experience the exciting trip of the Hot Air Balloon in Luxor. Have fun and enjoy plenty of night entertainments of the belly dancing show, galabiya party, Nubian show or disco and more.", "images": [ { "imageSource": "SUPPLIER_PROVIDED", "caption": "", "isCover": true, "variants": [ { "height": 50, "width": 50, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-50x50/0b/9b/c9/c9.jpg" }, { "height": 100, "width": 100, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-100x100/0b/9b/c9/c9.jpg" }, { "height": 200, "width": 200, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-200x200/0b/9b/c9/c9.jpg" }, { "height": 400, "width": 400, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-400x400/0b/9b/c9/c9.jpg" }, { "height": 40, "width": 60, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-60x40/0b/9b/c9/c9.jpg" }, { "height": 80, "width": 120, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-120x80/0b/9b/c9/c9.jpg" }, { "height": 120, "width": 180, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-180x120/0b/9b/c9/c9.jpg" }, { "height": 160, "width": 240, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-240x160/0b/9b/c9/c9.jpg" }, { "height": 240, "width": 360, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-360x240/0b/9b/c9/c9.jpg" }, { "height": 320, "width": 480, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-480x320/0b/9b/c9/c9.jpg" }, { "height": 360, "width": 540, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-540x360/0b/9b/c9/c9.jpg" }, { "height": 446, "width": 674, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-674x446/0b/9b/c9/c9.jpg" }, { "height": 480, "width": 720, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-720x480/0b/9b/c9/c9.jpg" }, { "height": 118, "width": 210, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-210x118/0b/9b/c9/c9.jpg" }, { "height": 75, "width": 75, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-75x75/0b/9b/c9/c9.jpg" }, { "height": 109, "width": 154, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-154x109/0b/9b/c9/c9.jpg" } ] } ], "reviews": { "sources": [ { "provider": "VIATOR", "totalCount": 903, "averageRating": 4.7 }, { "provider": "TRIPADVISOR", "totalCount": 1857, "averageRating": 4.8 } ], "totalReviews": 2760, "combinedAverageRating": 4.7710147 }, "duration": { "fixedDurationInMinutes": 5760 }, "confirmationType": "INSTANT", "itineraryType": "MULTI_DAY_TOUR", "pricing": { "summary": { "fromPrice": 570.56, "fromPriceBeforeDiscount": 570.56 }, "extraChargesSummary": { "fromPrice": 579.98, "extraCharges": 9.42 }, "currency": "AUD" }, "productUrl": "https://shop.live.int.viator.com/tours/Aswan/04-Days-03-Nights-Nile-Cruise-from-Aswan-to-Luxor/d796-128216P66?mcid=42383&pid=P00108950&medium=api&api_version=2.0", "destinations": [ { "ref": "796", "primary": true } ], "tags": [ 12029, 22046, 12011, 22169, 12027, 22170, 11922, 12028, 12083, 20255, 21972 ], "flags": [ "FREE_CANCELLATION" ], "translationInfo": { "containsMachineTranslatedText": false, "translationSource": "ORIGINAL" } } ], "totalCount": 1 } }, "search-freetext-example": { "summary": "/search/freetext", "value": { "destinations": { "totalCount": 1, "results": [ { "id": 50762, "name": "Big Bear", "parentDestinationId": 272, "parentDestinationName": "California", "translationInfo": { "containsMachineTranslatedText": false } } ] }, "attractions": { "totalCount": 1174, "results": [ { "id": 10674, "name": "Big Sur", "primaryDestinationId": 5250, "description": "

Big Sur, a stunning 71-mile (114-kilometer) stretch of California\u2019s Central Coast, boasts epic views of the mighty Pacific and jagged, dramatic coastline. Running from the Carmel Highlands to San Simeon, the unincorporated area is very lightly populated\u2014in fact it\u2019s the longest stretch of undeveloped coastline in the lower United States.

", "destinationName": "Monterey & Carmel", "productsCount": 41, "translationInfo": { "containsMachineTranslatedText": false }, "reviews": { "sources": [ { "provider": "VIATOR", "reviewCounts": [ { "rating": 1, "count": 3 }, { "rating": 2, "count": 1 }, { "rating": 3, "count": 0 }, { "rating": 4, "count": 4 }, { "rating": 5, "count": 9 } ], "totalCount": 17, "averageRating": 3.882353 } ], "reviewCountTotals": [ { "rating": 1, "count": 3 }, { "rating": 2, "count": 1 }, { "rating": 3, "count": 0 }, { "rating": 4, "count": 4 }, { "rating": 5, "count": 9 } ], "totalReviews": 17, "combinedAverageRating": 3.882353 }, "images": [ { "imageSource": "SUPPLIER_PROVIDED", "isCover": true, "variants": [ { "height": 800, "width": 3200, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-content--1x-1/0b/27/ac/ce.jpg" }, { "height": 400, "width": 1600, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-content--1x-1/0b/27/ac/ce.jpg" }, { "height": 720, "width": 1200, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-content--1x-1/0b/27/ac/ce.jpg" }, { "height": 248, "width": 414, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-content--1x-1/0b/27/ac/ce.jpg" }, { "height": 50, "width": 50, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-50x50/0b/27/ac/d0.jpg" }, { "height": 100, "width": 100, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-100x100/0b/27/ac/d0.jpg" }, { "height": 200, "width": 200, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-200x200/0b/27/ac/d0.jpg" }, { "height": 400, "width": 400, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-400x400/0b/27/ac/d0.jpg" }, { "height": 40, "width": 60, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-60x40/0b/27/ac/d0.jpg" }, { "height": 80, "width": 120, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-120x80/0b/27/ac/d0.jpg" }, { "height": 120, "width": 180, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-180x120/0b/27/ac/d0.jpg" }, { "height": 160, "width": 240, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-240x160/0b/27/ac/d0.jpg" }, { "height": 240, "width": 360, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-360x240/0b/27/ac/d0.jpg" }, { "height": 320, "width": 480, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-480x320/0b/27/ac/d0.jpg" }, { "height": 360, "width": 540, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-540x360/0b/27/ac/d0.jpg" }, { "height": 446, "width": 674, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-674x446/0b/27/ac/d0.jpg" }, { "height": 480, "width": 720, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-720x480/0b/27/ac/d0.jpg" }, { "height": 118, "width": 210, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-210x118/0b/27/ac/d0.jpg" }, { "height": 75, "width": 75, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-75x75/0b/27/ac/d0.jpg" }, { "height": 109, "width": 154, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-154x109/0b/27/ac/d0.jpg" } ] } ] } ] }, "products": { "totalCount": 184, "results": [ { "productCode": "318847P2", "title": "Sunset Cruise & Manta Night Snorkeling Charter", "description": "You enjoy sunset cruising, and then, You enjoy the world famous Manta ray night snorkeling by private charter on our comfortable Luxury boat. It will be a wonderful and unforgettable experience of your life!", "images": [ { "imageSource": "SUPPLIER_PROVIDED", "caption": "", "isCover": true, "variants": [ { "height": 50, "width": 50, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-50x50/0c/0c/0a/16.jpg" }, { "height": 100, "width": 100, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-100x100/0c/0c/0a/16.jpg" }, { "height": 200, "width": 200, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-200x200/0c/0c/0a/16.jpg" }, { "height": 400, "width": 400, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-400x400/0c/0c/0a/16.jpg" }, { "height": 40, "width": 60, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-60x40/0c/0c/0a/16.jpg" }, { "height": 80, "width": 120, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-120x80/0c/0c/0a/16.jpg" }, { "height": 120, "width": 180, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-180x120/0c/0c/0a/16.jpg" }, { "height": 160, "width": 240, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-240x160/0c/0c/0a/16.jpg" }, { "height": 240, "width": 360, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-360x240/0c/0c/0a/16.jpg" }, { "height": 320, "width": 480, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-480x320/0c/0c/0a/16.jpg" }, { "height": 360, "width": 540, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-540x360/0c/0c/0a/16.jpg" }, { "height": 446, "width": 674, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-674x446/0c/0c/0a/16.jpg" }, { "height": 480, "width": 720, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-720x480/0c/0c/0a/16.jpg" }, { "height": 118, "width": 210, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-210x118/0c/0c/0a/16.jpg" }, { "height": 75, "width": 75, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-75x75/0c/0c/0a/16.jpg" }, { "height": 109, "width": 154, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-154x109/0c/0c/0a/16.jpg" } ] } ], "reviews": { "sources": [ { "provider": "TRIPADVISOR", "totalCount": 1, "averageRating": 5 } ], "totalReviews": 1, "combinedAverageRating": 5 }, "duration": { "fixedDurationInMinutes": 180 }, "confirmationType": "INSTANT", "itineraryType": "ACTIVITY", "pricing": { "summary": { "fromPrice": 990, "fromPriceBeforeDiscount": 990 }, "partnerNetFromPrice": 822.39, "currency": "USD" }, "destinations": [ { "ref": "669", "primary": true } ], "tags": [ 21956, 21951, 21949, 22049, 21959, 21954, 22144, 21464, 20757, 21442, 11912, 21952, 22083, 12052 ], "flags": [ "FREE_CANCELLATION", "PRIVATE_TOUR", "LIKELY_TO_SELL_OUT" ], "translationInfo": { "containsMachineTranslatedText": false, "translationSource": "ORIGINAL" } }, { "productCode": "35441P11", "title": "Jackson Hole & Grand Teton Park - Full-Day Wildlife Tour", "description": "Join us for an Amazing day in Jackson Hole as we explore\u00a0the\u00a0wildlife\u00a0sweet\u00a0spots\u00a0of\u00a0the\u00a0area to\u00a0search for Elk,\u00a0Big\u00a0Horn\u00a0Sheep,\u00a0Moose,\u00a0Bison,\u00a0Bald\u00a0Eagles,\u00a0Coyotes,\u00a0Foxes\u00a0and\u00a0maybe\u00a0more!\u00a0 Your guide will pick you up in one of our tall, comfortable vans or SUVs at 8:00am from your lodging in Teton\u00a0Village or the Town of Jackson,\u00a0WY and\u00a0drop you back off around\u00a04:00pm.\u00a0 Your\u00a0guide\u00a0will\u00a0educate\u00a0you\u00a0on\u00a0the\u00a0many\u00a0features\u00a0of\u00a0the\u00a0area\u00a0including\u00a0the\u00a0history,\u00a0wildlife\u00a0&\u00a0more.\n\nCost\u00a0includes:\u00a0\u00a0Transportation,\u00a0Tour\u00a0Guide,\u00a0Light\u00a0Breakfast, Lunch, Park\u00a0Entry\u00a0Fee, Elk Refuge Sleigh Ride (Dec 15-Apr 5) and\u00a0use\u00a0of\u00a0Binoculars.\u00a0\u00a0Guide\u00a0gratuity\u00a0not\u00a0included.\u00a0", "images": [ { "imageSource": "SUPPLIER_PROVIDED", "caption": "", "isCover": true, "variants": [ { "height": 50, "width": 50, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-50x50/0b/9b/c1/b3.jpg" }, { "height": 100, "width": 100, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-100x100/0b/9b/c1/b3.jpg" }, { "height": 200, "width": 200, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-200x200/0b/9b/c1/b3.jpg" }, { "height": 400, "width": 400, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-400x400/0b/9b/c1/b3.jpg" }, { "height": 40, "width": 60, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-60x40/0b/9b/c1/b3.jpg" }, { "height": 80, "width": 120, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-120x80/0b/9b/c1/b3.jpg" }, { "height": 120, "width": 180, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-180x120/0b/9b/c1/b3.jpg" }, { "height": 160, "width": 240, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-240x160/0b/9b/c1/b3.jpg" }, { "height": 240, "width": 360, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-360x240/0b/9b/c1/b3.jpg" }, { "height": 320, "width": 480, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-480x320/0b/9b/c1/b3.jpg" }, { "height": 360, "width": 540, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-540x360/0b/9b/c1/b3.jpg" }, { "height": 446, "width": 674, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-674x446/0b/9b/c1/b3.jpg" }, { "height": 480, "width": 720, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-720x480/0b/9b/c1/b3.jpg" }, { "height": 118, "width": 210, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-210x118/0b/9b/c1/b3.jpg" }, { "height": 75, "width": 75, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-75x75/0b/9b/c1/b3.jpg" }, { "height": 109, "width": 154, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-154x109/0b/9b/c1/b3.jpg" } ] } ], "reviews": { "sources": [ { "provider": "TRIPADVISOR", "totalCount": 3, "averageRating": 5 } ], "totalReviews": 3, "combinedAverageRating": 5 }, "duration": { "fixedDurationInMinutes": 480 }, "confirmationType": "INSTANT", "itineraryType": "UNSTRUCTURED", "pricing": { "summary": { "fromPrice": 975, "fromPriceBeforeDiscount": 975 }, "partnerNetFromPrice": 809.93, "currency": "USD" }, "destinations": [ { "ref": "51006", "primary": true } ], "tags": [ 12029, 21946, 20757, 22083, 21860, 12028 ], "flags": [ "LIKELY_TO_SELL_OUT" ], "translationInfo": { "containsMachineTranslatedText": false, "translationSource": "ORIGINAL" } }, { "productCode": "30433P3", "title": "Kona Sport-Fishing Private Charter - 6 Hours", "description": "Enjoy 6 hours out on the water off the Kona Coast on this private chartered fishing and boating excursion. Sit back, relax and drink in the amazing blue scenery or, pole in hands, wait to hopefully catch a big one. All fishing equipment is complimentary so it doesn't matter if you're a beginner or an expert. Not into fishing? Then request a fishing and snorkeling combo which makes for a fun-family excursion.", "images": [ { "imageSource": "SUPPLIER_PROVIDED", "caption": "Mahimahi", "isCover": true, "variants": [ { "height": 50, "width": 50, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-50x50/06/e5/a5/4e.jpg" }, { "height": 100, "width": 100, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-100x100/06/e5/a5/4e.jpg" }, { "height": 200, "width": 200, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-200x200/06/e5/a5/4e.jpg" }, { "height": 400, "width": 400, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-400x400/06/e5/a5/4e.jpg" }, { "height": 40, "width": 60, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-60x40/06/e5/a5/4e.jpg" }, { "height": 80, "width": 120, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-120x80/06/e5/a5/4e.jpg" }, { "height": 120, "width": 180, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-180x120/06/e5/a5/4e.jpg" }, { "height": 160, "width": 240, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-240x160/06/e5/a5/4e.jpg" }, { "height": 240, "width": 360, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-360x240/06/e5/a5/4e.jpg" }, { "height": 320, "width": 480, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-480x320/06/e5/a5/4e.jpg" }, { "height": 360, "width": 540, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-540x360/06/e5/a5/4e.jpg" }, { "height": 446, "width": 674, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-674x446/06/e5/a5/4e.jpg" }, { "height": 480, "width": 720, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-720x480/06/e5/a5/4e.jpg" }, { "height": 118, "width": 210, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-210x118/06/e5/a5/4e.jpg" }, { "height": 75, "width": 75, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-75x75/06/e5/a5/4e.jpg" }, { "height": 109, "width": 154, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-154x109/06/e5/a5/4e.jpg" } ] } ], "reviews": { "sources": [ { "provider": "VIATOR", "totalCount": 1, "averageRating": 5 }, { "provider": "TRIPADVISOR", "totalCount": 19, "averageRating": 4 } ], "totalReviews": 20, "combinedAverageRating": 4.2 }, "duration": { "fixedDurationInMinutes": 360 }, "confirmationType": "INSTANT", "itineraryType": "STANDARD", "pricing": { "summary": { "fromPrice": 969.41, "fromPriceBeforeDiscount": 969.41 }, "partnerNetFromPrice": 774.31, "currency": "USD" }, "destinations": [ { "ref": "669", "primary": true } ], "tags": [ 21946, 20757, 11889, 22083, 11929, 11941, 20255 ], "flags": [ "FREE_CANCELLATION", "PRIVATE_TOUR", "LIKELY_TO_SELL_OUT" ], "translationInfo": { "containsMachineTranslatedText": false, "translationSource": "ORIGINAL" } } ] } } }, "search-freetext-extra-charges-example": { "summary": "/search/freetext - ExtraCharges", "value": { "destinations": { "totalCount": 1, "results": [ { "id": 50204, "name": "Abu Simbel", "parentDestinationId": 722, "parentDestinationName": "Egypt", "translationInfo": { "containsMachineTranslatedText": false, "translationSource": "ORIGINAL" }, "url": "https://shop.live.int.viator.com/x/d50204-ttd?mcid=42383&pid=P00108950&medium=api&api_version=2.0" } ] }, "attractions": { "totalCount": 0 }, "products": { "totalCount": 185, "results": [ { "productCode": "128216P66", "title": "4-Days Nile Cruise From Aswan To Luxor including Abu Simbel and Hot Air Balloon", "description": "The Beauty of Egypt Upper Nile Valley, is best appreciated from the deck of a Nile Cruise ship. Enjoy the riverside scenery and discover the ancient wonders of Egypt passing by pharaonic sites en route between Aswan and Luxor. Explore the highlights of the sightseeing in Luxor and Aswan, two stops in the way to visit the pharaonic sites of interest such as; Kom Ombo and Edfu Temples. Discover one of the most impressive temples in Egypt by visiting Abu Simbel 285 km south of Aswan. Experience the exciting trip of the Hot Air Balloon in Luxor. Have fun and enjoy plenty of night entertainments of the belly dancing show, galabiya party, Nubian show or disco and more.", "images": [ { "imageSource": "SUPPLIER_PROVIDED", "caption": "", "isCover": true, "variants": [ { "height": 50, "width": 50, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-50x50/0b/9b/c9/c9.jpg" }, { "height": 100, "width": 100, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-100x100/0b/9b/c9/c9.jpg" }, { "height": 200, "width": 200, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-200x200/0b/9b/c9/c9.jpg" }, { "height": 400, "width": 400, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-400x400/0b/9b/c9/c9.jpg" }, { "height": 40, "width": 60, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-60x40/0b/9b/c9/c9.jpg" }, { "height": 80, "width": 120, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-120x80/0b/9b/c9/c9.jpg" }, { "height": 120, "width": 180, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-180x120/0b/9b/c9/c9.jpg" }, { "height": 160, "width": 240, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-240x160/0b/9b/c9/c9.jpg" }, { "height": 240, "width": 360, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-360x240/0b/9b/c9/c9.jpg" }, { "height": 320, "width": 480, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-480x320/0b/9b/c9/c9.jpg" }, { "height": 360, "width": 540, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-540x360/0b/9b/c9/c9.jpg" }, { "height": 446, "width": 674, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-674x446/0b/9b/c9/c9.jpg" }, { "height": 480, "width": 720, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-720x480/0b/9b/c9/c9.jpg" }, { "height": 118, "width": 210, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-210x118/0b/9b/c9/c9.jpg" }, { "height": 75, "width": 75, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-75x75/0b/9b/c9/c9.jpg" }, { "height": 109, "width": 154, "url": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-154x109/0b/9b/c9/c9.jpg" } ] } ], "reviews": { "sources": [ { "provider": "VIATOR", "totalCount": 903, "averageRating": 4.7 }, { "provider": "TRIPADVISOR", "totalCount": 1857, "averageRating": 4.8 } ], "totalReviews": 2760, "combinedAverageRating": 4.7710147 }, "duration": { "fixedDurationInMinutes": 5760 }, "confirmationType": "INSTANT", "itineraryType": "MULTI_DAY_TOUR", "pricing": { "summary": { "fromPrice": 570.56, "fromPriceBeforeDiscount": 570.56 }, "extraChargesSummary": { "fromPrice": 579.98, "extraCharges": 9.42 }, "currency": "AUD" }, "productUrl": "https://shop.live.int.viator.com/tours/Aswan/04-Days-03-Nights-Nile-Cruise-from-Aswan-to-Luxor/d796-128216P66?mcid=42383&pid=P00108950&medium=api&api_version=2.0", "destinations": [ { "ref": "796", "primary": true } ], "tags": [ 12029, 22046, 12011, 22169, 12027, 22170, 11922, 12028, 12083, 20255, 21972 ], "flags": [ "FREE_CANCELLATION" ], "translationInfo": { "containsMachineTranslatedText": false, "translationSource": "ORIGINAL" } } ] } } }, "availability-check-example-5010SYDNEY": { "summary": "5010SYDNEY", "value": { "currency": "AUD", "productCode": "5010SYDNEY", "travelDate": "2021-12-12", "bookableItems": [ { "productOptionCode": "TG3", "available": true, "lineItems": [ { "ageBand": "ADULT", "numberOfTravelers": 2, "subtotalPrice": { "price": { "recommendedRetailPrice": 118.5, "partnerNetPrice": 93.46, "bookingFee": 5.61, "partnerTotalPrice": 99.07 } } }, { "ageBand": "CHILD", "numberOfTravelers": 2, "subtotalPrice": { "price": { "recommendedRetailPrice": 82, "partnerNetPrice": 64.7, "bookingFee": 3.88, "partnerTotalPrice": 68.58 } } } ], "totalPrice": { "price": { "recommendedRetailPrice": 200.5, "partnerNetPrice": 158.16, "bookingFee": 9.49, "partnerTotalPrice": 167.65 } } }, { "productOptionCode": "48HOUR", "available": true, "lineItems": [ { "ageBand": "ADULT", "numberOfTravelers": 2, "subtotalPrice": { "price": { "recommendedRetailPrice": 149.4, "partnerNetPrice": 117.9, "bookingFee": 7.07, "partnerTotalPrice": 124.97 } } }, { "ageBand": "CHILD", "numberOfTravelers": 2, "subtotalPrice": { "price": { "recommendedRetailPrice": 91.1, "partnerNetPrice": 71.88, "bookingFee": 4.32, "partnerTotalPrice": 76.2 } } } ], "totalPrice": { "price": { "recommendedRetailPrice": 240.5, "partnerNetPrice": 189.78, "bookingFee": 11.39, "partnerTotalPrice": 201.17 } } }, { "productOptionCode": "TG1", "available": true, "lineItems": [ { "ageBand": "ADULT", "numberOfTravelers": 2, "subtotalPrice": { "price": { "recommendedRetailPrice": 200.5, "partnerNetPrice": 158.16, "bookingFee": 9.49, "partnerTotalPrice": 167.65 } } }, { "ageBand": "CHILD", "numberOfTravelers": 2, "subtotalPrice": { "price": { "recommendedRetailPrice": 131.6, "partnerNetPrice": 103.84, "bookingFee": 6.23, "partnerTotalPrice": 110.07 } } } ], "totalPrice": { "price": { "recommendedRetailPrice": 332.1, "partnerNetPrice": 262, "bookingFee": 15.72, "partnerTotalPrice": 277.72 } } } ] } }, "availability-check-example-46334P42": { "summary": "46334P42", "value": { "currency": "USD", "productCode": "46334P42", "travelDate": "2020-12-30", "bookableItems": [ { "productOptionCode": "TG5", "startTime": "16:15", "available": false, "unavailableReason": "SOLD_OUT", "lineItems": [ { "ageBand": "ADULT", "numberOfTravelers": 2, "subtotalPrice": { "price": { "recommendedRetailPrice": 270.1, "partnerNetPrice": 212.28, "bookingFee": 12.74, "partnerTotalPrice": 225.02 } } } ], "totalPrice": { "price": { "recommendedRetailPrice": 270.1, "partnerNetPrice": 212.27, "bookingFee": 12.74, "partnerTotalPrice": 225.01 } } }, { "productOptionCode": "TG5", "startTime": "16:45", "available": false, "unavailableReason": "SOLD_OUT", "lineItems": [ { "ageBand": "ADULT", "numberOfTravelers": 2, "subtotalPrice": { "price": { "recommendedRetailPrice": 270.1, "partnerNetPrice": 212.28, "bookingFee": 12.74, "partnerTotalPrice": 225.02 } } } ], "totalPrice": { "price": { "recommendedRetailPrice": 270.1, "partnerNetPrice": 212.27, "bookingFee": 12.74, "partnerTotalPrice": 225.01 } } }, { "productOptionCode": "TG5", "startTime": "17:15", "available": false, "unavailableReason": "SOLD_OUT", "lineItems": [ { "ageBand": "ADULT", "numberOfTravelers": 2, "subtotalPrice": { "price": { "recommendedRetailPrice": 270.1, "partnerNetPrice": 212.28, "bookingFee": 12.74, "partnerTotalPrice": 225.02 } } } ], "totalPrice": { "price": { "recommendedRetailPrice": 270.1, "partnerNetPrice": 212.27, "bookingFee": 12.74, "partnerTotalPrice": 225.01 } } }, { "productOptionCode": "TG5", "startTime": "17:45", "available": false, "unavailableReason": "SOLD_OUT", "lineItems": [ { "ageBand": "ADULT", "numberOfTravelers": 2, "subtotalPrice": { "price": { "recommendedRetailPrice": 270.1, "partnerNetPrice": 212.28, "bookingFee": 12.74, "partnerTotalPrice": 225.02 } } } ], "totalPrice": { "price": { "recommendedRetailPrice": 270.1, "partnerNetPrice": 212.27, "bookingFee": 12.74, "partnerTotalPrice": 225.01 } } }, { "productOptionCode": "TG5", "startTime": "18:15", "available": false, "unavailableReason": "SOLD_OUT", "lineItems": [ { "ageBand": "ADULT", "numberOfTravelers": 2, "subtotalPrice": { "price": { "recommendedRetailPrice": 270.1, "partnerNetPrice": 212.28, "bookingFee": 12.74, "partnerTotalPrice": 225.02 } } } ], "totalPrice": { "price": { "recommendedRetailPrice": 270.1, "partnerNetPrice": 212.27, "bookingFee": 12.74, "partnerTotalPrice": 225.01 } } } ] } }, "availability-check-example-265910P1": { "summary": "265910P1 (commission payment model)", "value": { "currency": "AUD", "productCode": "265910P1", "travelDate": "2021-11-30", "bookableItems": [ { "productOptionCode": "TG1", "startTime": "09:30", "available": true, "lineItems": [ { "ageBand": "ADULT", "numberOfTravelers": 2, "subtotalPrice": { "price": { "recommendedRetailPrice": 800, "partnerNetPrice": 736, "bookingFee": 0, "commission": 64, "partnerTotalPrice": 736 } } } ], "totalPrice": { "price": { "recommendedRetailPrice": 800, "partnerNetPrice": 736, "bookingFee": 0, "commission": 64, "partnerTotalPrice": 736 } } } ] } }, "availability-check-example-128216P66": { "summary": "128216P66 (extra charges)", "value": { "currency": "USD", "productCode": "128216P66", "travelDate": "2025-12-15", "bookableItems": [ { "productOptionCode": "DEFAULT", "startTime": "08:00", "available": true, "lineItems": [ { "ageBand": "ADULT", "numberOfTravelers": 3, "subtotalPrice": { "price": { "recommendedRetailPrice": 2175, "partnerNetPrice": 2001, "bookingFee": 0, "commission": 174, "partnerTotalPrice": 2001 } } } ], "totalPrice": { "price": { "recommendedRetailPrice": 2175, "partnerNetPrice": 2001, "bookingFee": 0, "commission": 174, "partnerTotalPrice": 2001 } }, "extraChargesSummary": { "price": { "recommendedRetailPrice": 2186.26 }, "mandatory": { "totalExtraCharges": 11.26, "items": [ { "name": "Test fee 1", "numberOfUnits": 1, "amountPerUnit": 5.63, "totalAmount": 5.63, "inDestination": { "amountPerUnit": 10, "totalAmount": 10, "currency": "NZD" } }, { "name": "Test fee 2", "numberOfUnits": 1, "amountPerUnit": 5.63, "totalAmount": 5.63, "inDestination": { "amountPerUnit": 10, "totalAmount": 10, "currency": "NZD" } } ] } } } ], "translationInfo": { "containsMachineTranslatedText": false, "translationSource": "ORIGINAL" } } }, "availability-schedules-5010SYDNEY-example": { "summary": "/availability/schedules/5010SYDNEY", "value": { "productCode": "5010SYDNEY", "bookableItems": [ { "productOptionCode": "TG1", "seasons": [ { "startDate": "2021-01-15", "pricingRecords": [ { "daysOfWeek": [ "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY" ], "pricingDetails": [ { "pricingPackageType": "PER_PERSON", "minTravelers": 1, "ageBand": "INFANT", "price": { "original": { "recommendedRetailPrice": 0, "partnerNetPrice": 0, "bookingFee": 0, "partnerTotalPrice": 0 } } }, { "pricingPackageType": "PER_PERSON", "minTravelers": 1, "ageBand": "CHILD", "price": { "original": { "recommendedRetailPrice": 65.8, "partnerNetPrice": 51.92, "bookingFee": 3.12, "partnerTotalPrice": 55.04 } } }, { "pricingPackageType": "PER_PERSON", "minTravelers": 1, "ageBand": "ADULT", "price": { "original": { "recommendedRetailPrice": 100.25, "partnerNetPrice": 79.08, "bookingFee": 4.74, "partnerTotalPrice": 83.82 } } } ], "unavailableDates": [ { "date": "2021-12-01", "reason": "SOLD_OUT" }, { "date": "2021-07-07", "reason": "SOLD_OUT" }, { "date": "2022-01-05", "reason": "SOLD_OUT" }, { "date": "2021-12-29", "reason": "SOLD_OUT" }, { "date": "2021-09-08", "reason": "SOLD_OUT" }, { "date": "2022-02-15", "reason": "SOLD_OUT" }, { "date": "2021-08-17", "reason": "SOLD_OUT" }, { "date": "2021-06-15", "reason": "SOLD_OUT" }, { "date": "2022-03-16", "reason": "SOLD_OUT" }, { "date": "2021-12-28", "reason": "SOLD_OUT" }, { "date": "2021-05-25", "reason": "SOLD_OUT" }, { "date": "2021-11-10", "reason": "SOLD_OUT" }, { "date": "2021-10-27", "reason": "SOLD_OUT" }, { "date": "2022-02-16", "reason": "SOLD_OUT" }, { "date": "2022-02-23", "reason": "SOLD_OUT" }, { "date": "2022-01-04", "reason": "SOLD_OUT" }, { "date": "2022-01-25", "reason": "SOLD_OUT" }, { "date": "2022-03-08", "reason": "SOLD_OUT" }, { "date": "2021-11-09", "reason": "SOLD_OUT" }, { "date": "2021-11-02", "reason": "SOLD_OUT" }, { "date": "2021-06-23", "reason": "SOLD_OUT" }, { "date": "2021-06-16", "reason": "SOLD_OUT" }, { "date": "2021-11-30", "reason": "SOLD_OUT" }, { "date": "2022-03-15", "reason": "SOLD_OUT" }, { "date": "2021-08-10", "reason": "SOLD_OUT" }, { "date": "2021-07-14", "reason": "SOLD_OUT" }, { "date": "2022-01-12", "reason": "SOLD_OUT" }, { "date": "2021-08-24", "reason": "SOLD_OUT" }, { "date": "2021-07-28", "reason": "SOLD_OUT" }, { "date": "2022-01-26", "reason": "SOLD_OUT" }, { "date": "2022-03-23", "reason": "SOLD_OUT" }, { "date": "2021-06-22", "reason": "SOLD_OUT" }, { "date": "2021-12-21", "reason": "SOLD_OUT" }, { "date": "2021-12-07", "reason": "SOLD_OUT" }, { "date": "2021-06-08", "reason": "SOLD_OUT" }, { "date": "2022-03-09", "reason": "SOLD_OUT" }, { "date": "2021-08-25", "reason": "SOLD_OUT" }, { "date": "2021-08-18", "reason": "SOLD_OUT" }, { "date": "2021-07-13", "reason": "SOLD_OUT" }, { "date": "2021-07-06", "reason": "SOLD_OUT" }, { "date": "2021-07-27", "reason": "SOLD_OUT" }, { "date": "2021-07-20", "reason": "SOLD_OUT" }, { "date": "2021-08-11", "reason": "SOLD_OUT" }, { "date": "2021-08-04", "reason": "SOLD_OUT" }, { "date": "2021-08-03", "reason": "SOLD_OUT" }, { "date": "2022-02-01", "reason": "SOLD_OUT" }, { "date": "2021-09-22", "reason": "SOLD_OUT" }, { "date": "2021-08-31", "reason": "SOLD_OUT" }, { "date": "2021-12-15", "reason": "SOLD_OUT" }, { "date": "2022-01-19", "reason": "SOLD_OUT" }, { "date": "2021-07-21", "reason": "SOLD_OUT" }, { "date": "2021-10-13", "reason": "SOLD_OUT" }, { "date": "2021-11-24", "reason": "SOLD_OUT" }, { "date": "2022-03-30", "reason": "SOLD_OUT" }, { "date": "2021-05-11", "reason": "SOLD_OUT" }, { "date": "2021-06-29", "reason": "SOLD_OUT" }, { "date": "2021-12-14", "reason": "SOLD_OUT" }, { "date": "2022-03-02", "reason": "SOLD_OUT" }, { "date": "2021-04-28", "reason": "SOLD_OUT" }, { "date": "2021-06-01", "reason": "SOLD_OUT" }, { "date": "2022-01-11", "reason": "SOLD_OUT" }, { "date": "2022-01-18", "reason": "SOLD_OUT" }, { "date": "2022-02-09", "reason": "SOLD_OUT" }, { "date": "2022-02-02", "reason": "SOLD_OUT" }, { "date": "2022-03-01", "reason": "SOLD_OUT" }, { "date": "2021-06-30", "reason": "SOLD_OUT" }, { "date": "2021-06-09", "reason": "SOLD_OUT" }, { "date": "2021-06-02", "reason": "SOLD_OUT" }, { "date": "2021-11-23", "reason": "SOLD_OUT" }, { "date": "2022-03-29", "reason": "SOLD_OUT" }, { "date": "2021-11-16", "reason": "SOLD_OUT" }, { "date": "2022-03-22", "reason": "SOLD_OUT" }, { "date": "2021-12-08", "reason": "SOLD_OUT" }, { "date": "2022-02-08", "reason": "SOLD_OUT" }, { "date": "2021-09-29", "reason": "SOLD_OUT" }, { "date": "2021-09-15", "reason": "SOLD_OUT" }, { "date": "2021-12-22", "reason": "SOLD_OUT" }, { "date": "2021-09-01", "reason": "SOLD_OUT" }, { "date": "2022-02-22", "reason": "SOLD_OUT" }, { "date": "2021-10-06", "reason": "SOLD_OUT" }, { "date": "2021-05-04", "reason": "SOLD_OUT" }, { "date": "2021-11-17", "reason": "SOLD_OUT" }, { "date": "2021-04-21", "reason": "SOLD_OUT" }, { "date": "2021-10-20", "reason": "SOLD_OUT" }, { "date": "2021-05-18", "reason": "SOLD_OUT" }, { "date": "2021-11-03", "reason": "SOLD_OUT" }, { "date": "2021-09-28", "reason": "SOLD_OUT" }, { "date": "2021-09-21", "reason": "SOLD_OUT" }, { "date": "2021-04-27", "reason": "SOLD_OUT" }, { "date": "2021-04-20", "reason": "SOLD_OUT" }, { "date": "2021-09-07", "reason": "SOLD_OUT" }, { "date": "2021-09-14", "reason": "SOLD_OUT" }, { "date": "2021-05-26", "reason": "SOLD_OUT" }, { "date": "2021-05-19", "reason": "SOLD_OUT" }, { "date": "2021-10-12", "reason": "SOLD_OUT" }, { "date": "2021-10-05", "reason": "SOLD_OUT" }, { "date": "2021-10-26", "reason": "SOLD_OUT" }, { "date": "2021-10-19", "reason": "SOLD_OUT" }, { "date": "2021-05-12", "reason": "SOLD_OUT" }, { "date": "2021-05-05", "reason": "SOLD_OUT" } ] } ], "operatingHours": [ { "dayOfWeek": "MONDAY", "operatingHours": [ { "opensAt": "10:00:00", "closesAt": "14:00:00" } ] }, { "dayOfWeek": "TUESDAY", "operatingHours": [ { "opensAt": "10:00:00", "closesAt": "14:00:00" } ] }, { "dayOfWeek": "WEDNESDAY", "operatingHours": [ { "opensAt": "10:00:00", "closesAt": "14:00:00" } ] }, { "dayOfWeek": "THURSDAY", "operatingHours": [ { "opensAt": "10:00:00", "closesAt": "14:00:00" } ] }, { "dayOfWeek": "FRIDAY", "operatingHours": [ { "opensAt": "10:00:00", "closesAt": "14:00:00" } ] }, { "dayOfWeek": "SATURDAY", "operatingHours": [ { "opensAt": "10:00:00", "closesAt": "14:00:00" } ] }, { "dayOfWeek": "SUNDAY", "operatingHours": [ { "opensAt": "10:00:00", "closesAt": "14:00:00" } ] } ] } ] }, { "productOptionCode": "TG3", "seasons": [ { "startDate": "2021-03-23", "pricingRecords": [ { "daysOfWeek": [ "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY" ], "pricingDetails": [ { "pricingPackageType": "PER_PERSON", "minTravelers": 1, "ageBand": "CHILD", "price": { "original": { "recommendedRetailPrice": 41, "partnerNetPrice": 32.35, "bookingFee": 1.94, "partnerTotalPrice": 34.29 } } }, { "pricingPackageType": "PER_PERSON", "minTravelers": 1, "ageBand": "ADULT", "price": { "original": { "recommendedRetailPrice": 59.25, "partnerNetPrice": 46.73, "bookingFee": 2.8, "partnerTotalPrice": 49.53 } } } ], "unavailableDates": [ { "date": "2021-08-18", "reason": "SOLD_OUT" }, { "date": "2021-09-28", "reason": "SOLD_OUT" }, { "date": "2022-02-16", "reason": "SOLD_OUT" }, { "date": "2021-04-25", "reason": "SOLD_OUT" }, { "date": "2021-07-27", "reason": "SOLD_OUT" }, { "date": "2021-12-21", "reason": "SOLD_OUT" }, { "date": "2022-01-25", "reason": "SOLD_OUT" }, { "date": "2022-03-08", "reason": "SOLD_OUT" }, { "date": "2021-11-02", "reason": "SOLD_OUT" }, { "date": "2021-04-15", "reason": "SOLD_OUT" }, { "date": "2021-05-26", "reason": "SOLD_OUT" }, { "date": "2021-11-30", "reason": "SOLD_OUT" }, { "date": "2021-04-06", "reason": "SOLD_OUT" }, { "date": "2021-10-19", "reason": "SOLD_OUT" }, { "date": "2021-09-01", "reason": "SOLD_OUT" }, { "date": "2021-09-29", "reason": "SOLD_OUT" }, { "date": "2022-02-08", "reason": "SOLD_OUT" }, { "date": "2021-07-07", "reason": "SOLD_OUT" }, { "date": "2021-07-28", "reason": "SOLD_OUT" }, { "date": "2022-02-15", "reason": "SOLD_OUT" }, { "date": "2021-04-17", "reason": "SOLD_OUT" }, { "date": "2021-04-24", "reason": "SOLD_OUT" }, { "date": "2021-06-08", "reason": "SOLD_OUT" }, { "date": "2021-10-20", "reason": "SOLD_OUT" }, { "date": "2021-06-15", "reason": "SOLD_OUT" }, { "date": "2021-10-27", "reason": "SOLD_OUT" }, { "date": "2021-04-07", "reason": "SOLD_OUT" }, { "date": "2021-04-14", "reason": "SOLD_OUT" }, { "date": "2021-09-21", "reason": "SOLD_OUT" }, { "date": "2021-09-07", "reason": "SOLD_OUT" }, { "date": "2021-12-14", "reason": "SOLD_OUT" }, { "date": "2021-04-18", "reason": "SOLD_OUT" }, { "date": "2021-12-28", "reason": "SOLD_OUT" }, { "date": "2021-05-19", "reason": "SOLD_OUT" }, { "date": "2021-11-09", "reason": "SOLD_OUT" }, { "date": "2021-11-23", "reason": "SOLD_OUT" }, { "date": "2021-05-05", "reason": "SOLD_OUT" }, { "date": "2021-10-26", "reason": "SOLD_OUT" }, { "date": "2021-04-13", "reason": "SOLD_OUT" }, { "date": "2021-04-27", "reason": "SOLD_OUT" }, { "date": "2021-10-12", "reason": "SOLD_OUT" }, { "date": "2021-04-19", "reason": "SOLD_OUT" }, { "date": "2021-04-26", "reason": "SOLD_OUT" }, { "date": "2021-04-12", "reason": "SOLD_OUT" }, { "date": "2021-12-22", "reason": "SOLD_OUT" }, { "date": "2021-06-02", "reason": "SOLD_OUT" }, { "date": "2021-06-16", "reason": "SOLD_OUT" }, { "date": "2021-12-29", "reason": "SOLD_OUT" }, { "date": "2021-06-09", "reason": "SOLD_OUT" }, { "date": "2021-06-23", "reason": "SOLD_OUT" }, { "date": "2021-12-15", "reason": "SOLD_OUT" }, { "date": "2021-12-01", "reason": "SOLD_OUT" }, { "date": "2021-12-08", "reason": "SOLD_OUT" }, { "date": "2021-06-30", "reason": "SOLD_OUT" }, { "date": "2021-11-24", "reason": "SOLD_OUT" }, { "date": "2021-05-04", "reason": "SOLD_OUT" }, { "date": "2021-11-17", "reason": "SOLD_OUT" }, { "date": "2021-05-11", "reason": "SOLD_OUT" }, { "date": "2021-11-10", "reason": "SOLD_OUT" }, { "date": "2021-05-18", "reason": "SOLD_OUT" }, { "date": "2021-05-25", "reason": "SOLD_OUT" }, { "date": "2021-11-03", "reason": "SOLD_OUT" }, { "date": "2022-02-02", "reason": "SOLD_OUT" }, { "date": "2021-09-14", "reason": "SOLD_OUT" }, { "date": "2021-08-04", "reason": "SOLD_OUT" }, { "date": "2021-12-07", "reason": "SOLD_OUT" }, { "date": "2021-04-11", "reason": "SOLD_OUT" }, { "date": "2021-07-13", "reason": "SOLD_OUT" }, { "date": "2022-01-11", "reason": "SOLD_OUT" }, { "date": "2021-11-16", "reason": "SOLD_OUT" }, { "date": "2022-03-22", "reason": "SOLD_OUT" }, { "date": "2021-04-29", "reason": "SOLD_OUT" }, { "date": "2021-05-12", "reason": "SOLD_OUT" }, { "date": "2021-09-15", "reason": "SOLD_OUT" }, { "date": "2021-04-20", "reason": "SOLD_OUT" }, { "date": "2021-10-05", "reason": "SOLD_OUT" }, { "date": "2022-02-01", "reason": "SOLD_OUT" }, { "date": "2021-07-14", "reason": "SOLD_OUT" }, { "date": "2021-07-21", "reason": "SOLD_OUT" }, { "date": "2021-04-10", "reason": "SOLD_OUT" }, { "date": "2022-02-22", "reason": "SOLD_OUT" }, { "date": "2021-10-13", "reason": "SOLD_OUT" }, { "date": "2021-06-22", "reason": "SOLD_OUT" }, { "date": "2021-10-06", "reason": "SOLD_OUT" }, { "date": "2021-06-29", "reason": "SOLD_OUT" }, { "date": "2021-06-01", "reason": "SOLD_OUT" }, { "date": "2021-04-21", "reason": "SOLD_OUT" }, { "date": "2021-04-28", "reason": "SOLD_OUT" }, { "date": "2022-02-23", "reason": "SOLD_OUT" }, { "date": "2021-08-25", "reason": "SOLD_OUT" }, { "date": "2022-02-09", "reason": "SOLD_OUT" }, { "date": "2021-08-11", "reason": "SOLD_OUT" }, { "date": "2021-07-20", "reason": "SOLD_OUT" }, { "date": "2022-01-04", "reason": "SOLD_OUT" }, { "date": "2021-07-06", "reason": "SOLD_OUT" }, { "date": "2022-01-18", "reason": "SOLD_OUT" }, { "date": "2022-03-01", "reason": "SOLD_OUT" }, { "date": "2022-03-15", "reason": "SOLD_OUT" }, { "date": "2021-04-08", "reason": "SOLD_OUT" }, { "date": "2021-04-22", "reason": "SOLD_OUT" }, { "date": "2022-03-29", "reason": "SOLD_OUT" }, { "date": "2021-09-08", "reason": "SOLD_OUT" }, { "date": "2021-09-22", "reason": "SOLD_OUT" }, { "date": "2022-01-05", "reason": "SOLD_OUT" }, { "date": "2021-08-03", "reason": "SOLD_OUT" }, { "date": "2022-01-12", "reason": "SOLD_OUT" }, { "date": "2021-08-10", "reason": "SOLD_OUT" }, { "date": "2022-01-19", "reason": "SOLD_OUT" }, { "date": "2021-08-17", "reason": "SOLD_OUT" }, { "date": "2021-08-24", "reason": "SOLD_OUT" }, { "date": "2022-01-26", "reason": "SOLD_OUT" }, { "date": "2021-08-31", "reason": "SOLD_OUT" }, { "date": "2022-03-23", "reason": "SOLD_OUT" }, { "date": "2022-03-30", "reason": "SOLD_OUT" }, { "date": "2021-04-30", "reason": "SOLD_OUT" }, { "date": "2021-04-23", "reason": "SOLD_OUT" }, { "date": "2022-03-09", "reason": "SOLD_OUT" }, { "date": "2021-04-09", "reason": "SOLD_OUT" }, { "date": "2021-04-16", "reason": "SOLD_OUT" }, { "date": "2022-03-16", "reason": "SOLD_OUT" }, { "date": "2022-03-02", "reason": "SOLD_OUT" } ] } ], "operatingHours": [ { "dayOfWeek": "MONDAY", "operatingHours": [ { "opensAt": "10:00:00", "closesAt": "14:00:00" } ] }, { "dayOfWeek": "TUESDAY", "operatingHours": [ { "opensAt": "10:00:00", "closesAt": "14:00:00" } ] }, { "dayOfWeek": "WEDNESDAY", "operatingHours": [ { "opensAt": "10:00:00", "closesAt": "14:00:00" } ] }, { "dayOfWeek": "THURSDAY", "operatingHours": [ { "opensAt": "10:00:00", "closesAt": "14:00:00" } ] }, { "dayOfWeek": "FRIDAY", "operatingHours": [ { "opensAt": "10:00:00", "closesAt": "14:00:00" } ] }, { "dayOfWeek": "SATURDAY", "operatingHours": [ { "opensAt": "10:00:00", "closesAt": "14:00:00" } ] }, { "dayOfWeek": "SUNDAY", "operatingHours": [ { "opensAt": "10:00:00", "closesAt": "14:00:00" } ] } ] } ] }, { "productOptionCode": "24HOUR", "seasons": [ { "startDate": "2021-02-01", "endDate": "2021-04-30", "pricingRecords": [ { "daysOfWeek": [ "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY" ], "pricingDetails": [ { "pricingPackageType": "PER_PERSON", "minTravelers": 1, "ageBand": "CHILD", "price": { "original": { "recommendedRetailPrice": 38.9, "partnerNetPrice": 30.67, "bookingFee": 1.84, "partnerTotalPrice": 32.51 } } }, { "pricingPackageType": "PER_PERSON", "minTravelers": 1, "ageBand": "ADULT", "price": { "original": { "recommendedRetailPrice": 56.15, "partnerNetPrice": 44.3, "bookingFee": 2.66, "partnerTotalPrice": 46.96 } } } ], "unavailableDates": [ { "date": "2021-04-23", "reason": "SOLD_OUT" }, { "date": "2021-04-14", "reason": "SOLD_OUT" }, { "date": "2021-04-24", "reason": "SOLD_OUT" }, { "date": "2021-04-13", "reason": "SOLD_OUT" }, { "date": "2021-04-06", "reason": "SOLD_OUT" }, { "date": "2021-04-30", "reason": "SOLD_OUT" }, { "date": "2021-04-07", "reason": "SOLD_OUT" }, { "date": "2021-04-16", "reason": "SOLD_OUT" }, { "date": "2021-04-21", "reason": "SOLD_OUT" }, { "date": "2021-04-15", "reason": "SOLD_OUT" }, { "date": "2021-04-29", "reason": "SOLD_OUT" }, { "date": "2021-04-22", "reason": "SOLD_OUT" }, { "date": "2021-04-08", "reason": "SOLD_OUT" }, { "date": "2021-04-18", "reason": "SOLD_OUT" }, { "date": "2021-04-09", "reason": "SOLD_OUT" }, { "date": "2021-04-28", "reason": "SOLD_OUT" }, { "date": "2021-04-10", "reason": "SOLD_OUT" }, { "date": "2021-04-17", "reason": "SOLD_OUT" }, { "date": "2021-04-20", "reason": "SOLD_OUT" }, { "date": "2021-04-27", "reason": "SOLD_OUT" }, { "date": "2021-04-25", "reason": "SOLD_OUT" }, { "date": "2021-04-11", "reason": "SOLD_OUT" }, { "date": "2021-04-26", "reason": "SOLD_OUT" }, { "date": "2021-04-19", "reason": "SOLD_OUT" }, { "date": "2021-04-12", "reason": "SOLD_OUT" } ] } ], "operatingHours": [ { "dayOfWeek": "MONDAY", "operatingHours": [ { "opensAt": "10:00:00", "closesAt": "14:00:00" } ] }, { "dayOfWeek": "TUESDAY", "operatingHours": [ { "opensAt": "10:00:00", "closesAt": "14:00:00" } ] }, { "dayOfWeek": "WEDNESDAY", "operatingHours": [ { "opensAt": "10:00:00", "closesAt": "14:00:00" } ] }, { "dayOfWeek": "THURSDAY", "operatingHours": [ { "opensAt": "10:00:00", "closesAt": "14:00:00" } ] }, { "dayOfWeek": "FRIDAY", "operatingHours": [ { "opensAt": "10:00:00", "closesAt": "14:00:00" } ] }, { "dayOfWeek": "SATURDAY", "operatingHours": [ { "opensAt": "10:00:00", "closesAt": "14:00:00" } ] }, { "dayOfWeek": "SUNDAY", "operatingHours": [ { "opensAt": "10:00:00", "closesAt": "14:00:00" } ] } ] } ] }, { "productOptionCode": "48HOUR", "seasons": [ { "startDate": "2021-04-01", "pricingRecords": [ { "daysOfWeek": [ "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY" ], "pricingDetails": [ { "pricingPackageType": "PER_PERSON", "minTravelers": 1, "ageBand": "INFANT", "price": { "original": { "recommendedRetailPrice": 0, "partnerNetPrice": 0, "bookingFee": 0, "partnerTotalPrice": 0 } } }, { "pricingPackageType": "PER_PERSON", "minTravelers": 1, "ageBand": "CHILD", "price": { "original": { "recommendedRetailPrice": 45.55, "partnerNetPrice": 35.94, "bookingFee": 2.16, "partnerTotalPrice": 38.1 } } }, { "pricingPackageType": "PER_PERSON", "minTravelers": 1, "ageBand": "ADULT", "price": { "original": { "recommendedRetailPrice": 74.7, "partnerNetPrice": 58.95, "bookingFee": 3.54, "partnerTotalPrice": 62.49 } } } ], "unavailableDates": [ { "date": "2022-03-16", "reason": "SOLD_OUT" }, { "date": "2021-11-10", "reason": "SOLD_OUT" }, { "date": "2022-01-24", "reason": "SOLD_OUT" }, { "date": "2021-12-20", "reason": "SOLD_OUT" }, { "date": "2021-06-07", "reason": "SOLD_OUT" }, { "date": "2021-04-15", "reason": "SOLD_OUT" }, { "date": "2021-12-29", "reason": "SOLD_OUT" }, { "date": "2021-09-27", "reason": "SOLD_OUT" }, { "date": "2022-02-15", "reason": "SOLD_OUT" }, { "date": "2021-12-01", "reason": "SOLD_OUT" }, { "date": "2021-06-16", "reason": "SOLD_OUT" }, { "date": "2021-04-24", "reason": "SOLD_OUT" }, { "date": "2021-07-26", "reason": "SOLD_OUT" }, { "date": "2021-07-07", "reason": "SOLD_OUT" }, { "date": "2021-08-18", "reason": "SOLD_OUT" }, { "date": "2022-01-05", "reason": "SOLD_OUT" }, { "date": "2022-02-16", "reason": "SOLD_OUT" }, { "date": "2021-09-08", "reason": "SOLD_OUT" }, { "date": "2021-10-19", "reason": "SOLD_OUT" }, { "date": "2021-04-06", "reason": "SOLD_OUT" }, { "date": "2021-05-24", "reason": "SOLD_OUT" }, { "date": "2021-12-28", "reason": "SOLD_OUT" }, { "date": "2021-06-15", "reason": "SOLD_OUT" }, { "date": "2021-07-27", "reason": "SOLD_OUT" }, { "date": "2021-04-25", "reason": "SOLD_OUT" }, { "date": "2021-05-05", "reason": "SOLD_OUT" }, { "date": "2021-06-08", "reason": "SOLD_OUT" }, { "date": "2021-10-20", "reason": "SOLD_OUT" }, { "date": "2021-08-09", "reason": "SOLD_OUT" }, { "date": "2021-10-27", "reason": "SOLD_OUT" }, { "date": "2021-05-26", "reason": "SOLD_OUT" }, { "date": "2021-08-16", "reason": "SOLD_OUT" }, { "date": "2021-07-06", "reason": "SOLD_OUT" }, { "date": "2021-12-21", "reason": "SOLD_OUT" }, { "date": "2021-11-29", "reason": "SOLD_OUT" }, { "date": "2021-09-07", "reason": "SOLD_OUT" }, { "date": "2022-03-14", "reason": "SOLD_OUT" }, { "date": "2021-04-14", "reason": "SOLD_OUT" }, { "date": "2021-09-28", "reason": "SOLD_OUT" }, { "date": "2021-04-07", "reason": "SOLD_OUT" }, { "date": "2021-11-01", "reason": "SOLD_OUT" }, { "date": "2021-11-08", "reason": "SOLD_OUT" }, { "date": "2022-03-07", "reason": "SOLD_OUT" }, { "date": "2022-01-17", "reason": "SOLD_OUT" }, { "date": "2021-07-19", "reason": "SOLD_OUT" }, { "date": "2021-12-13", "reason": "SOLD_OUT" }, { "date": "2022-03-09", "reason": "SOLD_OUT" }, { "date": "2021-04-08", "reason": "SOLD_OUT" }, { "date": "2022-03-23", "reason": "SOLD_OUT" }, { "date": "2022-01-03", "reason": "SOLD_OUT" }, { "date": "2022-01-26", "reason": "SOLD_OUT" }, { "date": "2021-04-22", "reason": "SOLD_OUT" }, { "date": "2021-12-27", "reason": "SOLD_OUT" }, { "date": "2021-07-05", "reason": "SOLD_OUT" }, { "date": "2021-04-17", "reason": "SOLD_OUT" }, { "date": "2022-01-31", "reason": "SOLD_OUT" }, { "date": "2022-02-09", "reason": "SOLD_OUT" }, { "date": "2021-09-29", "reason": "SOLD_OUT" }, { "date": "2021-08-11", "reason": "SOLD_OUT" }, { "date": "2022-01-12", "reason": "SOLD_OUT" }, { "date": "2022-02-23", "reason": "SOLD_OUT" }, { "date": "2021-06-28", "reason": "SOLD_OUT" }, { "date": "2021-06-14", "reason": "SOLD_OUT" }, { "date": "2021-09-01", "reason": "SOLD_OUT" }, { "date": "2021-08-25", "reason": "SOLD_OUT" }, { "date": "2021-09-15", "reason": "SOLD_OUT" }, { "date": "2021-04-16", "reason": "SOLD_OUT" }, { "date": "2021-04-09", "reason": "SOLD_OUT" }, { "date": "2021-04-23", "reason": "SOLD_OUT" }, { "date": "2022-01-25", "reason": "SOLD_OUT" }, { "date": "2022-03-08", "reason": "SOLD_OUT" }, { "date": "2022-03-01", "reason": "SOLD_OUT" }, { "date": "2022-03-15", "reason": "SOLD_OUT" }, { "date": "2022-03-22", "reason": "SOLD_OUT" }, { "date": "2022-01-04", "reason": "SOLD_OUT" }, { "date": "2022-03-29", "reason": "SOLD_OUT" }, { "date": "2021-04-30", "reason": "SOLD_OUT" }, { "date": "2022-01-18", "reason": "SOLD_OUT" }, { "date": "2022-01-11", "reason": "SOLD_OUT" }, { "date": "2021-08-03", "reason": "SOLD_OUT" }, { "date": "2021-08-10", "reason": "SOLD_OUT" }, { "date": "2021-08-17", "reason": "SOLD_OUT" }, { "date": "2021-08-24", "reason": "SOLD_OUT" }, { "date": "2021-06-30", "reason": "SOLD_OUT" }, { "date": "2022-01-10", "reason": "SOLD_OUT" }, { "date": "2021-11-24", "reason": "SOLD_OUT" }, { "date": "2021-05-11", "reason": "SOLD_OUT" }, { "date": "2021-08-31", "reason": "SOLD_OUT" }, { "date": "2022-03-02", "reason": "SOLD_OUT" }, { "date": "2021-12-06", "reason": "SOLD_OUT" }, { "date": "2021-12-15", "reason": "SOLD_OUT" }, { "date": "2022-01-19", "reason": "SOLD_OUT" }, { "date": "2021-04-29", "reason": "SOLD_OUT" }, { "date": "2021-09-13", "reason": "SOLD_OUT" }, { "date": "2021-06-02", "reason": "SOLD_OUT" }, { "date": "2021-07-12", "reason": "SOLD_OUT" }, { "date": "2022-02-01", "reason": "SOLD_OUT" }, { "date": "2022-03-30", "reason": "SOLD_OUT" }, { "date": "2021-04-10", "reason": "SOLD_OUT" }, { "date": "2021-04-20", "reason": "SOLD_OUT" }, { "date": "2022-02-02", "reason": "SOLD_OUT" }, { "date": "2021-08-04", "reason": "SOLD_OUT" }, { "date": "2021-07-21", "reason": "SOLD_OUT" }, { "date": "2021-05-10", "reason": "SOLD_OUT" }, { "date": "2021-06-21", "reason": "SOLD_OUT" }, { "date": "2021-10-05", "reason": "SOLD_OUT" }, { "date": "2021-09-22", "reason": "SOLD_OUT" }, { "date": "2021-05-12", "reason": "SOLD_OUT" }, { "date": "2021-05-19", "reason": "SOLD_OUT" }, { "date": "2021-08-30", "reason": "SOLD_OUT" }, { "date": "2021-10-06", "reason": "SOLD_OUT" }, { "date": "2021-10-13", "reason": "SOLD_OUT" }, { "date": "2021-06-22", "reason": "SOLD_OUT" }, { "date": "2021-06-01", "reason": "SOLD_OUT" }, { "date": "2021-04-18", "reason": "SOLD_OUT" }, { "date": "2021-07-13", "reason": "SOLD_OUT" }, { "date": "2021-06-29", "reason": "SOLD_OUT" }, { "date": "2021-07-20", "reason": "SOLD_OUT" }, { "date": "2021-12-07", "reason": "SOLD_OUT" }, { "date": "2021-04-11", "reason": "SOLD_OUT" }, { "date": "2021-08-23", "reason": "SOLD_OUT" }, { "date": "2021-12-14", "reason": "SOLD_OUT" }, { "date": "2021-08-02", "reason": "SOLD_OUT" }, { "date": "2021-09-14", "reason": "SOLD_OUT" }, { "date": "2021-09-21", "reason": "SOLD_OUT" }, { "date": "2022-03-28", "reason": "SOLD_OUT" }, { "date": "2021-04-28", "reason": "SOLD_OUT" }, { "date": "2021-04-21", "reason": "SOLD_OUT" }, { "date": "2021-11-22", "reason": "SOLD_OUT" }, { "date": "2022-03-21", "reason": "SOLD_OUT" }, { "date": "2021-11-15", "reason": "SOLD_OUT" }, { "date": "2021-05-04", "reason": "SOLD_OUT" }, { "date": "2021-11-17", "reason": "SOLD_OUT" }, { "date": "2021-05-18", "reason": "SOLD_OUT" }, { "date": "2021-11-03", "reason": "SOLD_OUT" }, { "date": "2021-09-20", "reason": "SOLD_OUT" }, { "date": "2022-02-22", "reason": "SOLD_OUT" }, { "date": "2021-12-22", "reason": "SOLD_OUT" }, { "date": "2022-02-08", "reason": "SOLD_OUT" }, { "date": "2021-06-09", "reason": "SOLD_OUT" }, { "date": "2021-12-08", "reason": "SOLD_OUT" }, { "date": "2021-06-23", "reason": "SOLD_OUT" }, { "date": "2021-05-31", "reason": "SOLD_OUT" }, { "date": "2021-09-06", "reason": "SOLD_OUT" }, { "date": "2021-07-14", "reason": "SOLD_OUT" }, { "date": "2021-10-26", "reason": "SOLD_OUT" }, { "date": "2021-11-30", "reason": "SOLD_OUT" }, { "date": "2021-10-12", "reason": "SOLD_OUT" }, { "date": "2021-07-28", "reason": "SOLD_OUT" }, { "date": "2021-04-13", "reason": "SOLD_OUT" }, { "date": "2021-05-17", "reason": "SOLD_OUT" }, { "date": "2021-05-03", "reason": "SOLD_OUT" }, { "date": "2021-04-27", "reason": "SOLD_OUT" }, { "date": "2022-02-28", "reason": "SOLD_OUT" }, { "date": "2022-04-04", "reason": "SOLD_OUT" }, { "date": "2021-11-02", "reason": "SOLD_OUT" }, { "date": "2021-11-09", "reason": "SOLD_OUT" }, { "date": "2021-11-16", "reason": "SOLD_OUT" }, { "date": "2021-11-23", "reason": "SOLD_OUT" }, { "date": "2022-02-07", "reason": "SOLD_OUT" }, { "date": "2022-02-21", "reason": "SOLD_OUT" }, { "date": "2022-02-14", "reason": "SOLD_OUT" }, { "date": "2021-10-18", "reason": "SOLD_OUT" }, { "date": "2021-04-19", "reason": "SOLD_OUT" }, { "date": "2021-04-12", "reason": "SOLD_OUT" }, { "date": "2021-05-25", "reason": "SOLD_OUT" }, { "date": "2021-10-04", "reason": "SOLD_OUT" }, { "date": "2021-04-26", "reason": "SOLD_OUT" }, { "date": "2021-10-11", "reason": "SOLD_OUT" }, { "date": "2021-10-25", "reason": "SOLD_OUT" } ] } ], "operatingHours": [ { "dayOfWeek": "MONDAY", "operatingHours": [ { "opensAt": "10:00:00", "closesAt": "14:00:00" } ] }, { "dayOfWeek": "TUESDAY", "operatingHours": [ { "opensAt": "10:00:00", "closesAt": "14:00:00" } ] }, { "dayOfWeek": "WEDNESDAY", "operatingHours": [ { "opensAt": "10:00:00", "closesAt": "14:00:00" } ] }, { "dayOfWeek": "THURSDAY", "operatingHours": [ { "opensAt": "10:00:00", "closesAt": "14:00:00" } ] }, { "dayOfWeek": "FRIDAY", "operatingHours": [ { "opensAt": "10:00:00", "closesAt": "14:00:00" } ] }, { "dayOfWeek": "SATURDAY", "operatingHours": [ { "opensAt": "10:00:00", "closesAt": "14:00:00" } ] }, { "dayOfWeek": "SUNDAY", "operatingHours": [ { "opensAt": "10:00:00", "closesAt": "14:00:00" } ] } ] } ] } ], "currency": "AUD", "summary": { "fromPrice": 56.15 } } }, "availability-schedules-46334P42-example": { "summary": "/availability/schedules/46334P42", "value": { "productCode": "46334P42", "bookableItems": [ { "productOptionCode": "TG5", "seasons": [ { "startDate": "2020-11-01", "pricingRecords": [ { "daysOfWeek": [ "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY" ], "timedEntries": [ { "startTime": "16:45", "unavailableDates": [ { "date": "2020-12-29", "reason": "SOLD_OUT" }, { "date": "2021-03-16", "reason": "SOLD_OUT" }, { "date": "2021-03-25", "reason": "SOLD_OUT" }, { "date": "2021-04-07", "reason": "SOLD_OUT" }, { "date": "2020-11-19", "reason": "SOLD_OUT" }, { "date": "2021-01-05", "reason": "SOLD_OUT" }, { "date": "2020-12-01", "reason": "SOLD_OUT" }, { "date": "2020-12-10", "reason": "SOLD_OUT" }, { "date": "2021-01-06", "reason": "SOLD_OUT" }, { "date": "2021-04-16", "reason": "SOLD_OUT" }, { "date": "2021-03-26", "reason": "SOLD_OUT" }, { "date": "2020-11-20", "reason": "SOLD_OUT" }, { "date": "2021-01-15", "reason": "SOLD_OUT" }, { "date": "2021-02-24", "reason": "SOLD_OUT" }, { "date": "2021-03-24", "reason": "SOLD_OUT" }, { "date": "2020-11-18", "reason": "SOLD_OUT" }, { "date": "2021-03-17", "reason": "SOLD_OUT" }, { "date": "2020-12-02", "reason": "SOLD_OUT" }, { "date": "2021-02-25", "reason": "SOLD_OUT" }, { "date": "2020-12-09", "reason": "SOLD_OUT" }, { "date": "2021-04-08", "reason": "SOLD_OUT" }, { "date": "2021-04-15", "reason": "SOLD_OUT" }, { "date": "2021-02-04", "reason": "SOLD_OUT" }, { "date": "2020-12-30", "reason": "SOLD_OUT" }, { "date": "2021-03-09", "reason": "SOLD_OUT" }, { "date": "2020-11-26", "reason": "SOLD_OUT" }, { "date": "2021-04-28", "reason": "SOLD_OUT" }, { "date": "2021-01-26", "reason": "SOLD_OUT" }, { "date": "2021-01-12", "reason": "SOLD_OUT" }, { "date": "2021-04-14", "reason": "SOLD_OUT" }, { "date": "2021-03-23", "reason": "SOLD_OUT" }, { "date": "2021-02-17", "reason": "SOLD_OUT" }, { "date": "2020-12-17", "reason": "SOLD_OUT" }, { "date": "2021-02-03", "reason": "SOLD_OUT" }, { "date": "2020-12-03", "reason": "SOLD_OUT" }, { "date": "2020-11-27", "reason": "SOLD_OUT" }, { "date": "2020-12-31", "reason": "SOLD_OUT" }, { "date": "2021-05-06", "reason": "SOLD_OUT" }, { "date": "2021-04-06", "reason": "SOLD_OUT" }, { "date": "2021-04-13", "reason": "SOLD_OUT" }, { "date": "2021-04-27", "reason": "SOLD_OUT" }, { "date": "2021-04-20", "reason": "SOLD_OUT" }, { "date": "2020-12-25", "reason": "SOLD_OUT" }, { "date": "2021-02-02", "reason": "SOLD_OUT" }, { "date": "2021-05-05", "reason": "SOLD_OUT" }, { "date": "2021-02-16", "reason": "SOLD_OUT" }, { "date": "2021-02-09", "reason": "SOLD_OUT" }, { "date": "2021-02-23", "reason": "SOLD_OUT" }, { "date": "2020-12-18", "reason": "SOLD_OUT" }, { "date": "2020-12-04", "reason": "SOLD_OUT" }, { "date": "2020-12-11", "reason": "SOLD_OUT" }, { "date": "2021-04-21", "reason": "SOLD_OUT" }, { "date": "2021-03-02", "reason": "SOLD_OUT" }, { "date": "2021-03-11", "reason": "SOLD_OUT" }, { "date": "2021-01-19", "reason": "SOLD_OUT" }, { "date": "2021-03-30", "reason": "SOLD_OUT" }, { "date": "2020-12-15", "reason": "SOLD_OUT" }, { "date": "2020-11-24", "reason": "SOLD_OUT" }, { "date": "2021-02-10", "reason": "SOLD_OUT" }, { "date": "2021-03-12", "reason": "SOLD_OUT" }, { "date": "2021-04-02", "reason": "SOLD_OUT" }, { "date": "2021-05-04", "reason": "SOLD_OUT" }, { "date": "2021-01-29", "reason": "SOLD_OUT" }, { "date": "2021-01-20", "reason": "SOLD_OUT" }, { "date": "2020-12-24", "reason": "SOLD_OUT" }, { "date": "2021-01-01", "reason": "SOLD_OUT" }, { "date": "2021-04-30", "reason": "SOLD_OUT" }, { "date": "2020-11-25", "reason": "SOLD_OUT" }, { "date": "2021-03-31", "reason": "SOLD_OUT" }, { "date": "2021-03-03", "reason": "SOLD_OUT" }, { "date": "2021-03-10", "reason": "SOLD_OUT" }, { "date": "2021-04-01", "reason": "SOLD_OUT" }, { "date": "2020-12-16", "reason": "SOLD_OUT" }, { "date": "2020-12-23", "reason": "SOLD_OUT" }, { "date": "2021-04-22", "reason": "SOLD_OUT" }, { "date": "2021-02-11", "reason": "SOLD_OUT" }, { "date": "2021-04-29", "reason": "SOLD_OUT" }, { "date": "2021-02-18", "reason": "SOLD_OUT" }, { "date": "2020-11-17", "reason": "SOLD_OUT" }, { "date": "2020-12-22", "reason": "SOLD_OUT" }, { "date": "2020-12-08", "reason": "SOLD_OUT" }, { "date": "2021-03-04", "reason": "SOLD_OUT" }, { "date": "2021-03-18", "reason": "SOLD_OUT" }, { "date": "2021-04-09", "reason": "SOLD_OUT" }, { "date": "2021-01-22", "reason": "SOLD_OUT" }, { "date": "2021-01-13", "reason": "SOLD_OUT" }, { "date": "2021-03-19", "reason": "SOLD_OUT" }, { "date": "2021-03-05", "reason": "SOLD_OUT" }, { "date": "2021-01-08", "reason": "SOLD_OUT" }, { "date": "2021-01-27", "reason": "SOLD_OUT" }, { "date": "2021-04-23", "reason": "SOLD_OUT" }, { "date": "2021-02-05", "reason": "SOLD_OUT" }, { "date": "2021-02-12", "reason": "SOLD_OUT" }, { "date": "2021-02-19", "reason": "SOLD_OUT" }, { "date": "2021-02-26", "reason": "SOLD_OUT" }, { "date": "2021-01-07", "reason": "SOLD_OUT" }, { "date": "2021-01-28", "reason": "SOLD_OUT" }, { "date": "2021-01-14", "reason": "SOLD_OUT" }, { "date": "2021-01-21", "reason": "SOLD_OUT" } ] }, { "startTime": "17:45", "unavailableDates": [ { "date": "2021-02-16", "reason": "SOLD_OUT" }, { "date": "2021-04-08", "reason": "SOLD_OUT" }, { "date": "2020-12-02", "reason": "SOLD_OUT" }, { "date": "2020-12-11", "reason": "SOLD_OUT" }, { "date": "2021-03-26", "reason": "SOLD_OUT" }, { "date": "2021-01-06", "reason": "SOLD_OUT" }, { "date": "2020-12-30", "reason": "SOLD_OUT" }, { "date": "2020-11-20", "reason": "SOLD_OUT" }, { "date": "2021-03-16", "reason": "SOLD_OUT" }, { "date": "2021-04-27", "reason": "SOLD_OUT" }, { "date": "2021-01-15", "reason": "SOLD_OUT" }, { "date": "2021-02-26", "reason": "SOLD_OUT" }, { "date": "2021-02-17", "reason": "SOLD_OUT" }, { "date": "2021-04-07", "reason": "SOLD_OUT" }, { "date": "2020-12-01", "reason": "SOLD_OUT" }, { "date": "2021-02-24", "reason": "SOLD_OUT" }, { "date": "2020-12-22", "reason": "SOLD_OUT" }, { "date": "2021-03-25", "reason": "SOLD_OUT" }, { "date": "2021-04-28", "reason": "SOLD_OUT" }, { "date": "2021-01-14", "reason": "SOLD_OUT" }, { "date": "2021-03-18", "reason": "SOLD_OUT" }, { "date": "2020-12-29", "reason": "SOLD_OUT" }, { "date": "2020-11-19", "reason": "SOLD_OUT" }, { "date": "2021-01-07", "reason": "SOLD_OUT" }, { "date": "2020-12-04", "reason": "SOLD_OUT" }, { "date": "2021-01-27", "reason": "SOLD_OUT" }, { "date": "2021-04-01", "reason": "SOLD_OUT" }, { "date": "2021-05-06", "reason": "SOLD_OUT" }, { "date": "2020-11-27", "reason": "SOLD_OUT" }, { "date": "2021-04-29", "reason": "SOLD_OUT" }, { "date": "2021-01-13", "reason": "SOLD_OUT" }, { "date": "2021-04-15", "reason": "SOLD_OUT" }, { "date": "2021-03-23", "reason": "SOLD_OUT" }, { "date": "2021-02-05", "reason": "SOLD_OUT" }, { "date": "2021-02-19", "reason": "SOLD_OUT" }, { "date": "2021-03-09", "reason": "SOLD_OUT" }, { "date": "2021-04-23", "reason": "SOLD_OUT" }, { "date": "2021-01-05", "reason": "SOLD_OUT" }, { "date": "2021-04-30", "reason": "SOLD_OUT" }, { "date": "2021-04-16", "reason": "SOLD_OUT" }, { "date": "2021-01-12", "reason": "SOLD_OUT" }, { "date": "2021-01-26", "reason": "SOLD_OUT" }, { "date": "2021-01-19", "reason": "SOLD_OUT" }, { "date": "2021-04-09", "reason": "SOLD_OUT" }, { "date": "2021-04-02", "reason": "SOLD_OUT" }, { "date": "2021-03-31", "reason": "SOLD_OUT" }, { "date": "2021-02-04", "reason": "SOLD_OUT" }, { "date": "2021-02-11", "reason": "SOLD_OUT" }, { "date": "2021-03-17", "reason": "SOLD_OUT" }, { "date": "2021-03-24", "reason": "SOLD_OUT" }, { "date": "2021-03-10", "reason": "SOLD_OUT" }, { "date": "2021-02-18", "reason": "SOLD_OUT" }, { "date": "2021-02-25", "reason": "SOLD_OUT" }, { "date": "2021-03-03", "reason": "SOLD_OUT" }, { "date": "2021-03-12", "reason": "SOLD_OUT" }, { "date": "2021-01-20", "reason": "SOLD_OUT" }, { "date": "2021-05-04", "reason": "SOLD_OUT" }, { "date": "2020-12-25", "reason": "SOLD_OUT" }, { "date": "2021-02-02", "reason": "SOLD_OUT" }, { "date": "2020-12-16", "reason": "SOLD_OUT" }, { "date": "2021-04-22", "reason": "SOLD_OUT" }, { "date": "2021-02-12", "reason": "SOLD_OUT" }, { "date": "2021-03-30", "reason": "SOLD_OUT" }, { "date": "2020-11-24", "reason": "SOLD_OUT" }, { "date": "2021-01-01", "reason": "SOLD_OUT" }, { "date": "2021-04-13", "reason": "SOLD_OUT" }, { "date": "2021-01-29", "reason": "SOLD_OUT" }, { "date": "2021-03-02", "reason": "SOLD_OUT" }, { "date": "2021-03-11", "reason": "SOLD_OUT" }, { "date": "2020-12-08", "reason": "SOLD_OUT" }, { "date": "2021-01-21", "reason": "SOLD_OUT" }, { "date": "2021-04-14", "reason": "SOLD_OUT" }, { "date": "2021-03-04", "reason": "SOLD_OUT" }, { "date": "2021-01-28", "reason": "SOLD_OUT" }, { "date": "2021-02-03", "reason": "SOLD_OUT" }, { "date": "2021-04-21", "reason": "SOLD_OUT" }, { "date": "2020-11-26", "reason": "SOLD_OUT" }, { "date": "2020-12-15", "reason": "SOLD_OUT" }, { "date": "2021-02-10", "reason": "SOLD_OUT" }, { "date": "2021-05-05", "reason": "SOLD_OUT" }, { "date": "2020-12-09", "reason": "SOLD_OUT" }, { "date": "2021-03-05", "reason": "SOLD_OUT" }, { "date": "2020-12-18", "reason": "SOLD_OUT" }, { "date": "2020-12-23", "reason": "SOLD_OUT" }, { "date": "2021-02-23", "reason": "SOLD_OUT" }, { "date": "2021-03-19", "reason": "SOLD_OUT" }, { "date": "2021-02-09", "reason": "SOLD_OUT" }, { "date": "2020-11-17", "reason": "SOLD_OUT" }, { "date": "2021-01-08", "reason": "SOLD_OUT" }, { "date": "2021-04-20", "reason": "SOLD_OUT" }, { "date": "2021-04-06", "reason": "SOLD_OUT" }, { "date": "2021-01-22", "reason": "SOLD_OUT" }, { "date": "2020-12-24", "reason": "SOLD_OUT" }, { "date": "2020-12-17", "reason": "SOLD_OUT" }, { "date": "2020-12-31", "reason": "SOLD_OUT" }, { "date": "2020-12-10", "reason": "SOLD_OUT" }, { "date": "2020-12-03", "reason": "SOLD_OUT" }, { "date": "2020-11-18", "reason": "SOLD_OUT" }, { "date": "2020-11-25", "reason": "SOLD_OUT" } ] }, { "startTime": "16:15", "unavailableDates": [ { "date": "2021-02-02", "reason": "SOLD_OUT" }, { "date": "2021-01-29", "reason": "SOLD_OUT" }, { "date": "2020-12-25", "reason": "SOLD_OUT" }, { "date": "2021-05-04", "reason": "SOLD_OUT" }, { "date": "2020-12-16", "reason": "SOLD_OUT" }, { "date": "2021-03-12", "reason": "SOLD_OUT" }, { "date": "2021-04-22", "reason": "SOLD_OUT" }, { "date": "2021-01-20", "reason": "SOLD_OUT" }, { "date": "2021-02-11", "reason": "SOLD_OUT" }, { "date": "2021-01-01", "reason": "SOLD_OUT" }, { "date": "2021-04-13", "reason": "SOLD_OUT" }, { "date": "2021-03-02", "reason": "SOLD_OUT" }, { "date": "2021-03-30", "reason": "SOLD_OUT" }, { "date": "2021-03-11", "reason": "SOLD_OUT" }, { "date": "2021-01-19", "reason": "SOLD_OUT" }, { "date": "2020-11-24", "reason": "SOLD_OUT" }, { "date": "2020-12-17", "reason": "SOLD_OUT" }, { "date": "2021-04-02", "reason": "SOLD_OUT" }, { "date": "2021-02-19", "reason": "SOLD_OUT" }, { "date": "2021-02-12", "reason": "SOLD_OUT" }, { "date": "2021-04-23", "reason": "SOLD_OUT" }, { "date": "2020-12-24", "reason": "SOLD_OUT" }, { "date": "2021-04-30", "reason": "SOLD_OUT" }, { "date": "2021-03-03", "reason": "SOLD_OUT" }, { "date": "2021-03-31", "reason": "SOLD_OUT" }, { "date": "2021-03-10", "reason": "SOLD_OUT" }, { "date": "2020-11-25", "reason": "SOLD_OUT" }, { "date": "2021-04-01", "reason": "SOLD_OUT" }, { "date": "2021-04-15", "reason": "SOLD_OUT" }, { "date": "2021-02-09", "reason": "SOLD_OUT" }, { "date": "2021-02-23", "reason": "SOLD_OUT" }, { "date": "2020-11-27", "reason": "SOLD_OUT" }, { "date": "2021-02-18", "reason": "SOLD_OUT" }, { "date": "2021-05-06", "reason": "SOLD_OUT" }, { "date": "2020-12-04", "reason": "SOLD_OUT" }, { "date": "2020-12-18", "reason": "SOLD_OUT" }, { "date": "2021-02-04", "reason": "SOLD_OUT" }, { "date": "2020-11-26", "reason": "SOLD_OUT" }, { "date": "2021-04-06", "reason": "SOLD_OUT" }, { "date": "2021-01-26", "reason": "SOLD_OUT" }, { "date": "2021-04-29", "reason": "SOLD_OUT" }, { "date": "2021-03-09", "reason": "SOLD_OUT" }, { "date": "2021-01-12", "reason": "SOLD_OUT" }, { "date": "2021-03-23", "reason": "SOLD_OUT" }, { "date": "2021-04-20", "reason": "SOLD_OUT" }, { "date": "2021-05-05", "reason": "SOLD_OUT" }, { "date": "2021-02-17", "reason": "SOLD_OUT" }, { "date": "2021-02-10", "reason": "SOLD_OUT" }, { "date": "2021-02-03", "reason": "SOLD_OUT" }, { "date": "2021-02-24", "reason": "SOLD_OUT" }, { "date": "2021-04-28", "reason": "SOLD_OUT" }, { "date": "2021-04-21", "reason": "SOLD_OUT" }, { "date": "2021-04-07", "reason": "SOLD_OUT" }, { "date": "2021-04-14", "reason": "SOLD_OUT" }, { "date": "2020-12-02", "reason": "SOLD_OUT" }, { "date": "2021-02-25", "reason": "SOLD_OUT" }, { "date": "2021-04-08", "reason": "SOLD_OUT" }, { "date": "2021-02-16", "reason": "SOLD_OUT" }, { "date": "2021-01-06", "reason": "SOLD_OUT" }, { "date": "2020-11-20", "reason": "SOLD_OUT" }, { "date": "2021-03-26", "reason": "SOLD_OUT" }, { "date": "2020-12-11", "reason": "SOLD_OUT" }, { "date": "2021-01-15", "reason": "SOLD_OUT" }, { "date": "2021-03-16", "reason": "SOLD_OUT" }, { "date": "2020-12-30", "reason": "SOLD_OUT" }, { "date": "2021-03-25", "reason": "SOLD_OUT" }, { "date": "2021-01-05", "reason": "SOLD_OUT" }, { "date": "2020-11-19", "reason": "SOLD_OUT" }, { "date": "2021-04-27", "reason": "SOLD_OUT" }, { "date": "2021-04-09", "reason": "SOLD_OUT" }, { "date": "2020-12-10", "reason": "SOLD_OUT" }, { "date": "2021-04-16", "reason": "SOLD_OUT" }, { "date": "2020-12-03", "reason": "SOLD_OUT" }, { "date": "2021-02-26", "reason": "SOLD_OUT" }, { "date": "2020-12-31", "reason": "SOLD_OUT" }, { "date": "2020-11-18", "reason": "SOLD_OUT" }, { "date": "2021-03-17", "reason": "SOLD_OUT" }, { "date": "2021-03-24", "reason": "SOLD_OUT" }, { "date": "2021-01-22", "reason": "SOLD_OUT" }, { "date": "2021-01-13", "reason": "SOLD_OUT" }, { "date": "2020-12-09", "reason": "SOLD_OUT" }, { "date": "2021-03-05", "reason": "SOLD_OUT" }, { "date": "2021-03-19", "reason": "SOLD_OUT" }, { "date": "2021-01-08", "reason": "SOLD_OUT" }, { "date": "2021-01-27", "reason": "SOLD_OUT" }, { "date": "2020-11-17", "reason": "SOLD_OUT" }, { "date": "2021-02-05", "reason": "SOLD_OUT" }, { "date": "2020-12-23", "reason": "SOLD_OUT" }, { "date": "2021-03-04", "reason": "SOLD_OUT" }, { "date": "2021-03-18", "reason": "SOLD_OUT" }, { "date": "2021-01-14", "reason": "SOLD_OUT" }, { "date": "2021-01-07", "reason": "SOLD_OUT" }, { "date": "2021-01-28", "reason": "SOLD_OUT" }, { "date": "2021-01-21", "reason": "SOLD_OUT" }, { "date": "2020-12-29", "reason": "SOLD_OUT" }, { "date": "2020-12-22", "reason": "SOLD_OUT" }, { "date": "2020-12-15", "reason": "SOLD_OUT" }, { "date": "2020-12-08", "reason": "SOLD_OUT" }, { "date": "2020-12-01", "reason": "SOLD_OUT" } ] }, { "startTime": "17:15", "unavailableDates": [ { "date": "2021-03-31", "reason": "SOLD_OUT" }, { "date": "2021-02-12", "reason": "SOLD_OUT" }, { "date": "2020-11-25", "reason": "SOLD_OUT" }, { "date": "2021-03-03", "reason": "SOLD_OUT" }, { "date": "2021-04-13", "reason": "SOLD_OUT" }, { "date": "2021-02-02", "reason": "SOLD_OUT" }, { "date": "2020-12-25", "reason": "SOLD_OUT" }, { "date": "2021-01-12", "reason": "SOLD_OUT" }, { "date": "2021-01-21", "reason": "SOLD_OUT" }, { "date": "2021-03-04", "reason": "SOLD_OUT" }, { "date": "2020-11-26", "reason": "SOLD_OUT" }, { "date": "2021-04-22", "reason": "SOLD_OUT" }, { "date": "2020-12-16", "reason": "SOLD_OUT" }, { "date": "2021-05-05", "reason": "SOLD_OUT" }, { "date": "2020-11-17", "reason": "SOLD_OUT" }, { "date": "2020-11-24", "reason": "SOLD_OUT" }, { "date": "2021-03-23", "reason": "SOLD_OUT" }, { "date": "2021-03-30", "reason": "SOLD_OUT" }, { "date": "2021-01-01", "reason": "SOLD_OUT" }, { "date": "2021-01-22", "reason": "SOLD_OUT" }, { "date": "2021-01-29", "reason": "SOLD_OUT" }, { "date": "2021-03-02", "reason": "SOLD_OUT" }, { "date": "2021-03-12", "reason": "SOLD_OUT" }, { "date": "2021-03-05", "reason": "SOLD_OUT" }, { "date": "2021-04-14", "reason": "SOLD_OUT" }, { "date": "2020-12-08", "reason": "SOLD_OUT" }, { "date": "2020-12-15", "reason": "SOLD_OUT" }, { "date": "2021-02-03", "reason": "SOLD_OUT" }, { "date": "2021-04-21", "reason": "SOLD_OUT" }, { "date": "2021-02-10", "reason": "SOLD_OUT" }, { "date": "2021-05-06", "reason": "SOLD_OUT" }, { "date": "2020-11-27", "reason": "SOLD_OUT" }, { "date": "2021-02-05", "reason": "SOLD_OUT" }, { "date": "2021-03-24", "reason": "SOLD_OUT" }, { "date": "2021-03-10", "reason": "SOLD_OUT" }, { "date": "2021-02-19", "reason": "SOLD_OUT" }, { "date": "2021-01-28", "reason": "SOLD_OUT" }, { "date": "2021-04-01", "reason": "SOLD_OUT" }, { "date": "2021-03-11", "reason": "SOLD_OUT" }, { "date": "2021-01-05", "reason": "SOLD_OUT" }, { "date": "2021-01-19", "reason": "SOLD_OUT" }, { "date": "2021-01-14", "reason": "SOLD_OUT" }, { "date": "2021-03-25", "reason": "SOLD_OUT" }, { "date": "2021-04-15", "reason": "SOLD_OUT" }, { "date": "2021-04-29", "reason": "SOLD_OUT" }, { "date": "2021-02-04", "reason": "SOLD_OUT" }, { "date": "2021-02-11", "reason": "SOLD_OUT" }, { "date": "2021-02-18", "reason": "SOLD_OUT" }, { "date": "2021-04-16", "reason": "SOLD_OUT" }, { "date": "2021-04-30", "reason": "SOLD_OUT" }, { "date": "2021-04-23", "reason": "SOLD_OUT" }, { "date": "2021-04-09", "reason": "SOLD_OUT" }, { "date": "2021-01-27", "reason": "SOLD_OUT" }, { "date": "2021-01-06", "reason": "SOLD_OUT" }, { "date": "2021-04-02", "reason": "SOLD_OUT" }, { "date": "2021-01-20", "reason": "SOLD_OUT" }, { "date": "2021-01-13", "reason": "SOLD_OUT" }, { "date": "2021-03-17", "reason": "SOLD_OUT" }, { "date": "2021-04-27", "reason": "SOLD_OUT" }, { "date": "2021-02-26", "reason": "SOLD_OUT" }, { "date": "2021-04-08", "reason": "SOLD_OUT" }, { "date": "2020-12-02", "reason": "SOLD_OUT" }, { "date": "2021-02-25", "reason": "SOLD_OUT" }, { "date": "2021-01-26", "reason": "SOLD_OUT" }, { "date": "2021-03-18", "reason": "SOLD_OUT" }, { "date": "2020-12-11", "reason": "SOLD_OUT" }, { "date": "2021-01-07", "reason": "SOLD_OUT" }, { "date": "2020-12-30", "reason": "SOLD_OUT" }, { "date": "2021-02-16", "reason": "SOLD_OUT" }, { "date": "2021-03-16", "reason": "SOLD_OUT" }, { "date": "2021-01-08", "reason": "SOLD_OUT" }, { "date": "2021-01-15", "reason": "SOLD_OUT" }, { "date": "2021-03-09", "reason": "SOLD_OUT" }, { "date": "2021-02-24", "reason": "SOLD_OUT" }, { "date": "2021-02-17", "reason": "SOLD_OUT" }, { "date": "2020-12-01", "reason": "SOLD_OUT" }, { "date": "2021-04-07", "reason": "SOLD_OUT" }, { "date": "2020-12-22", "reason": "SOLD_OUT" }, { "date": "2020-12-29", "reason": "SOLD_OUT" }, { "date": "2021-04-28", "reason": "SOLD_OUT" }, { "date": "2021-03-26", "reason": "SOLD_OUT" }, { "date": "2020-11-20", "reason": "SOLD_OUT" }, { "date": "2021-03-19", "reason": "SOLD_OUT" }, { "date": "2021-04-20", "reason": "SOLD_OUT" }, { "date": "2020-11-18", "reason": "SOLD_OUT" }, { "date": "2021-04-06", "reason": "SOLD_OUT" }, { "date": "2021-02-09", "reason": "SOLD_OUT" }, { "date": "2020-12-09", "reason": "SOLD_OUT" }, { "date": "2020-12-18", "reason": "SOLD_OUT" }, { "date": "2020-11-19", "reason": "SOLD_OUT" }, { "date": "2020-12-04", "reason": "SOLD_OUT" }, { "date": "2021-02-23", "reason": "SOLD_OUT" }, { "date": "2020-12-23", "reason": "SOLD_OUT" }, { "date": "2021-05-04", "reason": "SOLD_OUT" }, { "date": "2020-12-17", "reason": "SOLD_OUT" }, { "date": "2020-12-24", "reason": "SOLD_OUT" }, { "date": "2020-12-31", "reason": "SOLD_OUT" }, { "date": "2020-12-10", "reason": "SOLD_OUT" }, { "date": "2020-12-03", "reason": "SOLD_OUT" } ] }, { "startTime": "18:15", "unavailableDates": [ { "date": "2021-03-10", "reason": "SOLD_OUT" }, { "date": "2021-04-29", "reason": "SOLD_OUT" }, { "date": "2020-12-23", "reason": "SOLD_OUT" }, { "date": "2021-04-20", "reason": "SOLD_OUT" }, { "date": "2021-04-02", "reason": "SOLD_OUT" }, { "date": "2021-02-19", "reason": "SOLD_OUT" }, { "date": "2021-04-30", "reason": "SOLD_OUT" }, { "date": "2021-03-19", "reason": "SOLD_OUT" }, { "date": "2021-01-08", "reason": "SOLD_OUT" }, { "date": "2021-01-27", "reason": "SOLD_OUT" }, { "date": "2021-02-10", "reason": "SOLD_OUT" }, { "date": "2020-12-24", "reason": "SOLD_OUT" }, { "date": "2021-01-26", "reason": "SOLD_OUT" }, { "date": "2021-03-02", "reason": "SOLD_OUT" }, { "date": "2021-03-09", "reason": "SOLD_OUT" }, { "date": "2021-01-19", "reason": "SOLD_OUT" }, { "date": "2020-11-24", "reason": "SOLD_OUT" }, { "date": "2021-03-30", "reason": "SOLD_OUT" }, { "date": "2021-02-18", "reason": "SOLD_OUT" }, { "date": "2021-02-11", "reason": "SOLD_OUT" }, { "date": "2021-04-01", "reason": "SOLD_OUT" }, { "date": "2020-12-16", "reason": "SOLD_OUT" }, { "date": "2021-04-22", "reason": "SOLD_OUT" }, { "date": "2021-04-27", "reason": "SOLD_OUT" }, { "date": "2020-11-25", "reason": "SOLD_OUT" }, { "date": "2021-04-13", "reason": "SOLD_OUT" }, { "date": "2021-02-03", "reason": "SOLD_OUT" }, { "date": "2020-12-03", "reason": "SOLD_OUT" }, { "date": "2021-05-04", "reason": "SOLD_OUT" }, { "date": "2020-12-31", "reason": "SOLD_OUT" }, { "date": "2020-11-20", "reason": "SOLD_OUT" }, { "date": "2020-12-17", "reason": "SOLD_OUT" }, { "date": "2021-02-17", "reason": "SOLD_OUT" }, { "date": "2021-04-21", "reason": "SOLD_OUT" }, { "date": "2021-04-14", "reason": "SOLD_OUT" }, { "date": "2020-11-19", "reason": "SOLD_OUT" }, { "date": "2020-11-26", "reason": "SOLD_OUT" }, { "date": "2021-04-28", "reason": "SOLD_OUT" }, { "date": "2021-04-07", "reason": "SOLD_OUT" }, { "date": "2020-12-11", "reason": "SOLD_OUT" }, { "date": "2021-05-05", "reason": "SOLD_OUT" }, { "date": "2020-12-25", "reason": "SOLD_OUT" }, { "date": "2020-12-18", "reason": "SOLD_OUT" }, { "date": "2021-02-02", "reason": "SOLD_OUT" }, { "date": "2021-02-09", "reason": "SOLD_OUT" }, { "date": "2021-02-16", "reason": "SOLD_OUT" }, { "date": "2021-02-23", "reason": "SOLD_OUT" }, { "date": "2020-12-04", "reason": "SOLD_OUT" }, { "date": "2021-04-06", "reason": "SOLD_OUT" }, { "date": "2021-02-05", "reason": "SOLD_OUT" }, { "date": "2021-03-24", "reason": "SOLD_OUT" }, { "date": "2020-11-18", "reason": "SOLD_OUT" }, { "date": "2021-01-22", "reason": "SOLD_OUT" }, { "date": "2021-03-05", "reason": "SOLD_OUT" }, { "date": "2021-01-13", "reason": "SOLD_OUT" }, { "date": "2020-11-27", "reason": "SOLD_OUT" }, { "date": "2020-12-10", "reason": "SOLD_OUT" }, { "date": "2021-04-16", "reason": "SOLD_OUT" }, { "date": "2021-02-24", "reason": "SOLD_OUT" }, { "date": "2021-05-06", "reason": "SOLD_OUT" }, { "date": "2021-01-12", "reason": "SOLD_OUT" }, { "date": "2021-01-05", "reason": "SOLD_OUT" }, { "date": "2021-03-23", "reason": "SOLD_OUT" }, { "date": "2020-11-17", "reason": "SOLD_OUT" }, { "date": "2021-03-16", "reason": "SOLD_OUT" }, { "date": "2021-02-25", "reason": "SOLD_OUT" }, { "date": "2020-12-02", "reason": "SOLD_OUT" }, { "date": "2020-12-09", "reason": "SOLD_OUT" }, { "date": "2021-04-08", "reason": "SOLD_OUT" }, { "date": "2021-04-15", "reason": "SOLD_OUT" }, { "date": "2021-02-04", "reason": "SOLD_OUT" }, { "date": "2020-12-30", "reason": "SOLD_OUT" }, { "date": "2021-03-31", "reason": "SOLD_OUT" }, { "date": "2021-03-17", "reason": "SOLD_OUT" }, { "date": "2021-03-03", "reason": "SOLD_OUT" }, { "date": "2021-01-15", "reason": "SOLD_OUT" }, { "date": "2021-04-09", "reason": "SOLD_OUT" }, { "date": "2021-02-26", "reason": "SOLD_OUT" }, { "date": "2021-01-06", "reason": "SOLD_OUT" }, { "date": "2021-02-12", "reason": "SOLD_OUT" }, { "date": "2021-01-29", "reason": "SOLD_OUT" }, { "date": "2021-01-20", "reason": "SOLD_OUT" }, { "date": "2021-01-01", "reason": "SOLD_OUT" }, { "date": "2021-03-12", "reason": "SOLD_OUT" }, { "date": "2021-03-26", "reason": "SOLD_OUT" }, { "date": "2021-04-23", "reason": "SOLD_OUT" }, { "date": "2020-12-22", "reason": "SOLD_OUT" }, { "date": "2020-12-15", "reason": "SOLD_OUT" }, { "date": "2021-03-11", "reason": "SOLD_OUT" }, { "date": "2021-03-18", "reason": "SOLD_OUT" }, { "date": "2020-12-29", "reason": "SOLD_OUT" }, { "date": "2021-03-25", "reason": "SOLD_OUT" }, { "date": "2020-12-01", "reason": "SOLD_OUT" }, { "date": "2020-12-08", "reason": "SOLD_OUT" }, { "date": "2021-03-04", "reason": "SOLD_OUT" }, { "date": "2021-01-07", "reason": "SOLD_OUT" }, { "date": "2021-01-28", "reason": "SOLD_OUT" }, { "date": "2021-01-21", "reason": "SOLD_OUT" }, { "date": "2021-01-14", "reason": "SOLD_OUT" } ] } ], "pricingDetails": [ { "pricingPackageType": "PER_PERSON", "minTravelers": 1, "ageBand": "ADULT", "price": { "original": { "recommendedRetailPrice": 111.69, "partnerNetPrice": 87.78, "bookingFee": 5.27, "partnerTotalPrice": 93.05 } } } ] } ] } ] } ], "currency": "EUR", "summary": { "fromPrice": 111.69 } } }, "availability-schedules-265910P1-example": { "summary": "/availability/schedule/265910P1", "value": { "productCode": "265910P1", "bookableItems": [ { "productOptionCode": "TG1", "seasons": [ { "startDate": "2020-05-22", "pricingRecords": [ { "daysOfWeek": [ "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY" ], "timedEntries": [ { "startTime": "09:30" } ], "pricingDetails": [ { "pricingPackageType": "PER_PERSON", "minTravelers": 1, "maxTravelers": 8, "ageBand": "CHILD", "price": { "original": { "recommendedRetailPrice": 200, "partnerNetPrice": 159.75, "bookingFee": 9.58, "partnerTotalPrice": 169.33 } } }, { "pricingPackageType": "PER_PERSON", "minTravelers": 1, "maxTravelers": 8, "ageBand": "YOUTH", "price": { "original": { "recommendedRetailPrice": 260, "partnerNetPrice": 207.68, "bookingFee": 12.46, "partnerTotalPrice": 220.14 } } }, { "pricingPackageType": "PER_PERSON", "minTravelers": 2, "maxTravelers": 9, "ageBand": "ADULT", "price": { "original": { "recommendedRetailPrice": 400, "partnerNetPrice": 319.5, "bookingFee": 19.17, "partnerTotalPrice": 338.67 } } }, { "pricingPackageType": "PER_PERSON", "minTravelers": 1, "maxTravelers": 8, "ageBand": "SENIOR", "price": { "original": { "recommendedRetailPrice": 350, "partnerNetPrice": 279.56, "bookingFee": 16.77, "partnerTotalPrice": 296.33 } } } ] } ] } ] } ], "currency": "AUD", "summary": { "fromPrice": 400 } } }, "availability-schedules-128216P66-example": { "summary": "/availability/schedule/128216P66 - ExtraCharges", "value": { "productCode": "128216P66", "bookableItems": [ { "productOptionCode": "DEFAULT", "seasons": [ { "startDate": "2025-12-15", "endDate": "2026-01-06", "pricingRecords": [ { "daysOfWeek": [ "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY" ], "timedEntries": [ { "startTime": "08:00" }, { "startTime": "09:00" }, { "startTime": "06:00" }, { "startTime": "11:30" }, { "startTime": "07:00" } ], "pricingDetails": [ { "pricingPackageType": "PER_PERSON", "minTravelers": 0, "maxTravelers": 15, "ageBand": "INFANT", "price": { "original": { "recommendedRetailPrice": 200, "partnerNetPrice": 184, "bookingFee": 0, "commission": 16, "partnerTotalPrice": 184 } } }, { "pricingPackageType": "PER_PERSON", "minTravelers": 0, "maxTravelers": 15, "ageBand": "CHILD", "price": { "original": { "recommendedRetailPrice": 625, "partnerNetPrice": 575, "bookingFee": 0, "commission": 50, "partnerTotalPrice": 575 } } }, { "pricingPackageType": "PER_PERSON", "minTravelers": 1, "maxTravelers": 1, "ageBand": "ADULT", "price": { "original": { "recommendedRetailPrice": 890, "partnerNetPrice": 818.8, "bookingFee": 0, "commission": 71.2, "partnerTotalPrice": 818.8 } } }, { "pricingPackageType": "PER_PERSON", "minTravelers": 2, "maxTravelers": 15, "ageBand": "ADULT", "price": { "original": { "recommendedRetailPrice": 725, "partnerNetPrice": 667, "bookingFee": 0, "commission": 58, "partnerTotalPrice": 667 } } } ] } ] }, { "startDate": "2025-09-11", "endDate": "2025-12-14", "pricingRecords": [ { "daysOfWeek": [ "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY" ], "timedEntries": [ { "startTime": "12:00" }, { "startTime": "09:30" }, { "startTime": "11:00" }, { "startTime": "08:00" }, { "startTime": "09:00" }, { "startTime": "08:30" }, { "startTime": "10:00" }, { "startTime": "06:00" }, { "startTime": "11:30" }, { "startTime": "07:00" }, { "startTime": "10:30" }, { "startTime": "06:30" }, { "startTime": "07:30" } ], "pricingDetails": [ { "pricingPackageType": "PER_PERSON", "minTravelers": 0, "maxTravelers": 15, "ageBand": "INFANT", "price": { "original": { "recommendedRetailPrice": 200, "partnerNetPrice": 184, "bookingFee": 0, "commission": 16, "partnerTotalPrice": 184 } } }, { "pricingPackageType": "PER_PERSON", "minTravelers": 0, "maxTravelers": 15, "ageBand": "CHILD", "price": { "original": { "recommendedRetailPrice": 420, "partnerNetPrice": 386.4, "bookingFee": 0, "commission": 33.6, "partnerTotalPrice": 386.4 } } }, { "pricingPackageType": "PER_PERSON", "minTravelers": 2, "maxTravelers": 15, "ageBand": "ADULT", "price": { "original": { "recommendedRetailPrice": 520, "partnerNetPrice": 478.4, "bookingFee": 0, "commission": 41.6, "partnerTotalPrice": 478.4 } } }, { "pricingPackageType": "PER_PERSON", "minTravelers": 1, "maxTravelers": 1, "ageBand": "ADULT", "price": { "original": { "recommendedRetailPrice": 890, "partnerNetPrice": 818.8, "bookingFee": 0, "commission": 71.2, "partnerTotalPrice": 818.8 } } } ] } ] }, { "startDate": "2025-04-26", "endDate": "2025-09-10", "pricingRecords": [ { "daysOfWeek": [ "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY" ], "timedEntries": [ { "startTime": "12:00" }, { "startTime": "09:30" }, { "startTime": "11:00" }, { "startTime": "08:00" }, { "startTime": "09:00" }, { "startTime": "08:30" }, { "startTime": "10:00" }, { "startTime": "06:00" }, { "startTime": "11:30" }, { "startTime": "07:00" }, { "startTime": "10:30" }, { "startTime": "06:30" }, { "startTime": "07:30" } ], "pricingDetails": [ { "pricingPackageType": "PER_PERSON", "minTravelers": 0, "maxTravelers": 15, "ageBand": "INFANT", "price": { "original": { "recommendedRetailPrice": 100, "partnerNetPrice": 92, "bookingFee": 0, "commission": 8, "partnerTotalPrice": 92 } } }, { "pricingPackageType": "PER_PERSON", "minTravelers": 0, "maxTravelers": 15, "ageBand": "CHILD", "price": { "original": { "recommendedRetailPrice": 290, "partnerNetPrice": 266.8, "bookingFee": 0, "commission": 23.2, "partnerTotalPrice": 266.8 } } }, { "pricingPackageType": "PER_PERSON", "minTravelers": 1, "maxTravelers": 1, "ageBand": "ADULT", "price": { "original": { "recommendedRetailPrice": 690, "partnerNetPrice": 634.8, "bookingFee": 0, "commission": 55.2, "partnerTotalPrice": 634.8 } } }, { "pricingPackageType": "PER_PERSON", "minTravelers": 2, "maxTravelers": 15, "ageBand": "ADULT", "price": { "original": { "recommendedRetailPrice": 349, "partnerNetPrice": 321.08, "bookingFee": 0, "commission": 27.92, "partnerTotalPrice": 321.08 } } } ] } ] }, { "startDate": "2025-03-08", "endDate": "2025-04-25", "pricingRecords": [ { "daysOfWeek": [ "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY" ], "timedEntries": [ { "startTime": "12:00" }, { "startTime": "09:30" }, { "startTime": "11:00" }, { "startTime": "08:00" }, { "startTime": "09:00" }, { "startTime": "08:30" }, { "startTime": "10:00" }, { "startTime": "06:00" }, { "startTime": "11:30" }, { "startTime": "07:00" }, { "startTime": "10:30" }, { "startTime": "06:30" }, { "startTime": "07:30" } ], "pricingDetails": [ { "pricingPackageType": "PER_PERSON", "minTravelers": 0, "maxTravelers": 15, "ageBand": "INFANT", "price": { "original": { "recommendedRetailPrice": 100, "partnerNetPrice": 92, "bookingFee": 0, "commission": 8, "partnerTotalPrice": 92 } } }, { "pricingPackageType": "PER_PERSON", "minTravelers": 0, "maxTravelers": 15, "ageBand": "CHILD", "price": { "original": { "recommendedRetailPrice": 315, "partnerNetPrice": 289.8, "bookingFee": 0, "commission": 25.2, "partnerTotalPrice": 289.8 } } }, { "pricingPackageType": "PER_PERSON", "minTravelers": 1, "maxTravelers": 1, "ageBand": "ADULT", "price": { "original": { "recommendedRetailPrice": 790, "partnerNetPrice": 726.8, "bookingFee": 0, "commission": 63.2, "partnerTotalPrice": 726.8 } } }, { "pricingPackageType": "PER_PERSON", "minTravelers": 2, "maxTravelers": 15, "ageBand": "ADULT", "price": { "original": { "recommendedRetailPrice": 475, "partnerNetPrice": 437, "bookingFee": 0, "commission": 38, "partnerTotalPrice": 437 } } } ] } ] } ] } ], "currency": "USD", "summary": { "fromPrice": 349 }, "extraChargesSummary": { "fromPrice": 354.86, "extraCharges": 5.86 } } }, "availability-schedules-bulk-example": { "summary": "/availability/schedules/bulk", "value": { "availabilitySchedules": [ { "productCode": "265910P1", "bookableItems": [ { "productOptionCode": "TG1", "seasons": [ { "startDate": "2020-05-22", "pricingRecords": [ { "daysOfWeek": [ "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY" ], "timedEntries": [ { "startTime": "09:30" } ], "pricingDetails": [ { "pricingPackageType": "PER_PERSON", "minTravelers": 1, "maxTravelers": 8, "ageBand": "CHILD", "price": { "original": { "recommendedRetailPrice": 200, "partnerNetPrice": 159.75, "bookingFee": 9.58, "partnerTotalPrice": 169.33 } } }, { "pricingPackageType": "PER_PERSON", "minTravelers": 1, "maxTravelers": 8, "ageBand": "YOUTH", "price": { "original": { "recommendedRetailPrice": 260, "partnerNetPrice": 207.68, "bookingFee": 12.46, "partnerTotalPrice": 220.14 } } }, { "pricingPackageType": "PER_PERSON", "minTravelers": 2, "maxTravelers": 9, "ageBand": "ADULT", "price": { "original": { "recommendedRetailPrice": 400, "partnerNetPrice": 319.5, "bookingFee": 19.17, "partnerTotalPrice": 338.67 } } }, { "pricingPackageType": "PER_PERSON", "minTravelers": 1, "maxTravelers": 8, "ageBand": "SENIOR", "price": { "original": { "recommendedRetailPrice": 350, "partnerNetPrice": 279.56, "bookingFee": 16.77, "partnerTotalPrice": 296.33 } } } ] } ] } ] } ], "currency": "AUD", "summary": { "fromPrice": 400 } }, { "productCode": "5010SYDNEY", "bookableItems": [ { "productOptionCode": "48HOUR", "seasons": [ { "startDate": "2020-12-01", "endDate": "2022-03-31", "pricingRecords": [ { "daysOfWeek": [ "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY" ], "pricingDetails": [ { "pricingPackageType": "PER_PERSON", "minTravelers": 1, "ageBand": "INFANT", "price": { "original": { "recommendedRetailPrice": 0, "partnerNetPrice": 0, "bookingFee": 0, "partnerTotalPrice": 0 } } }, { "pricingPackageType": "PER_PERSON", "minTravelers": 1, "ageBand": "CHILD", "price": { "original": { "recommendedRetailPrice": 45, "partnerNetPrice": 35.94, "bookingFee": 2.16, "partnerTotalPrice": 38.1 } } }, { "pricingPackageType": "PER_PERSON", "minTravelers": 1, "ageBand": "ADULT", "price": { "original": { "recommendedRetailPrice": 71.1, "partnerNetPrice": 56.79, "bookingFee": 3.41, "partnerTotalPrice": 60.2 } } } ], "unavailableDates": [ { "date": "2020-12-09", "reason": "SOLD_OUT" }, { "date": "2020-12-15", "reason": "SOLD_OUT" }, { "date": "2020-12-01", "reason": "SOLD_OUT" }, { "date": "2020-12-08", "reason": "SOLD_OUT" }, { "date": "2020-12-02", "reason": "SOLD_OUT" }, { "date": "2020-12-16", "reason": "SOLD_OUT" } ] } ] } ] }, { "productOptionCode": "TG1", "seasons": [ { "startDate": "2020-12-01", "endDate": "2022-03-31", "pricingRecords": [ { "daysOfWeek": [ "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY" ], "pricingDetails": [ { "pricingPackageType": "PER_PERSON", "minTravelers": 1, "ageBand": "CHILD", "price": { "original": { "recommendedRetailPrice": 45, "partnerNetPrice": 35.94, "bookingFee": 2.16, "partnerTotalPrice": 38.1 } } }, { "pricingPackageType": "PER_PERSON", "minTravelers": 1, "ageBand": "ADULT", "price": { "original": { "recommendedRetailPrice": 135, "partnerNetPrice": 107.83, "bookingFee": 6.47, "partnerTotalPrice": 114.3 } } } ], "unavailableDates": [ { "date": "2021-03-23", "reason": "SOLD_OUT" }, { "date": "2021-02-27", "reason": "SOLD_OUT" }, { "date": "2020-12-04", "reason": "SOLD_OUT" }, { "date": "2021-03-14", "reason": "SOLD_OUT" }, { "date": "2021-01-31", "reason": "SOLD_OUT" }, { "date": "2021-02-04", "reason": "SOLD_OUT" }, { "date": "2020-12-18", "reason": "SOLD_OUT" }, { "date": "2021-02-18", "reason": "SOLD_OUT" }, { "date": "2021-03-28", "reason": "SOLD_OUT" }, { "date": "2021-03-09", "reason": "SOLD_OUT" }, { "date": "2021-02-13", "reason": "SOLD_OUT" }, { "date": "2020-12-13", "reason": "SOLD_OUT" }, { "date": "2021-03-19", "reason": "SOLD_OUT" }, { "date": "2021-01-27", "reason": "SOLD_OUT" }, { "date": "2021-02-08", "reason": "SOLD_OUT" }, { "date": "2020-12-17", "reason": "SOLD_OUT" }, { "date": "2020-12-08", "reason": "SOLD_OUT" }, { "date": "2021-02-17", "reason": "SOLD_OUT" }, { "date": "2020-12-03", "reason": "SOLD_OUT" }, { "date": "2021-02-03", "reason": "SOLD_OUT" }, { "date": "2021-03-05", "reason": "SOLD_OUT" }, { "date": "2021-02-22", "reason": "SOLD_OUT" }, { "date": "2020-12-05", "reason": "SOLD_OUT" }, { "date": "2020-12-12", "reason": "SOLD_OUT" }, { "date": "2021-03-31", "reason": "SOLD_OUT" }, { "date": "2021-02-28", "reason": "SOLD_OUT" }, { "date": "2021-03-24", "reason": "SOLD_OUT" }, { "date": "2021-02-21", "reason": "SOLD_OUT" }, { "date": "2021-03-17", "reason": "SOLD_OUT" }, { "date": "2021-02-14", "reason": "SOLD_OUT" }, { "date": "2021-03-10", "reason": "SOLD_OUT" }, { "date": "2021-03-03", "reason": "SOLD_OUT" }, { "date": "2021-01-30", "reason": "SOLD_OUT" }, { "date": "2020-12-09", "reason": "SOLD_OUT" }, { "date": "2020-12-02", "reason": "SOLD_OUT" }, { "date": "2021-03-20", "reason": "SOLD_OUT" }, { "date": "2021-02-07", "reason": "SOLD_OUT" }, { "date": "2021-03-27", "reason": "SOLD_OUT" }, { "date": "2021-03-06", "reason": "SOLD_OUT" }, { "date": "2021-03-13", "reason": "SOLD_OUT" }, { "date": "2020-12-16", "reason": "SOLD_OUT" }, { "date": "2021-03-16", "reason": "SOLD_OUT" }, { "date": "2021-03-30", "reason": "SOLD_OUT" }, { "date": "2021-02-20", "reason": "SOLD_OUT" }, { "date": "2021-02-11", "reason": "SOLD_OUT" }, { "date": "2020-12-11", "reason": "SOLD_OUT" }, { "date": "2021-03-07", "reason": "SOLD_OUT" }, { "date": "2021-03-21", "reason": "SOLD_OUT" }, { "date": "2021-01-29", "reason": "SOLD_OUT" }, { "date": "2021-02-25", "reason": "SOLD_OUT" }, { "date": "2021-02-06", "reason": "SOLD_OUT" }, { "date": "2020-12-06", "reason": "SOLD_OUT" }, { "date": "2021-03-02", "reason": "SOLD_OUT" }, { "date": "2021-02-01", "reason": "SOLD_OUT" }, { "date": "2021-02-24", "reason": "SOLD_OUT" }, { "date": "2020-12-01", "reason": "SOLD_OUT" }, { "date": "2020-12-15", "reason": "SOLD_OUT" }, { "date": "2020-12-10", "reason": "SOLD_OUT" }, { "date": "2021-02-10", "reason": "SOLD_OUT" }, { "date": "2021-02-15", "reason": "SOLD_OUT" }, { "date": "2021-03-26", "reason": "SOLD_OUT" }, { "date": "2021-03-12", "reason": "SOLD_OUT" }, { "date": "2021-03-08", "reason": "SOLD_OUT" }, { "date": "2021-02-12", "reason": "SOLD_OUT" }, { "date": "2021-03-01", "reason": "SOLD_OUT" }, { "date": "2021-02-05", "reason": "SOLD_OUT" }, { "date": "2020-12-07", "reason": "SOLD_OUT" }, { "date": "2020-12-14", "reason": "SOLD_OUT" }, { "date": "2021-03-22", "reason": "SOLD_OUT" }, { "date": "2021-02-26", "reason": "SOLD_OUT" }, { "date": "2021-03-15", "reason": "SOLD_OUT" }, { "date": "2021-03-29", "reason": "SOLD_OUT" }, { "date": "2021-02-19", "reason": "SOLD_OUT" }, { "date": "2021-02-16", "reason": "SOLD_OUT" }, { "date": "2021-03-04", "reason": "SOLD_OUT" }, { "date": "2021-02-23", "reason": "SOLD_OUT" }, { "date": "2021-03-11", "reason": "SOLD_OUT" }, { "date": "2021-01-28", "reason": "SOLD_OUT" }, { "date": "2021-03-25", "reason": "SOLD_OUT" }, { "date": "2021-03-18", "reason": "SOLD_OUT" }, { "date": "2021-02-02", "reason": "SOLD_OUT" }, { "date": "2021-02-09", "reason": "SOLD_OUT" } ] } ] } ] }, { "productOptionCode": "DELUXE", "seasons": [ { "startDate": "2020-12-01", "endDate": "2022-03-31", "pricingRecords": [ { "daysOfWeek": [ "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY" ], "pricingDetails": [ { "pricingPackageType": "PER_PERSON", "minTravelers": 1, "ageBand": "CHILD", "price": { "original": { "recommendedRetailPrice": 58.5, "partnerNetPrice": 46.72, "bookingFee": 2.8, "partnerTotalPrice": 49.52 } } }, { "pricingPackageType": "PER_PERSON", "minTravelers": 1, "ageBand": "ADULT", "price": { "original": { "recommendedRetailPrice": 89.1, "partnerNetPrice": 71.16, "bookingFee": 4.27, "partnerTotalPrice": 75.43 } } } ], "unavailableDates": [ { "date": "2021-03-08", "reason": "SOLD_OUT" }, { "date": "2021-02-12", "reason": "SOLD_OUT" }, { "date": "2021-03-22", "reason": "SOLD_OUT" }, { "date": "2021-02-26", "reason": "SOLD_OUT" }, { "date": "2021-01-30", "reason": "SOLD_OUT" }, { "date": "2020-12-07", "reason": "SOLD_OUT" }, { "date": "2021-03-17", "reason": "SOLD_OUT" }, { "date": "2021-03-03", "reason": "SOLD_OUT" }, { "date": "2021-02-07", "reason": "SOLD_OUT" }, { "date": "2021-03-31", "reason": "SOLD_OUT" }, { "date": "2021-02-21", "reason": "SOLD_OUT" }, { "date": "2021-02-16", "reason": "SOLD_OUT" }, { "date": "2021-03-27", "reason": "SOLD_OUT" }, { "date": "2020-12-16", "reason": "SOLD_OUT" }, { "date": "2021-03-13", "reason": "SOLD_OUT" }, { "date": "2020-12-11", "reason": "SOLD_OUT" }, { "date": "2021-02-25", "reason": "SOLD_OUT" }, { "date": "2021-02-11", "reason": "SOLD_OUT" }, { "date": "2021-01-31", "reason": "SOLD_OUT" }, { "date": "2020-12-06", "reason": "SOLD_OUT" }, { "date": "2020-12-13", "reason": "SOLD_OUT" }, { "date": "2021-03-25", "reason": "SOLD_OUT" }, { "date": "2021-02-22", "reason": "SOLD_OUT" }, { "date": "2021-02-02", "reason": "SOLD_OUT" }, { "date": "2021-02-15", "reason": "SOLD_OUT" }, { "date": "2021-03-11", "reason": "SOLD_OUT" }, { "date": "2021-03-18", "reason": "SOLD_OUT" }, { "date": "2021-02-08", "reason": "SOLD_OUT" }, { "date": "2021-03-04", "reason": "SOLD_OUT" }, { "date": "2020-12-17", "reason": "SOLD_OUT" }, { "date": "2021-01-27", "reason": "SOLD_OUT" }, { "date": "2020-12-03", "reason": "SOLD_OUT" }, { "date": "2020-12-10", "reason": "SOLD_OUT" }, { "date": "2021-03-07", "reason": "SOLD_OUT" }, { "date": "2021-03-28", "reason": "SOLD_OUT" }, { "date": "2021-03-14", "reason": "SOLD_OUT" }, { "date": "2021-03-21", "reason": "SOLD_OUT" }, { "date": "2020-12-05", "reason": "SOLD_OUT" }, { "date": "2021-02-05", "reason": "SOLD_OUT" }, { "date": "2021-03-15", "reason": "SOLD_OUT" }, { "date": "2021-02-19", "reason": "SOLD_OUT" }, { "date": "2021-03-29", "reason": "SOLD_OUT" }, { "date": "2021-02-14", "reason": "SOLD_OUT" }, { "date": "2020-12-14", "reason": "SOLD_OUT" }, { "date": "2021-03-10", "reason": "SOLD_OUT" }, { "date": "2021-03-24", "reason": "SOLD_OUT" }, { "date": "2021-02-28", "reason": "SOLD_OUT" }, { "date": "2021-02-01", "reason": "SOLD_OUT" }, { "date": "2020-12-01", "reason": "SOLD_OUT" }, { "date": "2021-03-20", "reason": "SOLD_OUT" }, { "date": "2020-12-09", "reason": "SOLD_OUT" }, { "date": "2021-02-09", "reason": "SOLD_OUT" }, { "date": "2021-02-23", "reason": "SOLD_OUT" }, { "date": "2021-03-06", "reason": "SOLD_OUT" }, { "date": "2020-12-18", "reason": "SOLD_OUT" }, { "date": "2020-12-04", "reason": "SOLD_OUT" }, { "date": "2021-02-04", "reason": "SOLD_OUT" }, { "date": "2021-01-28", "reason": "SOLD_OUT" }, { "date": "2021-03-01", "reason": "SOLD_OUT" }, { "date": "2021-02-18", "reason": "SOLD_OUT" }, { "date": "2021-02-20", "reason": "SOLD_OUT" }, { "date": "2021-03-23", "reason": "SOLD_OUT" }, { "date": "2021-03-30", "reason": "SOLD_OUT" }, { "date": "2021-02-27", "reason": "SOLD_OUT" }, { "date": "2021-03-09", "reason": "SOLD_OUT" }, { "date": "2021-02-13", "reason": "SOLD_OUT" }, { "date": "2021-03-16", "reason": "SOLD_OUT" }, { "date": "2021-02-06", "reason": "SOLD_OUT" }, { "date": "2020-12-08", "reason": "SOLD_OUT" }, { "date": "2020-12-02", "reason": "SOLD_OUT" }, { "date": "2020-12-15", "reason": "SOLD_OUT" }, { "date": "2021-03-12", "reason": "SOLD_OUT" }, { "date": "2021-02-24", "reason": "SOLD_OUT" }, { "date": "2021-03-05", "reason": "SOLD_OUT" }, { "date": "2021-03-19", "reason": "SOLD_OUT" }, { "date": "2021-03-26", "reason": "SOLD_OUT" }, { "date": "2021-02-03", "reason": "SOLD_OUT" }, { "date": "2021-02-10", "reason": "SOLD_OUT" }, { "date": "2021-03-02", "reason": "SOLD_OUT" }, { "date": "2021-01-29", "reason": "SOLD_OUT" }, { "date": "2021-02-17", "reason": "SOLD_OUT" }, { "date": "2020-12-12", "reason": "SOLD_OUT" } ] } ] } ] }, { "productOptionCode": "TG2", "seasons": [ { "startDate": "2020-07-22", "endDate": "2021-03-31", "pricingRecords": [ { "daysOfWeek": [ "MONDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY" ], "pricingDetails": [ { "pricingPackageType": "PER_PERSON", "minTravelers": 1, "ageBand": "INFANT", "price": { "original": { "recommendedRetailPrice": 0, "partnerNetPrice": 0, "bookingFee": 0, "partnerTotalPrice": 0 } } }, { "pricingPackageType": "PER_PERSON", "minTravelers": 1, "ageBand": "CHILD", "price": { "original": { "recommendedRetailPrice": 5, "partnerNetPrice": 3.99, "bookingFee": 0.24, "partnerTotalPrice": 4.23 } } }, { "pricingPackageType": "PER_PERSON", "minTravelers": 1, "ageBand": "ADULT", "price": { "original": { "recommendedRetailPrice": 36, "partnerNetPrice": 28.76, "bookingFee": 1.73, "partnerTotalPrice": 30.49 } } } ], "unavailableDates": [ { "date": "2021-03-19", "reason": "SOLD_OUT" }, { "date": "2021-03-05", "reason": "SOLD_OUT" }, { "date": "2021-02-28", "reason": "SOLD_OUT" }, { "date": "2021-01-18", "reason": "SOLD_OUT" }, { "date": "2020-12-28", "reason": "SOLD_OUT" }, { "date": "2020-12-14", "reason": "SOLD_OUT" }, { "date": "2021-02-14", "reason": "SOLD_OUT" }, { "date": "2021-01-04", "reason": "SOLD_OUT" }, { "date": "2021-01-23", "reason": "SOLD_OUT" }, { "date": "2021-02-04", "reason": "SOLD_OUT" }, { "date": "2021-03-15", "reason": "SOLD_OUT" }, { "date": "2020-12-27", "reason": "SOLD_OUT" }, { "date": "2021-02-18", "reason": "SOLD_OUT" }, { "date": "2021-01-09", "reason": "SOLD_OUT" }, { "date": "2020-12-13", "reason": "SOLD_OUT" }, { "date": "2021-03-29", "reason": "SOLD_OUT" }, { "date": "2021-03-01", "reason": "SOLD_OUT" }, { "date": "2021-03-06", "reason": "SOLD_OUT" }, { "date": "2020-12-18", "reason": "SOLD_OUT" }, { "date": "2021-01-28", "reason": "SOLD_OUT" }, { "date": "2020-12-04", "reason": "SOLD_OUT" }, { "date": "2021-01-14", "reason": "SOLD_OUT" }, { "date": "2021-03-20", "reason": "SOLD_OUT" }, { "date": "2021-02-06", "reason": "SOLD_OUT" }, { "date": "2021-02-13", "reason": "SOLD_OUT" }, { "date": "2021-02-20", "reason": "SOLD_OUT" }, { "date": "2021-02-27", "reason": "SOLD_OUT" }, { "date": "2021-01-08", "reason": "SOLD_OUT" }, { "date": "2020-12-12", "reason": "SOLD_OUT" }, { "date": "2020-12-05", "reason": "SOLD_OUT" }, { "date": "2021-01-15", "reason": "SOLD_OUT" }, { "date": "2021-01-22", "reason": "SOLD_OUT" }, { "date": "2021-01-29", "reason": "SOLD_OUT" }, { "date": "2020-12-19", "reason": "SOLD_OUT" }, { "date": "2020-12-26", "reason": "SOLD_OUT" }, { "date": "2021-01-01", "reason": "SOLD_OUT" }, { "date": "2021-03-26", "reason": "SOLD_OUT" }, { "date": "2021-03-12", "reason": "SOLD_OUT" }, { "date": "2021-02-21", "reason": "SOLD_OUT" }, { "date": "2021-01-25", "reason": "SOLD_OUT" }, { "date": "2021-01-11", "reason": "SOLD_OUT" }, { "date": "2020-12-07", "reason": "SOLD_OUT" }, { "date": "2021-02-07", "reason": "SOLD_OUT" }, { "date": "2020-12-21", "reason": "SOLD_OUT" }, { "date": "2021-01-30", "reason": "SOLD_OUT" }, { "date": "2021-02-11", "reason": "SOLD_OUT" }, { "date": "2020-12-20", "reason": "SOLD_OUT" }, { "date": "2021-03-08", "reason": "SOLD_OUT" }, { "date": "2021-01-16", "reason": "SOLD_OUT" }, { "date": "2021-03-22", "reason": "SOLD_OUT" }, { "date": "2020-12-25", "reason": "SOLD_OUT" }, { "date": "2021-03-13", "reason": "SOLD_OUT" }, { "date": "2021-01-21", "reason": "SOLD_OUT" }, { "date": "2021-01-02", "reason": "SOLD_OUT" }, { "date": "2021-02-25", "reason": "SOLD_OUT" }, { "date": "2021-03-27", "reason": "SOLD_OUT" }, { "date": "2020-12-11", "reason": "SOLD_OUT" }, { "date": "2021-01-07", "reason": "SOLD_OUT" }, { "date": "2021-02-15", "reason": "SOLD_OUT" }, { "date": "2021-03-04", "reason": "SOLD_OUT" }, { "date": "2021-03-18", "reason": "SOLD_OUT" }, { "date": "2021-02-08", "reason": "SOLD_OUT" }, { "date": "2021-03-11", "reason": "SOLD_OUT" }, { "date": "2021-03-25", "reason": "SOLD_OUT" }, { "date": "2021-02-22", "reason": "SOLD_OUT" }, { "date": "2020-12-06", "reason": "SOLD_OUT" }, { "date": "2021-01-17", "reason": "SOLD_OUT" }, { "date": "2021-01-03", "reason": "SOLD_OUT" }, { "date": "2021-01-10", "reason": "SOLD_OUT" }, { "date": "2021-02-01", "reason": "SOLD_OUT" }, { "date": "2021-01-24", "reason": "SOLD_OUT" }, { "date": "2021-01-31", "reason": "SOLD_OUT" }, { "date": "2021-02-19", "reason": "SOLD_OUT" }, { "date": "2021-02-26", "reason": "SOLD_OUT" }, { "date": "2021-02-05", "reason": "SOLD_OUT" }, { "date": "2021-02-12", "reason": "SOLD_OUT" }, { "date": "2021-03-28", "reason": "SOLD_OUT" }, { "date": "2020-12-03", "reason": "SOLD_OUT" }, { "date": "2020-12-17", "reason": "SOLD_OUT" }, { "date": "2021-03-21", "reason": "SOLD_OUT" }, { "date": "2020-12-10", "reason": "SOLD_OUT" }, { "date": "2020-12-24", "reason": "SOLD_OUT" }, { "date": "2021-03-14", "reason": "SOLD_OUT" }, { "date": "2020-12-31", "reason": "SOLD_OUT" }, { "date": "2021-03-07", "reason": "SOLD_OUT" } ] } ], "operatingHours": [ { "dayOfWeek": "MONDAY", "operatingHours": [ { "opensAt": "10:00:00", "closesAt": "14:00:00" } ] }, { "dayOfWeek": "THURSDAY", "operatingHours": [ { "opensAt": "10:00:00", "closesAt": "14:00:00" } ] }, { "dayOfWeek": "FRIDAY", "operatingHours": [ { "opensAt": "10:00:00", "closesAt": "14:00:00" } ] }, { "dayOfWeek": "SATURDAY", "operatingHours": [ { "opensAt": "10:00:00", "closesAt": "14:00:00" } ] }, { "dayOfWeek": "SUNDAY", "operatingHours": [ { "opensAt": "10:00:00", "closesAt": "14:00:00" } ] } ] } ] }, { "productOptionCode": "24HOUR", "seasons": [ { "startDate": "2020-12-01", "endDate": "2022-03-31", "pricingRecords": [ { "daysOfWeek": [ "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY" ], "pricingDetails": [ { "pricingPackageType": "PER_PERSON", "minTravelers": 1, "ageBand": "CHILD", "price": { "original": { "recommendedRetailPrice": 40.5, "partnerNetPrice": 32.34, "bookingFee": 1.94, "partnerTotalPrice": 34.28 } } }, { "pricingPackageType": "PER_PERSON", "minTravelers": 1, "ageBand": "ADULT", "price": { "original": { "recommendedRetailPrice": 58.5, "partnerNetPrice": 46.72, "bookingFee": 2.8, "partnerTotalPrice": 49.52 } } } ], "unavailableDates": [ { "date": "2020-12-08", "reason": "SOLD_OUT" }, { "date": "2020-12-01", "reason": "SOLD_OUT" }, { "date": "2020-12-15", "reason": "SOLD_OUT" }, { "date": "2020-12-16", "reason": "SOLD_OUT" }, { "date": "2020-12-09", "reason": "SOLD_OUT" }, { "date": "2020-12-02", "reason": "SOLD_OUT" } ] } ] } ] } ], "currency": "AUD", "summary": { "fromPrice": 52.65 } } ] } }, "availability-schedules-bulk-extra-charges-example": { "summary": "/availability/schedules/bulk - ExtraCharges", "value": { "availabilitySchedules": [ { "productCode": "128216P66", "bookableItems": [ { "productOptionCode": "DEFAULT", "seasons": [ { "startDate": "2025-12-15", "endDate": "2026-01-06", "pricingRecords": [ { "daysOfWeek": [ "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY" ], "timedEntries": [ { "startTime": "08:00" }, { "startTime": "09:00" }, { "startTime": "06:00" }, { "startTime": "11:30" }, { "startTime": "07:00" } ], "pricingDetails": [ { "pricingPackageType": "PER_PERSON", "minTravelers": 0, "maxTravelers": 15, "ageBand": "INFANT", "price": { "original": { "recommendedRetailPrice": 200, "partnerNetPrice": 184, "bookingFee": 0, "commission": 16, "partnerTotalPrice": 184 } } }, { "pricingPackageType": "PER_PERSON", "minTravelers": 0, "maxTravelers": 15, "ageBand": "CHILD", "price": { "original": { "recommendedRetailPrice": 625, "partnerNetPrice": 575, "bookingFee": 0, "commission": 50, "partnerTotalPrice": 575 } } }, { "pricingPackageType": "PER_PERSON", "minTravelers": 1, "maxTravelers": 1, "ageBand": "ADULT", "price": { "original": { "recommendedRetailPrice": 890, "partnerNetPrice": 818.8, "bookingFee": 0, "commission": 71.2, "partnerTotalPrice": 818.8 } } }, { "pricingPackageType": "PER_PERSON", "minTravelers": 2, "maxTravelers": 15, "ageBand": "ADULT", "price": { "original": { "recommendedRetailPrice": 725, "partnerNetPrice": 667, "bookingFee": 0, "commission": 58, "partnerTotalPrice": 667 } } } ] } ] }, { "startDate": "2025-09-11", "endDate": "2025-12-14", "pricingRecords": [ { "daysOfWeek": [ "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY" ], "timedEntries": [ { "startTime": "12:00" }, { "startTime": "09:30" }, { "startTime": "11:00" }, { "startTime": "08:00" }, { "startTime": "09:00" }, { "startTime": "08:30" }, { "startTime": "10:00" }, { "startTime": "06:00" }, { "startTime": "11:30" }, { "startTime": "07:00" }, { "startTime": "10:30" }, { "startTime": "06:30" }, { "startTime": "07:30" } ], "pricingDetails": [ { "pricingPackageType": "PER_PERSON", "minTravelers": 0, "maxTravelers": 15, "ageBand": "INFANT", "price": { "original": { "recommendedRetailPrice": 200, "partnerNetPrice": 184, "bookingFee": 0, "commission": 16, "partnerTotalPrice": 184 } } }, { "pricingPackageType": "PER_PERSON", "minTravelers": 0, "maxTravelers": 15, "ageBand": "CHILD", "price": { "original": { "recommendedRetailPrice": 420, "partnerNetPrice": 386.4, "bookingFee": 0, "commission": 33.6, "partnerTotalPrice": 386.4 } } }, { "pricingPackageType": "PER_PERSON", "minTravelers": 2, "maxTravelers": 15, "ageBand": "ADULT", "price": { "original": { "recommendedRetailPrice": 520, "partnerNetPrice": 478.4, "bookingFee": 0, "commission": 41.6, "partnerTotalPrice": 478.4 } } }, { "pricingPackageType": "PER_PERSON", "minTravelers": 1, "maxTravelers": 1, "ageBand": "ADULT", "price": { "original": { "recommendedRetailPrice": 890, "partnerNetPrice": 818.8, "bookingFee": 0, "commission": 71.2, "partnerTotalPrice": 818.8 } } } ] } ] }, { "startDate": "2025-04-26", "endDate": "2025-09-10", "pricingRecords": [ { "daysOfWeek": [ "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY" ], "timedEntries": [ { "startTime": "12:00" }, { "startTime": "09:30" }, { "startTime": "11:00" }, { "startTime": "08:00" }, { "startTime": "09:00" }, { "startTime": "08:30" }, { "startTime": "10:00" }, { "startTime": "06:00" }, { "startTime": "11:30" }, { "startTime": "07:00" }, { "startTime": "10:30" }, { "startTime": "06:30" }, { "startTime": "07:30" } ], "pricingDetails": [ { "pricingPackageType": "PER_PERSON", "minTravelers": 0, "maxTravelers": 15, "ageBand": "INFANT", "price": { "original": { "recommendedRetailPrice": 100, "partnerNetPrice": 92, "bookingFee": 0, "commission": 8, "partnerTotalPrice": 92 } } }, { "pricingPackageType": "PER_PERSON", "minTravelers": 0, "maxTravelers": 15, "ageBand": "CHILD", "price": { "original": { "recommendedRetailPrice": 290, "partnerNetPrice": 266.8, "bookingFee": 0, "commission": 23.2, "partnerTotalPrice": 266.8 } } }, { "pricingPackageType": "PER_PERSON", "minTravelers": 1, "maxTravelers": 1, "ageBand": "ADULT", "price": { "original": { "recommendedRetailPrice": 690, "partnerNetPrice": 634.8, "bookingFee": 0, "commission": 55.2, "partnerTotalPrice": 634.8 } } }, { "pricingPackageType": "PER_PERSON", "minTravelers": 2, "maxTravelers": 15, "ageBand": "ADULT", "price": { "original": { "recommendedRetailPrice": 349, "partnerNetPrice": 321.08, "bookingFee": 0, "commission": 27.92, "partnerTotalPrice": 321.08 } } } ] } ] }, { "startDate": "2025-03-08", "endDate": "2025-04-25", "pricingRecords": [ { "daysOfWeek": [ "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY" ], "timedEntries": [ { "startTime": "12:00" }, { "startTime": "09:30" }, { "startTime": "11:00" }, { "startTime": "08:00" }, { "startTime": "09:00" }, { "startTime": "08:30" }, { "startTime": "10:00" }, { "startTime": "06:00" }, { "startTime": "11:30" }, { "startTime": "07:00" }, { "startTime": "10:30" }, { "startTime": "06:30" }, { "startTime": "07:30" } ], "pricingDetails": [ { "pricingPackageType": "PER_PERSON", "minTravelers": 0, "maxTravelers": 15, "ageBand": "INFANT", "price": { "original": { "recommendedRetailPrice": 100, "partnerNetPrice": 92, "bookingFee": 0, "commission": 8, "partnerTotalPrice": 92 } } }, { "pricingPackageType": "PER_PERSON", "minTravelers": 0, "maxTravelers": 15, "ageBand": "CHILD", "price": { "original": { "recommendedRetailPrice": 315, "partnerNetPrice": 289.8, "bookingFee": 0, "commission": 25.2, "partnerTotalPrice": 289.8 } } }, { "pricingPackageType": "PER_PERSON", "minTravelers": 1, "maxTravelers": 1, "ageBand": "ADULT", "price": { "original": { "recommendedRetailPrice": 790, "partnerNetPrice": 726.8, "bookingFee": 0, "commission": 63.2, "partnerTotalPrice": 726.8 } } }, { "pricingPackageType": "PER_PERSON", "minTravelers": 2, "maxTravelers": 15, "ageBand": "ADULT", "price": { "original": { "recommendedRetailPrice": 475, "partnerNetPrice": 437, "bookingFee": 0, "commission": 38, "partnerTotalPrice": 437 } } } ] } ] } ] } ], "currency": "USD", "summary": { "fromPrice": 349 }, "extraChargesSummary": { "fromPrice": 354.86, "extraCharges": 5.86 } }, { "productCode": "281620P1", "bookableItems": [ { "productOptionCode": "TG1", "seasons": [ { "startDate": "2020-08-31", "pricingRecords": [ { "daysOfWeek": [ "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY" ], "timedEntries": [ { "startTime": "08:00" } ], "pricingDetails": [ { "pricingPackageType": "PER_PERSON", "minTravelers": 0, "ageBand": "YOUTH", "price": { "original": { "recommendedRetailPrice": 18.22, "partnerNetPrice": 16.76, "bookingFee": 0, "commission": 1.46, "partnerTotalPrice": 16.76 } } }, { "pricingPackageType": "PER_PERSON", "minTravelers": 1, "ageBand": "ADULT", "price": { "original": { "recommendedRetailPrice": 20.25, "partnerNetPrice": 18.63, "bookingFee": 0, "commission": 1.62, "partnerTotalPrice": 18.63 } } } ] } ] } ] } ], "currency": "AUD", "summary": { "fromPrice": 20.25 }, "extraChargesSummary": { "fromPrice": 29.29, "extraCharges": 9.04 } }, { "productCode": "24380P927", "bookableItems": [ { "productOptionCode": "TG1", "seasons": [ { "startDate": "2022-01-12", "pricingRecords": [ { "daysOfWeek": [ "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY" ], "timedEntries": [ { "startTime": "09:00" }, { "startTime": "11:30" }, { "startTime": "12:30" }, { "startTime": "09:30" }, { "startTime": "13:00" }, { "startTime": "10:00" }, { "startTime": "15:30", "unavailableDates": [ { "date": "2025-04-01", "reason": "SOLD_OUT" }, { "date": "2025-03-28", "reason": "SOLD_OUT" }, { "date": "2025-03-21", "reason": "SOLD_OUT" }, { "date": "2025-05-13", "reason": "SOLD_OUT" }, { "date": "2025-07-05", "reason": "SOLD_OUT" }, { "date": "2025-03-26", "reason": "SOLD_OUT" }, { "date": "2025-03-19", "reason": "SOLD_OUT" }, { "date": "2025-12-06", "reason": "SOLD_OUT" }, { "date": "2025-06-28", "reason": "SOLD_OUT" }, { "date": "2025-06-21", "reason": "SOLD_OUT" }, { "date": "2025-03-31", "reason": "SOLD_OUT" }, { "date": "2025-03-24", "reason": "SOLD_OUT" }, { "date": "2025-12-10", "reason": "SOLD_OUT" }, { "date": "2025-05-09", "reason": "SOLD_OUT" }, { "date": "2025-05-07", "reason": "SOLD_OUT" }, { "date": "2025-07-06", "reason": "SOLD_OUT" }, { "date": "2025-03-17", "reason": "SOLD_OUT" }, { "date": "2025-06-25", "reason": "SOLD_OUT" }, { "date": "2025-05-02", "reason": "SOLD_OUT" }, { "date": "2025-12-08", "reason": "SOLD_OUT" }, { "date": "2025-03-29", "reason": "SOLD_OUT" }, { "date": "2025-03-22", "reason": "SOLD_OUT" }, { "date": "2025-03-20", "reason": "SOLD_OUT" }, { "date": "2025-12-05", "reason": "SOLD_OUT" }, { "date": "2025-03-27", "reason": "SOLD_OUT" }, { "date": "2025-03-18", "reason": "SOLD_OUT" }, { "date": "2025-04-14", "reason": "SOLD_OUT" }, { "date": "2025-10-27", "reason": "SOLD_OUT" }, { "date": "2025-10-01", "reason": "SOLD_OUT" }, { "date": "2025-12-07", "reason": "SOLD_OUT" }, { "date": "2025-09-24", "reason": "SOLD_OUT" }, { "date": "2025-04-02", "reason": "SOLD_OUT" }, { "date": "2025-03-25", "reason": "SOLD_OUT" }, { "date": "2025-07-04", "reason": "SOLD_OUT" }, { "date": "2025-06-01", "reason": "SOLD_OUT" }, { "date": "2025-10-10", "reason": "SOLD_OUT" }, { "date": "2025-03-23", "reason": "SOLD_OUT" }, { "date": "2025-03-30", "reason": "SOLD_OUT" }, { "date": "2025-07-09", "reason": "SOLD_OUT" }, { "date": "2025-06-10", "reason": "SOLD_OUT" }, { "date": "2025-05-01", "reason": "SOLD_OUT" }, { "date": "2025-12-09", "reason": "SOLD_OUT" } ] }, { "startTime": "12:00" }, { "startTime": "13:30" }, { "startTime": "14:00" }, { "startTime": "16:00", "unavailableDates": [ { "date": "2025-03-21", "reason": "SOLD_OUT" }, { "date": "2025-04-01", "reason": "SOLD_OUT" }, { "date": "2025-07-05", "reason": "SOLD_OUT" }, { "date": "2025-03-28", "reason": "SOLD_OUT" }, { "date": "2025-05-13", "reason": "SOLD_OUT" }, { "date": "2025-12-08", "reason": "SOLD_OUT" }, { "date": "2025-03-30", "reason": "SOLD_OUT" }, { "date": "2025-06-25", "reason": "SOLD_OUT" }, { "date": "2025-03-23", "reason": "SOLD_OUT" }, { "date": "2025-03-17", "reason": "SOLD_OUT" }, { "date": "2025-05-01", "reason": "SOLD_OUT" }, { "date": "2025-05-02", "reason": "SOLD_OUT" }, { "date": "2025-12-10", "reason": "SOLD_OUT" }, { "date": "2025-05-09", "reason": "SOLD_OUT" }, { "date": "2025-04-14", "reason": "SOLD_OUT" }, { "date": "2025-03-31", "reason": "SOLD_OUT" }, { "date": "2025-03-24", "reason": "SOLD_OUT" }, { "date": "2025-03-19", "reason": "SOLD_OUT" }, { "date": "2025-10-01", "reason": "SOLD_OUT" }, { "date": "2025-03-26", "reason": "SOLD_OUT" }, { "date": "2025-12-05", "reason": "SOLD_OUT" }, { "date": "2025-10-27", "reason": "SOLD_OUT" }, { "date": "2025-06-01", "reason": "SOLD_OUT" }, { "date": "2025-04-02", "reason": "SOLD_OUT" }, { "date": "2025-12-07", "reason": "SOLD_OUT" }, { "date": "2025-03-20", "reason": "SOLD_OUT" }, { "date": "2025-03-27", "reason": "SOLD_OUT" }, { "date": "2025-07-06", "reason": "SOLD_OUT" }, { "date": "2025-05-07", "reason": "SOLD_OUT" }, { "date": "2025-06-10", "reason": "SOLD_OUT" }, { "date": "2025-10-10", "reason": "SOLD_OUT" }, { "date": "2025-12-09", "reason": "SOLD_OUT" }, { "date": "2025-03-29", "reason": "SOLD_OUT" }, { "date": "2025-03-22", "reason": "SOLD_OUT" }, { "date": "2025-03-25", "reason": "SOLD_OUT" }, { "date": "2025-07-09", "reason": "SOLD_OUT" }, { "date": "2025-09-24", "reason": "SOLD_OUT" }, { "date": "2025-03-18", "reason": "SOLD_OUT" }, { "date": "2025-07-04", "reason": "SOLD_OUT" }, { "date": "2025-12-06", "reason": "SOLD_OUT" }, { "date": "2025-06-21", "reason": "SOLD_OUT" }, { "date": "2025-06-28", "reason": "SOLD_OUT" } ] }, { "startTime": "10:30" }, { "startTime": "08:30" }, { "startTime": "16:30", "unavailableDates": [ { "date": "2025-12-10", "reason": "SOLD_OUT" }, { "date": "2025-05-01", "reason": "SOLD_OUT" }, { "date": "2025-07-09", "reason": "SOLD_OUT" }, { "date": "2025-09-24", "reason": "SOLD_OUT" }, { "date": "2025-10-27", "reason": "SOLD_OUT" }, { "date": "2025-12-05", "reason": "SOLD_OUT" }, { "date": "2025-04-14", "reason": "SOLD_OUT" }, { "date": "2025-03-18", "reason": "SOLD_OUT" }, { "date": "2025-03-25", "reason": "SOLD_OUT" }, { "date": "2025-07-04", "reason": "SOLD_OUT" }, { "date": "2025-12-06", "reason": "SOLD_OUT" }, { "date": "2025-03-20", "reason": "SOLD_OUT" }, { "date": "2025-03-27", "reason": "SOLD_OUT" }, { "date": "2025-12-08", "reason": "SOLD_OUT" }, { "date": "2025-06-25", "reason": "SOLD_OUT" }, { "date": "2025-07-06", "reason": "SOLD_OUT" }, { "date": "2025-05-07", "reason": "SOLD_OUT" }, { "date": "2025-03-29", "reason": "SOLD_OUT" }, { "date": "2025-03-22", "reason": "SOLD_OUT" }, { "date": "2025-03-24", "reason": "SOLD_OUT" }, { "date": "2025-05-09", "reason": "SOLD_OUT" }, { "date": "2025-05-02", "reason": "SOLD_OUT" }, { "date": "2025-03-31", "reason": "SOLD_OUT" }, { "date": "2025-03-17", "reason": "SOLD_OUT" }, { "date": "2025-10-01", "reason": "SOLD_OUT" }, { "date": "2025-03-19", "reason": "SOLD_OUT" }, { "date": "2025-03-26", "reason": "SOLD_OUT" }, { "date": "2025-06-28", "reason": "SOLD_OUT" }, { "date": "2025-06-01", "reason": "SOLD_OUT" }, { "date": "2025-06-21", "reason": "SOLD_OUT" }, { "date": "2025-03-28", "reason": "SOLD_OUT" }, { "date": "2025-04-02", "reason": "SOLD_OUT" }, { "date": "2025-03-21", "reason": "SOLD_OUT" }, { "date": "2025-04-01", "reason": "SOLD_OUT" }, { "date": "2025-12-07", "reason": "SOLD_OUT" }, { "date": "2025-07-05", "reason": "SOLD_OUT" }, { "date": "2025-05-13", "reason": "SOLD_OUT" }, { "date": "2025-03-30", "reason": "SOLD_OUT" }, { "date": "2025-03-23", "reason": "SOLD_OUT" }, { "date": "2025-06-10", "reason": "SOLD_OUT" }, { "date": "2025-10-10", "reason": "SOLD_OUT" }, { "date": "2025-12-09", "reason": "SOLD_OUT" } ] }, { "startTime": "14:30" }, { "startTime": "15:00", "unavailableDates": [ { "date": "2025-03-24", "reason": "SOLD_OUT" }, { "date": "2025-05-09", "reason": "SOLD_OUT" }, { "date": "2025-05-07", "reason": "SOLD_OUT" }, { "date": "2025-03-31", "reason": "SOLD_OUT" }, { "date": "2025-03-17", "reason": "SOLD_OUT" }, { "date": "2025-07-06", "reason": "SOLD_OUT" }, { "date": "2025-03-22", "reason": "SOLD_OUT" }, { "date": "2025-06-10", "reason": "SOLD_OUT" }, { "date": "2025-05-02", "reason": "SOLD_OUT" }, { "date": "2025-12-09", "reason": "SOLD_OUT" }, { "date": "2025-10-10", "reason": "SOLD_OUT" }, { "date": "2025-03-29", "reason": "SOLD_OUT" }, { "date": "2025-03-28", "reason": "SOLD_OUT" }, { "date": "2025-12-05", "reason": "SOLD_OUT" }, { "date": "2025-05-13", "reason": "SOLD_OUT" }, { "date": "2025-03-21", "reason": "SOLD_OUT" }, { "date": "2025-10-27", "reason": "SOLD_OUT" }, { "date": "2025-10-01", "reason": "SOLD_OUT" }, { "date": "2025-04-14", "reason": "SOLD_OUT" }, { "date": "2025-03-26", "reason": "SOLD_OUT" }, { "date": "2025-12-07", "reason": "SOLD_OUT" }, { "date": "2025-07-05", "reason": "SOLD_OUT" }, { "date": "2025-04-02", "reason": "SOLD_OUT" }, { "date": "2025-06-01", "reason": "SOLD_OUT" }, { "date": "2025-03-19", "reason": "SOLD_OUT" }, { "date": "2025-05-01", "reason": "SOLD_OUT" }, { "date": "2025-12-10", "reason": "SOLD_OUT" }, { "date": "2025-07-09", "reason": "SOLD_OUT" }, { "date": "2025-06-25", "reason": "SOLD_OUT" }, { "date": "2025-12-08", "reason": "SOLD_OUT" }, { "date": "2025-03-30", "reason": "SOLD_OUT" }, { "date": "2025-03-23", "reason": "SOLD_OUT" }, { "date": "2025-07-04", "reason": "SOLD_OUT" }, { "date": "2025-03-20", "reason": "SOLD_OUT" }, { "date": "2025-04-01", "reason": "SOLD_OUT" }, { "date": "2025-03-27", "reason": "SOLD_OUT" }, { "date": "2025-06-21", "reason": "SOLD_OUT" }, { "date": "2025-09-24", "reason": "SOLD_OUT" }, { "date": "2025-03-18", "reason": "SOLD_OUT" }, { "date": "2025-03-25", "reason": "SOLD_OUT" }, { "date": "2025-12-06", "reason": "SOLD_OUT" }, { "date": "2025-06-28", "reason": "SOLD_OUT" } ] }, { "startTime": "11:00" } ], "pricingDetails": [ { "pricingPackageType": "PER_PERSON", "minTravelers": 1, "maxTravelers": 1, "ageBand": "ADULT", "price": { "original": { "recommendedRetailPrice": 275, "partnerNetPrice": 253, "bookingFee": 0, "commission": 22, "partnerTotalPrice": 253 } } }, { "pricingPackageType": "PER_PERSON", "minTravelers": 7, "maxTravelers": 7, "ageBand": "ADULT", "price": { "original": { "recommendedRetailPrice": 41, "partnerNetPrice": 37.72, "bookingFee": 0, "commission": 3.28, "partnerTotalPrice": 37.72 } } }, { "pricingPackageType": "PER_PERSON", "minTravelers": 5, "maxTravelers": 5, "ageBand": "ADULT", "price": { "original": { "recommendedRetailPrice": 55, "partnerNetPrice": 50.6, "bookingFee": 0, "commission": 4.4, "partnerTotalPrice": 50.6 } } }, { "pricingPackageType": "PER_PERSON", "minTravelers": 8, "maxTravelers": 8, "ageBand": "ADULT", "price": { "original": { "recommendedRetailPrice": 35, "partnerNetPrice": 32.2, "bookingFee": 0, "commission": 2.8, "partnerTotalPrice": 32.2 } } }, { "pricingPackageType": "PER_PERSON", "minTravelers": 6, "maxTravelers": 6, "ageBand": "ADULT", "price": { "original": { "recommendedRetailPrice": 46, "partnerNetPrice": 42.32, "bookingFee": 0, "commission": 3.68, "partnerTotalPrice": 42.32 } } }, { "pricingPackageType": "PER_PERSON", "minTravelers": 2, "maxTravelers": 2, "ageBand": "ADULT", "price": { "original": { "recommendedRetailPrice": 138, "partnerNetPrice": 126.96, "bookingFee": 0, "commission": 11.04, "partnerTotalPrice": 126.96 } } }, { "pricingPackageType": "PER_PERSON", "minTravelers": 4, "maxTravelers": 4, "ageBand": "ADULT", "price": { "original": { "recommendedRetailPrice": 71, "partnerNetPrice": 65.32, "bookingFee": 0, "commission": 5.68, "partnerTotalPrice": 65.32 } } }, { "pricingPackageType": "PER_PERSON", "minTravelers": 3, "maxTravelers": 3, "ageBand": "ADULT", "price": { "original": { "recommendedRetailPrice": 92, "partnerNetPrice": 84.64, "bookingFee": 0, "commission": 7.36, "partnerTotalPrice": 84.64 } } } ] } ] } ] } ], "currency": "EUR", "summary": { "fromPrice": 138 }, "extraChargesSummary": { "fromPrice": 157, "extraCharges": 19 } } ] } }, "availability-schedules-modified-since-example": { "summary": "/availability/schedules/modified-since", "value": { "availabilitySchedules": [ { "productCode": "182465P24", "bookableItems": [ { "productOptionCode": "TG91", "seasons": [ { "startDate": "2020-01-06", "pricingRecords": [ { "daysOfWeek": [ "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY" ], "timedEntries": [ { "startTime": "09:00", "unavailableDates": [ { "date": "2021-04-21", "reason": "SOLD_OUT" }, { "date": "2021-04-29", "reason": "SOLD_OUT" }, { "date": "2020-11-10", "reason": "SOLD_OUT" }, { "date": "2021-04-14", "reason": "SOLD_OUT" }, { "date": "2020-11-12", "reason": "SOLD_OUT" }, { "date": "2021-04-28", "reason": "SOLD_OUT" }, { "date": "2021-04-26", "reason": "SOLD_OUT" }, { "date": "2020-11-05", "reason": "SOLD_OUT" }, { "date": "2021-04-19", "reason": "SOLD_OUT" }, { "date": "2021-04-27", "reason": "SOLD_OUT" }, { "date": "2021-04-20", "reason": "SOLD_OUT" }, { "date": "2020-11-11", "reason": "SOLD_OUT" }, { "date": "2021-04-13", "reason": "SOLD_OUT" }, { "date": "2020-11-07", "reason": "SOLD_OUT" }, { "date": "2021-04-17", "reason": "SOLD_OUT" }, { "date": "2021-04-24", "reason": "SOLD_OUT" }, { "date": "2020-11-15", "reason": "SOLD_OUT" }, { "date": "2021-04-25", "reason": "SOLD_OUT" }, { "date": "2020-11-06", "reason": "SOLD_OUT" }, { "date": "2021-04-18", "reason": "SOLD_OUT" }, { "date": "2020-11-09", "reason": "SOLD_OUT" }, { "date": "2021-04-15", "reason": "SOLD_OUT" }, { "date": "2021-04-30", "reason": "SOLD_OUT" }, { "date": "2020-11-13", "reason": "SOLD_OUT" }, { "date": "2021-04-22", "reason": "SOLD_OUT" }, { "date": "2021-04-16", "reason": "SOLD_OUT" }, { "date": "2020-11-14", "reason": "SOLD_OUT" }, { "date": "2020-11-08", "reason": "SOLD_OUT" }, { "date": "2021-04-23", "reason": "SOLD_OUT" } ] }, { "startTime": "14:00", "unavailableDates": [ { "date": "2021-04-18", "reason": "SOLD_OUT" }, { "date": "2021-04-26", "reason": "SOLD_OUT" }, { "date": "2020-11-09", "reason": "SOLD_OUT" }, { "date": "2021-04-25", "reason": "SOLD_OUT" }, { "date": "2021-04-19", "reason": "SOLD_OUT" }, { "date": "2020-11-10", "reason": "SOLD_OUT" }, { "date": "2021-04-20", "reason": "SOLD_OUT" }, { "date": "2021-04-13", "reason": "SOLD_OUT" }, { "date": "2021-04-28", "reason": "SOLD_OUT" }, { "date": "2020-11-06", "reason": "SOLD_OUT" }, { "date": "2021-04-21", "reason": "SOLD_OUT" }, { "date": "2020-11-11", "reason": "SOLD_OUT" }, { "date": "2020-11-05", "reason": "SOLD_OUT" }, { "date": "2021-04-27", "reason": "SOLD_OUT" }, { "date": "2020-11-12", "reason": "SOLD_OUT" }, { "date": "2021-04-14", "reason": "SOLD_OUT" }, { "date": "2020-11-13", "reason": "SOLD_OUT" }, { "date": "2021-04-29", "reason": "SOLD_OUT" }, { "date": "2021-04-15", "reason": "SOLD_OUT" }, { "date": "2021-04-22", "reason": "SOLD_OUT" }, { "date": "2020-11-14", "reason": "SOLD_OUT" }, { "date": "2021-04-24", "reason": "SOLD_OUT" }, { "date": "2020-11-07", "reason": "SOLD_OUT" }, { "date": "2021-04-16", "reason": "SOLD_OUT" }, { "date": "2020-11-15", "reason": "SOLD_OUT" }, { "date": "2021-04-23", "reason": "SOLD_OUT" }, { "date": "2021-04-30", "reason": "SOLD_OUT" }, { "date": "2020-11-08", "reason": "SOLD_OUT" }, { "date": "2021-04-17", "reason": "SOLD_OUT" } ] } ], "pricingDetails": [ { "pricingPackageType": "PER_PERSON", "minTravelers": 1, "ageBand": "INFANT", "price": { "original": { "recommendedRetailPrice": 0, "partnerNetPrice": 0, "bookingFee": 0, "partnerTotalPrice": 0 } } }, { "pricingPackageType": "PER_PERSON", "minTravelers": 1, "ageBand": "CHILD", "price": { "original": { "recommendedRetailPrice": 59, "partnerNetPrice": 50.27, "bookingFee": 3.02, "partnerTotalPrice": 53.29 } } }, { "pricingPackageType": "PER_PERSON", "minTravelers": 1, "ageBand": "ADULT", "price": { "original": { "recommendedRetailPrice": 139, "partnerNetPrice": 118.43, "bookingFee": 7.11, "partnerTotalPrice": 125.54 } } } ] } ] } ] } ], "currency": "EUR", "summary": { "fromPrice": 139 } }, { "productCode": "62272P25", "bookableItems": [ { "productOptionCode": "TG2", "seasons": [ { "startDate": "2020-11-11", "endDate": "2021-12-31", "pricingRecords": [ { "daysOfWeek": [ "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY" ], "timedEntries": [ { "startTime": "08:30" } ], "pricingDetails": [ { "pricingPackageType": "PER_PERSON", "minTravelers": 1, "maxTravelers": 10, "ageBand": "CHILD", "price": { "original": { "recommendedRetailPrice": 35, "partnerNetPrice": 27.96, "bookingFee": 1.68, "partnerTotalPrice": 29.64 } } }, { "pricingPackageType": "PER_PERSON", "minTravelers": 4, "maxTravelers": 5, "ageBand": "ADULT", "price": { "original": { "recommendedRetailPrice": 53, "partnerNetPrice": 42.33, "bookingFee": 2.54, "partnerTotalPrice": 44.87 } } }, { "pricingPackageType": "PER_PERSON", "minTravelers": 6, "maxTravelers": 10, "ageBand": "ADULT", "price": { "original": { "recommendedRetailPrice": 47, "partnerNetPrice": 37.54, "bookingFee": 2.25, "partnerTotalPrice": 39.79 } } }, { "pricingPackageType": "PER_PERSON", "minTravelers": 2, "maxTravelers": 3, "ageBand": "ADULT", "price": { "original": { "recommendedRetailPrice": 60, "partnerNetPrice": 47.93, "bookingFee": 2.88, "partnerTotalPrice": 50.81 } } } ] } ] } ] }, { "productOptionCode": "TG1", "seasons": [ { "startDate": "2018-10-03", "endDate": "2021-12-31", "pricingRecords": [ { "daysOfWeek": [ "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY" ], "timedEntries": [ { "startTime": "08:30", "unavailableDates": [ { "date": "2021-01-27", "reason": "NOT_OPERATING" }, { "date": "2021-01-28", "reason": "NOT_OPERATING" }, { "date": "2021-01-30", "reason": "NOT_OPERATING" }, { "date": "2021-01-31", "reason": "NOT_OPERATING" }, { "date": "2021-02-14", "reason": "NOT_OPERATING" }, { "date": "2021-02-13", "reason": "NOT_OPERATING" }, { "date": "2021-02-12", "reason": "NOT_OPERATING" }, { "date": "2021-02-01", "reason": "SOLD_OUT" }, { "date": "2021-01-29", "reason": "NOT_OPERATING" }, { "date": "2021-02-11", "reason": "NOT_OPERATING" } ] } ], "pricingDetails": [ { "pricingPackageType": "PER_PERSON", "minTravelers": 1, "maxTravelers": 10, "ageBand": "CHILD", "price": { "original": { "recommendedRetailPrice": 35, "partnerNetPrice": 27.96, "bookingFee": 1.68, "partnerTotalPrice": 29.64 } } }, { "pricingPackageType": "PER_PERSON", "minTravelers": 2, "maxTravelers": 3, "ageBand": "ADULT", "price": { "original": { "recommendedRetailPrice": 68, "partnerNetPrice": 54.32, "bookingFee": 3.26, "partnerTotalPrice": 57.58 } } }, { "pricingPackageType": "PER_PERSON", "minTravelers": 4, "maxTravelers": 5, "ageBand": "ADULT", "price": { "original": { "recommendedRetailPrice": 50, "partnerNetPrice": 39.94, "bookingFee": 2.4, "partnerTotalPrice": 42.34 } } }, { "pricingPackageType": "PER_PERSON", "minTravelers": 6, "maxTravelers": 10, "ageBand": "ADULT", "price": { "original": { "recommendedRetailPrice": 47, "partnerNetPrice": 37.54, "bookingFee": 2.25, "partnerTotalPrice": 39.79 } } } ] } ] } ] } ], "currency": "SGD", "summary": { "fromPrice": 60 } }, { "productCode": "5672P9", "bookableItems": [ { "productOptionCode": "TG1", "seasons": [ { "startDate": "2021-01-01", "endDate": "2021-12-31", "pricingRecords": [ { "daysOfWeek": [ "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY" ], "timedEntries": [ { "startTime": "08:30", "unavailableDates": [ { "date": "2021-03-28", "reason": "SOLD_OUT" }, { "date": "2021-04-19", "reason": "SOLD_OUT" }, { "date": "2021-01-08", "reason": "SOLD_OUT" }, { "date": "2021-01-29", "reason": "SOLD_OUT" }, { "date": "2021-02-20", "reason": "SOLD_OUT" }, { "date": "2021-04-23", "reason": "SOLD_OUT" }, { "date": "2021-03-11", "reason": "SOLD_OUT" }, { "date": "2021-04-02", "reason": "SOLD_OUT" }, { "date": "2021-04-15", "reason": "SOLD_OUT" }, { "date": "2021-03-24", "reason": "SOLD_OUT" }, { "date": "2021-01-12", "reason": "SOLD_OUT" }, { "date": "2021-02-03", "reason": "SOLD_OUT" }, { "date": "2021-03-07", "reason": "SOLD_OUT" }, { "date": "2021-02-16", "reason": "SOLD_OUT" }, { "date": "2021-01-25", "reason": "SOLD_OUT" }, { "date": "2021-04-27", "reason": "SOLD_OUT" }, { "date": "2021-04-10", "reason": "SOLD_OUT" }, { "date": "2021-04-28", "reason": "SOLD_OUT" }, { "date": "2021-03-20", "reason": "SOLD_OUT" }, { "date": "2021-02-28", "reason": "SOLD_OUT" }, { "date": "2021-02-07", "reason": "SOLD_OUT" }, { "date": "2021-02-11", "reason": "SOLD_OUT" }, { "date": "2021-03-03", "reason": "SOLD_OUT" }, { "date": "2021-01-21", "reason": "SOLD_OUT" }, { "date": "2021-01-04", "reason": "SOLD_OUT" }, { "date": "2021-02-24", "reason": "SOLD_OUT" }, { "date": "2021-03-16", "reason": "SOLD_OUT" }, { "date": "2021-01-30", "reason": "SOLD_OUT" }, { "date": "2021-01-17", "reason": "SOLD_OUT" }, { "date": "2021-04-06", "reason": "SOLD_OUT" }, { "date": "2021-04-01", "reason": "SOLD_OUT" }, { "date": "2021-02-17", "reason": "SOLD_OUT" }, { "date": "2021-04-18", "reason": "SOLD_OUT" }, { "date": "2021-03-12", "reason": "SOLD_OUT" }, { "date": "2021-04-22", "reason": "SOLD_OUT" }, { "date": "2021-03-31", "reason": "SOLD_OUT" }, { "date": "2021-01-28", "reason": "SOLD_OUT" }, { "date": "2021-03-25", "reason": "SOLD_OUT" }, { "date": "2021-02-04", "reason": "SOLD_OUT" }, { "date": "2021-02-13", "reason": "SOLD_OUT" }, { "date": "2021-04-14", "reason": "SOLD_OUT" }, { "date": "2021-03-21", "reason": "SOLD_OUT" }, { "date": "2021-03-08", "reason": "SOLD_OUT" }, { "date": "2021-01-11", "reason": "SOLD_OUT" }, { "date": "2021-04-26", "reason": "SOLD_OUT" }, { "date": "2021-01-24", "reason": "SOLD_OUT" }, { "date": "2021-02-25", "reason": "SOLD_OUT" }, { "date": "2021-01-20", "reason": "SOLD_OUT" }, { "date": "2021-03-17", "reason": "SOLD_OUT" }, { "date": "2021-03-04", "reason": "SOLD_OUT" }, { "date": "2021-04-09", "reason": "SOLD_OUT" }, { "date": "2021-02-12", "reason": "SOLD_OUT" }, { "date": "2021-04-05", "reason": "SOLD_OUT" }, { "date": "2021-03-13", "reason": "SOLD_OUT" }, { "date": "2021-02-21", "reason": "SOLD_OUT" }, { "date": "2021-01-16", "reason": "SOLD_OUT" }, { "date": "2021-02-08", "reason": "SOLD_OUT" }, { "date": "2021-01-03", "reason": "SOLD_OUT" }, { "date": "2021-02-18", "reason": "SOLD_OUT" }, { "date": "2021-01-27", "reason": "SOLD_OUT" }, { "date": "2021-03-09", "reason": "SOLD_OUT" }, { "date": "2021-03-30", "reason": "SOLD_OUT" }, { "date": "2021-01-06", "reason": "SOLD_OUT" }, { "date": "2021-04-17", "reason": "SOLD_OUT" }, { "date": "2021-03-26", "reason": "SOLD_OUT" }, { "date": "2021-03-05", "reason": "SOLD_OUT" }, { "date": "2021-01-23", "reason": "SOLD_OUT" }, { "date": "2021-02-14", "reason": "SOLD_OUT" }, { "date": "2021-04-25", "reason": "SOLD_OUT" }, { "date": "2021-03-22", "reason": "SOLD_OUT" }, { "date": "2021-02-01", "reason": "SOLD_OUT" }, { "date": "2021-04-13", "reason": "SOLD_OUT" }, { "date": "2021-01-10", "reason": "SOLD_OUT" }, { "date": "2021-02-09", "reason": "SOLD_OUT" }, { "date": "2021-03-01", "reason": "SOLD_OUT" }, { "date": "2021-01-19", "reason": "SOLD_OUT" }, { "date": "2021-04-08", "reason": "SOLD_OUT" }, { "date": "2021-01-15", "reason": "SOLD_OUT" }, { "date": "2021-04-30", "reason": "SOLD_OUT" }, { "date": "2021-03-18", "reason": "SOLD_OUT" }, { "date": "2021-02-05", "reason": "SOLD_OUT" }, { "date": "2021-02-26", "reason": "SOLD_OUT" }, { "date": "2021-03-14", "reason": "SOLD_OUT" }, { "date": "2021-04-04", "reason": "SOLD_OUT" }, { "date": "2021-01-02", "reason": "SOLD_OUT" }, { "date": "2021-04-21", "reason": "SOLD_OUT" }, { "date": "2021-02-22", "reason": "SOLD_OUT" }, { "date": "2021-01-09", "reason": "SOLD_OUT" }, { "date": "2021-03-10", "reason": "SOLD_OUT" }, { "date": "2021-03-29", "reason": "SOLD_OUT" }, { "date": "2021-03-27", "reason": "SOLD_OUT" }, { "date": "2021-01-26", "reason": "SOLD_OUT" }, { "date": "2021-04-03", "reason": "SOLD_OUT" }, { "date": "2021-04-16", "reason": "SOLD_OUT" }, { "date": "2021-02-19", "reason": "SOLD_OUT" }, { "date": "2021-01-22", "reason": "SOLD_OUT" }, { "date": "2021-04-24", "reason": "SOLD_OUT" }, { "date": "2021-01-13", "reason": "SOLD_OUT" }, { "date": "2021-03-06", "reason": "SOLD_OUT" }, { "date": "2021-03-23", "reason": "SOLD_OUT" }, { "date": "2021-02-02", "reason": "SOLD_OUT" }, { "date": "2021-04-12", "reason": "SOLD_OUT" }, { "date": "2021-02-15", "reason": "SOLD_OUT" }, { "date": "2021-03-19", "reason": "SOLD_OUT" }, { "date": "2021-04-29", "reason": "SOLD_OUT" }, { "date": "2021-01-18", "reason": "SOLD_OUT" }, { "date": "2021-02-27", "reason": "SOLD_OUT" }, { "date": "2021-02-10", "reason": "SOLD_OUT" }, { "date": "2021-04-11", "reason": "SOLD_OUT" }, { "date": "2021-01-01", "reason": "SOLD_OUT" }, { "date": "2021-03-02", "reason": "SOLD_OUT" }, { "date": "2021-02-06", "reason": "SOLD_OUT" }, { "date": "2021-01-14", "reason": "SOLD_OUT" }, { "date": "2021-02-23", "reason": "SOLD_OUT" }, { "date": "2021-03-15", "reason": "SOLD_OUT" }, { "date": "2021-01-05", "reason": "SOLD_OUT" }, { "date": "2021-04-07", "reason": "SOLD_OUT" }, { "date": "2021-04-20", "reason": "SOLD_OUT" }, { "date": "2021-01-31", "reason": "SOLD_OUT" } ] } ], "pricingDetails": [ { "pricingPackageType": "PER_PERSON", "minTravelers": 1, "ageBand": "ADULT", "price": { "original": { "recommendedRetailPrice": 50, "partnerNetPrice": 39.95, "bookingFee": 2.4, "partnerTotalPrice": 42.35 } } } ] } ] } ] }, { "productOptionCode": "TG12", "seasons": [ { "startDate": "2021-01-01", "endDate": "2021-12-31", "pricingRecords": [ { "daysOfWeek": [ "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY" ], "timedEntries": [ { "startTime": "10:00", "unavailableDates": [ { "date": "2021-04-12", "reason": "SOLD_OUT" }, { "date": "2021-04-29", "reason": "SOLD_OUT" }, { "date": "2021-02-09", "reason": "SOLD_OUT" }, { "date": "2021-03-21", "reason": "SOLD_OUT" }, { "date": "2021-02-26", "reason": "SOLD_OUT" }, { "date": "2021-03-04", "reason": "SOLD_OUT" }, { "date": "2021-02-13", "reason": "SOLD_OUT" }, { "date": "2021-01-22", "reason": "SOLD_OUT" }, { "date": "2021-01-01", "reason": "SOLD_OUT" }, { "date": "2021-04-16", "reason": "SOLD_OUT" }, { "date": "2021-04-25", "reason": "SOLD_OUT" }, { "date": "2021-03-25", "reason": "SOLD_OUT" }, { "date": "2021-01-14", "reason": "SOLD_OUT" }, { "date": "2021-02-05", "reason": "SOLD_OUT" }, { "date": "2021-02-17", "reason": "SOLD_OUT" }, { "date": "2021-03-08", "reason": "SOLD_OUT" }, { "date": "2021-01-26", "reason": "SOLD_OUT" }, { "date": "2021-03-29", "reason": "SOLD_OUT" }, { "date": "2021-04-21", "reason": "SOLD_OUT" }, { "date": "2021-01-10", "reason": "SOLD_OUT" }, { "date": "2021-01-30", "reason": "SOLD_OUT" }, { "date": "2021-02-22", "reason": "SOLD_OUT" }, { "date": "2021-03-12", "reason": "SOLD_OUT" }, { "date": "2021-04-04", "reason": "SOLD_OUT" }, { "date": "2021-01-06", "reason": "SOLD_OUT" }, { "date": "2021-04-08", "reason": "SOLD_OUT" }, { "date": "2021-03-16", "reason": "SOLD_OUT" }, { "date": "2021-03-20", "reason": "SOLD_OUT" }, { "date": "2021-02-10", "reason": "SOLD_OUT" }, { "date": "2021-01-19", "reason": "SOLD_OUT" }, { "date": "2021-03-01", "reason": "SOLD_OUT" }, { "date": "2021-03-03", "reason": "SOLD_OUT" }, { "date": "2021-01-17", "reason": "SOLD_OUT" }, { "date": "2021-02-14", "reason": "SOLD_OUT" }, { "date": "2021-02-27", "reason": "SOLD_OUT" }, { "date": "2021-04-11", "reason": "SOLD_OUT" }, { "date": "2021-01-23", "reason": "SOLD_OUT" }, { "date": "2021-02-06", "reason": "SOLD_OUT" }, { "date": "2021-01-13", "reason": "SOLD_OUT" }, { "date": "2021-03-24", "reason": "SOLD_OUT" }, { "date": "2021-03-07", "reason": "SOLD_OUT" }, { "date": "2021-02-18", "reason": "SOLD_OUT" }, { "date": "2021-04-15", "reason": "SOLD_OUT" }, { "date": "2021-04-28", "reason": "SOLD_OUT" }, { "date": "2021-03-11", "reason": "SOLD_OUT" }, { "date": "2021-02-01", "reason": "SOLD_OUT" }, { "date": "2021-01-09", "reason": "SOLD_OUT" }, { "date": "2021-04-03", "reason": "SOLD_OUT" }, { "date": "2021-03-28", "reason": "SOLD_OUT" }, { "date": "2021-04-20", "reason": "SOLD_OUT" }, { "date": "2021-02-19", "reason": "SOLD_OUT" }, { "date": "2021-01-27", "reason": "SOLD_OUT" }, { "date": "2021-04-24", "reason": "SOLD_OUT" }, { "date": "2021-04-07", "reason": "SOLD_OUT" }, { "date": "2021-01-05", "reason": "SOLD_OUT" }, { "date": "2021-03-15", "reason": "SOLD_OUT" }, { "date": "2021-02-23", "reason": "SOLD_OUT" }, { "date": "2021-01-31", "reason": "SOLD_OUT" }, { "date": "2021-01-18", "reason": "SOLD_OUT" }, { "date": "2021-03-02", "reason": "SOLD_OUT" }, { "date": "2021-02-28", "reason": "SOLD_OUT" }, { "date": "2021-02-11", "reason": "SOLD_OUT" }, { "date": "2021-01-20", "reason": "SOLD_OUT" }, { "date": "2021-01-16", "reason": "SOLD_OUT" }, { "date": "2021-04-10", "reason": "SOLD_OUT" }, { "date": "2021-03-19", "reason": "SOLD_OUT" }, { "date": "2021-02-07", "reason": "SOLD_OUT" }, { "date": "2021-03-06", "reason": "SOLD_OUT" }, { "date": "2021-02-15", "reason": "SOLD_OUT" }, { "date": "2021-01-24", "reason": "SOLD_OUT" }, { "date": "2021-04-14", "reason": "SOLD_OUT" }, { "date": "2021-01-12", "reason": "SOLD_OUT" }, { "date": "2021-04-01", "reason": "SOLD_OUT" }, { "date": "2021-03-23", "reason": "SOLD_OUT" }, { "date": "2021-02-03", "reason": "SOLD_OUT" }, { "date": "2021-04-02", "reason": "SOLD_OUT" }, { "date": "2021-02-20", "reason": "SOLD_OUT" }, { "date": "2021-01-28", "reason": "SOLD_OUT" }, { "date": "2021-02-02", "reason": "SOLD_OUT" }, { "date": "2021-03-10", "reason": "SOLD_OUT" }, { "date": "2021-03-31", "reason": "SOLD_OUT" }, { "date": "2021-04-19", "reason": "SOLD_OUT" }, { "date": "2021-03-27", "reason": "SOLD_OUT" }, { "date": "2021-01-08", "reason": "SOLD_OUT" }, { "date": "2021-04-06", "reason": "SOLD_OUT" }, { "date": "2021-04-23", "reason": "SOLD_OUT" }, { "date": "2021-03-14", "reason": "SOLD_OUT" }, { "date": "2021-01-04", "reason": "SOLD_OUT" }, { "date": "2021-02-24", "reason": "SOLD_OUT" }, { "date": "2021-04-13", "reason": "SOLD_OUT" }, { "date": "2021-02-12", "reason": "SOLD_OUT" }, { "date": "2021-04-30", "reason": "SOLD_OUT" }, { "date": "2021-01-21", "reason": "SOLD_OUT" }, { "date": "2021-02-08", "reason": "SOLD_OUT" }, { "date": "2021-03-18", "reason": "SOLD_OUT" }, { "date": "2021-01-02", "reason": "SOLD_OUT" }, { "date": "2021-01-15", "reason": "SOLD_OUT" }, { "date": "2021-04-17", "reason": "SOLD_OUT" }, { "date": "2021-02-16", "reason": "SOLD_OUT" }, { "date": "2021-04-26", "reason": "SOLD_OUT" }, { "date": "2021-03-22", "reason": "SOLD_OUT" }, { "date": "2021-02-04", "reason": "SOLD_OUT" }, { "date": "2021-01-11", "reason": "SOLD_OUT" }, { "date": "2021-03-09", "reason": "SOLD_OUT" }, { "date": "2021-01-25", "reason": "SOLD_OUT" }, { "date": "2021-03-13", "reason": "SOLD_OUT" }, { "date": "2021-04-05", "reason": "SOLD_OUT" }, { "date": "2021-01-07", "reason": "SOLD_OUT" }, { "date": "2021-01-29", "reason": "SOLD_OUT" }, { "date": "2021-02-21", "reason": "SOLD_OUT" }, { "date": "2021-04-18", "reason": "SOLD_OUT" }, { "date": "2021-03-26", "reason": "SOLD_OUT" }, { "date": "2021-02-25", "reason": "SOLD_OUT" }, { "date": "2021-03-17", "reason": "SOLD_OUT" }, { "date": "2021-01-03", "reason": "SOLD_OUT" }, { "date": "2021-04-09", "reason": "SOLD_OUT" }, { "date": "2021-04-22", "reason": "SOLD_OUT" }, { "date": "2021-03-30", "reason": "SOLD_OUT" } ] } ], "pricingDetails": [ { "pricingPackageType": "PER_PERSON", "minTravelers": 1, "ageBand": "ADULT", "price": { "original": { "recommendedRetailPrice": 50, "partnerNetPrice": 39.95, "bookingFee": 2.4, "partnerTotalPrice": 42.35 } } } ] } ] } ] }, { "productOptionCode": "TG11", "seasons": [ { "startDate": "2021-01-01", "endDate": "2021-12-31", "pricingRecords": [ { "daysOfWeek": [ "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY" ], "timedEntries": [ { "startTime": "09:30", "unavailableDates": [ { "date": "2021-01-23", "reason": "SOLD_OUT" }, { "date": "2021-04-17", "reason": "SOLD_OUT" }, { "date": "2021-01-06", "reason": "SOLD_OUT" }, { "date": "2021-03-22", "reason": "SOLD_OUT" }, { "date": "2021-02-18", "reason": "SOLD_OUT" }, { "date": "2021-03-09", "reason": "SOLD_OUT" }, { "date": "2021-02-01", "reason": "SOLD_OUT" }, { "date": "2021-01-19", "reason": "SOLD_OUT" }, { "date": "2021-04-13", "reason": "SOLD_OUT" }, { "date": "2021-01-10", "reason": "SOLD_OUT" }, { "date": "2021-03-18", "reason": "SOLD_OUT" }, { "date": "2021-02-27", "reason": "SOLD_OUT" }, { "date": "2021-03-05", "reason": "SOLD_OUT" }, { "date": "2021-02-14", "reason": "SOLD_OUT" }, { "date": "2021-04-25", "reason": "SOLD_OUT" }, { "date": "2021-01-14", "reason": "SOLD_OUT" }, { "date": "2021-02-06", "reason": "SOLD_OUT" }, { "date": "2021-02-23", "reason": "SOLD_OUT" }, { "date": "2021-03-17", "reason": "SOLD_OUT" }, { "date": "2021-01-31", "reason": "SOLD_OUT" }, { "date": "2021-04-09", "reason": "SOLD_OUT" }, { "date": "2021-04-22", "reason": "SOLD_OUT" }, { "date": "2021-04-29", "reason": "SOLD_OUT" }, { "date": "2021-01-18", "reason": "SOLD_OUT" }, { "date": "2021-03-30", "reason": "SOLD_OUT" }, { "date": "2021-02-10", "reason": "SOLD_OUT" }, { "date": "2021-01-27", "reason": "SOLD_OUT" }, { "date": "2021-02-19", "reason": "SOLD_OUT" }, { "date": "2021-03-13", "reason": "SOLD_OUT" }, { "date": "2021-04-05", "reason": "SOLD_OUT" }, { "date": "2021-03-26", "reason": "SOLD_OUT" }, { "date": "2021-01-01", "reason": "SOLD_OUT" }, { "date": "2021-04-18", "reason": "SOLD_OUT" }, { "date": "2021-04-16", "reason": "SOLD_OUT" }, { "date": "2021-03-25", "reason": "SOLD_OUT" }, { "date": "2021-02-15", "reason": "SOLD_OUT" }, { "date": "2021-01-24", "reason": "SOLD_OUT" }, { "date": "2021-01-03", "reason": "SOLD_OUT" }, { "date": "2021-03-08", "reason": "SOLD_OUT" }, { "date": "2021-04-12", "reason": "SOLD_OUT" }, { "date": "2021-02-11", "reason": "SOLD_OUT" }, { "date": "2021-02-02", "reason": "SOLD_OUT" }, { "date": "2021-01-20", "reason": "SOLD_OUT" }, { "date": "2021-03-21", "reason": "SOLD_OUT" }, { "date": "2021-01-07", "reason": "SOLD_OUT" }, { "date": "2021-03-04", "reason": "SOLD_OUT" }, { "date": "2021-02-28", "reason": "SOLD_OUT" }, { "date": "2021-02-24", "reason": "SOLD_OUT" }, { "date": "2021-04-26", "reason": "SOLD_OUT" }, { "date": "2021-02-03", "reason": "SOLD_OUT" }, { "date": "2021-04-08", "reason": "SOLD_OUT" }, { "date": "2021-01-11", "reason": "SOLD_OUT" }, { "date": "2021-03-16", "reason": "SOLD_OUT" }, { "date": "2021-01-28", "reason": "SOLD_OUT" }, { "date": "2021-04-30", "reason": "SOLD_OUT" }, { "date": "2021-04-21", "reason": "SOLD_OUT" }, { "date": "2021-02-20", "reason": "SOLD_OUT" }, { "date": "2021-03-29", "reason": "SOLD_OUT" }, { "date": "2021-01-02", "reason": "SOLD_OUT" }, { "date": "2021-03-12", "reason": "SOLD_OUT" }, { "date": "2021-02-07", "reason": "SOLD_OUT" }, { "date": "2021-04-04", "reason": "SOLD_OUT" }, { "date": "2021-01-15", "reason": "SOLD_OUT" }, { "date": "2021-03-24", "reason": "SOLD_OUT" }, { "date": "2021-02-16", "reason": "SOLD_OUT" }, { "date": "2021-03-07", "reason": "SOLD_OUT" }, { "date": "2021-04-15", "reason": "SOLD_OUT" }, { "date": "2021-01-04", "reason": "SOLD_OUT" }, { "date": "2021-01-25", "reason": "SOLD_OUT" }, { "date": "2021-03-20", "reason": "SOLD_OUT" }, { "date": "2021-03-03", "reason": "SOLD_OUT" }, { "date": "2021-02-12", "reason": "SOLD_OUT" }, { "date": "2021-01-21", "reason": "SOLD_OUT" }, { "date": "2021-04-11", "reason": "SOLD_OUT" }, { "date": "2021-01-08", "reason": "SOLD_OUT" }, { "date": "2021-04-07", "reason": "SOLD_OUT" }, { "date": "2021-03-15", "reason": "SOLD_OUT" }, { "date": "2021-02-25", "reason": "SOLD_OUT" }, { "date": "2021-04-27", "reason": "SOLD_OUT" }, { "date": "2021-01-12", "reason": "SOLD_OUT" }, { "date": "2021-02-04", "reason": "SOLD_OUT" }, { "date": "2021-03-11", "reason": "SOLD_OUT" }, { "date": "2021-04-03", "reason": "SOLD_OUT" }, { "date": "2021-04-20", "reason": "SOLD_OUT" }, { "date": "2021-03-28", "reason": "SOLD_OUT" }, { "date": "2021-02-08", "reason": "SOLD_OUT" }, { "date": "2021-01-16", "reason": "SOLD_OUT" }, { "date": "2021-02-21", "reason": "SOLD_OUT" }, { "date": "2021-01-29", "reason": "SOLD_OUT" }, { "date": "2021-03-06", "reason": "SOLD_OUT" }, { "date": "2021-01-05", "reason": "SOLD_OUT" }, { "date": "2021-02-17", "reason": "SOLD_OUT" }, { "date": "2021-01-26", "reason": "SOLD_OUT" }, { "date": "2021-04-14", "reason": "SOLD_OUT" }, { "date": "2021-04-01", "reason": "SOLD_OUT" }, { "date": "2021-03-02", "reason": "SOLD_OUT" }, { "date": "2021-03-23", "reason": "SOLD_OUT" }, { "date": "2021-01-09", "reason": "SOLD_OUT" }, { "date": "2021-02-13", "reason": "SOLD_OUT" }, { "date": "2021-04-10", "reason": "SOLD_OUT" }, { "date": "2021-04-24", "reason": "SOLD_OUT" }, { "date": "2021-03-19", "reason": "SOLD_OUT" }, { "date": "2021-01-22", "reason": "SOLD_OUT" }, { "date": "2021-01-13", "reason": "SOLD_OUT" }, { "date": "2021-04-06", "reason": "SOLD_OUT" }, { "date": "2021-02-05", "reason": "SOLD_OUT" }, { "date": "2021-02-26", "reason": "SOLD_OUT" }, { "date": "2021-03-14", "reason": "SOLD_OUT" }, { "date": "2021-04-23", "reason": "SOLD_OUT" }, { "date": "2021-04-28", "reason": "SOLD_OUT" }, { "date": "2021-03-31", "reason": "SOLD_OUT" }, { "date": "2021-04-02", "reason": "SOLD_OUT" }, { "date": "2021-03-01", "reason": "SOLD_OUT" }, { "date": "2021-02-09", "reason": "SOLD_OUT" }, { "date": "2021-03-10", "reason": "SOLD_OUT" }, { "date": "2021-01-17", "reason": "SOLD_OUT" }, { "date": "2021-03-27", "reason": "SOLD_OUT" }, { "date": "2021-02-22", "reason": "SOLD_OUT" }, { "date": "2021-04-19", "reason": "SOLD_OUT" }, { "date": "2021-01-30", "reason": "SOLD_OUT" } ] } ], "pricingDetails": [ { "pricingPackageType": "PER_PERSON", "minTravelers": 1, "ageBand": "ADULT", "price": { "original": { "recommendedRetailPrice": 50, "partnerNetPrice": 39.95, "bookingFee": 2.4, "partnerTotalPrice": 42.35 } } } ] } ] } ] }, { "productOptionCode": "TG17", "seasons": [ { "startDate": "2021-01-01", "endDate": "2021-12-31", "pricingRecords": [ { "daysOfWeek": [ "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY" ], "timedEntries": [ { "startTime": "12:30", "unavailableDates": [ { "date": "2021-03-24", "reason": "SOLD_OUT" }, { "date": "2021-01-04", "reason": "SOLD_OUT" }, { "date": "2021-04-15", "reason": "SOLD_OUT" }, { "date": "2021-01-21", "reason": "SOLD_OUT" }, { "date": "2021-03-03", "reason": "SOLD_OUT" }, { "date": "2021-02-12", "reason": "SOLD_OUT" }, { "date": "2021-03-11", "reason": "SOLD_OUT" }, { "date": "2021-02-20", "reason": "SOLD_OUT" }, { "date": "2021-01-29", "reason": "SOLD_OUT" }, { "date": "2021-02-08", "reason": "SOLD_OUT" }, { "date": "2021-04-19", "reason": "SOLD_OUT" }, { "date": "2021-03-28", "reason": "SOLD_OUT" }, { "date": "2021-01-17", "reason": "SOLD_OUT" }, { "date": "2021-04-06", "reason": "SOLD_OUT" }, { "date": "2021-02-24", "reason": "SOLD_OUT" }, { "date": "2021-03-16", "reason": "SOLD_OUT" }, { "date": "2021-01-12", "reason": "SOLD_OUT" }, { "date": "2021-04-23", "reason": "SOLD_OUT" }, { "date": "2021-02-04", "reason": "SOLD_OUT" }, { "date": "2021-04-03", "reason": "SOLD_OUT" }, { "date": "2021-04-10", "reason": "SOLD_OUT" }, { "date": "2021-03-20", "reason": "SOLD_OUT" }, { "date": "2021-01-08", "reason": "SOLD_OUT" }, { "date": "2021-02-28", "reason": "SOLD_OUT" }, { "date": "2021-04-14", "reason": "SOLD_OUT" }, { "date": "2021-02-17", "reason": "SOLD_OUT" }, { "date": "2021-01-25", "reason": "SOLD_OUT" }, { "date": "2021-03-07", "reason": "SOLD_OUT" }, { "date": "2021-04-27", "reason": "SOLD_OUT" }, { "date": "2021-01-05", "reason": "SOLD_OUT" }, { "date": "2021-04-16", "reason": "SOLD_OUT" }, { "date": "2021-03-06", "reason": "SOLD_OUT" }, { "date": "2021-01-22", "reason": "SOLD_OUT" }, { "date": "2021-03-23", "reason": "SOLD_OUT" }, { "date": "2021-01-26", "reason": "SOLD_OUT" }, { "date": "2021-02-13", "reason": "SOLD_OUT" }, { "date": "2021-02-19", "reason": "SOLD_OUT" }, { "date": "2021-03-02", "reason": "SOLD_OUT" }, { "date": "2021-01-01", "reason": "SOLD_OUT" }, { "date": "2021-01-18", "reason": "SOLD_OUT" }, { "date": "2021-03-27", "reason": "SOLD_OUT" }, { "date": "2021-01-30", "reason": "SOLD_OUT" }, { "date": "2021-02-23", "reason": "SOLD_OUT" }, { "date": "2021-02-09", "reason": "SOLD_OUT" }, { "date": "2021-03-14", "reason": "SOLD_OUT" }, { "date": "2021-04-20", "reason": "SOLD_OUT" }, { "date": "2021-04-07", "reason": "SOLD_OUT" }, { "date": "2021-03-15", "reason": "SOLD_OUT" }, { "date": "2021-02-27", "reason": "SOLD_OUT" }, { "date": "2021-01-13", "reason": "SOLD_OUT" }, { "date": "2021-04-24", "reason": "SOLD_OUT" }, { "date": "2021-02-05", "reason": "SOLD_OUT" }, { "date": "2021-01-09", "reason": "SOLD_OUT" }, { "date": "2021-04-02", "reason": "SOLD_OUT" }, { "date": "2021-03-10", "reason": "SOLD_OUT" }, { "date": "2021-02-01", "reason": "SOLD_OUT" }, { "date": "2021-03-19", "reason": "SOLD_OUT" }, { "date": "2021-02-18", "reason": "SOLD_OUT" }, { "date": "2021-04-11", "reason": "SOLD_OUT" }, { "date": "2021-04-28", "reason": "SOLD_OUT" }, { "date": "2021-01-23", "reason": "SOLD_OUT" }, { "date": "2021-03-26", "reason": "SOLD_OUT" }, { "date": "2021-03-05", "reason": "SOLD_OUT" }, { "date": "2021-02-14", "reason": "SOLD_OUT" }, { "date": "2021-01-27", "reason": "SOLD_OUT" }, { "date": "2021-01-06", "reason": "SOLD_OUT" }, { "date": "2021-04-17", "reason": "SOLD_OUT" }, { "date": "2021-01-19", "reason": "SOLD_OUT" }, { "date": "2021-02-10", "reason": "SOLD_OUT" }, { "date": "2021-04-21", "reason": "SOLD_OUT" }, { "date": "2021-01-02", "reason": "SOLD_OUT" }, { "date": "2021-03-30", "reason": "SOLD_OUT" }, { "date": "2021-04-04", "reason": "SOLD_OUT" }, { "date": "2021-02-22", "reason": "SOLD_OUT" }, { "date": "2021-03-13", "reason": "SOLD_OUT" }, { "date": "2021-03-01", "reason": "SOLD_OUT" }, { "date": "2021-01-31", "reason": "SOLD_OUT" }, { "date": "2021-01-14", "reason": "SOLD_OUT" }, { "date": "2021-02-06", "reason": "SOLD_OUT" }, { "date": "2021-04-08", "reason": "SOLD_OUT" }, { "date": "2021-04-25", "reason": "SOLD_OUT" }, { "date": "2021-03-18", "reason": "SOLD_OUT" }, { "date": "2021-03-31", "reason": "SOLD_OUT" }, { "date": "2021-02-26", "reason": "SOLD_OUT" }, { "date": "2021-04-12", "reason": "SOLD_OUT" }, { "date": "2021-04-29", "reason": "SOLD_OUT" }, { "date": "2021-03-09", "reason": "SOLD_OUT" }, { "date": "2021-04-01", "reason": "SOLD_OUT" }, { "date": "2021-03-22", "reason": "SOLD_OUT" }, { "date": "2021-01-10", "reason": "SOLD_OUT" }, { "date": "2021-02-02", "reason": "SOLD_OUT" }, { "date": "2021-02-15", "reason": "SOLD_OUT" }, { "date": "2021-03-25", "reason": "SOLD_OUT" }, { "date": "2021-04-18", "reason": "SOLD_OUT" }, { "date": "2021-03-04", "reason": "SOLD_OUT" }, { "date": "2021-01-07", "reason": "SOLD_OUT" }, { "date": "2021-01-20", "reason": "SOLD_OUT" }, { "date": "2021-01-28", "reason": "SOLD_OUT" }, { "date": "2021-03-29", "reason": "SOLD_OUT" }, { "date": "2021-04-22", "reason": "SOLD_OUT" }, { "date": "2021-03-12", "reason": "SOLD_OUT" }, { "date": "2021-02-11", "reason": "SOLD_OUT" }, { "date": "2021-02-21", "reason": "SOLD_OUT" }, { "date": "2021-04-05", "reason": "SOLD_OUT" }, { "date": "2021-01-16", "reason": "SOLD_OUT" }, { "date": "2021-01-03", "reason": "SOLD_OUT" }, { "date": "2021-04-26", "reason": "SOLD_OUT" }, { "date": "2021-02-25", "reason": "SOLD_OUT" }, { "date": "2021-01-15", "reason": "SOLD_OUT" }, { "date": "2021-02-07", "reason": "SOLD_OUT" }, { "date": "2021-04-09", "reason": "SOLD_OUT" }, { "date": "2021-03-17", "reason": "SOLD_OUT" }, { "date": "2021-04-30", "reason": "SOLD_OUT" }, { "date": "2021-02-03", "reason": "SOLD_OUT" }, { "date": "2021-03-08", "reason": "SOLD_OUT" }, { "date": "2021-01-11", "reason": "SOLD_OUT" }, { "date": "2021-02-16", "reason": "SOLD_OUT" }, { "date": "2021-03-21", "reason": "SOLD_OUT" }, { "date": "2021-04-13", "reason": "SOLD_OUT" }, { "date": "2021-01-24", "reason": "SOLD_OUT" } ] } ], "pricingDetails": [ { "pricingPackageType": "PER_PERSON", "minTravelers": 1, "ageBand": "ADULT", "price": { "original": { "recommendedRetailPrice": 50, "partnerNetPrice": 39.95, "bookingFee": 2.4, "partnerTotalPrice": 42.35 } } } ] } ] } ] }, { "productOptionCode": "TG19", "seasons": [ { "startDate": "2019-10-11", "endDate": "2021-12-31", "pricingRecords": [ { "daysOfWeek": [ "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY" ], "timedEntries": [ { "startTime": "14:00", "unavailableDates": [ { "date": "2021-04-24", "reason": "SOLD_OUT" }, { "date": "2021-02-04", "reason": "SOLD_OUT" }, { "date": "2021-01-13", "reason": "SOLD_OUT" }, { "date": "2020-12-12", "reason": "SOLD_OUT" }, { "date": "2020-12-25", "reason": "SOLD_OUT" }, { "date": "2020-11-21", "reason": "SOLD_OUT" }, { "date": "2021-03-16", "reason": "SOLD_OUT" }, { "date": "2021-04-07", "reason": "SOLD_OUT" }, { "date": "2021-04-28", "reason": "SOLD_OUT" }, { "date": "2021-04-20", "reason": "SOLD_OUT" }, { "date": "2020-11-04", "reason": "SOLD_OUT" }, { "date": "2021-03-29", "reason": "SOLD_OUT" }, { "date": "2021-01-17", "reason": "SOLD_OUT" }, { "date": "2021-02-08", "reason": "SOLD_OUT" }, { "date": "2020-12-21", "reason": "SOLD_OUT" }, { "date": "2021-02-21", "reason": "SOLD_OUT" }, { "date": "2020-11-30", "reason": "SOLD_OUT" }, { "date": "2021-01-30", "reason": "SOLD_OUT" }, { "date": "2020-11-17", "reason": "SOLD_OUT" }, { "date": "2021-04-03", "reason": "SOLD_OUT" }, { "date": "2020-12-08", "reason": "SOLD_OUT" }, { "date": "2021-03-12", "reason": "SOLD_OUT" }, { "date": "2021-01-05", "reason": "SOLD_OUT" }, { "date": "2021-03-25", "reason": "SOLD_OUT" }, { "date": "2021-04-15", "reason": "SOLD_OUT" }, { "date": "2020-11-08", "reason": "SOLD_OUT" }, { "date": "2020-11-29", "reason": "SOLD_OUT" }, { "date": "2020-12-17", "reason": "SOLD_OUT" }, { "date": "2021-03-08", "reason": "SOLD_OUT" }, { "date": "2021-02-16", "reason": "SOLD_OUT" }, { "date": "2020-11-12", "reason": "SOLD_OUT" }, { "date": "2021-01-26", "reason": "SOLD_OUT" }, { "date": "2020-12-04", "reason": "SOLD_OUT" }, { "date": "2021-01-09", "reason": "SOLD_OUT" }, { "date": "2021-04-11", "reason": "SOLD_OUT" }, { "date": "2021-03-21", "reason": "SOLD_OUT" }, { "date": "2020-12-13", "reason": "SOLD_OUT" }, { "date": "2021-02-12", "reason": "SOLD_OUT" }, { "date": "2020-11-25", "reason": "SOLD_OUT" }, { "date": "2021-03-04", "reason": "SOLD_OUT" }, { "date": "2020-12-30", "reason": "SOLD_OUT" }, { "date": "2021-01-22", "reason": "SOLD_OUT" }, { "date": "2020-11-18", "reason": "SOLD_OUT" }, { "date": "2021-03-15", "reason": "SOLD_OUT" }, { "date": "2021-04-25", "reason": "SOLD_OUT" }, { "date": "2020-12-09", "reason": "SOLD_OUT" }, { "date": "2021-01-14", "reason": "SOLD_OUT" }, { "date": "2021-01-31", "reason": "SOLD_OUT" }, { "date": "2020-12-26", "reason": "SOLD_OUT" }, { "date": "2021-04-08", "reason": "SOLD_OUT" }, { "date": "2021-02-24", "reason": "SOLD_OUT" }, { "date": "2021-02-03", "reason": "SOLD_OUT" }, { "date": "2021-01-18", "reason": "SOLD_OUT" }, { "date": "2021-04-21", "reason": "SOLD_OUT" }, { "date": "2020-12-05", "reason": "SOLD_OUT" }, { "date": "2020-11-14", "reason": "SOLD_OUT" }, { "date": "2021-03-11", "reason": "SOLD_OUT" }, { "date": "2020-11-05", "reason": "SOLD_OUT" }, { "date": "2021-04-29", "reason": "SOLD_OUT" }, { "date": "2021-03-28", "reason": "SOLD_OUT" }, { "date": "2021-01-27", "reason": "SOLD_OUT" }, { "date": "2021-04-04", "reason": "SOLD_OUT" }, { "date": "2021-02-07", "reason": "SOLD_OUT" }, { "date": "2021-02-20", "reason": "SOLD_OUT" }, { "date": "2021-01-01", "reason": "SOLD_OUT" }, { "date": "2021-04-17", "reason": "SOLD_OUT" }, { "date": "2020-12-22", "reason": "SOLD_OUT" }, { "date": "2020-11-09", "reason": "SOLD_OUT" }, { "date": "2021-03-24", "reason": "SOLD_OUT" }, { "date": "2021-01-23", "reason": "SOLD_OUT" }, { "date": "2020-12-18", "reason": "SOLD_OUT" }, { "date": "2021-03-07", "reason": "SOLD_OUT" }, { "date": "2021-04-16", "reason": "SOLD_OUT" }, { "date": "2021-02-15", "reason": "SOLD_OUT" }, { "date": "2021-01-06", "reason": "SOLD_OUT" }, { "date": "2021-03-03", "reason": "SOLD_OUT" }, { "date": "2020-11-26", "reason": "SOLD_OUT" }, { "date": "2020-11-13", "reason": "SOLD_OUT" }, { "date": "2021-02-28", "reason": "SOLD_OUT" }, { "date": "2021-03-20", "reason": "SOLD_OUT" }, { "date": "2021-01-19", "reason": "SOLD_OUT" }, { "date": "2021-02-11", "reason": "SOLD_OUT" }, { "date": "2020-11-22", "reason": "SOLD_OUT" }, { "date": "2021-01-10", "reason": "SOLD_OUT" }, { "date": "2021-04-12", "reason": "SOLD_OUT" }, { "date": "2020-12-31", "reason": "SOLD_OUT" }, { "date": "2020-12-01", "reason": "SOLD_OUT" }, { "date": "2021-02-23", "reason": "SOLD_OUT" }, { "date": "2020-11-19", "reason": "SOLD_OUT" }, { "date": "2020-12-27", "reason": "SOLD_OUT" }, { "date": "2021-04-26", "reason": "SOLD_OUT" }, { "date": "2021-03-14", "reason": "SOLD_OUT" }, { "date": "2021-04-05", "reason": "SOLD_OUT" }, { "date": "2020-12-10", "reason": "SOLD_OUT" }, { "date": "2021-03-31", "reason": "SOLD_OUT" }, { "date": "2021-02-02", "reason": "SOLD_OUT" }, { "date": "2021-04-22", "reason": "SOLD_OUT" }, { "date": "2021-01-11", "reason": "SOLD_OUT" }, { "date": "2021-03-10", "reason": "SOLD_OUT" }, { "date": "2021-02-19", "reason": "SOLD_OUT" }, { "date": "2021-04-01", "reason": "SOLD_OUT" }, { "date": "2021-01-28", "reason": "SOLD_OUT" }, { "date": "2020-12-23", "reason": "SOLD_OUT" }, { "date": "2020-11-15", "reason": "SOLD_OUT" }, { "date": "2020-12-06", "reason": "SOLD_OUT" }, { "date": "2021-04-30", "reason": "SOLD_OUT" }, { "date": "2021-01-02", "reason": "SOLD_OUT" }, { "date": "2021-04-18", "reason": "SOLD_OUT" }, { "date": "2021-03-27", "reason": "SOLD_OUT" }, { "date": "2021-01-15", "reason": "SOLD_OUT" }, { "date": "2021-02-06", "reason": "SOLD_OUT" }, { "date": "2021-02-14", "reason": "SOLD_OUT" }, { "date": "2020-12-19", "reason": "SOLD_OUT" }, { "date": "2021-03-06", "reason": "SOLD_OUT" }, { "date": "2021-01-24", "reason": "SOLD_OUT" }, { "date": "2021-01-03", "reason": "SOLD_OUT" }, { "date": "2021-04-13", "reason": "SOLD_OUT" }, { "date": "2021-03-23", "reason": "SOLD_OUT" }, { "date": "2021-03-02", "reason": "SOLD_OUT" }, { "date": "2021-02-10", "reason": "SOLD_OUT" }, { "date": "2020-11-27", "reason": "SOLD_OUT" }, { "date": "2020-11-06", "reason": "SOLD_OUT" }, { "date": "2020-11-23", "reason": "SOLD_OUT" }, { "date": "2021-02-01", "reason": "SOLD_OUT" }, { "date": "2021-01-20", "reason": "SOLD_OUT" }, { "date": "2021-04-09", "reason": "SOLD_OUT" }, { "date": "2020-12-02", "reason": "SOLD_OUT" }, { "date": "2021-01-07", "reason": "SOLD_OUT" }, { "date": "2021-02-27", "reason": "SOLD_OUT" }, { "date": "2020-11-10", "reason": "SOLD_OUT" }, { "date": "2020-12-15", "reason": "SOLD_OUT" }, { "date": "2021-03-19", "reason": "SOLD_OUT" }, { "date": "2021-02-05", "reason": "SOLD_OUT" }, { "date": "2020-12-28", "reason": "SOLD_OUT" }, { "date": "2021-04-06", "reason": "SOLD_OUT" }, { "date": "2021-04-23", "reason": "SOLD_OUT" }, { "date": "2021-02-22", "reason": "SOLD_OUT" }, { "date": "2021-04-27", "reason": "SOLD_OUT" }, { "date": "2021-03-17", "reason": "SOLD_OUT" }, { "date": "2021-01-12", "reason": "SOLD_OUT" }, { "date": "2021-03-30", "reason": "SOLD_OUT" }, { "date": "2020-12-11", "reason": "SOLD_OUT" }, { "date": "2020-11-20", "reason": "SOLD_OUT" }, { "date": "2021-02-09", "reason": "SOLD_OUT" }, { "date": "2021-04-19", "reason": "SOLD_OUT" }, { "date": "2021-02-18", "reason": "SOLD_OUT" }, { "date": "2020-12-24", "reason": "SOLD_OUT" }, { "date": "2021-04-02", "reason": "SOLD_OUT" }, { "date": "2020-12-07", "reason": "SOLD_OUT" }, { "date": "2020-11-16", "reason": "SOLD_OUT" }, { "date": "2021-01-16", "reason": "SOLD_OUT" }, { "date": "2021-03-13", "reason": "SOLD_OUT" }, { "date": "2021-01-29", "reason": "SOLD_OUT" }, { "date": "2021-03-26", "reason": "SOLD_OUT" }, { "date": "2020-11-28", "reason": "SOLD_OUT" }, { "date": "2020-12-20", "reason": "SOLD_OUT" }, { "date": "2020-11-07", "reason": "SOLD_OUT" }, { "date": "2021-03-09", "reason": "SOLD_OUT" }, { "date": "2021-01-04", "reason": "SOLD_OUT" }, { "date": "2021-02-17", "reason": "SOLD_OUT" }, { "date": "2021-04-14", "reason": "SOLD_OUT" }, { "date": "2020-12-03", "reason": "SOLD_OUT" }, { "date": "2020-11-11", "reason": "SOLD_OUT" }, { "date": "2021-02-26", "reason": "SOLD_OUT" }, { "date": "2021-01-21", "reason": "SOLD_OUT" }, { "date": "2021-03-18", "reason": "SOLD_OUT" }, { "date": "2020-12-16", "reason": "SOLD_OUT" }, { "date": "2020-11-24", "reason": "SOLD_OUT" }, { "date": "2021-01-08", "reason": "SOLD_OUT" }, { "date": "2021-04-10", "reason": "SOLD_OUT" }, { "date": "2021-02-13", "reason": "SOLD_OUT" }, { "date": "2020-12-29", "reason": "SOLD_OUT" }, { "date": "2021-03-05", "reason": "SOLD_OUT" } ] } ], "pricingDetails": [ { "pricingPackageType": "PER_PERSON", "minTravelers": 1, "ageBand": "ADULT", "price": { "original": { "recommendedRetailPrice": 50, "partnerNetPrice": 39.95, "bookingFee": 2.4, "partnerTotalPrice": 42.35 } } } ] } ] } ] }, { "productOptionCode": "TG14", "seasons": [ { "startDate": "2021-01-01", "endDate": "2021-12-31", "pricingRecords": [ { "daysOfWeek": [ "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY" ], "timedEntries": [ { "startTime": "11:00", "unavailableDates": [ { "date": "2021-02-19", "reason": "SOLD_OUT" }, { "date": "2021-04-01", "reason": "SOLD_OUT" }, { "date": "2021-01-28", "reason": "SOLD_OUT" }, { "date": "2021-01-07", "reason": "SOLD_OUT" }, { "date": "2021-03-10", "reason": "SOLD_OUT" }, { "date": "2021-03-31", "reason": "SOLD_OUT" }, { "date": "2021-03-23", "reason": "SOLD_OUT" }, { "date": "2021-03-06", "reason": "SOLD_OUT" }, { "date": "2021-01-11", "reason": "SOLD_OUT" }, { "date": "2021-04-14", "reason": "SOLD_OUT" }, { "date": "2021-01-24", "reason": "SOLD_OUT" }, { "date": "2021-02-02", "reason": "SOLD_OUT" }, { "date": "2021-02-15", "reason": "SOLD_OUT" }, { "date": "2021-03-19", "reason": "SOLD_OUT" }, { "date": "2021-03-02", "reason": "SOLD_OUT" }, { "date": "2021-02-10", "reason": "SOLD_OUT" }, { "date": "2021-02-27", "reason": "SOLD_OUT" }, { "date": "2021-01-20", "reason": "SOLD_OUT" }, { "date": "2021-04-09", "reason": "SOLD_OUT" }, { "date": "2021-02-23", "reason": "SOLD_OUT" }, { "date": "2021-02-06", "reason": "SOLD_OUT" }, { "date": "2021-03-15", "reason": "SOLD_OUT" }, { "date": "2021-03-26", "reason": "SOLD_OUT" }, { "date": "2021-01-29", "reason": "SOLD_OUT" }, { "date": "2021-04-18", "reason": "SOLD_OUT" }, { "date": "2021-01-03", "reason": "SOLD_OUT" }, { "date": "2021-04-05", "reason": "SOLD_OUT" }, { "date": "2021-01-16", "reason": "SOLD_OUT" }, { "date": "2021-03-28", "reason": "SOLD_OUT" }, { "date": "2021-01-08", "reason": "SOLD_OUT" }, { "date": "2021-02-18", "reason": "SOLD_OUT" }, { "date": "2021-03-09", "reason": "SOLD_OUT" }, { "date": "2021-01-25", "reason": "SOLD_OUT" }, { "date": "2021-01-12", "reason": "SOLD_OUT" }, { "date": "2021-04-02", "reason": "SOLD_OUT" }, { "date": "2021-04-15", "reason": "SOLD_OUT" }, { "date": "2021-02-14", "reason": "SOLD_OUT" }, { "date": "2021-01-21", "reason": "SOLD_OUT" }, { "date": "2021-03-22", "reason": "SOLD_OUT" }, { "date": "2021-03-05", "reason": "SOLD_OUT" }, { "date": "2021-04-27", "reason": "SOLD_OUT" }, { "date": "2021-02-01", "reason": "SOLD_OUT" }, { "date": "2021-02-09", "reason": "SOLD_OUT" }, { "date": "2021-04-10", "reason": "SOLD_OUT" }, { "date": "2021-03-01", "reason": "SOLD_OUT" }, { "date": "2021-01-17", "reason": "SOLD_OUT" }, { "date": "2021-03-18", "reason": "SOLD_OUT" }, { "date": "2021-04-28", "reason": "SOLD_OUT" }, { "date": "2021-02-26", "reason": "SOLD_OUT" }, { "date": "2021-01-04", "reason": "SOLD_OUT" }, { "date": "2021-01-13", "reason": "SOLD_OUT" }, { "date": "2021-04-06", "reason": "SOLD_OUT" }, { "date": "2021-02-05", "reason": "SOLD_OUT" }, { "date": "2021-03-14", "reason": "SOLD_OUT" }, { "date": "2021-03-27", "reason": "SOLD_OUT" }, { "date": "2021-01-30", "reason": "SOLD_OUT" }, { "date": "2021-04-19", "reason": "SOLD_OUT" }, { "date": "2021-02-22", "reason": "SOLD_OUT" }, { "date": "2021-04-20", "reason": "SOLD_OUT" }, { "date": "2021-01-26", "reason": "SOLD_OUT" }, { "date": "2021-02-17", "reason": "SOLD_OUT" }, { "date": "2021-03-08", "reason": "SOLD_OUT" }, { "date": "2021-03-29", "reason": "SOLD_OUT" }, { "date": "2021-04-03", "reason": "SOLD_OUT" }, { "date": "2021-03-25", "reason": "SOLD_OUT" }, { "date": "2021-04-16", "reason": "SOLD_OUT" }, { "date": "2021-01-22", "reason": "SOLD_OUT" }, { "date": "2021-04-24", "reason": "SOLD_OUT" }, { "date": "2021-02-04", "reason": "SOLD_OUT" }, { "date": "2021-02-13", "reason": "SOLD_OUT" }, { "date": "2021-03-21", "reason": "SOLD_OUT" }, { "date": "2021-01-09", "reason": "SOLD_OUT" }, { "date": "2021-04-12", "reason": "SOLD_OUT" }, { "date": "2021-04-29", "reason": "SOLD_OUT" }, { "date": "2021-04-11", "reason": "SOLD_OUT" }, { "date": "2021-01-01", "reason": "SOLD_OUT" }, { "date": "2021-01-18", "reason": "SOLD_OUT" }, { "date": "2021-02-25", "reason": "SOLD_OUT" }, { "date": "2021-02-12", "reason": "SOLD_OUT" }, { "date": "2021-03-04", "reason": "SOLD_OUT" }, { "date": "2021-03-17", "reason": "SOLD_OUT" }, { "date": "2021-01-31", "reason": "SOLD_OUT" }, { "date": "2021-01-05", "reason": "SOLD_OUT" }, { "date": "2021-04-07", "reason": "SOLD_OUT" }, { "date": "2021-01-14", "reason": "SOLD_OUT" }, { "date": "2021-02-21", "reason": "SOLD_OUT" }, { "date": "2021-03-13", "reason": "SOLD_OUT" }, { "date": "2021-02-08", "reason": "SOLD_OUT" }, { "date": "2021-01-27", "reason": "SOLD_OUT" }, { "date": "2021-02-20", "reason": "SOLD_OUT" }, { "date": "2021-04-17", "reason": "SOLD_OUT" }, { "date": "2021-03-30", "reason": "SOLD_OUT" }, { "date": "2021-03-11", "reason": "SOLD_OUT" }, { "date": "2021-01-06", "reason": "SOLD_OUT" }, { "date": "2021-03-24", "reason": "SOLD_OUT" }, { "date": "2021-04-25", "reason": "SOLD_OUT" }, { "date": "2021-02-03", "reason": "SOLD_OUT" }, { "date": "2021-02-16", "reason": "SOLD_OUT" }, { "date": "2021-01-10", "reason": "SOLD_OUT" }, { "date": "2021-03-20", "reason": "SOLD_OUT" }, { "date": "2021-01-23", "reason": "SOLD_OUT" }, { "date": "2021-03-07", "reason": "SOLD_OUT" }, { "date": "2021-02-28", "reason": "SOLD_OUT" }, { "date": "2021-04-08", "reason": "SOLD_OUT" }, { "date": "2021-03-03", "reason": "SOLD_OUT" }, { "date": "2021-02-11", "reason": "SOLD_OUT" }, { "date": "2021-03-16", "reason": "SOLD_OUT" }, { "date": "2021-01-19", "reason": "SOLD_OUT" }, { "date": "2021-04-30", "reason": "SOLD_OUT" }, { "date": "2021-02-24", "reason": "SOLD_OUT" }, { "date": "2021-03-12", "reason": "SOLD_OUT" }, { "date": "2021-02-07", "reason": "SOLD_OUT" }, { "date": "2021-01-02", "reason": "SOLD_OUT" }, { "date": "2021-01-15", "reason": "SOLD_OUT" }, { "date": "2021-04-04", "reason": "SOLD_OUT" } ] } ], "pricingDetails": [ { "pricingPackageType": "PER_PERSON", "minTravelers": 1, "ageBand": "ADULT", "price": { "original": { "recommendedRetailPrice": 50, "partnerNetPrice": 39.95, "bookingFee": 2.4, "partnerTotalPrice": 42.35 } } } ] } ] } ] }, { "productOptionCode": "TG6", "seasons": [ { "startDate": "2021-01-01", "endDate": "2021-12-31", "pricingRecords": [ { "daysOfWeek": [ "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY" ], "timedEntries": [ { "startTime": "08:00", "unavailableDates": [ { "date": "2021-03-02", "reason": "SOLD_OUT" }, { "date": "2021-02-28", "reason": "SOLD_OUT" }, { "date": "2021-02-11", "reason": "SOLD_OUT" }, { "date": "2021-03-23", "reason": "SOLD_OUT" }, { "date": "2021-04-10", "reason": "SOLD_OUT" }, { "date": "2021-02-15", "reason": "SOLD_OUT" }, { "date": "2021-01-24", "reason": "SOLD_OUT" }, { "date": "2021-03-06", "reason": "SOLD_OUT" }, { "date": "2021-04-27", "reason": "SOLD_OUT" }, { "date": "2021-03-11", "reason": "SOLD_OUT" }, { "date": "2021-02-19", "reason": "SOLD_OUT" }, { "date": "2021-02-02", "reason": "SOLD_OUT" }, { "date": "2021-01-29", "reason": "SOLD_OUT" }, { "date": "2021-01-12", "reason": "SOLD_OUT" }, { "date": "2021-01-07", "reason": "SOLD_OUT" }, { "date": "2021-04-22", "reason": "SOLD_OUT" }, { "date": "2021-02-06", "reason": "SOLD_OUT" }, { "date": "2021-03-15", "reason": "SOLD_OUT" }, { "date": "2021-02-23", "reason": "SOLD_OUT" }, { "date": "2021-04-18", "reason": "SOLD_OUT" }, { "date": "2021-01-03", "reason": "SOLD_OUT" }, { "date": "2021-04-05", "reason": "SOLD_OUT" }, { "date": "2021-01-16", "reason": "SOLD_OUT" }, { "date": "2021-03-28", "reason": "SOLD_OUT" }, { "date": "2021-03-01", "reason": "SOLD_OUT" }, { "date": "2021-02-27", "reason": "SOLD_OUT" }, { "date": "2021-04-11", "reason": "SOLD_OUT" }, { "date": "2021-02-10", "reason": "SOLD_OUT" }, { "date": "2021-01-21", "reason": "SOLD_OUT" }, { "date": "2021-04-24", "reason": "SOLD_OUT" }, { "date": "2021-02-14", "reason": "SOLD_OUT" }, { "date": "2021-01-25", "reason": "SOLD_OUT" }, { "date": "2021-03-05", "reason": "SOLD_OUT" }, { "date": "2021-03-22", "reason": "SOLD_OUT" }, { "date": "2021-01-08", "reason": "SOLD_OUT" }, { "date": "2021-04-23", "reason": "SOLD_OUT" }, { "date": "2021-02-18", "reason": "SOLD_OUT" }, { "date": "2021-01-26", "reason": "SOLD_OUT" }, { "date": "2021-03-10", "reason": "SOLD_OUT" }, { "date": "2021-02-05", "reason": "SOLD_OUT" }, { "date": "2021-01-13", "reason": "SOLD_OUT" }, { "date": "2021-01-04", "reason": "SOLD_OUT" }, { "date": "2021-03-27", "reason": "SOLD_OUT" }, { "date": "2021-01-17", "reason": "SOLD_OUT" }, { "date": "2021-01-30", "reason": "SOLD_OUT" }, { "date": "2021-02-09", "reason": "SOLD_OUT" }, { "date": "2021-04-06", "reason": "SOLD_OUT" }, { "date": "2021-04-19", "reason": "SOLD_OUT" }, { "date": "2021-03-14", "reason": "SOLD_OUT" }, { "date": "2021-02-22", "reason": "SOLD_OUT" }, { "date": "2021-04-12", "reason": "SOLD_OUT" }, { "date": "2021-01-18", "reason": "SOLD_OUT" }, { "date": "2021-01-01", "reason": "SOLD_OUT" }, { "date": "2021-03-04", "reason": "SOLD_OUT" }, { "date": "2021-02-13", "reason": "SOLD_OUT" }, { "date": "2021-02-26", "reason": "SOLD_OUT" }, { "date": "2021-03-17", "reason": "SOLD_OUT" }, { "date": "2021-04-25", "reason": "SOLD_OUT" }, { "date": "2021-01-22", "reason": "SOLD_OUT" }, { "date": "2021-02-17", "reason": "SOLD_OUT" }, { "date": "2021-03-08", "reason": "SOLD_OUT" }, { "date": "2021-03-21", "reason": "SOLD_OUT" }, { "date": "2021-02-01", "reason": "SOLD_OUT" }, { "date": "2021-01-10", "reason": "SOLD_OUT" }, { "date": "2021-01-09", "reason": "SOLD_OUT" }, { "date": "2021-03-30", "reason": "SOLD_OUT" }, { "date": "2021-04-03", "reason": "SOLD_OUT" }, { "date": "2021-04-20", "reason": "SOLD_OUT" }, { "date": "2021-03-09", "reason": "SOLD_OUT" }, { "date": "2021-01-27", "reason": "SOLD_OUT" }, { "date": "2021-04-07", "reason": "SOLD_OUT" }, { "date": "2021-01-14", "reason": "SOLD_OUT" }, { "date": "2021-03-26", "reason": "SOLD_OUT" }, { "date": "2021-02-08", "reason": "SOLD_OUT" }, { "date": "2021-01-31", "reason": "SOLD_OUT" }, { "date": "2021-02-21", "reason": "SOLD_OUT" }, { "date": "2021-03-13", "reason": "SOLD_OUT" }, { "date": "2021-03-20", "reason": "SOLD_OUT" }, { "date": "2021-01-19", "reason": "SOLD_OUT" }, { "date": "2021-02-25", "reason": "SOLD_OUT" }, { "date": "2021-03-03", "reason": "SOLD_OUT" }, { "date": "2021-02-12", "reason": "SOLD_OUT" }, { "date": "2021-03-24", "reason": "SOLD_OUT" }, { "date": "2021-04-09", "reason": "SOLD_OUT" }, { "date": "2021-01-23", "reason": "SOLD_OUT" }, { "date": "2021-02-16", "reason": "SOLD_OUT" }, { "date": "2021-04-13", "reason": "SOLD_OUT" }, { "date": "2021-04-26", "reason": "SOLD_OUT" }, { "date": "2021-03-07", "reason": "SOLD_OUT" }, { "date": "2021-01-28", "reason": "SOLD_OUT" }, { "date": "2021-03-29", "reason": "SOLD_OUT" }, { "date": "2021-03-12", "reason": "SOLD_OUT" }, { "date": "2021-01-11", "reason": "SOLD_OUT" }, { "date": "2021-04-04", "reason": "SOLD_OUT" }, { "date": "2021-02-20", "reason": "SOLD_OUT" }, { "date": "2021-02-03", "reason": "SOLD_OUT" }, { "date": "2021-04-21", "reason": "SOLD_OUT" }, { "date": "2021-02-24", "reason": "SOLD_OUT" }, { "date": "2021-03-16", "reason": "SOLD_OUT" }, { "date": "2021-03-25", "reason": "SOLD_OUT" }, { "date": "2021-04-08", "reason": "SOLD_OUT" }, { "date": "2021-02-07", "reason": "SOLD_OUT" }, { "date": "2021-01-15", "reason": "SOLD_OUT" }, { "date": "2021-01-02", "reason": "SOLD_OUT" } ] } ], "pricingDetails": [ { "pricingPackageType": "PER_PERSON", "minTravelers": 2, "maxTravelers": 9, "ageBand": "ADULT", "price": { "original": { "recommendedRetailPrice": 50, "partnerNetPrice": 39.94, "bookingFee": 2.4, "partnerTotalPrice": 42.34 } } } ] } ] } ] }, { "productOptionCode": "TG10", "seasons": [ { "startDate": "2021-01-01", "endDate": "2021-12-31", "pricingRecords": [ { "daysOfWeek": [ "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY" ], "timedEntries": [ { "startTime": "09:00", "unavailableDates": [ { "date": "2021-01-23", "reason": "SOLD_OUT" }, { "date": "2021-03-05", "reason": "SOLD_OUT" }, { "date": "2021-02-14", "reason": "SOLD_OUT" }, { "date": "2021-03-22", "reason": "SOLD_OUT" }, { "date": "2021-01-02", "reason": "SOLD_OUT" }, { "date": "2021-04-13", "reason": "SOLD_OUT" }, { "date": "2021-03-01", "reason": "SOLD_OUT" }, { "date": "2021-04-21", "reason": "SOLD_OUT" }, { "date": "2021-02-01", "reason": "SOLD_OUT" }, { "date": "2021-02-10", "reason": "SOLD_OUT" }, { "date": "2021-03-30", "reason": "SOLD_OUT" }, { "date": "2021-01-19", "reason": "SOLD_OUT" }, { "date": "2021-04-09", "reason": "SOLD_OUT" }, { "date": "2021-01-06", "reason": "SOLD_OUT" }, { "date": "2021-02-27", "reason": "SOLD_OUT" }, { "date": "2021-03-18", "reason": "SOLD_OUT" }, { "date": "2021-04-25", "reason": "SOLD_OUT" }, { "date": "2021-04-05", "reason": "SOLD_OUT" }, { "date": "2021-03-13", "reason": "SOLD_OUT" }, { "date": "2021-01-31", "reason": "SOLD_OUT" }, { "date": "2021-01-10", "reason": "SOLD_OUT" }, { "date": "2021-02-02", "reason": "SOLD_OUT" }, { "date": "2021-02-23", "reason": "SOLD_OUT" }, { "date": "2021-02-19", "reason": "SOLD_OUT" }, { "date": "2021-01-27", "reason": "SOLD_OUT" }, { "date": "2021-01-01", "reason": "SOLD_OUT" }, { "date": "2021-03-09", "reason": "SOLD_OUT" }, { "date": "2021-04-01", "reason": "SOLD_OUT" }, { "date": "2021-04-29", "reason": "SOLD_OUT" }, { "date": "2021-04-18", "reason": "SOLD_OUT" }, { "date": "2021-03-26", "reason": "SOLD_OUT" }, { "date": "2021-02-06", "reason": "SOLD_OUT" }, { "date": "2021-01-14", "reason": "SOLD_OUT" }, { "date": "2021-01-22", "reason": "SOLD_OUT" }, { "date": "2021-03-23", "reason": "SOLD_OUT" }, { "date": "2021-01-05", "reason": "SOLD_OUT" }, { "date": "2021-03-06", "reason": "SOLD_OUT" }, { "date": "2021-04-14", "reason": "SOLD_OUT" }, { "date": "2021-02-17", "reason": "SOLD_OUT" }, { "date": "2021-01-09", "reason": "SOLD_OUT" }, { "date": "2021-01-18", "reason": "SOLD_OUT" }, { "date": "2021-03-19", "reason": "SOLD_OUT" }, { "date": "2021-03-02", "reason": "SOLD_OUT" }, { "date": "2021-03-31", "reason": "SOLD_OUT" }, { "date": "2021-02-26", "reason": "SOLD_OUT" }, { "date": "2021-04-10", "reason": "SOLD_OUT" }, { "date": "2021-04-24", "reason": "SOLD_OUT" }, { "date": "2021-02-13", "reason": "SOLD_OUT" }, { "date": "2021-02-05", "reason": "SOLD_OUT" }, { "date": "2021-04-06", "reason": "SOLD_OUT" }, { "date": "2021-01-13", "reason": "SOLD_OUT" }, { "date": "2021-01-30", "reason": "SOLD_OUT" }, { "date": "2021-02-22", "reason": "SOLD_OUT" }, { "date": "2021-04-28", "reason": "SOLD_OUT" }, { "date": "2021-03-14", "reason": "SOLD_OUT" }, { "date": "2021-01-17", "reason": "SOLD_OUT" }, { "date": "2021-02-09", "reason": "SOLD_OUT" }, { "date": "2021-03-10", "reason": "SOLD_OUT" }, { "date": "2021-04-02", "reason": "SOLD_OUT" }, { "date": "2021-02-18", "reason": "SOLD_OUT" }, { "date": "2021-04-19", "reason": "SOLD_OUT" }, { "date": "2021-03-27", "reason": "SOLD_OUT" }, { "date": "2021-01-26", "reason": "SOLD_OUT" }, { "date": "2021-03-24", "reason": "SOLD_OUT" }, { "date": "2021-01-04", "reason": "SOLD_OUT" }, { "date": "2021-04-15", "reason": "SOLD_OUT" }, { "date": "2021-01-25", "reason": "SOLD_OUT" }, { "date": "2021-03-07", "reason": "SOLD_OUT" }, { "date": "2021-03-28", "reason": "SOLD_OUT" }, { "date": "2021-02-16", "reason": "SOLD_OUT" }, { "date": "2021-04-11", "reason": "SOLD_OUT" }, { "date": "2021-01-08", "reason": "SOLD_OUT" }, { "date": "2021-03-20", "reason": "SOLD_OUT" }, { "date": "2021-02-12", "reason": "SOLD_OUT" }, { "date": "2021-03-03", "reason": "SOLD_OUT" }, { "date": "2021-04-23", "reason": "SOLD_OUT" }, { "date": "2021-01-21", "reason": "SOLD_OUT" }, { "date": "2021-03-15", "reason": "SOLD_OUT" }, { "date": "2021-04-07", "reason": "SOLD_OUT" }, { "date": "2021-02-04", "reason": "SOLD_OUT" }, { "date": "2021-02-25", "reason": "SOLD_OUT" }, { "date": "2021-01-12", "reason": "SOLD_OUT" }, { "date": "2021-01-16", "reason": "SOLD_OUT" }, { "date": "2021-04-27", "reason": "SOLD_OUT" }, { "date": "2021-02-08", "reason": "SOLD_OUT" }, { "date": "2021-04-20", "reason": "SOLD_OUT" }, { "date": "2021-01-29", "reason": "SOLD_OUT" }, { "date": "2021-02-21", "reason": "SOLD_OUT" }, { "date": "2021-04-03", "reason": "SOLD_OUT" }, { "date": "2021-03-11", "reason": "SOLD_OUT" }, { "date": "2021-02-15", "reason": "SOLD_OUT" }, { "date": "2021-04-16", "reason": "SOLD_OUT" }, { "date": "2021-03-08", "reason": "SOLD_OUT" }, { "date": "2021-03-21", "reason": "SOLD_OUT" }, { "date": "2021-01-24", "reason": "SOLD_OUT" }, { "date": "2021-01-03", "reason": "SOLD_OUT" }, { "date": "2021-02-28", "reason": "SOLD_OUT" }, { "date": "2021-03-29", "reason": "SOLD_OUT" }, { "date": "2021-02-11", "reason": "SOLD_OUT" }, { "date": "2021-04-12", "reason": "SOLD_OUT" }, { "date": "2021-04-22", "reason": "SOLD_OUT" }, { "date": "2021-03-17", "reason": "SOLD_OUT" }, { "date": "2021-01-20", "reason": "SOLD_OUT" }, { "date": "2021-03-04", "reason": "SOLD_OUT" }, { "date": "2021-01-07", "reason": "SOLD_OUT" }, { "date": "2021-02-24", "reason": "SOLD_OUT" }, { "date": "2021-04-26", "reason": "SOLD_OUT" }, { "date": "2021-01-15", "reason": "SOLD_OUT" }, { "date": "2021-03-16", "reason": "SOLD_OUT" }, { "date": "2021-02-07", "reason": "SOLD_OUT" }, { "date": "2021-04-08", "reason": "SOLD_OUT" }, { "date": "2021-01-11", "reason": "SOLD_OUT" }, { "date": "2021-02-03", "reason": "SOLD_OUT" }, { "date": "2021-04-30", "reason": "SOLD_OUT" }, { "date": "2021-04-04", "reason": "SOLD_OUT" }, { "date": "2021-03-12", "reason": "SOLD_OUT" }, { "date": "2021-04-17", "reason": "SOLD_OUT" }, { "date": "2021-02-20", "reason": "SOLD_OUT" }, { "date": "2021-01-28", "reason": "SOLD_OUT" }, { "date": "2021-03-25", "reason": "SOLD_OUT" } ] } ], "pricingDetails": [ { "pricingPackageType": "PER_PERSON", "minTravelers": 1, "ageBand": "ADULT", "price": { "original": { "recommendedRetailPrice": 50, "partnerNetPrice": 39.95, "bookingFee": 2.4, "partnerTotalPrice": 42.35 } } } ] } ] } ] }, { "productOptionCode": "TG18", "seasons": [ { "startDate": "2021-01-01", "endDate": "2021-12-31", "pricingRecords": [ { "daysOfWeek": [ "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY" ], "timedEntries": [ { "startTime": "13:30", "unavailableDates": [ { "date": "2021-02-22", "reason": "SOLD_OUT" }, { "date": "2021-03-13", "reason": "SOLD_OUT" }, { "date": "2021-01-31", "reason": "SOLD_OUT" }, { "date": "2021-04-04", "reason": "SOLD_OUT" }, { "date": "2021-01-14", "reason": "SOLD_OUT" }, { "date": "2021-02-05", "reason": "SOLD_OUT" }, { "date": "2021-04-25", "reason": "SOLD_OUT" }, { "date": "2021-03-09", "reason": "SOLD_OUT" }, { "date": "2021-04-29", "reason": "SOLD_OUT" }, { "date": "2021-01-27", "reason": "SOLD_OUT" }, { "date": "2021-02-18", "reason": "SOLD_OUT" }, { "date": "2021-02-01", "reason": "SOLD_OUT" }, { "date": "2021-01-10", "reason": "SOLD_OUT" }, { "date": "2021-03-04", "reason": "SOLD_OUT" }, { "date": "2021-01-22", "reason": "SOLD_OUT" }, { "date": "2021-04-13", "reason": "SOLD_OUT" }, { "date": "2021-03-21", "reason": "SOLD_OUT" }, { "date": "2021-04-16", "reason": "SOLD_OUT" }, { "date": "2021-01-01", "reason": "SOLD_OUT" }, { "date": "2021-02-14", "reason": "SOLD_OUT" }, { "date": "2021-03-26", "reason": "SOLD_OUT" }, { "date": "2021-02-27", "reason": "SOLD_OUT" }, { "date": "2021-04-09", "reason": "SOLD_OUT" }, { "date": "2021-01-05", "reason": "SOLD_OUT" }, { "date": "2021-02-10", "reason": "SOLD_OUT" }, { "date": "2021-04-20", "reason": "SOLD_OUT" }, { "date": "2021-03-30", "reason": "SOLD_OUT" }, { "date": "2021-02-23", "reason": "SOLD_OUT" }, { "date": "2021-01-18", "reason": "SOLD_OUT" }, { "date": "2021-02-21", "reason": "SOLD_OUT" }, { "date": "2021-03-14", "reason": "SOLD_OUT" }, { "date": "2021-01-13", "reason": "SOLD_OUT" }, { "date": "2021-02-04", "reason": "SOLD_OUT" }, { "date": "2021-03-31", "reason": "SOLD_OUT" }, { "date": "2021-04-05", "reason": "SOLD_OUT" }, { "date": "2021-01-30", "reason": "SOLD_OUT" }, { "date": "2021-04-24", "reason": "SOLD_OUT" }, { "date": "2021-04-28", "reason": "SOLD_OUT" }, { "date": "2021-01-26", "reason": "SOLD_OUT" }, { "date": "2021-02-17", "reason": "SOLD_OUT" }, { "date": "2021-04-01", "reason": "SOLD_OUT" }, { "date": "2021-01-09", "reason": "SOLD_OUT" }, { "date": "2021-03-10", "reason": "SOLD_OUT" }, { "date": "2021-03-22", "reason": "SOLD_OUT" }, { "date": "2021-01-21", "reason": "SOLD_OUT" }, { "date": "2021-03-23", "reason": "SOLD_OUT" }, { "date": "2021-04-15", "reason": "SOLD_OUT" }, { "date": "2021-03-05", "reason": "SOLD_OUT" }, { "date": "2021-04-10", "reason": "SOLD_OUT" }, { "date": "2021-02-13", "reason": "SOLD_OUT" }, { "date": "2021-03-27", "reason": "SOLD_OUT" }, { "date": "2021-03-18", "reason": "SOLD_OUT" }, { "date": "2021-01-17", "reason": "SOLD_OUT" }, { "date": "2021-02-26", "reason": "SOLD_OUT" }, { "date": "2021-04-19", "reason": "SOLD_OUT" }, { "date": "2021-04-06", "reason": "SOLD_OUT" }, { "date": "2021-02-09", "reason": "SOLD_OUT" }, { "date": "2021-03-01", "reason": "SOLD_OUT" }, { "date": "2021-01-04", "reason": "SOLD_OUT" }, { "date": "2021-01-12", "reason": "SOLD_OUT" }, { "date": "2021-04-23", "reason": "SOLD_OUT" }, { "date": "2021-02-03", "reason": "SOLD_OUT" }, { "date": "2021-03-11", "reason": "SOLD_OUT" }, { "date": "2021-04-02", "reason": "SOLD_OUT" }, { "date": "2021-01-29", "reason": "SOLD_OUT" }, { "date": "2021-02-20", "reason": "SOLD_OUT" }, { "date": "2021-04-27", "reason": "SOLD_OUT" }, { "date": "2021-01-08", "reason": "SOLD_OUT" }, { "date": "2021-03-07", "reason": "SOLD_OUT" }, { "date": "2021-02-16", "reason": "SOLD_OUT" }, { "date": "2021-01-25", "reason": "SOLD_OUT" }, { "date": "2021-04-14", "reason": "SOLD_OUT" }, { "date": "2021-02-12", "reason": "SOLD_OUT" }, { "date": "2021-01-03", "reason": "SOLD_OUT" }, { "date": "2021-01-20", "reason": "SOLD_OUT" }, { "date": "2021-03-24", "reason": "SOLD_OUT" }, { "date": "2021-03-06", "reason": "SOLD_OUT" }, { "date": "2021-04-11", "reason": "SOLD_OUT" }, { "date": "2021-03-19", "reason": "SOLD_OUT" }, { "date": "2021-02-08", "reason": "SOLD_OUT" }, { "date": "2021-01-07", "reason": "SOLD_OUT" }, { "date": "2021-04-18", "reason": "SOLD_OUT" }, { "date": "2021-02-25", "reason": "SOLD_OUT" }, { "date": "2021-03-28", "reason": "SOLD_OUT" }, { "date": "2021-01-16", "reason": "SOLD_OUT" }, { "date": "2021-04-07", "reason": "SOLD_OUT" }, { "date": "2021-04-22", "reason": "SOLD_OUT" }, { "date": "2021-01-28", "reason": "SOLD_OUT" }, { "date": "2021-02-19", "reason": "SOLD_OUT" }, { "date": "2021-01-15", "reason": "SOLD_OUT" }, { "date": "2021-03-12", "reason": "SOLD_OUT" }, { "date": "2021-04-03", "reason": "SOLD_OUT" }, { "date": "2021-02-06", "reason": "SOLD_OUT" }, { "date": "2021-04-26", "reason": "SOLD_OUT" }, { "date": "2021-02-15", "reason": "SOLD_OUT" }, { "date": "2021-01-24", "reason": "SOLD_OUT" }, { "date": "2021-02-02", "reason": "SOLD_OUT" }, { "date": "2021-03-08", "reason": "SOLD_OUT" }, { "date": "2021-01-11", "reason": "SOLD_OUT" }, { "date": "2021-01-23", "reason": "SOLD_OUT" }, { "date": "2021-01-02", "reason": "SOLD_OUT" }, { "date": "2021-02-11", "reason": "SOLD_OUT" }, { "date": "2021-04-12", "reason": "SOLD_OUT" }, { "date": "2021-04-30", "reason": "SOLD_OUT" }, { "date": "2021-03-25", "reason": "SOLD_OUT" }, { "date": "2021-03-20", "reason": "SOLD_OUT" }, { "date": "2021-02-28", "reason": "SOLD_OUT" }, { "date": "2021-04-17", "reason": "SOLD_OUT" }, { "date": "2021-02-07", "reason": "SOLD_OUT" }, { "date": "2021-04-08", "reason": "SOLD_OUT" }, { "date": "2021-01-06", "reason": "SOLD_OUT" }, { "date": "2021-01-19", "reason": "SOLD_OUT" }, { "date": "2021-04-21", "reason": "SOLD_OUT" }, { "date": "2021-03-29", "reason": "SOLD_OUT" } ] } ], "pricingDetails": [ { "pricingPackageType": "PER_PERSON", "minTravelers": 1, "ageBand": "ADULT", "price": { "original": { "recommendedRetailPrice": 50, "partnerNetPrice": 39.95, "bookingFee": 2.4, "partnerTotalPrice": 42.35 } } } ] } ] } ] }, { "productOptionCode": "TG15", "seasons": [ { "startDate": "2021-01-01", "endDate": "2021-12-31", "pricingRecords": [ { "daysOfWeek": [ "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY" ], "timedEntries": [ { "startTime": "08:00", "unavailableDates": [ { "date": "2021-01-21", "reason": "SOLD_OUT" }, { "date": "2021-04-11", "reason": "SOLD_OUT" }, { "date": "2021-01-17", "reason": "SOLD_OUT" }, { "date": "2021-03-20", "reason": "SOLD_OUT" }, { "date": "2021-02-08", "reason": "SOLD_OUT" }, { "date": "2021-03-16", "reason": "SOLD_OUT" }, { "date": "2021-02-25", "reason": "SOLD_OUT" }, { "date": "2021-01-04", "reason": "SOLD_OUT" }, { "date": "2021-04-07", "reason": "SOLD_OUT" }, { "date": "2021-04-24", "reason": "SOLD_OUT" }, { "date": "2021-02-12", "reason": "SOLD_OUT" }, { "date": "2021-03-03", "reason": "SOLD_OUT" }, { "date": "2021-04-03", "reason": "SOLD_OUT" }, { "date": "2021-01-29", "reason": "SOLD_OUT" }, { "date": "2021-02-21", "reason": "SOLD_OUT" }, { "date": "2021-03-11", "reason": "SOLD_OUT" }, { "date": "2021-01-08", "reason": "SOLD_OUT" }, { "date": "2021-03-28", "reason": "SOLD_OUT" }, { "date": "2021-04-20", "reason": "SOLD_OUT" }, { "date": "2021-03-07", "reason": "SOLD_OUT" }, { "date": "2021-04-27", "reason": "SOLD_OUT" }, { "date": "2021-02-17", "reason": "SOLD_OUT" }, { "date": "2021-01-25", "reason": "SOLD_OUT" }, { "date": "2021-01-12", "reason": "SOLD_OUT" }, { "date": "2021-03-24", "reason": "SOLD_OUT" }, { "date": "2021-02-11", "reason": "SOLD_OUT" }, { "date": "2021-04-12", "reason": "SOLD_OUT" }, { "date": "2021-03-21", "reason": "SOLD_OUT" }, { "date": "2021-01-03", "reason": "SOLD_OUT" }, { "date": "2021-02-28", "reason": "SOLD_OUT" }, { "date": "2021-01-16", "reason": "SOLD_OUT" }, { "date": "2021-02-15", "reason": "SOLD_OUT" }, { "date": "2021-04-08", "reason": "SOLD_OUT" }, { "date": "2021-04-25", "reason": "SOLD_OUT" }, { "date": "2021-01-07", "reason": "SOLD_OUT" }, { "date": "2021-02-24", "reason": "SOLD_OUT" }, { "date": "2021-03-04", "reason": "SOLD_OUT" }, { "date": "2021-03-17", "reason": "SOLD_OUT" }, { "date": "2021-02-20", "reason": "SOLD_OUT" }, { "date": "2021-03-29", "reason": "SOLD_OUT" }, { "date": "2021-02-03", "reason": "SOLD_OUT" }, { "date": "2021-01-28", "reason": "SOLD_OUT" }, { "date": "2021-04-04", "reason": "SOLD_OUT" }, { "date": "2021-01-11", "reason": "SOLD_OUT" }, { "date": "2021-03-12", "reason": "SOLD_OUT" }, { "date": "2021-04-21", "reason": "SOLD_OUT" }, { "date": "2021-01-15", "reason": "SOLD_OUT" }, { "date": "2021-02-07", "reason": "SOLD_OUT" }, { "date": "2021-02-16", "reason": "SOLD_OUT" }, { "date": "2021-01-24", "reason": "SOLD_OUT" }, { "date": "2021-03-25", "reason": "SOLD_OUT" }, { "date": "2021-03-08", "reason": "SOLD_OUT" }, { "date": "2021-01-19", "reason": "SOLD_OUT" }, { "date": "2021-04-13", "reason": "SOLD_OUT" }, { "date": "2021-03-22", "reason": "SOLD_OUT" }, { "date": "2021-02-10", "reason": "SOLD_OUT" }, { "date": "2021-03-01", "reason": "SOLD_OUT" }, { "date": "2021-02-14", "reason": "SOLD_OUT" }, { "date": "2021-01-23", "reason": "SOLD_OUT" }, { "date": "2021-01-02", "reason": "SOLD_OUT" }, { "date": "2021-04-26", "reason": "SOLD_OUT" }, { "date": "2021-03-05", "reason": "SOLD_OUT" }, { "date": "2021-02-27", "reason": "SOLD_OUT" }, { "date": "2021-04-09", "reason": "SOLD_OUT" }, { "date": "2021-03-30", "reason": "SOLD_OUT" }, { "date": "2021-04-22", "reason": "SOLD_OUT" }, { "date": "2021-01-10", "reason": "SOLD_OUT" }, { "date": "2021-02-02", "reason": "SOLD_OUT" }, { "date": "2021-01-31", "reason": "SOLD_OUT" }, { "date": "2021-04-05", "reason": "SOLD_OUT" }, { "date": "2021-02-23", "reason": "SOLD_OUT" }, { "date": "2021-03-13", "reason": "SOLD_OUT" }, { "date": "2021-04-18", "reason": "SOLD_OUT" }, { "date": "2021-01-14", "reason": "SOLD_OUT" }, { "date": "2021-02-06", "reason": "SOLD_OUT" }, { "date": "2021-03-26", "reason": "SOLD_OUT" }, { "date": "2021-03-09", "reason": "SOLD_OUT" }, { "date": "2021-02-19", "reason": "SOLD_OUT" }, { "date": "2021-01-27", "reason": "SOLD_OUT" }, { "date": "2021-03-02", "reason": "SOLD_OUT" }, { "date": "2021-01-01", "reason": "SOLD_OUT" }, { "date": "2021-02-13", "reason": "SOLD_OUT" }, { "date": "2021-01-18", "reason": "SOLD_OUT" }, { "date": "2021-01-22", "reason": "SOLD_OUT" }, { "date": "2021-02-09", "reason": "SOLD_OUT" }, { "date": "2021-03-06", "reason": "SOLD_OUT" }, { "date": "2021-03-15", "reason": "SOLD_OUT" }, { "date": "2021-04-10", "reason": "SOLD_OUT" }, { "date": "2021-02-26", "reason": "SOLD_OUT" }, { "date": "2021-04-23", "reason": "SOLD_OUT" }, { "date": "2021-04-19", "reason": "SOLD_OUT" }, { "date": "2021-03-14", "reason": "SOLD_OUT" }, { "date": "2021-04-06", "reason": "SOLD_OUT" }, { "date": "2021-01-30", "reason": "SOLD_OUT" }, { "date": "2021-01-09", "reason": "SOLD_OUT" }, { "date": "2021-03-27", "reason": "SOLD_OUT" }, { "date": "2021-02-22", "reason": "SOLD_OUT" }, { "date": "2021-02-01", "reason": "SOLD_OUT" }, { "date": "2021-03-23", "reason": "SOLD_OUT" }, { "date": "2021-02-18", "reason": "SOLD_OUT" }, { "date": "2021-01-26", "reason": "SOLD_OUT" }, { "date": "2021-02-05", "reason": "SOLD_OUT" }, { "date": "2021-03-10", "reason": "SOLD_OUT" }, { "date": "2021-01-13", "reason": "SOLD_OUT" } ] }, { "startTime": "10:00", "unavailableDates": [ { "date": "2021-02-23", "reason": "SOLD_OUT" }, { "date": "2021-01-15", "reason": "SOLD_OUT" }, { "date": "2021-02-06", "reason": "SOLD_OUT" }, { "date": "2021-02-02", "reason": "SOLD_OUT" }, { "date": "2021-03-14", "reason": "SOLD_OUT" }, { "date": "2021-04-26", "reason": "SOLD_OUT" }, { "date": "2021-04-05", "reason": "SOLD_OUT" }, { "date": "2021-02-10", "reason": "SOLD_OUT" }, { "date": "2021-03-01", "reason": "SOLD_OUT" }, { "date": "2021-01-19", "reason": "SOLD_OUT" }, { "date": "2021-02-27", "reason": "SOLD_OUT" }, { "date": "2021-04-09", "reason": "SOLD_OUT" }, { "date": "2021-01-07", "reason": "SOLD_OUT" }, { "date": "2021-04-22", "reason": "SOLD_OUT" }, { "date": "2021-03-18", "reason": "SOLD_OUT" }, { "date": "2021-03-31", "reason": "SOLD_OUT" }, { "date": "2021-03-06", "reason": "SOLD_OUT" }, { "date": "2021-02-14", "reason": "SOLD_OUT" }, { "date": "2021-01-24", "reason": "SOLD_OUT" }, { "date": "2021-04-17", "reason": "SOLD_OUT" }, { "date": "2021-03-27", "reason": "SOLD_OUT" }, { "date": "2021-01-02", "reason": "SOLD_OUT" }, { "date": "2021-04-13", "reason": "SOLD_OUT" }, { "date": "2021-04-30", "reason": "SOLD_OUT" }, { "date": "2021-01-28", "reason": "SOLD_OUT" }, { "date": "2021-01-11", "reason": "SOLD_OUT" }, { "date": "2021-03-23", "reason": "SOLD_OUT" }, { "date": "2021-02-18", "reason": "SOLD_OUT" }, { "date": "2021-03-10", "reason": "SOLD_OUT" }, { "date": "2021-02-05", "reason": "SOLD_OUT" }, { "date": "2021-04-06", "reason": "SOLD_OUT" }, { "date": "2021-03-13", "reason": "SOLD_OUT" }, { "date": "2021-01-16", "reason": "SOLD_OUT" }, { "date": "2021-02-22", "reason": "SOLD_OUT" }, { "date": "2021-03-30", "reason": "SOLD_OUT" }, { "date": "2021-02-09", "reason": "SOLD_OUT" }, { "date": "2021-04-10", "reason": "SOLD_OUT" }, { "date": "2021-01-08", "reason": "SOLD_OUT" }, { "date": "2021-02-26", "reason": "SOLD_OUT" }, { "date": "2021-04-23", "reason": "SOLD_OUT" }, { "date": "2021-03-04", "reason": "SOLD_OUT" }, { "date": "2021-03-17", "reason": "SOLD_OUT" }, { "date": "2021-01-20", "reason": "SOLD_OUT" }, { "date": "2021-02-13", "reason": "SOLD_OUT" }, { "date": "2021-03-26", "reason": "SOLD_OUT" }, { "date": "2021-04-14", "reason": "SOLD_OUT" }, { "date": "2021-01-25", "reason": "SOLD_OUT" }, { "date": "2021-03-22", "reason": "SOLD_OUT" }, { "date": "2021-04-18", "reason": "SOLD_OUT" }, { "date": "2021-01-03", "reason": "SOLD_OUT" }, { "date": "2021-04-01", "reason": "SOLD_OUT" }, { "date": "2021-01-29", "reason": "SOLD_OUT" }, { "date": "2021-02-17", "reason": "SOLD_OUT" }, { "date": "2021-03-09", "reason": "SOLD_OUT" }, { "date": "2021-01-12", "reason": "SOLD_OUT" }, { "date": "2021-02-04", "reason": "SOLD_OUT" }, { "date": "2021-03-16", "reason": "SOLD_OUT" }, { "date": "2021-04-24", "reason": "SOLD_OUT" }, { "date": "2021-04-07", "reason": "SOLD_OUT" }, { "date": "2021-01-30", "reason": "SOLD_OUT" }, { "date": "2021-02-21", "reason": "SOLD_OUT" }, { "date": "2021-01-17", "reason": "SOLD_OUT" }, { "date": "2021-02-08", "reason": "SOLD_OUT" }, { "date": "2021-03-29", "reason": "SOLD_OUT" }, { "date": "2021-03-20", "reason": "SOLD_OUT" }, { "date": "2021-01-09", "reason": "SOLD_OUT" }, { "date": "2021-04-11", "reason": "SOLD_OUT" }, { "date": "2021-04-20", "reason": "SOLD_OUT" }, { "date": "2021-01-21", "reason": "SOLD_OUT" }, { "date": "2021-02-12", "reason": "SOLD_OUT" }, { "date": "2021-02-25", "reason": "SOLD_OUT" }, { "date": "2021-03-03", "reason": "SOLD_OUT" }, { "date": "2021-03-25", "reason": "SOLD_OUT" }, { "date": "2021-04-15", "reason": "SOLD_OUT" }, { "date": "2021-01-22", "reason": "SOLD_OUT" }, { "date": "2021-01-04", "reason": "SOLD_OUT" }, { "date": "2021-03-08", "reason": "SOLD_OUT" }, { "date": "2021-02-16", "reason": "SOLD_OUT" }, { "date": "2021-03-21", "reason": "SOLD_OUT" }, { "date": "2021-04-19", "reason": "SOLD_OUT" }, { "date": "2021-04-02", "reason": "SOLD_OUT" }, { "date": "2021-04-28", "reason": "SOLD_OUT" }, { "date": "2021-02-20", "reason": "SOLD_OUT" }, { "date": "2021-03-12", "reason": "SOLD_OUT" }, { "date": "2021-02-03", "reason": "SOLD_OUT" }, { "date": "2021-01-26", "reason": "SOLD_OUT" }, { "date": "2021-01-13", "reason": "SOLD_OUT" }, { "date": "2021-01-14", "reason": "SOLD_OUT" }, { "date": "2021-04-25", "reason": "SOLD_OUT" }, { "date": "2021-03-15", "reason": "SOLD_OUT" }, { "date": "2021-02-24", "reason": "SOLD_OUT" }, { "date": "2021-04-04", "reason": "SOLD_OUT" }, { "date": "2021-02-07", "reason": "SOLD_OUT" }, { "date": "2021-01-31", "reason": "SOLD_OUT" }, { "date": "2021-02-01", "reason": "SOLD_OUT" }, { "date": "2021-03-02", "reason": "SOLD_OUT" }, { "date": "2021-02-28", "reason": "SOLD_OUT" }, { "date": "2021-01-18", "reason": "SOLD_OUT" }, { "date": "2021-03-19", "reason": "SOLD_OUT" }, { "date": "2021-04-21", "reason": "SOLD_OUT" }, { "date": "2021-04-08", "reason": "SOLD_OUT" }, { "date": "2021-01-06", "reason": "SOLD_OUT" }, { "date": "2021-02-11", "reason": "SOLD_OUT" }, { "date": "2021-04-16", "reason": "SOLD_OUT" }, { "date": "2021-01-23", "reason": "SOLD_OUT" }, { "date": "2021-01-05", "reason": "SOLD_OUT" }, { "date": "2021-03-07", "reason": "SOLD_OUT" }, { "date": "2021-03-28", "reason": "SOLD_OUT" }, { "date": "2021-04-12", "reason": "SOLD_OUT" }, { "date": "2021-02-15", "reason": "SOLD_OUT" }, { "date": "2021-02-19", "reason": "SOLD_OUT" }, { "date": "2021-04-29", "reason": "SOLD_OUT" }, { "date": "2021-01-10", "reason": "SOLD_OUT" }, { "date": "2021-03-11", "reason": "SOLD_OUT" }, { "date": "2021-04-03", "reason": "SOLD_OUT" }, { "date": "2021-01-01", "reason": "SOLD_OUT" }, { "date": "2021-01-27", "reason": "SOLD_OUT" }, { "date": "2021-03-24", "reason": "SOLD_OUT" } ] }, { "startTime": "11:30", "unavailableDates": [ { "date": "2021-03-01", "reason": "SOLD_OUT" }, { "date": "2021-02-10", "reason": "SOLD_OUT" }, { "date": "2021-02-27", "reason": "SOLD_OUT" }, { "date": "2021-01-19", "reason": "SOLD_OUT" }, { "date": "2021-01-02", "reason": "SOLD_OUT" }, { "date": "2021-03-22", "reason": "SOLD_OUT" }, { "date": "2021-04-26", "reason": "SOLD_OUT" }, { "date": "2021-04-13", "reason": "SOLD_OUT" }, { "date": "2021-02-23", "reason": "SOLD_OUT" }, { "date": "2021-03-05", "reason": "SOLD_OUT" }, { "date": "2021-01-23", "reason": "SOLD_OUT" }, { "date": "2021-02-14", "reason": "SOLD_OUT" }, { "date": "2021-03-31", "reason": "SOLD_OUT" }, { "date": "2021-04-09", "reason": "SOLD_OUT" }, { "date": "2021-04-22", "reason": "SOLD_OUT" }, { "date": "2021-01-06", "reason": "SOLD_OUT" }, { "date": "2021-03-18", "reason": "SOLD_OUT" }, { "date": "2021-01-28", "reason": "SOLD_OUT" }, { "date": "2021-02-01", "reason": "SOLD_OUT" }, { "date": "2021-02-18", "reason": "SOLD_OUT" }, { "date": "2021-03-10", "reason": "SOLD_OUT" }, { "date": "2021-04-21", "reason": "SOLD_OUT" }, { "date": "2021-03-27", "reason": "SOLD_OUT" }, { "date": "2021-01-11", "reason": "SOLD_OUT" }, { "date": "2021-01-24", "reason": "SOLD_OUT" }, { "date": "2021-02-22", "reason": "SOLD_OUT" }, { "date": "2021-03-14", "reason": "SOLD_OUT" }, { "date": "2021-02-05", "reason": "SOLD_OUT" }, { "date": "2021-01-15", "reason": "SOLD_OUT" }, { "date": "2021-03-23", "reason": "SOLD_OUT" }, { "date": "2021-04-04", "reason": "SOLD_OUT" }, { "date": "2021-04-17", "reason": "SOLD_OUT" }, { "date": "2021-04-30", "reason": "SOLD_OUT" }, { "date": "2021-04-27", "reason": "SOLD_OUT" }, { "date": "2021-01-16", "reason": "SOLD_OUT" }, { "date": "2021-04-14", "reason": "SOLD_OUT" }, { "date": "2021-02-09", "reason": "SOLD_OUT" }, { "date": "2021-03-21", "reason": "SOLD_OUT" }, { "date": "2021-01-03", "reason": "SOLD_OUT" }, { "date": "2021-01-20", "reason": "SOLD_OUT" }, { "date": "2021-01-07", "reason": "SOLD_OUT" }, { "date": "2021-03-17", "reason": "SOLD_OUT" }, { "date": "2021-02-13", "reason": "SOLD_OUT" }, { "date": "2021-04-10", "reason": "SOLD_OUT" }, { "date": "2021-04-23", "reason": "SOLD_OUT" }, { "date": "2021-03-04", "reason": "SOLD_OUT" }, { "date": "2021-02-26", "reason": "SOLD_OUT" }, { "date": "2021-03-09", "reason": "SOLD_OUT" }, { "date": "2021-01-29", "reason": "SOLD_OUT" }, { "date": "2021-04-01", "reason": "SOLD_OUT" }, { "date": "2021-04-18", "reason": "SOLD_OUT" }, { "date": "2021-03-30", "reason": "SOLD_OUT" }, { "date": "2021-02-21", "reason": "SOLD_OUT" }, { "date": "2021-01-25", "reason": "SOLD_OUT" }, { "date": "2021-02-17", "reason": "SOLD_OUT" }, { "date": "2021-03-13", "reason": "SOLD_OUT" }, { "date": "2021-04-05", "reason": "SOLD_OUT" }, { "date": "2021-02-04", "reason": "SOLD_OUT" }, { "date": "2021-01-12", "reason": "SOLD_OUT" }, { "date": "2021-03-26", "reason": "SOLD_OUT" }, { "date": "2021-04-11", "reason": "SOLD_OUT" }, { "date": "2021-03-20", "reason": "SOLD_OUT" }, { "date": "2021-04-28", "reason": "SOLD_OUT" }, { "date": "2021-02-08", "reason": "SOLD_OUT" }, { "date": "2021-01-17", "reason": "SOLD_OUT" }, { "date": "2021-04-24", "reason": "SOLD_OUT" }, { "date": "2021-04-07", "reason": "SOLD_OUT" }, { "date": "2021-01-04", "reason": "SOLD_OUT" }, { "date": "2021-03-16", "reason": "SOLD_OUT" }, { "date": "2021-02-12", "reason": "SOLD_OUT" }, { "date": "2021-01-21", "reason": "SOLD_OUT" }, { "date": "2021-02-25", "reason": "SOLD_OUT" }, { "date": "2021-03-03", "reason": "SOLD_OUT" }, { "date": "2021-01-09", "reason": "SOLD_OUT" }, { "date": "2021-04-02", "reason": "SOLD_OUT" }, { "date": "2021-03-29", "reason": "SOLD_OUT" }, { "date": "2021-04-19", "reason": "SOLD_OUT" }, { "date": "2021-02-20", "reason": "SOLD_OUT" }, { "date": "2021-01-26", "reason": "SOLD_OUT" }, { "date": "2021-03-08", "reason": "SOLD_OUT" }, { "date": "2021-02-03", "reason": "SOLD_OUT" }, { "date": "2021-01-30", "reason": "SOLD_OUT" }, { "date": "2021-02-16", "reason": "SOLD_OUT" }, { "date": "2021-04-06", "reason": "SOLD_OUT" }, { "date": "2021-01-13", "reason": "SOLD_OUT" }, { "date": "2021-04-15", "reason": "SOLD_OUT" }, { "date": "2021-02-07", "reason": "SOLD_OUT" }, { "date": "2021-03-12", "reason": "SOLD_OUT" }, { "date": "2021-03-25", "reason": "SOLD_OUT" }, { "date": "2021-01-18", "reason": "SOLD_OUT" }, { "date": "2021-02-28", "reason": "SOLD_OUT" }, { "date": "2021-04-29", "reason": "SOLD_OUT" }, { "date": "2021-03-19", "reason": "SOLD_OUT" }, { "date": "2021-01-01", "reason": "SOLD_OUT" }, { "date": "2021-02-11", "reason": "SOLD_OUT" }, { "date": "2021-03-02", "reason": "SOLD_OUT" }, { "date": "2021-03-15", "reason": "SOLD_OUT" }, { "date": "2021-03-06", "reason": "SOLD_OUT" }, { "date": "2021-02-15", "reason": "SOLD_OUT" }, { "date": "2021-04-08", "reason": "SOLD_OUT" }, { "date": "2021-02-24", "reason": "SOLD_OUT" }, { "date": "2021-01-05", "reason": "SOLD_OUT" }, { "date": "2021-01-22", "reason": "SOLD_OUT" }, { "date": "2021-04-25", "reason": "SOLD_OUT" }, { "date": "2021-04-20", "reason": "SOLD_OUT" }, { "date": "2021-01-27", "reason": "SOLD_OUT" }, { "date": "2021-01-31", "reason": "SOLD_OUT" }, { "date": "2021-03-07", "reason": "SOLD_OUT" }, { "date": "2021-02-02", "reason": "SOLD_OUT" }, { "date": "2021-03-28", "reason": "SOLD_OUT" }, { "date": "2021-01-10", "reason": "SOLD_OUT" }, { "date": "2021-03-24", "reason": "SOLD_OUT" }, { "date": "2021-01-14", "reason": "SOLD_OUT" }, { "date": "2021-04-16", "reason": "SOLD_OUT" }, { "date": "2021-02-06", "reason": "SOLD_OUT" }, { "date": "2021-04-03", "reason": "SOLD_OUT" }, { "date": "2021-03-11", "reason": "SOLD_OUT" }, { "date": "2021-02-19", "reason": "SOLD_OUT" } ] }, { "startTime": "10:30", "unavailableDates": [ { "date": "2021-03-23", "reason": "SOLD_OUT" }, { "date": "2021-01-03", "reason": "SOLD_OUT" }, { "date": "2021-04-14", "reason": "SOLD_OUT" }, { "date": "2021-03-02", "reason": "SOLD_OUT" }, { "date": "2021-02-11", "reason": "SOLD_OUT" }, { "date": "2021-01-20", "reason": "SOLD_OUT" }, { "date": "2021-04-01", "reason": "SOLD_OUT" }, { "date": "2021-01-07", "reason": "SOLD_OUT" }, { "date": "2021-04-10", "reason": "SOLD_OUT" }, { "date": "2021-02-28", "reason": "SOLD_OUT" }, { "date": "2021-03-19", "reason": "SOLD_OUT" }, { "date": "2021-02-15", "reason": "SOLD_OUT" }, { "date": "2021-01-24", "reason": "SOLD_OUT" }, { "date": "2021-02-02", "reason": "SOLD_OUT" }, { "date": "2021-03-06", "reason": "SOLD_OUT" }, { "date": "2021-04-27", "reason": "SOLD_OUT" }, { "date": "2021-04-05", "reason": "SOLD_OUT" }, { "date": "2021-01-12", "reason": "SOLD_OUT" }, { "date": "2021-02-23", "reason": "SOLD_OUT" }, { "date": "2021-03-15", "reason": "SOLD_OUT" }, { "date": "2021-01-29", "reason": "SOLD_OUT" }, { "date": "2021-02-06", "reason": "SOLD_OUT" }, { "date": "2021-03-11", "reason": "SOLD_OUT" }, { "date": "2021-04-22", "reason": "SOLD_OUT" }, { "date": "2021-02-19", "reason": "SOLD_OUT" }, { "date": "2021-04-09", "reason": "SOLD_OUT" }, { "date": "2021-02-10", "reason": "SOLD_OUT" }, { "date": "2021-04-18", "reason": "SOLD_OUT" }, { "date": "2021-01-16", "reason": "SOLD_OUT" }, { "date": "2021-03-28", "reason": "SOLD_OUT" }, { "date": "2021-04-15", "reason": "SOLD_OUT" }, { "date": "2021-03-22", "reason": "SOLD_OUT" }, { "date": "2021-01-21", "reason": "SOLD_OUT" }, { "date": "2021-01-04", "reason": "SOLD_OUT" }, { "date": "2021-02-14", "reason": "SOLD_OUT" }, { "date": "2021-03-05", "reason": "SOLD_OUT" }, { "date": "2021-03-09", "reason": "SOLD_OUT" }, { "date": "2021-04-28", "reason": "SOLD_OUT" }, { "date": "2021-03-18", "reason": "SOLD_OUT" }, { "date": "2021-02-27", "reason": "SOLD_OUT" }, { "date": "2021-02-18", "reason": "SOLD_OUT" }, { "date": "2021-01-25", "reason": "SOLD_OUT" }, { "date": "2021-01-08", "reason": "SOLD_OUT" }, { "date": "2021-04-11", "reason": "SOLD_OUT" }, { "date": "2021-02-01", "reason": "SOLD_OUT" }, { "date": "2021-02-22", "reason": "SOLD_OUT" }, { "date": "2021-03-31", "reason": "SOLD_OUT" }, { "date": "2021-02-05", "reason": "SOLD_OUT" }, { "date": "2021-02-26", "reason": "SOLD_OUT" }, { "date": "2021-03-10", "reason": "SOLD_OUT" }, { "date": "2021-01-13", "reason": "SOLD_OUT" }, { "date": "2021-04-23", "reason": "SOLD_OUT" }, { "date": "2021-04-02", "reason": "SOLD_OUT" }, { "date": "2021-01-17", "reason": "SOLD_OUT" }, { "date": "2021-04-19", "reason": "SOLD_OUT" }, { "date": "2021-02-09", "reason": "SOLD_OUT" }, { "date": "2021-03-27", "reason": "SOLD_OUT" }, { "date": "2021-03-01", "reason": "SOLD_OUT" }, { "date": "2021-01-30", "reason": "SOLD_OUT" }, { "date": "2021-04-06", "reason": "SOLD_OUT" }, { "date": "2021-03-14", "reason": "SOLD_OUT" }, { "date": "2021-02-13", "reason": "SOLD_OUT" }, { "date": "2021-03-04", "reason": "SOLD_OUT" }, { "date": "2021-01-22", "reason": "SOLD_OUT" }, { "date": "2021-01-01", "reason": "SOLD_OUT" }, { "date": "2021-03-25", "reason": "SOLD_OUT" }, { "date": "2021-01-05", "reason": "SOLD_OUT" }, { "date": "2021-04-16", "reason": "SOLD_OUT" }, { "date": "2021-01-26", "reason": "SOLD_OUT" }, { "date": "2021-04-29", "reason": "SOLD_OUT" }, { "date": "2021-03-08", "reason": "SOLD_OUT" }, { "date": "2021-02-17", "reason": "SOLD_OUT" }, { "date": "2021-04-12", "reason": "SOLD_OUT" }, { "date": "2021-01-09", "reason": "SOLD_OUT" }, { "date": "2021-03-21", "reason": "SOLD_OUT" }, { "date": "2021-01-31", "reason": "SOLD_OUT" }, { "date": "2021-03-13", "reason": "SOLD_OUT" }, { "date": "2021-04-24", "reason": "SOLD_OUT" }, { "date": "2021-02-04", "reason": "SOLD_OUT" }, { "date": "2021-02-21", "reason": "SOLD_OUT" }, { "date": "2021-03-30", "reason": "SOLD_OUT" }, { "date": "2021-02-25", "reason": "SOLD_OUT" }, { "date": "2021-04-03", "reason": "SOLD_OUT" }, { "date": "2021-01-14", "reason": "SOLD_OUT" }, { "date": "2021-03-17", "reason": "SOLD_OUT" }, { "date": "2021-01-27", "reason": "SOLD_OUT" }, { "date": "2021-02-08", "reason": "SOLD_OUT" }, { "date": "2021-01-18", "reason": "SOLD_OUT" }, { "date": "2021-03-26", "reason": "SOLD_OUT" }, { "date": "2021-04-07", "reason": "SOLD_OUT" }, { "date": "2021-04-20", "reason": "SOLD_OUT" }, { "date": "2021-01-19", "reason": "SOLD_OUT" }, { "date": "2021-04-17", "reason": "SOLD_OUT" }, { "date": "2021-03-24", "reason": "SOLD_OUT" }, { "date": "2021-02-12", "reason": "SOLD_OUT" }, { "date": "2021-03-03", "reason": "SOLD_OUT" }, { "date": "2021-01-06", "reason": "SOLD_OUT" }, { "date": "2021-04-30", "reason": "SOLD_OUT" }, { "date": "2021-01-10", "reason": "SOLD_OUT" }, { "date": "2021-04-26", "reason": "SOLD_OUT" }, { "date": "2021-03-20", "reason": "SOLD_OUT" }, { "date": "2021-02-16", "reason": "SOLD_OUT" }, { "date": "2021-01-23", "reason": "SOLD_OUT" }, { "date": "2021-04-13", "reason": "SOLD_OUT" }, { "date": "2021-03-07", "reason": "SOLD_OUT" }, { "date": "2021-01-11", "reason": "SOLD_OUT" }, { "date": "2021-04-25", "reason": "SOLD_OUT" }, { "date": "2021-03-12", "reason": "SOLD_OUT" }, { "date": "2021-02-03", "reason": "SOLD_OUT" }, { "date": "2021-04-04", "reason": "SOLD_OUT" }, { "date": "2021-02-24", "reason": "SOLD_OUT" }, { "date": "2021-02-20", "reason": "SOLD_OUT" }, { "date": "2021-03-16", "reason": "SOLD_OUT" }, { "date": "2021-04-08", "reason": "SOLD_OUT" }, { "date": "2021-01-28", "reason": "SOLD_OUT" }, { "date": "2021-02-07", "reason": "SOLD_OUT" }, { "date": "2021-01-15", "reason": "SOLD_OUT" }, { "date": "2021-04-21", "reason": "SOLD_OUT" }, { "date": "2021-03-29", "reason": "SOLD_OUT" }, { "date": "2021-01-02", "reason": "SOLD_OUT" } ] }, { "startTime": "09:00", "unavailableDates": [ { "date": "2021-03-17", "reason": "SOLD_OUT" }, { "date": "2021-02-26", "reason": "SOLD_OUT" }, { "date": "2021-01-14", "reason": "SOLD_OUT" }, { "date": "2021-02-05", "reason": "SOLD_OUT" }, { "date": "2021-02-22", "reason": "SOLD_OUT" }, { "date": "2021-04-25", "reason": "SOLD_OUT" }, { "date": "2021-03-13", "reason": "SOLD_OUT" }, { "date": "2021-04-04", "reason": "SOLD_OUT" }, { "date": "2021-03-30", "reason": "SOLD_OUT" }, { "date": "2021-04-21", "reason": "SOLD_OUT" }, { "date": "2021-02-09", "reason": "SOLD_OUT" }, { "date": "2021-01-31", "reason": "SOLD_OUT" }, { "date": "2021-03-04", "reason": "SOLD_OUT" }, { "date": "2021-01-18", "reason": "SOLD_OUT" }, { "date": "2021-04-08", "reason": "SOLD_OUT" }, { "date": "2021-01-05", "reason": "SOLD_OUT" }, { "date": "2021-03-26", "reason": "SOLD_OUT" }, { "date": "2021-01-06", "reason": "SOLD_OUT" }, { "date": "2021-04-16", "reason": "SOLD_OUT" }, { "date": "2021-03-05", "reason": "SOLD_OUT" }, { "date": "2021-02-13", "reason": "SOLD_OUT" }, { "date": "2021-01-23", "reason": "SOLD_OUT" }, { "date": "2021-04-03", "reason": "SOLD_OUT" }, { "date": "2021-04-12", "reason": "SOLD_OUT" }, { "date": "2021-01-01", "reason": "SOLD_OUT" }, { "date": "2021-03-22", "reason": "SOLD_OUT" }, { "date": "2021-01-10", "reason": "SOLD_OUT" }, { "date": "2021-02-04", "reason": "SOLD_OUT" }, { "date": "2021-01-27", "reason": "SOLD_OUT" }, { "date": "2021-02-17", "reason": "SOLD_OUT" }, { "date": "2021-04-29", "reason": "SOLD_OUT" }, { "date": "2021-03-09", "reason": "SOLD_OUT" }, { "date": "2021-02-06", "reason": "SOLD_OUT" }, { "date": "2021-04-07", "reason": "SOLD_OUT" }, { "date": "2021-03-18", "reason": "SOLD_OUT" }, { "date": "2021-02-23", "reason": "SOLD_OUT" }, { "date": "2021-01-17", "reason": "SOLD_OUT" }, { "date": "2021-04-24", "reason": "SOLD_OUT" }, { "date": "2021-03-14", "reason": "SOLD_OUT" }, { "date": "2021-02-27", "reason": "SOLD_OUT" }, { "date": "2021-01-30", "reason": "SOLD_OUT" }, { "date": "2021-04-11", "reason": "SOLD_OUT" }, { "date": "2021-03-31", "reason": "SOLD_OUT" }, { "date": "2021-01-21", "reason": "SOLD_OUT" }, { "date": "2021-03-01", "reason": "SOLD_OUT" }, { "date": "2021-04-20", "reason": "SOLD_OUT" }, { "date": "2021-01-04", "reason": "SOLD_OUT" }, { "date": "2021-02-10", "reason": "SOLD_OUT" }, { "date": "2021-01-22", "reason": "SOLD_OUT" }, { "date": "2021-04-19", "reason": "SOLD_OUT" }, { "date": "2021-03-06", "reason": "SOLD_OUT" }, { "date": "2021-01-09", "reason": "SOLD_OUT" }, { "date": "2021-03-27", "reason": "SOLD_OUT" }, { "date": "2021-02-14", "reason": "SOLD_OUT" }, { "date": "2021-02-01", "reason": "SOLD_OUT" }, { "date": "2021-04-02", "reason": "SOLD_OUT" }, { "date": "2021-03-23", "reason": "SOLD_OUT" }, { "date": "2021-02-18", "reason": "SOLD_OUT" }, { "date": "2021-01-13", "reason": "SOLD_OUT" }, { "date": "2021-04-28", "reason": "SOLD_OUT" }, { "date": "2021-03-10", "reason": "SOLD_OUT" }, { "date": "2021-04-15", "reason": "SOLD_OUT" }, { "date": "2021-01-26", "reason": "SOLD_OUT" }, { "date": "2021-03-15", "reason": "SOLD_OUT" }, { "date": "2021-04-06", "reason": "SOLD_OUT" }, { "date": "2021-04-27", "reason": "SOLD_OUT" }, { "date": "2021-04-10", "reason": "SOLD_OUT" }, { "date": "2021-03-19", "reason": "SOLD_OUT" }, { "date": "2021-01-16", "reason": "SOLD_OUT" }, { "date": "2021-02-07", "reason": "SOLD_OUT" }, { "date": "2021-02-28", "reason": "SOLD_OUT" }, { "date": "2021-02-11", "reason": "SOLD_OUT" }, { "date": "2021-01-20", "reason": "SOLD_OUT" }, { "date": "2021-04-23", "reason": "SOLD_OUT" }, { "date": "2021-01-03", "reason": "SOLD_OUT" }, { "date": "2021-02-24", "reason": "SOLD_OUT" }, { "date": "2021-03-02", "reason": "SOLD_OUT" }, { "date": "2021-03-07", "reason": "SOLD_OUT" }, { "date": "2021-02-15", "reason": "SOLD_OUT" }, { "date": "2021-01-25", "reason": "SOLD_OUT" }, { "date": "2021-01-08", "reason": "SOLD_OUT" }, { "date": "2021-03-28", "reason": "SOLD_OUT" }, { "date": "2021-04-18", "reason": "SOLD_OUT" }, { "date": "2021-01-29", "reason": "SOLD_OUT" }, { "date": "2021-02-19", "reason": "SOLD_OUT" }, { "date": "2021-03-11", "reason": "SOLD_OUT" }, { "date": "2021-02-02", "reason": "SOLD_OUT" }, { "date": "2021-04-14", "reason": "SOLD_OUT" }, { "date": "2021-03-24", "reason": "SOLD_OUT" }, { "date": "2021-01-12", "reason": "SOLD_OUT" }, { "date": "2021-04-01", "reason": "SOLD_OUT" }, { "date": "2021-01-15", "reason": "SOLD_OUT" }, { "date": "2021-04-26", "reason": "SOLD_OUT" }, { "date": "2021-03-16", "reason": "SOLD_OUT" }, { "date": "2021-02-25", "reason": "SOLD_OUT" }, { "date": "2021-04-09", "reason": "SOLD_OUT" }, { "date": "2021-04-05", "reason": "SOLD_OUT" }, { "date": "2021-02-08", "reason": "SOLD_OUT" }, { "date": "2021-03-20", "reason": "SOLD_OUT" }, { "date": "2021-02-21", "reason": "SOLD_OUT" }, { "date": "2021-03-03", "reason": "SOLD_OUT" }, { "date": "2021-02-12", "reason": "SOLD_OUT" }, { "date": "2021-03-29", "reason": "SOLD_OUT" }, { "date": "2021-01-19", "reason": "SOLD_OUT" }, { "date": "2021-04-22", "reason": "SOLD_OUT" }, { "date": "2021-04-17", "reason": "SOLD_OUT" }, { "date": "2021-01-07", "reason": "SOLD_OUT" }, { "date": "2021-03-08", "reason": "SOLD_OUT" }, { "date": "2021-02-16", "reason": "SOLD_OUT" }, { "date": "2021-03-25", "reason": "SOLD_OUT" }, { "date": "2021-01-24", "reason": "SOLD_OUT" }, { "date": "2021-01-02", "reason": "SOLD_OUT" }, { "date": "2021-03-21", "reason": "SOLD_OUT" }, { "date": "2021-03-12", "reason": "SOLD_OUT" }, { "date": "2021-02-20", "reason": "SOLD_OUT" }, { "date": "2021-01-11", "reason": "SOLD_OUT" }, { "date": "2021-04-30", "reason": "SOLD_OUT" }, { "date": "2021-01-28", "reason": "SOLD_OUT" }, { "date": "2021-04-13", "reason": "SOLD_OUT" }, { "date": "2021-02-03", "reason": "SOLD_OUT" } ] }, { "startTime": "11:00", "unavailableDates": [ { "date": "2021-03-30", "reason": "SOLD_OUT" }, { "date": "2021-03-13", "reason": "SOLD_OUT" }, { "date": "2021-04-04", "reason": "SOLD_OUT" }, { "date": "2021-02-18", "reason": "SOLD_OUT" }, { "date": "2021-01-14", "reason": "SOLD_OUT" }, { "date": "2021-02-05", "reason": "SOLD_OUT" }, { "date": "2021-01-27", "reason": "SOLD_OUT" }, { "date": "2021-04-08", "reason": "SOLD_OUT" }, { "date": "2021-01-06", "reason": "SOLD_OUT" }, { "date": "2021-03-17", "reason": "SOLD_OUT" }, { "date": "2021-04-17", "reason": "SOLD_OUT" }, { "date": "2021-03-26", "reason": "SOLD_OUT" }, { "date": "2021-02-09", "reason": "SOLD_OUT" }, { "date": "2021-01-31", "reason": "SOLD_OUT" }, { "date": "2021-02-22", "reason": "SOLD_OUT" }, { "date": "2021-04-12", "reason": "SOLD_OUT" }, { "date": "2021-01-19", "reason": "SOLD_OUT" }, { "date": "2021-03-22", "reason": "SOLD_OUT" }, { "date": "2021-01-01", "reason": "SOLD_OUT" }, { "date": "2021-03-05", "reason": "SOLD_OUT" }, { "date": "2021-02-13", "reason": "SOLD_OUT" }, { "date": "2021-03-18", "reason": "SOLD_OUT" }, { "date": "2021-04-29", "reason": "SOLD_OUT" }, { "date": "2021-04-16", "reason": "SOLD_OUT" }, { "date": "2021-02-26", "reason": "SOLD_OUT" }, { "date": "2021-02-17", "reason": "SOLD_OUT" }, { "date": "2021-04-25", "reason": "SOLD_OUT" }, { "date": "2021-03-09", "reason": "SOLD_OUT" }, { "date": "2021-01-23", "reason": "SOLD_OUT" }, { "date": "2021-01-10", "reason": "SOLD_OUT" }, { "date": "2021-03-12", "reason": "SOLD_OUT" }, { "date": "2021-01-11", "reason": "SOLD_OUT" }, { "date": "2021-02-21", "reason": "SOLD_OUT" }, { "date": "2021-01-28", "reason": "SOLD_OUT" }, { "date": "2021-03-29", "reason": "SOLD_OUT" }, { "date": "2021-04-01", "reason": "SOLD_OUT" }, { "date": "2021-02-04", "reason": "SOLD_OUT" }, { "date": "2021-01-07", "reason": "SOLD_OUT" }, { "date": "2021-02-25", "reason": "SOLD_OUT" }, { "date": "2021-03-25", "reason": "SOLD_OUT" }, { "date": "2021-04-18", "reason": "SOLD_OUT" }, { "date": "2021-03-16", "reason": "SOLD_OUT" }, { "date": "2021-01-15", "reason": "SOLD_OUT" }, { "date": "2021-04-05", "reason": "SOLD_OUT" }, { "date": "2021-02-08", "reason": "SOLD_OUT" }, { "date": "2021-01-03", "reason": "SOLD_OUT" }, { "date": "2021-03-21", "reason": "SOLD_OUT" }, { "date": "2021-01-02", "reason": "SOLD_OUT" }, { "date": "2021-04-09", "reason": "SOLD_OUT" }, { "date": "2021-03-04", "reason": "SOLD_OUT" }, { "date": "2021-02-12", "reason": "SOLD_OUT" }, { "date": "2021-01-20", "reason": "SOLD_OUT" }, { "date": "2021-04-30", "reason": "SOLD_OUT" }, { "date": "2021-02-16", "reason": "SOLD_OUT" }, { "date": "2021-01-24", "reason": "SOLD_OUT" }, { "date": "2021-03-08", "reason": "SOLD_OUT" }, { "date": "2021-01-29", "reason": "SOLD_OUT" }, { "date": "2021-02-20", "reason": "SOLD_OUT" }, { "date": "2021-02-03", "reason": "SOLD_OUT" }, { "date": "2021-01-12", "reason": "SOLD_OUT" }, { "date": "2021-04-02", "reason": "SOLD_OUT" }, { "date": "2021-03-11", "reason": "SOLD_OUT" }, { "date": "2021-02-07", "reason": "SOLD_OUT" }, { "date": "2021-01-16", "reason": "SOLD_OUT" }, { "date": "2021-02-24", "reason": "SOLD_OUT" }, { "date": "2021-03-28", "reason": "SOLD_OUT" }, { "date": "2021-04-19", "reason": "SOLD_OUT" }, { "date": "2021-01-04", "reason": "SOLD_OUT" }, { "date": "2021-03-15", "reason": "SOLD_OUT" }, { "date": "2021-04-06", "reason": "SOLD_OUT" }, { "date": "2021-03-03", "reason": "SOLD_OUT" }, { "date": "2021-02-11", "reason": "SOLD_OUT" }, { "date": "2021-03-20", "reason": "SOLD_OUT" }, { "date": "2021-04-14", "reason": "SOLD_OUT" }, { "date": "2021-01-21", "reason": "SOLD_OUT" }, { "date": "2021-04-10", "reason": "SOLD_OUT" }, { "date": "2021-03-24", "reason": "SOLD_OUT" }, { "date": "2021-01-25", "reason": "SOLD_OUT" }, { "date": "2021-01-08", "reason": "SOLD_OUT" }, { "date": "2021-02-28", "reason": "SOLD_OUT" }, { "date": "2021-02-15", "reason": "SOLD_OUT" }, { "date": "2021-04-27", "reason": "SOLD_OUT" }, { "date": "2021-03-07", "reason": "SOLD_OUT" }, { "date": "2021-02-02", "reason": "SOLD_OUT" }, { "date": "2021-04-03", "reason": "SOLD_OUT" }, { "date": "2021-04-24", "reason": "SOLD_OUT" }, { "date": "2021-01-13", "reason": "SOLD_OUT" }, { "date": "2021-03-10", "reason": "SOLD_OUT" }, { "date": "2021-01-26", "reason": "SOLD_OUT" }, { "date": "2021-02-19", "reason": "SOLD_OUT" }, { "date": "2021-03-31", "reason": "SOLD_OUT" }, { "date": "2021-02-06", "reason": "SOLD_OUT" }, { "date": "2021-04-07", "reason": "SOLD_OUT" }, { "date": "2021-01-05", "reason": "SOLD_OUT" }, { "date": "2021-02-23", "reason": "SOLD_OUT" }, { "date": "2021-03-01", "reason": "SOLD_OUT" }, { "date": "2021-03-27", "reason": "SOLD_OUT" }, { "date": "2021-01-30", "reason": "SOLD_OUT" }, { "date": "2021-04-20", "reason": "SOLD_OUT" }, { "date": "2021-01-17", "reason": "SOLD_OUT" }, { "date": "2021-03-14", "reason": "SOLD_OUT" }, { "date": "2021-02-10", "reason": "SOLD_OUT" }, { "date": "2021-03-02", "reason": "SOLD_OUT" }, { "date": "2021-01-18", "reason": "SOLD_OUT" }, { "date": "2021-04-11", "reason": "SOLD_OUT" }, { "date": "2021-03-19", "reason": "SOLD_OUT" }, { "date": "2021-04-15", "reason": "SOLD_OUT" }, { "date": "2021-02-27", "reason": "SOLD_OUT" }, { "date": "2021-03-23", "reason": "SOLD_OUT" }, { "date": "2021-03-06", "reason": "SOLD_OUT" }, { "date": "2021-04-28", "reason": "SOLD_OUT" }, { "date": "2021-01-22", "reason": "SOLD_OUT" }, { "date": "2021-02-14", "reason": "SOLD_OUT" }, { "date": "2021-01-09", "reason": "SOLD_OUT" }, { "date": "2021-02-01", "reason": "SOLD_OUT" } ] }, { "startTime": "08:30", "unavailableDates": [ { "date": "2021-02-15", "reason": "SOLD_OUT" }, { "date": "2021-01-24", "reason": "SOLD_OUT" }, { "date": "2021-01-03", "reason": "SOLD_OUT" }, { "date": "2021-04-18", "reason": "SOLD_OUT" }, { "date": "2021-03-06", "reason": "SOLD_OUT" }, { "date": "2021-03-27", "reason": "SOLD_OUT" }, { "date": "2021-02-19", "reason": "SOLD_OUT" }, { "date": "2021-01-11", "reason": "SOLD_OUT" }, { "date": "2021-02-02", "reason": "SOLD_OUT" }, { "date": "2021-01-28", "reason": "SOLD_OUT" }, { "date": "2021-04-14", "reason": "SOLD_OUT" }, { "date": "2021-03-23", "reason": "SOLD_OUT" }, { "date": "2021-03-10", "reason": "SOLD_OUT" }, { "date": "2021-04-01", "reason": "SOLD_OUT" }, { "date": "2021-01-15", "reason": "SOLD_OUT" }, { "date": "2021-02-24", "reason": "SOLD_OUT" }, { "date": "2021-04-06", "reason": "SOLD_OUT" }, { "date": "2021-04-27", "reason": "SOLD_OUT" }, { "date": "2021-03-14", "reason": "SOLD_OUT" }, { "date": "2021-02-07", "reason": "SOLD_OUT" }, { "date": "2021-02-28", "reason": "SOLD_OUT" }, { "date": "2021-01-19", "reason": "SOLD_OUT" }, { "date": "2021-04-10", "reason": "SOLD_OUT" }, { "date": "2021-03-01", "reason": "SOLD_OUT" }, { "date": "2021-03-18", "reason": "SOLD_OUT" }, { "date": "2021-04-23", "reason": "SOLD_OUT" }, { "date": "2021-03-31", "reason": "SOLD_OUT" }, { "date": "2021-02-11", "reason": "SOLD_OUT" }, { "date": "2021-03-07", "reason": "SOLD_OUT" }, { "date": "2021-01-04", "reason": "SOLD_OUT" }, { "date": "2021-03-28", "reason": "SOLD_OUT" }, { "date": "2021-02-14", "reason": "SOLD_OUT" }, { "date": "2021-01-23", "reason": "SOLD_OUT" }, { "date": "2021-04-19", "reason": "SOLD_OUT" }, { "date": "2021-01-10", "reason": "SOLD_OUT" }, { "date": "2021-03-11", "reason": "SOLD_OUT" }, { "date": "2021-02-01", "reason": "SOLD_OUT" }, { "date": "2021-04-02", "reason": "SOLD_OUT" }, { "date": "2021-04-28", "reason": "SOLD_OUT" }, { "date": "2021-01-27", "reason": "SOLD_OUT" }, { "date": "2021-04-15", "reason": "SOLD_OUT" }, { "date": "2021-03-24", "reason": "SOLD_OUT" }, { "date": "2021-02-18", "reason": "SOLD_OUT" }, { "date": "2021-02-06", "reason": "SOLD_OUT" }, { "date": "2021-04-07", "reason": "SOLD_OUT" }, { "date": "2021-02-23", "reason": "SOLD_OUT" }, { "date": "2021-03-15", "reason": "SOLD_OUT" }, { "date": "2021-01-14", "reason": "SOLD_OUT" }, { "date": "2021-04-24", "reason": "SOLD_OUT" }, { "date": "2021-02-27", "reason": "SOLD_OUT" }, { "date": "2021-01-31", "reason": "SOLD_OUT" }, { "date": "2021-03-02", "reason": "SOLD_OUT" }, { "date": "2021-02-10", "reason": "SOLD_OUT" }, { "date": "2021-04-11", "reason": "SOLD_OUT" }, { "date": "2021-03-19", "reason": "SOLD_OUT" }, { "date": "2021-04-20", "reason": "SOLD_OUT" }, { "date": "2021-01-18", "reason": "SOLD_OUT" }, { "date": "2021-03-25", "reason": "SOLD_OUT" }, { "date": "2021-01-05", "reason": "SOLD_OUT" }, { "date": "2021-04-16", "reason": "SOLD_OUT" }, { "date": "2021-03-08", "reason": "SOLD_OUT" }, { "date": "2021-02-13", "reason": "SOLD_OUT" }, { "date": "2021-01-22", "reason": "SOLD_OUT" }, { "date": "2021-04-12", "reason": "SOLD_OUT" }, { "date": "2021-01-09", "reason": "SOLD_OUT" }, { "date": "2021-01-01", "reason": "SOLD_OUT" }, { "date": "2021-03-21", "reason": "SOLD_OUT" }, { "date": "2021-03-12", "reason": "SOLD_OUT" }, { "date": "2021-04-03", "reason": "SOLD_OUT" }, { "date": "2021-01-26", "reason": "SOLD_OUT" }, { "date": "2021-02-17", "reason": "SOLD_OUT" }, { "date": "2021-04-29", "reason": "SOLD_OUT" }, { "date": "2021-01-13", "reason": "SOLD_OUT" }, { "date": "2021-02-04", "reason": "SOLD_OUT" }, { "date": "2021-03-16", "reason": "SOLD_OUT" }, { "date": "2021-04-25", "reason": "SOLD_OUT" }, { "date": "2021-02-05", "reason": "SOLD_OUT" }, { "date": "2021-02-22", "reason": "SOLD_OUT" }, { "date": "2021-01-17", "reason": "SOLD_OUT" }, { "date": "2021-04-04", "reason": "SOLD_OUT" }, { "date": "2021-01-30", "reason": "SOLD_OUT" }, { "date": "2021-03-20", "reason": "SOLD_OUT" }, { "date": "2021-04-21", "reason": "SOLD_OUT" }, { "date": "2021-02-09", "reason": "SOLD_OUT" }, { "date": "2021-03-29", "reason": "SOLD_OUT" }, { "date": "2021-01-21", "reason": "SOLD_OUT" }, { "date": "2021-02-26", "reason": "SOLD_OUT" }, { "date": "2021-03-03", "reason": "SOLD_OUT" }, { "date": "2021-01-06", "reason": "SOLD_OUT" }, { "date": "2021-04-08", "reason": "SOLD_OUT" }, { "date": "2021-03-26", "reason": "SOLD_OUT" }, { "date": "2021-02-16", "reason": "SOLD_OUT" }, { "date": "2021-03-05", "reason": "SOLD_OUT" }, { "date": "2021-01-25", "reason": "SOLD_OUT" }, { "date": "2021-04-17", "reason": "SOLD_OUT" }, { "date": "2021-01-08", "reason": "SOLD_OUT" }, { "date": "2021-01-02", "reason": "SOLD_OUT" }, { "date": "2021-02-20", "reason": "SOLD_OUT" }, { "date": "2021-01-29", "reason": "SOLD_OUT" }, { "date": "2021-04-30", "reason": "SOLD_OUT" }, { "date": "2021-04-13", "reason": "SOLD_OUT" }, { "date": "2021-03-22", "reason": "SOLD_OUT" }, { "date": "2021-03-09", "reason": "SOLD_OUT" }, { "date": "2021-01-12", "reason": "SOLD_OUT" }, { "date": "2021-02-03", "reason": "SOLD_OUT" }, { "date": "2021-02-08", "reason": "SOLD_OUT" }, { "date": "2021-02-21", "reason": "SOLD_OUT" }, { "date": "2021-04-26", "reason": "SOLD_OUT" }, { "date": "2021-01-16", "reason": "SOLD_OUT" }, { "date": "2021-04-05", "reason": "SOLD_OUT" }, { "date": "2021-03-13", "reason": "SOLD_OUT" }, { "date": "2021-03-30", "reason": "SOLD_OUT" }, { "date": "2021-03-04", "reason": "SOLD_OUT" }, { "date": "2021-04-09", "reason": "SOLD_OUT" }, { "date": "2021-02-12", "reason": "SOLD_OUT" }, { "date": "2021-04-22", "reason": "SOLD_OUT" }, { "date": "2021-01-20", "reason": "SOLD_OUT" }, { "date": "2021-03-17", "reason": "SOLD_OUT" }, { "date": "2021-02-25", "reason": "SOLD_OUT" } ] }, { "startTime": "09:30", "unavailableDates": [ { "date": "2021-03-20", "reason": "SOLD_OUT" }, { "date": "2021-03-03", "reason": "SOLD_OUT" }, { "date": "2021-02-12", "reason": "SOLD_OUT" }, { "date": "2021-02-08", "reason": "SOLD_OUT" }, { "date": "2021-01-21", "reason": "SOLD_OUT" }, { "date": "2021-04-11", "reason": "SOLD_OUT" }, { "date": "2021-02-16", "reason": "SOLD_OUT" }, { "date": "2021-03-24", "reason": "SOLD_OUT" }, { "date": "2021-01-13", "reason": "SOLD_OUT" }, { "date": "2021-03-07", "reason": "SOLD_OUT" }, { "date": "2021-04-28", "reason": "SOLD_OUT" }, { "date": "2021-02-04", "reason": "SOLD_OUT" }, { "date": "2021-04-15", "reason": "SOLD_OUT" }, { "date": "2021-01-25", "reason": "SOLD_OUT" }, { "date": "2021-02-20", "reason": "SOLD_OUT" }, { "date": "2021-03-29", "reason": "SOLD_OUT" }, { "date": "2021-04-02", "reason": "SOLD_OUT" }, { "date": "2021-04-23", "reason": "SOLD_OUT" }, { "date": "2021-04-19", "reason": "SOLD_OUT" }, { "date": "2021-01-30", "reason": "SOLD_OUT" }, { "date": "2021-03-12", "reason": "SOLD_OUT" }, { "date": "2021-01-08", "reason": "SOLD_OUT" }, { "date": "2021-03-16", "reason": "SOLD_OUT" }, { "date": "2021-04-06", "reason": "SOLD_OUT" }, { "date": "2021-01-17", "reason": "SOLD_OUT" }, { "date": "2021-01-04", "reason": "SOLD_OUT" }, { "date": "2021-02-24", "reason": "SOLD_OUT" }, { "date": "2021-01-20", "reason": "SOLD_OUT" }, { "date": "2021-03-21", "reason": "SOLD_OUT" }, { "date": "2021-02-13", "reason": "SOLD_OUT" }, { "date": "2021-03-04", "reason": "SOLD_OUT" }, { "date": "2021-01-16", "reason": "SOLD_OUT" }, { "date": "2021-04-10", "reason": "SOLD_OUT" }, { "date": "2021-02-07", "reason": "SOLD_OUT" }, { "date": "2021-03-25", "reason": "SOLD_OUT" }, { "date": "2021-01-24", "reason": "SOLD_OUT" }, { "date": "2021-04-27", "reason": "SOLD_OUT" }, { "date": "2021-04-14", "reason": "SOLD_OUT" }, { "date": "2021-01-12", "reason": "SOLD_OUT" }, { "date": "2021-03-08", "reason": "SOLD_OUT" }, { "date": "2021-04-01", "reason": "SOLD_OUT" }, { "date": "2021-02-03", "reason": "SOLD_OUT" }, { "date": "2021-02-17", "reason": "SOLD_OUT" }, { "date": "2021-03-30", "reason": "SOLD_OUT" }, { "date": "2021-04-05", "reason": "SOLD_OUT" }, { "date": "2021-01-07", "reason": "SOLD_OUT" }, { "date": "2021-03-13", "reason": "SOLD_OUT" }, { "date": "2021-03-26", "reason": "SOLD_OUT" }, { "date": "2021-02-21", "reason": "SOLD_OUT" }, { "date": "2021-04-18", "reason": "SOLD_OUT" }, { "date": "2021-01-29", "reason": "SOLD_OUT" }, { "date": "2021-02-25", "reason": "SOLD_OUT" }, { "date": "2021-03-17", "reason": "SOLD_OUT" }, { "date": "2021-04-09", "reason": "SOLD_OUT" }, { "date": "2021-01-03", "reason": "SOLD_OUT" }, { "date": "2021-04-22", "reason": "SOLD_OUT" }, { "date": "2021-01-19", "reason": "SOLD_OUT" }, { "date": "2021-03-01", "reason": "SOLD_OUT" }, { "date": "2021-04-13", "reason": "SOLD_OUT" }, { "date": "2021-04-30", "reason": "SOLD_OUT" }, { "date": "2021-03-18", "reason": "SOLD_OUT" }, { "date": "2021-02-27", "reason": "SOLD_OUT" }, { "date": "2021-01-02", "reason": "SOLD_OUT" }, { "date": "2021-03-05", "reason": "SOLD_OUT" }, { "date": "2021-02-14", "reason": "SOLD_OUT" }, { "date": "2021-01-15", "reason": "SOLD_OUT" }, { "date": "2021-02-06", "reason": "SOLD_OUT" }, { "date": "2021-04-26", "reason": "SOLD_OUT" }, { "date": "2021-01-23", "reason": "SOLD_OUT" }, { "date": "2021-04-17", "reason": "SOLD_OUT" }, { "date": "2021-03-09", "reason": "SOLD_OUT" }, { "date": "2021-02-18", "reason": "SOLD_OUT" }, { "date": "2021-03-22", "reason": "SOLD_OUT" }, { "date": "2021-01-11", "reason": "SOLD_OUT" }, { "date": "2021-04-21", "reason": "SOLD_OUT" }, { "date": "2021-01-10", "reason": "SOLD_OUT" }, { "date": "2021-02-02", "reason": "SOLD_OUT" }, { "date": "2021-01-28", "reason": "SOLD_OUT" }, { "date": "2021-03-31", "reason": "SOLD_OUT" }, { "date": "2021-03-10", "reason": "SOLD_OUT" }, { "date": "2021-02-22", "reason": "SOLD_OUT" }, { "date": "2021-03-27", "reason": "SOLD_OUT" }, { "date": "2021-04-25", "reason": "SOLD_OUT" }, { "date": "2021-04-04", "reason": "SOLD_OUT" }, { "date": "2021-02-26", "reason": "SOLD_OUT" }, { "date": "2021-01-06", "reason": "SOLD_OUT" }, { "date": "2021-03-14", "reason": "SOLD_OUT" }, { "date": "2021-04-08", "reason": "SOLD_OUT" }, { "date": "2021-03-02", "reason": "SOLD_OUT" }, { "date": "2021-04-12", "reason": "SOLD_OUT" }, { "date": "2021-02-11", "reason": "SOLD_OUT" }, { "date": "2021-02-09", "reason": "SOLD_OUT" }, { "date": "2021-03-19", "reason": "SOLD_OUT" }, { "date": "2021-02-28", "reason": "SOLD_OUT" }, { "date": "2021-01-22", "reason": "SOLD_OUT" }, { "date": "2021-01-01", "reason": "SOLD_OUT" }, { "date": "2021-02-15", "reason": "SOLD_OUT" }, { "date": "2021-03-06", "reason": "SOLD_OUT" }, { "date": "2021-01-14", "reason": "SOLD_OUT" }, { "date": "2021-04-16", "reason": "SOLD_OUT" }, { "date": "2021-02-05", "reason": "SOLD_OUT" }, { "date": "2021-01-26", "reason": "SOLD_OUT" }, { "date": "2021-03-23", "reason": "SOLD_OUT" }, { "date": "2021-04-29", "reason": "SOLD_OUT" }, { "date": "2021-03-11", "reason": "SOLD_OUT" }, { "date": "2021-02-01", "reason": "SOLD_OUT" }, { "date": "2021-04-03", "reason": "SOLD_OUT" }, { "date": "2021-01-09", "reason": "SOLD_OUT" }, { "date": "2021-01-27", "reason": "SOLD_OUT" }, { "date": "2021-04-20", "reason": "SOLD_OUT" }, { "date": "2021-02-19", "reason": "SOLD_OUT" }, { "date": "2021-03-28", "reason": "SOLD_OUT" }, { "date": "2021-04-24", "reason": "SOLD_OUT" }, { "date": "2021-01-05", "reason": "SOLD_OUT" }, { "date": "2021-04-07", "reason": "SOLD_OUT" }, { "date": "2021-03-15", "reason": "SOLD_OUT" }, { "date": "2021-02-23", "reason": "SOLD_OUT" }, { "date": "2021-01-31", "reason": "SOLD_OUT" }, { "date": "2021-01-18", "reason": "SOLD_OUT" }, { "date": "2021-02-10", "reason": "SOLD_OUT" } ] }, { "startTime": "13:00", "unavailableDates": [ { "date": "2021-03-03", "reason": "SOLD_OUT" }, { "date": "2021-03-20", "reason": "SOLD_OUT" }, { "date": "2021-02-12", "reason": "SOLD_OUT" }, { "date": "2021-01-04", "reason": "SOLD_OUT" }, { "date": "2021-01-17", "reason": "SOLD_OUT" }, { "date": "2021-04-15", "reason": "SOLD_OUT" }, { "date": "2021-04-28", "reason": "SOLD_OUT" }, { "date": "2021-02-08", "reason": "SOLD_OUT" }, { "date": "2021-01-13", "reason": "SOLD_OUT" }, { "date": "2021-04-19", "reason": "SOLD_OUT" }, { "date": "2021-03-12", "reason": "SOLD_OUT" }, { "date": "2021-04-03", "reason": "SOLD_OUT" }, { "date": "2021-01-30", "reason": "SOLD_OUT" }, { "date": "2021-04-23", "reason": "SOLD_OUT" }, { "date": "2021-04-06", "reason": "SOLD_OUT" }, { "date": "2021-01-12", "reason": "SOLD_OUT" }, { "date": "2021-02-04", "reason": "SOLD_OUT" }, { "date": "2021-02-17", "reason": "SOLD_OUT" }, { "date": "2021-01-25", "reason": "SOLD_OUT" }, { "date": "2021-02-24", "reason": "SOLD_OUT" }, { "date": "2021-03-16", "reason": "SOLD_OUT" }, { "date": "2021-04-27", "reason": "SOLD_OUT" }, { "date": "2021-03-07", "reason": "SOLD_OUT" }, { "date": "2021-04-10", "reason": "SOLD_OUT" }, { "date": "2021-01-08", "reason": "SOLD_OUT" }, { "date": "2021-02-13", "reason": "SOLD_OUT" }, { "date": "2021-02-28", "reason": "SOLD_OUT" }, { "date": "2021-01-21", "reason": "SOLD_OUT" }, { "date": "2021-03-21", "reason": "SOLD_OUT" }, { "date": "2021-02-11", "reason": "SOLD_OUT" }, { "date": "2021-01-03", "reason": "SOLD_OUT" }, { "date": "2021-01-20", "reason": "SOLD_OUT" }, { "date": "2021-04-14", "reason": "SOLD_OUT" }, { "date": "2021-02-07", "reason": "SOLD_OUT" }, { "date": "2021-01-16", "reason": "SOLD_OUT" }, { "date": "2021-03-13", "reason": "SOLD_OUT" }, { "date": "2021-04-18", "reason": "SOLD_OUT" }, { "date": "2021-01-28", "reason": "SOLD_OUT" }, { "date": "2021-04-04", "reason": "SOLD_OUT" }, { "date": "2021-01-29", "reason": "SOLD_OUT" }, { "date": "2021-02-20", "reason": "SOLD_OUT" }, { "date": "2021-02-21", "reason": "SOLD_OUT" }, { "date": "2021-04-22", "reason": "SOLD_OUT" }, { "date": "2021-03-08", "reason": "SOLD_OUT" }, { "date": "2021-01-11", "reason": "SOLD_OUT" }, { "date": "2021-02-03", "reason": "SOLD_OUT" }, { "date": "2021-02-25", "reason": "SOLD_OUT" }, { "date": "2021-01-24", "reason": "SOLD_OUT" }, { "date": "2021-04-26", "reason": "SOLD_OUT" }, { "date": "2021-02-16", "reason": "SOLD_OUT" }, { "date": "2021-01-07", "reason": "SOLD_OUT" }, { "date": "2021-03-17", "reason": "SOLD_OUT" }, { "date": "2021-04-09", "reason": "SOLD_OUT" }, { "date": "2021-04-13", "reason": "SOLD_OUT" }, { "date": "2021-01-02", "reason": "SOLD_OUT" }, { "date": "2021-01-19", "reason": "SOLD_OUT" }, { "date": "2021-04-30", "reason": "SOLD_OUT" }, { "date": "2021-03-01", "reason": "SOLD_OUT" }, { "date": "2021-02-10", "reason": "SOLD_OUT" }, { "date": "2021-03-22", "reason": "SOLD_OUT" }, { "date": "2021-04-17", "reason": "SOLD_OUT" }, { "date": "2021-01-15", "reason": "SOLD_OUT" }, { "date": "2021-02-06", "reason": "SOLD_OUT" }, { "date": "2021-04-05", "reason": "SOLD_OUT" }, { "date": "2021-03-26", "reason": "SOLD_OUT" }, { "date": "2021-02-02", "reason": "SOLD_OUT" }, { "date": "2021-01-10", "reason": "SOLD_OUT" }, { "date": "2021-02-19", "reason": "SOLD_OUT" }, { "date": "2021-02-22", "reason": "SOLD_OUT" }, { "date": "2021-03-31", "reason": "SOLD_OUT" }, { "date": "2021-01-27", "reason": "SOLD_OUT" }, { "date": "2021-04-01", "reason": "SOLD_OUT" }, { "date": "2021-03-14", "reason": "SOLD_OUT" }, { "date": "2021-04-21", "reason": "SOLD_OUT" }, { "date": "2021-01-06", "reason": "SOLD_OUT" }, { "date": "2021-04-08", "reason": "SOLD_OUT" }, { "date": "2021-01-23", "reason": "SOLD_OUT" }, { "date": "2021-02-26", "reason": "SOLD_OUT" }, { "date": "2021-02-15", "reason": "SOLD_OUT" }, { "date": "2021-03-05", "reason": "SOLD_OUT" }, { "date": "2021-03-18", "reason": "SOLD_OUT" }, { "date": "2021-04-25", "reason": "SOLD_OUT" }, { "date": "2021-04-12", "reason": "SOLD_OUT" }, { "date": "2021-02-09", "reason": "SOLD_OUT" }, { "date": "2021-04-29", "reason": "SOLD_OUT" }, { "date": "2021-01-05", "reason": "SOLD_OUT" }, { "date": "2021-01-18", "reason": "SOLD_OUT" }, { "date": "2021-03-02", "reason": "SOLD_OUT" }, { "date": "2021-02-05", "reason": "SOLD_OUT" }, { "date": "2021-04-16", "reason": "SOLD_OUT" }, { "date": "2021-03-27", "reason": "SOLD_OUT" }, { "date": "2021-01-14", "reason": "SOLD_OUT" }, { "date": "2021-01-01", "reason": "SOLD_OUT" }, { "date": "2021-04-02", "reason": "SOLD_OUT" }, { "date": "2021-02-01", "reason": "SOLD_OUT" }, { "date": "2021-01-09", "reason": "SOLD_OUT" }, { "date": "2021-02-18", "reason": "SOLD_OUT" }, { "date": "2021-03-28", "reason": "SOLD_OUT" }, { "date": "2021-01-31", "reason": "SOLD_OUT" }, { "date": "2021-01-26", "reason": "SOLD_OUT" }, { "date": "2021-03-15", "reason": "SOLD_OUT" }, { "date": "2021-04-07", "reason": "SOLD_OUT" }, { "date": "2021-01-22", "reason": "SOLD_OUT" }, { "date": "2021-04-24", "reason": "SOLD_OUT" }, { "date": "2021-02-27", "reason": "SOLD_OUT" }, { "date": "2021-02-14", "reason": "SOLD_OUT" }, { "date": "2021-03-06", "reason": "SOLD_OUT" }, { "date": "2021-04-11", "reason": "SOLD_OUT" }, { "date": "2021-03-19", "reason": "SOLD_OUT" } ] } ], "pricingDetails": [ { "pricingPackageType": "PER_PERSON", "minTravelers": 1, "ageBand": "ADULT", "price": { "original": { "recommendedRetailPrice": 50, "partnerNetPrice": 39.95, "bookingFee": 2.4, "partnerTotalPrice": 42.35 } } } ] } ] } ] }, { "productOptionCode": "TG16", "seasons": [ { "startDate": "2021-01-01", "endDate": "2021-12-31", "pricingRecords": [ { "daysOfWeek": [ "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY" ], "timedEntries": [ { "startTime": "12:00", "unavailableDates": [ { "date": "2021-02-24", "reason": "SOLD_OUT" }, { "date": "2021-02-07", "reason": "SOLD_OUT" }, { "date": "2021-03-15", "reason": "SOLD_OUT" }, { "date": "2021-04-27", "reason": "SOLD_OUT" }, { "date": "2021-01-16", "reason": "SOLD_OUT" }, { "date": "2021-03-11", "reason": "SOLD_OUT" }, { "date": "2021-01-29", "reason": "SOLD_OUT" }, { "date": "2021-02-03", "reason": "SOLD_OUT" }, { "date": "2021-02-20", "reason": "SOLD_OUT" }, { "date": "2021-01-12", "reason": "SOLD_OUT" }, { "date": "2021-03-23", "reason": "SOLD_OUT" }, { "date": "2021-04-02", "reason": "SOLD_OUT" }, { "date": "2021-02-15", "reason": "SOLD_OUT" }, { "date": "2021-01-04", "reason": "SOLD_OUT" }, { "date": "2021-01-25", "reason": "SOLD_OUT" }, { "date": "2021-04-14", "reason": "SOLD_OUT" }, { "date": "2021-03-27", "reason": "SOLD_OUT" }, { "date": "2021-01-08", "reason": "SOLD_OUT" }, { "date": "2021-03-07", "reason": "SOLD_OUT" }, { "date": "2021-03-20", "reason": "SOLD_OUT" }, { "date": "2021-02-28", "reason": "SOLD_OUT" }, { "date": "2021-04-10", "reason": "SOLD_OUT" }, { "date": "2021-01-21", "reason": "SOLD_OUT" }, { "date": "2021-04-23", "reason": "SOLD_OUT" }, { "date": "2021-03-03", "reason": "SOLD_OUT" }, { "date": "2021-02-11", "reason": "SOLD_OUT" }, { "date": "2021-03-31", "reason": "SOLD_OUT" }, { "date": "2021-02-06", "reason": "SOLD_OUT" }, { "date": "2021-02-23", "reason": "SOLD_OUT" }, { "date": "2021-04-24", "reason": "SOLD_OUT" }, { "date": "2021-01-17", "reason": "SOLD_OUT" }, { "date": "2021-03-14", "reason": "SOLD_OUT" }, { "date": "2021-01-30", "reason": "SOLD_OUT" }, { "date": "2021-04-03", "reason": "SOLD_OUT" }, { "date": "2021-02-19", "reason": "SOLD_OUT" }, { "date": "2021-02-02", "reason": "SOLD_OUT" }, { "date": "2021-04-28", "reason": "SOLD_OUT" }, { "date": "2021-01-26", "reason": "SOLD_OUT" }, { "date": "2021-04-15", "reason": "SOLD_OUT" }, { "date": "2021-01-13", "reason": "SOLD_OUT" }, { "date": "2021-03-24", "reason": "SOLD_OUT" }, { "date": "2021-03-10", "reason": "SOLD_OUT" }, { "date": "2021-04-16", "reason": "SOLD_OUT" }, { "date": "2021-03-06", "reason": "SOLD_OUT" }, { "date": "2021-01-05", "reason": "SOLD_OUT" }, { "date": "2021-02-14", "reason": "SOLD_OUT" }, { "date": "2021-01-22", "reason": "SOLD_OUT" }, { "date": "2021-03-28", "reason": "SOLD_OUT" }, { "date": "2021-01-09", "reason": "SOLD_OUT" }, { "date": "2021-02-01", "reason": "SOLD_OUT" }, { "date": "2021-03-02", "reason": "SOLD_OUT" }, { "date": "2021-02-10", "reason": "SOLD_OUT" }, { "date": "2021-04-11", "reason": "SOLD_OUT" }, { "date": "2021-04-20", "reason": "SOLD_OUT" }, { "date": "2021-03-19", "reason": "SOLD_OUT" }, { "date": "2021-02-27", "reason": "SOLD_OUT" }, { "date": "2021-01-18", "reason": "SOLD_OUT" }, { "date": "2021-01-14", "reason": "SOLD_OUT" }, { "date": "2021-04-25", "reason": "SOLD_OUT" }, { "date": "2021-02-22", "reason": "SOLD_OUT" }, { "date": "2021-03-13", "reason": "SOLD_OUT" }, { "date": "2021-02-09", "reason": "SOLD_OUT" }, { "date": "2021-01-31", "reason": "SOLD_OUT" }, { "date": "2021-01-01", "reason": "SOLD_OUT" }, { "date": "2021-01-10", "reason": "SOLD_OUT" }, { "date": "2021-04-04", "reason": "SOLD_OUT" }, { "date": "2021-03-09", "reason": "SOLD_OUT" }, { "date": "2021-01-27", "reason": "SOLD_OUT" }, { "date": "2021-04-29", "reason": "SOLD_OUT" }, { "date": "2021-02-05", "reason": "SOLD_OUT" }, { "date": "2021-02-18", "reason": "SOLD_OUT" }, { "date": "2021-03-25", "reason": "SOLD_OUT" }, { "date": "2021-04-17", "reason": "SOLD_OUT" }, { "date": "2021-02-13", "reason": "SOLD_OUT" }, { "date": "2021-03-05", "reason": "SOLD_OUT" }, { "date": "2021-01-02", "reason": "SOLD_OUT" }, { "date": "2021-04-12", "reason": "SOLD_OUT" }, { "date": "2021-01-23", "reason": "SOLD_OUT" }, { "date": "2021-01-19", "reason": "SOLD_OUT" }, { "date": "2021-03-01", "reason": "SOLD_OUT" }, { "date": "2021-03-29", "reason": "SOLD_OUT" }, { "date": "2021-04-21", "reason": "SOLD_OUT" }, { "date": "2021-03-18", "reason": "SOLD_OUT" }, { "date": "2021-02-26", "reason": "SOLD_OUT" }, { "date": "2021-01-06", "reason": "SOLD_OUT" }, { "date": "2021-03-16", "reason": "SOLD_OUT" }, { "date": "2021-01-15", "reason": "SOLD_OUT" }, { "date": "2021-04-05", "reason": "SOLD_OUT" }, { "date": "2021-02-21", "reason": "SOLD_OUT" }, { "date": "2021-04-26", "reason": "SOLD_OUT" }, { "date": "2021-02-08", "reason": "SOLD_OUT" }, { "date": "2021-04-30", "reason": "SOLD_OUT" }, { "date": "2021-01-28", "reason": "SOLD_OUT" }, { "date": "2021-03-12", "reason": "SOLD_OUT" }, { "date": "2021-03-22", "reason": "SOLD_OUT" }, { "date": "2021-01-11", "reason": "SOLD_OUT" }, { "date": "2021-02-17", "reason": "SOLD_OUT" }, { "date": "2021-02-04", "reason": "SOLD_OUT" }, { "date": "2021-04-01", "reason": "SOLD_OUT" }, { "date": "2021-01-24", "reason": "SOLD_OUT" }, { "date": "2021-03-26", "reason": "SOLD_OUT" }, { "date": "2021-02-16", "reason": "SOLD_OUT" }, { "date": "2021-03-08", "reason": "SOLD_OUT" }, { "date": "2021-01-03", "reason": "SOLD_OUT" }, { "date": "2021-04-18", "reason": "SOLD_OUT" }, { "date": "2021-04-13", "reason": "SOLD_OUT" }, { "date": "2021-03-21", "reason": "SOLD_OUT" }, { "date": "2021-03-30", "reason": "SOLD_OUT" }, { "date": "2021-02-12", "reason": "SOLD_OUT" }, { "date": "2021-01-07", "reason": "SOLD_OUT" }, { "date": "2021-03-04", "reason": "SOLD_OUT" }, { "date": "2021-01-20", "reason": "SOLD_OUT" }, { "date": "2021-04-22", "reason": "SOLD_OUT" }, { "date": "2021-02-25", "reason": "SOLD_OUT" }, { "date": "2021-03-17", "reason": "SOLD_OUT" } ] } ], "pricingDetails": [ { "pricingPackageType": "PER_PERSON", "minTravelers": 1, "ageBand": "ADULT", "price": { "original": { "recommendedRetailPrice": 50, "partnerNetPrice": 39.95, "bookingFee": 2.4, "partnerTotalPrice": 42.35 } } } ] } ] } ] }, { "productOptionCode": "TG13", "seasons": [ { "startDate": "2021-01-01", "endDate": "2021-12-31", "pricingRecords": [ { "daysOfWeek": [ "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY" ], "timedEntries": [ { "startTime": "10:30", "unavailableDates": [ { "date": "2021-03-21", "reason": "SOLD_OUT" }, { "date": "2021-04-12", "reason": "SOLD_OUT" }, { "date": "2021-01-01", "reason": "SOLD_OUT" }, { "date": "2021-04-29", "reason": "SOLD_OUT" }, { "date": "2021-02-09", "reason": "SOLD_OUT" }, { "date": "2021-01-18", "reason": "SOLD_OUT" }, { "date": "2021-02-17", "reason": "SOLD_OUT" }, { "date": "2021-01-26", "reason": "SOLD_OUT" }, { "date": "2021-01-14", "reason": "SOLD_OUT" }, { "date": "2021-04-16", "reason": "SOLD_OUT" }, { "date": "2021-02-05", "reason": "SOLD_OUT" }, { "date": "2021-03-25", "reason": "SOLD_OUT" }, { "date": "2021-03-12", "reason": "SOLD_OUT" }, { "date": "2021-04-21", "reason": "SOLD_OUT" }, { "date": "2021-01-30", "reason": "SOLD_OUT" }, { "date": "2021-04-04", "reason": "SOLD_OUT" }, { "date": "2021-02-22", "reason": "SOLD_OUT" }, { "date": "2021-03-29", "reason": "SOLD_OUT" }, { "date": "2021-01-10", "reason": "SOLD_OUT" }, { "date": "2021-04-08", "reason": "SOLD_OUT" }, { "date": "2021-01-06", "reason": "SOLD_OUT" }, { "date": "2021-04-25", "reason": "SOLD_OUT" }, { "date": "2021-03-16", "reason": "SOLD_OUT" }, { "date": "2021-03-05", "reason": "SOLD_OUT" }, { "date": "2021-02-13", "reason": "SOLD_OUT" }, { "date": "2021-02-26", "reason": "SOLD_OUT" }, { "date": "2021-01-02", "reason": "SOLD_OUT" }, { "date": "2021-03-03", "reason": "SOLD_OUT" }, { "date": "2021-01-19", "reason": "SOLD_OUT" }, { "date": "2021-02-08", "reason": "SOLD_OUT" }, { "date": "2021-03-22", "reason": "SOLD_OUT" }, { "date": "2021-04-13", "reason": "SOLD_OUT" }, { "date": "2021-02-16", "reason": "SOLD_OUT" }, { "date": "2021-03-26", "reason": "SOLD_OUT" }, { "date": "2021-04-17", "reason": "SOLD_OUT" }, { "date": "2021-01-15", "reason": "SOLD_OUT" }, { "date": "2021-01-25", "reason": "SOLD_OUT" }, { "date": "2021-03-09", "reason": "SOLD_OUT" }, { "date": "2021-02-04", "reason": "SOLD_OUT" }, { "date": "2021-04-30", "reason": "SOLD_OUT" }, { "date": "2021-04-22", "reason": "SOLD_OUT" }, { "date": "2021-01-29", "reason": "SOLD_OUT" }, { "date": "2021-01-11", "reason": "SOLD_OUT" }, { "date": "2021-03-13", "reason": "SOLD_OUT" }, { "date": "2021-02-03", "reason": "SOLD_OUT" }, { "date": "2021-03-30", "reason": "SOLD_OUT" }, { "date": "2021-02-21", "reason": "SOLD_OUT" }, { "date": "2021-04-05", "reason": "SOLD_OUT" }, { "date": "2021-03-08", "reason": "SOLD_OUT" }, { "date": "2021-02-25", "reason": "SOLD_OUT" }, { "date": "2021-04-26", "reason": "SOLD_OUT" }, { "date": "2021-03-17", "reason": "SOLD_OUT" }, { "date": "2021-04-09", "reason": "SOLD_OUT" }, { "date": "2021-01-07", "reason": "SOLD_OUT" }, { "date": "2021-02-12", "reason": "SOLD_OUT" }, { "date": "2021-03-04", "reason": "SOLD_OUT" }, { "date": "2021-01-20", "reason": "SOLD_OUT" }, { "date": "2021-02-11", "reason": "SOLD_OUT" }, { "date": "2021-03-02", "reason": "SOLD_OUT" }, { "date": "2021-03-23", "reason": "SOLD_OUT" }, { "date": "2021-02-28", "reason": "SOLD_OUT" }, { "date": "2021-04-14", "reason": "SOLD_OUT" }, { "date": "2021-04-27", "reason": "SOLD_OUT" }, { "date": "2021-01-24", "reason": "SOLD_OUT" }, { "date": "2021-01-03", "reason": "SOLD_OUT" }, { "date": "2021-01-16", "reason": "SOLD_OUT" }, { "date": "2021-03-27", "reason": "SOLD_OUT" }, { "date": "2021-04-18", "reason": "SOLD_OUT" }, { "date": "2021-02-07", "reason": "SOLD_OUT" }, { "date": "2021-04-01", "reason": "SOLD_OUT" }, { "date": "2021-03-10", "reason": "SOLD_OUT" }, { "date": "2021-01-28", "reason": "SOLD_OUT" }, { "date": "2021-02-19", "reason": "SOLD_OUT" }, { "date": "2021-02-02", "reason": "SOLD_OUT" }, { "date": "2021-03-31", "reason": "SOLD_OUT" }, { "date": "2021-02-20", "reason": "SOLD_OUT" }, { "date": "2021-01-12", "reason": "SOLD_OUT" }, { "date": "2021-03-14", "reason": "SOLD_OUT" }, { "date": "2021-04-19", "reason": "SOLD_OUT" }, { "date": "2021-04-06", "reason": "SOLD_OUT" }, { "date": "2021-03-07", "reason": "SOLD_OUT" }, { "date": "2021-02-15", "reason": "SOLD_OUT" }, { "date": "2021-02-24", "reason": "SOLD_OUT" }, { "date": "2021-04-10", "reason": "SOLD_OUT" }, { "date": "2021-01-08", "reason": "SOLD_OUT" }, { "date": "2021-04-23", "reason": "SOLD_OUT" }, { "date": "2021-01-21", "reason": "SOLD_OUT" }, { "date": "2021-03-18", "reason": "SOLD_OUT" }, { "date": "2021-03-20", "reason": "SOLD_OUT" }, { "date": "2021-02-10", "reason": "SOLD_OUT" }, { "date": "2021-04-11", "reason": "SOLD_OUT" }, { "date": "2021-01-23", "reason": "SOLD_OUT" }, { "date": "2021-01-04", "reason": "SOLD_OUT" }, { "date": "2021-04-28", "reason": "SOLD_OUT" }, { "date": "2021-03-01", "reason": "SOLD_OUT" }, { "date": "2021-01-17", "reason": "SOLD_OUT" }, { "date": "2021-02-06", "reason": "SOLD_OUT" }, { "date": "2021-01-13", "reason": "SOLD_OUT" }, { "date": "2021-04-15", "reason": "SOLD_OUT" }, { "date": "2021-01-27", "reason": "SOLD_OUT" }, { "date": "2021-02-18", "reason": "SOLD_OUT" }, { "date": "2021-03-24", "reason": "SOLD_OUT" }, { "date": "2021-04-02", "reason": "SOLD_OUT" }, { "date": "2021-03-11", "reason": "SOLD_OUT" }, { "date": "2021-04-03", "reason": "SOLD_OUT" }, { "date": "2021-02-01", "reason": "SOLD_OUT" }, { "date": "2021-02-23", "reason": "SOLD_OUT" }, { "date": "2021-03-28", "reason": "SOLD_OUT" }, { "date": "2021-01-09", "reason": "SOLD_OUT" }, { "date": "2021-03-15", "reason": "SOLD_OUT" }, { "date": "2021-01-31", "reason": "SOLD_OUT" }, { "date": "2021-04-20", "reason": "SOLD_OUT" }, { "date": "2021-04-07", "reason": "SOLD_OUT" }, { "date": "2021-03-06", "reason": "SOLD_OUT" }, { "date": "2021-02-14", "reason": "SOLD_OUT" }, { "date": "2021-01-05", "reason": "SOLD_OUT" }, { "date": "2021-03-19", "reason": "SOLD_OUT" }, { "date": "2021-04-24", "reason": "SOLD_OUT" }, { "date": "2021-01-22", "reason": "SOLD_OUT" }, { "date": "2021-02-27", "reason": "SOLD_OUT" } ] } ], "pricingDetails": [ { "pricingPackageType": "PER_PERSON", "minTravelers": 1, "ageBand": "ADULT", "price": { "original": { "recommendedRetailPrice": 50, "partnerNetPrice": 39.95, "bookingFee": 2.4, "partnerTotalPrice": 42.35 } } } ] } ] } ] }, { "productOptionCode": "TG20", "seasons": [ { "startDate": "2021-01-01", "endDate": "2021-12-31", "pricingRecords": [ { "daysOfWeek": [ "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY" ], "timedEntries": [ { "startTime": "14:30", "unavailableDates": [ { "date": "2021-01-05", "reason": "SOLD_OUT" }, { "date": "2021-01-22", "reason": "SOLD_OUT" }, { "date": "2021-04-16", "reason": "SOLD_OUT" }, { "date": "2021-03-04", "reason": "SOLD_OUT" }, { "date": "2021-02-13", "reason": "SOLD_OUT" }, { "date": "2021-03-25", "reason": "SOLD_OUT" }, { "date": "2021-04-03", "reason": "SOLD_OUT" }, { "date": "2021-03-12", "reason": "SOLD_OUT" }, { "date": "2021-01-01", "reason": "SOLD_OUT" }, { "date": "2021-01-30", "reason": "SOLD_OUT" }, { "date": "2021-02-21", "reason": "SOLD_OUT" }, { "date": "2021-01-18", "reason": "SOLD_OUT" }, { "date": "2021-04-07", "reason": "SOLD_OUT" }, { "date": "2021-03-29", "reason": "SOLD_OUT" }, { "date": "2021-04-20", "reason": "SOLD_OUT" }, { "date": "2021-02-25", "reason": "SOLD_OUT" }, { "date": "2021-03-17", "reason": "SOLD_OUT" }, { "date": "2021-01-13", "reason": "SOLD_OUT" }, { "date": "2021-04-24", "reason": "SOLD_OUT" }, { "date": "2021-02-05", "reason": "SOLD_OUT" }, { "date": "2021-04-11", "reason": "SOLD_OUT" }, { "date": "2021-03-21", "reason": "SOLD_OUT" }, { "date": "2021-02-01", "reason": "SOLD_OUT" }, { "date": "2021-01-09", "reason": "SOLD_OUT" }, { "date": "2021-04-15", "reason": "SOLD_OUT" }, { "date": "2021-04-28", "reason": "SOLD_OUT" }, { "date": "2021-03-08", "reason": "SOLD_OUT" }, { "date": "2021-04-17", "reason": "SOLD_OUT" }, { "date": "2021-03-07", "reason": "SOLD_OUT" }, { "date": "2021-01-06", "reason": "SOLD_OUT" }, { "date": "2021-01-23", "reason": "SOLD_OUT" }, { "date": "2021-02-14", "reason": "SOLD_OUT" }, { "date": "2021-03-24", "reason": "SOLD_OUT" }, { "date": "2021-03-11", "reason": "SOLD_OUT" }, { "date": "2021-03-03", "reason": "SOLD_OUT" }, { "date": "2021-02-20", "reason": "SOLD_OUT" }, { "date": "2021-04-04", "reason": "SOLD_OUT" }, { "date": "2021-04-21", "reason": "SOLD_OUT" }, { "date": "2021-01-02", "reason": "SOLD_OUT" }, { "date": "2021-01-19", "reason": "SOLD_OUT" }, { "date": "2021-03-28", "reason": "SOLD_OUT" }, { "date": "2021-01-31", "reason": "SOLD_OUT" }, { "date": "2021-03-15", "reason": "SOLD_OUT" }, { "date": "2021-04-08", "reason": "SOLD_OUT" }, { "date": "2021-02-24", "reason": "SOLD_OUT" }, { "date": "2021-04-25", "reason": "SOLD_OUT" }, { "date": "2021-03-16", "reason": "SOLD_OUT" }, { "date": "2021-02-06", "reason": "SOLD_OUT" }, { "date": "2021-01-14", "reason": "SOLD_OUT" }, { "date": "2021-02-02", "reason": "SOLD_OUT" }, { "date": "2021-03-20", "reason": "SOLD_OUT" }, { "date": "2021-04-12", "reason": "SOLD_OUT" }, { "date": "2021-02-28", "reason": "SOLD_OUT" }, { "date": "2021-04-29", "reason": "SOLD_OUT" }, { "date": "2021-01-10", "reason": "SOLD_OUT" }, { "date": "2021-03-27", "reason": "SOLD_OUT" }, { "date": "2021-04-18", "reason": "SOLD_OUT" }, { "date": "2021-03-06", "reason": "SOLD_OUT" }, { "date": "2021-03-10", "reason": "SOLD_OUT" }, { "date": "2021-02-19", "reason": "SOLD_OUT" }, { "date": "2021-01-07", "reason": "SOLD_OUT" }, { "date": "2021-03-31", "reason": "SOLD_OUT" }, { "date": "2021-01-20", "reason": "SOLD_OUT" }, { "date": "2021-03-02", "reason": "SOLD_OUT" }, { "date": "2021-04-22", "reason": "SOLD_OUT" }, { "date": "2021-03-14", "reason": "SOLD_OUT" }, { "date": "2021-01-03", "reason": "SOLD_OUT" }, { "date": "2021-02-23", "reason": "SOLD_OUT" }, { "date": "2021-02-07", "reason": "SOLD_OUT" }, { "date": "2021-04-26", "reason": "SOLD_OUT" }, { "date": "2021-01-15", "reason": "SOLD_OUT" }, { "date": "2021-04-09", "reason": "SOLD_OUT" }, { "date": "2021-02-27", "reason": "SOLD_OUT" }, { "date": "2021-03-19", "reason": "SOLD_OUT" }, { "date": "2021-04-30", "reason": "SOLD_OUT" }, { "date": "2021-01-11", "reason": "SOLD_OUT" }, { "date": "2021-04-13", "reason": "SOLD_OUT" }, { "date": "2021-02-03", "reason": "SOLD_OUT" }, { "date": "2021-03-23", "reason": "SOLD_OUT" }, { "date": "2021-01-24", "reason": "SOLD_OUT" }, { "date": "2021-01-25", "reason": "SOLD_OUT" }, { "date": "2021-03-26", "reason": "SOLD_OUT" }, { "date": "2021-03-09", "reason": "SOLD_OUT" }, { "date": "2021-03-05", "reason": "SOLD_OUT" }, { "date": "2021-01-08", "reason": "SOLD_OUT" }, { "date": "2021-04-02", "reason": "SOLD_OUT" }, { "date": "2021-01-21", "reason": "SOLD_OUT" }, { "date": "2021-01-29", "reason": "SOLD_OUT" }, { "date": "2021-03-30", "reason": "SOLD_OUT" }, { "date": "2021-02-12", "reason": "SOLD_OUT" }, { "date": "2021-03-13", "reason": "SOLD_OUT" }, { "date": "2021-04-06", "reason": "SOLD_OUT" }, { "date": "2021-01-04", "reason": "SOLD_OUT" }, { "date": "2021-04-19", "reason": "SOLD_OUT" }, { "date": "2021-03-01", "reason": "SOLD_OUT" }, { "date": "2021-01-17", "reason": "SOLD_OUT" }, { "date": "2021-02-08", "reason": "SOLD_OUT" }, { "date": "2021-01-16", "reason": "SOLD_OUT" }, { "date": "2021-04-23", "reason": "SOLD_OUT" }, { "date": "2021-02-26", "reason": "SOLD_OUT" }, { "date": "2021-04-10", "reason": "SOLD_OUT" }, { "date": "2021-03-18", "reason": "SOLD_OUT" }, { "date": "2021-01-12", "reason": "SOLD_OUT" }, { "date": "2021-02-04", "reason": "SOLD_OUT" }, { "date": "2021-04-01", "reason": "SOLD_OUT" }, { "date": "2021-04-14", "reason": "SOLD_OUT" }, { "date": "2021-03-22", "reason": "SOLD_OUT" }, { "date": "2021-04-27", "reason": "SOLD_OUT" } ] } ], "pricingDetails": [ { "pricingPackageType": "PER_PERSON", "minTravelers": 1, "ageBand": "ADULT", "price": { "original": { "recommendedRetailPrice": 50, "partnerNetPrice": 39.95, "bookingFee": 2.4, "partnerTotalPrice": 42.35 } } } ] } ] } ] } ], "currency": "USD", "summary": { "fromPrice": 50 } }, { "productCode": "51192P79", "bookableItems": [ { "productOptionCode": "TG12", "seasons": [ { "startDate": "2020-11-13", "pricingRecords": [ { "daysOfWeek": [ "MONDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY" ], "timedEntries": [ { "startTime": "09:30" }, { "startTime": "13:30", "unavailableDates": [ { "date": "2021-03-26", "reason": "SOLD_OUT" }, { "date": "2020-12-30", "reason": "SOLD_OUT" }, { "date": "2021-03-03", "reason": "SOLD_OUT" }, { "date": "2021-01-20", "reason": "SOLD_OUT" }, { "date": "2021-01-27", "reason": "SOLD_OUT" }, { "date": "2021-02-07", "reason": "SOLD_OUT" }, { "date": "2021-03-10", "reason": "SOLD_OUT" }, { "date": "2021-01-18", "reason": "SOLD_OUT" }, { "date": "2021-01-04", "reason": "SOLD_OUT" }, { "date": "2021-03-17", "reason": "SOLD_OUT" }, { "date": "2021-01-11", "reason": "SOLD_OUT" }, { "date": "2021-02-14", "reason": "SOLD_OUT" }, { "date": "2021-03-28", "reason": "SOLD_OUT" }, { "date": "2021-01-29", "reason": "SOLD_OUT" }, { "date": "2021-01-02", "reason": "SOLD_OUT" }, { "date": "2021-02-25", "reason": "SOLD_OUT" }, { "date": "2021-03-21", "reason": "SOLD_OUT" }, { "date": "2021-03-01", "reason": "SOLD_OUT" }, { "date": "2021-01-09", "reason": "SOLD_OUT" }, { "date": "2021-01-22", "reason": "SOLD_OUT" }, { "date": "2021-02-05", "reason": "SOLD_OUT" }, { "date": "2021-02-12", "reason": "SOLD_OUT" }, { "date": "2021-01-16", "reason": "SOLD_OUT" }, { "date": "2021-02-19", "reason": "SOLD_OUT" }, { "date": "2021-02-04", "reason": "SOLD_OUT" }, { "date": "2021-03-15", "reason": "SOLD_OUT" }, { "date": "2021-03-08", "reason": "SOLD_OUT" }, { "date": "2021-01-24", "reason": "SOLD_OUT" }, { "date": "2021-01-07", "reason": "SOLD_OUT" }, { "date": "2021-02-18", "reason": "SOLD_OUT" }, { "date": "2021-01-31", "reason": "SOLD_OUT" }, { "date": "2021-02-11", "reason": "SOLD_OUT" }, { "date": "2021-03-13", "reason": "SOLD_OUT" }, { "date": "2021-01-14", "reason": "SOLD_OUT" }, { "date": "2021-02-21", "reason": "SOLD_OUT" }, { "date": "2021-03-06", "reason": "SOLD_OUT" }, { "date": "2021-02-28", "reason": "SOLD_OUT" }, { "date": "2021-03-25", "reason": "SOLD_OUT" }, { "date": "2021-03-11", "reason": "SOLD_OUT" }, { "date": "2021-03-04", "reason": "SOLD_OUT" }, { "date": "2021-03-18", "reason": "SOLD_OUT" }, { "date": "2021-02-08", "reason": "SOLD_OUT" }, { "date": "2021-02-15", "reason": "SOLD_OUT" }, { "date": "2021-03-27", "reason": "SOLD_OUT" }, { "date": "2021-01-28", "reason": "SOLD_OUT" }, { "date": "2021-02-01", "reason": "SOLD_OUT" }, { "date": "2021-03-20", "reason": "SOLD_OUT" }, { "date": "2020-12-31", "reason": "SOLD_OUT" }, { "date": "2021-02-24", "reason": "SOLD_OUT" }, { "date": "2021-01-21", "reason": "SOLD_OUT" }, { "date": "2021-01-10", "reason": "SOLD_OUT" }, { "date": "2021-02-06", "reason": "SOLD_OUT" }, { "date": "2021-01-17", "reason": "SOLD_OUT" }, { "date": "2021-02-13", "reason": "SOLD_OUT" }, { "date": "2021-03-29", "reason": "SOLD_OUT" }, { "date": "2021-01-03", "reason": "SOLD_OUT" }, { "date": "2021-02-26", "reason": "SOLD_OUT" }, { "date": "2021-03-22", "reason": "SOLD_OUT" }, { "date": "2021-01-23", "reason": "SOLD_OUT" }, { "date": "2021-01-08", "reason": "SOLD_OUT" }, { "date": "2021-01-15", "reason": "SOLD_OUT" }, { "date": "2021-01-30", "reason": "SOLD_OUT" }, { "date": "2021-03-14", "reason": "SOLD_OUT" }, { "date": "2021-02-20", "reason": "SOLD_OUT" }, { "date": "2021-03-31", "reason": "SOLD_OUT" }, { "date": "2021-02-27", "reason": "SOLD_OUT" }, { "date": "2021-01-01", "reason": "SOLD_OUT" }, { "date": "2021-03-07", "reason": "SOLD_OUT" }, { "date": "2021-01-25", "reason": "SOLD_OUT" }, { "date": "2021-03-24", "reason": "SOLD_OUT" }, { "date": "2021-02-17", "reason": "SOLD_OUT" }, { "date": "2021-02-10", "reason": "SOLD_OUT" }, { "date": "2021-02-03", "reason": "SOLD_OUT" }, { "date": "2021-01-13", "reason": "SOLD_OUT" }, { "date": "2021-02-22", "reason": "SOLD_OUT" }, { "date": "2021-03-05", "reason": "SOLD_OUT" }, { "date": "2021-03-19", "reason": "SOLD_OUT" }, { "date": "2021-01-06", "reason": "SOLD_OUT" }, { "date": "2021-03-12", "reason": "SOLD_OUT" } ] } ], "pricingDetails": [ { "pricingPackageType": "PER_PERSON", "minTravelers": 1, "ageBand": "INFANT", "price": { "original": { "recommendedRetailPrice": 0, "partnerNetPrice": 0, "bookingFee": 0, "partnerTotalPrice": 0 } } }, { "pricingPackageType": "PER_PERSON", "minTravelers": 1, "ageBand": "CHILD", "price": { "original": { "recommendedRetailPrice": 35, "partnerNetPrice": 27.96, "bookingFee": 1.68, "partnerTotalPrice": 29.64 } } }, { "pricingPackageType": "PER_PERSON", "minTravelers": 1, "ageBand": "ADULT", "price": { "original": { "recommendedRetailPrice": 49, "partnerNetPrice": 39.14, "bookingFee": 2.35, "partnerTotalPrice": 41.49 } } } ] } ] } ] }, { "productOptionCode": "TG10", "seasons": [ { "startDate": "2020-11-13", "pricingRecords": [ { "daysOfWeek": [ "MONDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY" ], "timedEntries": [ { "startTime": "13:30", "unavailableDates": [ { "date": "2021-03-08", "reason": "SOLD_OUT" }, { "date": "2021-01-16", "reason": "SOLD_OUT" }, { "date": "2021-03-31", "reason": "SOLD_OUT" }, { "date": "2021-03-01", "reason": "SOLD_OUT" }, { "date": "2021-01-23", "reason": "SOLD_OUT" }, { "date": "2021-03-24", "reason": "SOLD_OUT" }, { "date": "2021-03-17", "reason": "SOLD_OUT" }, { "date": "2021-03-10", "reason": "SOLD_OUT" }, { "date": "2021-01-07", "reason": "SOLD_OUT" }, { "date": "2021-03-06", "reason": "SOLD_OUT" }, { "date": "2021-02-03", "reason": "SOLD_OUT" }, { "date": "2021-01-11", "reason": "SOLD_OUT" }, { "date": "2021-02-14", "reason": "SOLD_OUT" }, { "date": "2021-02-21", "reason": "SOLD_OUT" }, { "date": "2020-12-30", "reason": "SOLD_OUT" }, { "date": "2021-01-25", "reason": "SOLD_OUT" }, { "date": "2021-01-18", "reason": "SOLD_OUT" }, { "date": "2021-02-28", "reason": "SOLD_OUT" }, { "date": "2021-03-27", "reason": "SOLD_OUT" }, { "date": "2021-01-28", "reason": "SOLD_OUT" }, { "date": "2021-02-08", "reason": "SOLD_OUT" }, { "date": "2021-02-01", "reason": "SOLD_OUT" }, { "date": "2021-01-21", "reason": "SOLD_OUT" }, { "date": "2021-01-04", "reason": "SOLD_OUT" }, { "date": "2021-03-13", "reason": "SOLD_OUT" }, { "date": "2021-01-14", "reason": "SOLD_OUT" }, { "date": "2021-03-03", "reason": "SOLD_OUT" }, { "date": "2021-03-20", "reason": "SOLD_OUT" }, { "date": "2021-02-18", "reason": "SOLD_OUT" }, { "date": "2021-02-25", "reason": "SOLD_OUT" }, { "date": "2021-01-30", "reason": "SOLD_OUT" }, { "date": "2021-03-29", "reason": "SOLD_OUT" }, { "date": "2021-02-11", "reason": "SOLD_OUT" }, { "date": "2021-02-06", "reason": "SOLD_OUT" }, { "date": "2021-03-22", "reason": "SOLD_OUT" }, { "date": "2021-01-02", "reason": "SOLD_OUT" }, { "date": "2021-01-09", "reason": "SOLD_OUT" }, { "date": "2021-03-15", "reason": "SOLD_OUT" }, { "date": "2021-01-01", "reason": "SOLD_OUT" }, { "date": "2021-01-31", "reason": "SOLD_OUT" }, { "date": "2021-01-08", "reason": "SOLD_OUT" }, { "date": "2021-02-13", "reason": "SOLD_OUT" }, { "date": "2021-01-10", "reason": "SOLD_OUT" }, { "date": "2021-01-17", "reason": "SOLD_OUT" }, { "date": "2021-02-04", "reason": "SOLD_OUT" }, { "date": "2021-03-07", "reason": "SOLD_OUT" }, { "date": "2021-02-20", "reason": "SOLD_OUT" }, { "date": "2021-01-24", "reason": "SOLD_OUT" }, { "date": "2021-02-27", "reason": "SOLD_OUT" }, { "date": "2021-01-06", "reason": "SOLD_OUT" }, { "date": "2021-02-15", "reason": "SOLD_OUT" }, { "date": "2021-03-11", "reason": "SOLD_OUT" }, { "date": "2021-02-22", "reason": "SOLD_OUT" }, { "date": "2021-03-18", "reason": "SOLD_OUT" }, { "date": "2021-03-05", "reason": "SOLD_OUT" }, { "date": "2021-03-25", "reason": "SOLD_OUT" }, { "date": "2021-01-20", "reason": "SOLD_OUT" }, { "date": "2020-12-31", "reason": "SOLD_OUT" }, { "date": "2021-03-12", "reason": "SOLD_OUT" }, { "date": "2021-01-13", "reason": "SOLD_OUT" }, { "date": "2021-03-19", "reason": "SOLD_OUT" }, { "date": "2021-03-04", "reason": "SOLD_OUT" }, { "date": "2021-03-26", "reason": "SOLD_OUT" }, { "date": "2021-02-24", "reason": "SOLD_OUT" }, { "date": "2021-01-27", "reason": "SOLD_OUT" }, { "date": "2021-02-07", "reason": "SOLD_OUT" }, { "date": "2021-02-10", "reason": "SOLD_OUT" }, { "date": "2021-02-17", "reason": "SOLD_OUT" }, { "date": "2021-01-22", "reason": "SOLD_OUT" }, { "date": "2021-03-21", "reason": "SOLD_OUT" }, { "date": "2021-01-15", "reason": "SOLD_OUT" }, { "date": "2021-02-26", "reason": "SOLD_OUT" }, { "date": "2021-03-14", "reason": "SOLD_OUT" }, { "date": "2021-01-03", "reason": "SOLD_OUT" }, { "date": "2021-02-19", "reason": "SOLD_OUT" }, { "date": "2021-03-28", "reason": "SOLD_OUT" }, { "date": "2021-02-05", "reason": "SOLD_OUT" }, { "date": "2021-02-12", "reason": "SOLD_OUT" }, { "date": "2021-01-29", "reason": "SOLD_OUT" } ] }, { "startTime": "09:30" } ], "pricingDetails": [ { "pricingPackageType": "PER_PERSON", "minTravelers": 1, "ageBand": "INFANT", "price": { "original": { "recommendedRetailPrice": 0, "partnerNetPrice": 0, "bookingFee": 0, "partnerTotalPrice": 0 } } }, { "pricingPackageType": "PER_PERSON", "minTravelers": 1, "ageBand": "CHILD", "price": { "original": { "recommendedRetailPrice": 35, "partnerNetPrice": 27.96, "bookingFee": 1.68, "partnerTotalPrice": 29.64 } } }, { "pricingPackageType": "PER_PERSON", "minTravelers": 1, "ageBand": "ADULT", "price": { "original": { "recommendedRetailPrice": 49, "partnerNetPrice": 39.14, "bookingFee": 2.35, "partnerTotalPrice": 41.49 } } } ] } ] } ] } ], "currency": "EUR", "summary": { "fromPrice": 49 } }, { "productCode": "182465P31", "bookableItems": [ { "productOptionCode": "TG164", "seasons": [ { "startDate": "2020-01-06", "pricingRecords": [ { "daysOfWeek": [ "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY" ], "timedEntries": [ { "startTime": "19:30" }, { "startTime": "20:30" } ], "pricingDetails": [ { "pricingPackageType": "PER_PERSON", "minTravelers": 1, "ageBand": "INFANT", "price": { "original": { "recommendedRetailPrice": 0, "partnerNetPrice": 0, "bookingFee": 0, "partnerTotalPrice": 0 } } }, { "pricingPackageType": "PER_PERSON", "minTravelers": 1, "ageBand": "CHILD", "price": { "original": { "recommendedRetailPrice": 35, "partnerNetPrice": 29.82, "bookingFee": 1.79, "partnerTotalPrice": 31.61 } } }, { "pricingPackageType": "PER_PERSON", "minTravelers": 1, "ageBand": "ADULT", "price": { "original": { "recommendedRetailPrice": 69, "partnerNetPrice": 58.79, "bookingFee": 3.53, "partnerTotalPrice": 62.32 } } } ] } ] } ] }, { "productOptionCode": "TG165", "seasons": [ { "startDate": "2020-01-06", "pricingRecords": [ { "daysOfWeek": [ "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY" ], "timedEntries": [ { "startTime": "21:30" } ], "pricingDetails": [ { "pricingPackageType": "PER_PERSON", "minTravelers": 1, "ageBand": "INFANT", "price": { "original": { "recommendedRetailPrice": 0, "partnerNetPrice": 0, "bookingFee": 0, "partnerTotalPrice": 0 } } }, { "pricingPackageType": "PER_PERSON", "minTravelers": 1, "ageBand": "CHILD", "price": { "original": { "recommendedRetailPrice": 55, "partnerNetPrice": 46.86, "bookingFee": 2.81, "partnerTotalPrice": 49.67 } } }, { "pricingPackageType": "PER_PERSON", "minTravelers": 1, "ageBand": "ADULT", "price": { "original": { "recommendedRetailPrice": 89, "partnerNetPrice": 75.83, "bookingFee": 4.55, "partnerTotalPrice": 80.38 } } } ] } ] } ] } ], "currency": "EUR", "summary": { "fromPrice": 69 } } ], "nextCursor": "MTYwNTA2ODAwOXw1NjcyUDk=" } }, "availability-schedules-modified-since-extra-charges-example": { "summary": "/availability/schedules/modified-since - ExtraCharges", "value": { "availabilitySchedules": [ { "productCode": "24380P927", "bookableItems": [ { "productOptionCode": "TG1", "seasons": [ { "startDate": "2022-01-12", "pricingRecords": [ { "daysOfWeek": [ "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY" ], "timedEntries": [ { "startTime": "09:00" }, { "startTime": "11:30" }, { "startTime": "12:30" }, { "startTime": "09:30" }, { "startTime": "13:00" }, { "startTime": "10:00" }, { "startTime": "15:30", "unavailableDates": [ { "date": "2025-04-01", "reason": "SOLD_OUT" }, { "date": "2025-03-28", "reason": "SOLD_OUT" }, { "date": "2025-03-21", "reason": "SOLD_OUT" }, { "date": "2025-05-13", "reason": "SOLD_OUT" }, { "date": "2025-07-05", "reason": "SOLD_OUT" }, { "date": "2025-03-26", "reason": "SOLD_OUT" }, { "date": "2025-03-19", "reason": "SOLD_OUT" }, { "date": "2025-12-06", "reason": "SOLD_OUT" }, { "date": "2025-06-28", "reason": "SOLD_OUT" }, { "date": "2025-06-21", "reason": "SOLD_OUT" }, { "date": "2025-03-31", "reason": "SOLD_OUT" }, { "date": "2025-03-24", "reason": "SOLD_OUT" }, { "date": "2025-12-10", "reason": "SOLD_OUT" }, { "date": "2025-05-09", "reason": "SOLD_OUT" }, { "date": "2025-05-07", "reason": "SOLD_OUT" }, { "date": "2025-07-06", "reason": "SOLD_OUT" }, { "date": "2025-03-17", "reason": "SOLD_OUT" }, { "date": "2025-06-25", "reason": "SOLD_OUT" }, { "date": "2025-05-02", "reason": "SOLD_OUT" }, { "date": "2025-12-08", "reason": "SOLD_OUT" }, { "date": "2025-03-29", "reason": "SOLD_OUT" }, { "date": "2025-03-22", "reason": "SOLD_OUT" }, { "date": "2025-03-20", "reason": "SOLD_OUT" }, { "date": "2025-12-05", "reason": "SOLD_OUT" }, { "date": "2025-03-27", "reason": "SOLD_OUT" }, { "date": "2025-03-18", "reason": "SOLD_OUT" }, { "date": "2025-04-14", "reason": "SOLD_OUT" }, { "date": "2025-10-27", "reason": "SOLD_OUT" }, { "date": "2025-10-01", "reason": "SOLD_OUT" }, { "date": "2025-12-07", "reason": "SOLD_OUT" }, { "date": "2025-09-24", "reason": "SOLD_OUT" }, { "date": "2025-04-02", "reason": "SOLD_OUT" }, { "date": "2025-03-25", "reason": "SOLD_OUT" }, { "date": "2025-07-04", "reason": "SOLD_OUT" }, { "date": "2025-06-01", "reason": "SOLD_OUT" }, { "date": "2025-10-10", "reason": "SOLD_OUT" }, { "date": "2025-03-23", "reason": "SOLD_OUT" }, { "date": "2025-03-30", "reason": "SOLD_OUT" }, { "date": "2025-07-09", "reason": "SOLD_OUT" }, { "date": "2025-06-10", "reason": "SOLD_OUT" }, { "date": "2025-05-01", "reason": "SOLD_OUT" }, { "date": "2025-12-09", "reason": "SOLD_OUT" } ] }, { "startTime": "12:00" }, { "startTime": "13:30" }, { "startTime": "14:00" }, { "startTime": "16:00", "unavailableDates": [ { "date": "2025-03-21", "reason": "SOLD_OUT" }, { "date": "2025-04-01", "reason": "SOLD_OUT" }, { "date": "2025-07-05", "reason": "SOLD_OUT" }, { "date": "2025-03-28", "reason": "SOLD_OUT" }, { "date": "2025-05-13", "reason": "SOLD_OUT" }, { "date": "2025-12-08", "reason": "SOLD_OUT" }, { "date": "2025-03-30", "reason": "SOLD_OUT" }, { "date": "2025-06-25", "reason": "SOLD_OUT" }, { "date": "2025-03-23", "reason": "SOLD_OUT" }, { "date": "2025-03-17", "reason": "SOLD_OUT" }, { "date": "2025-05-01", "reason": "SOLD_OUT" }, { "date": "2025-05-02", "reason": "SOLD_OUT" }, { "date": "2025-12-10", "reason": "SOLD_OUT" }, { "date": "2025-05-09", "reason": "SOLD_OUT" }, { "date": "2025-04-14", "reason": "SOLD_OUT" }, { "date": "2025-03-31", "reason": "SOLD_OUT" }, { "date": "2025-03-24", "reason": "SOLD_OUT" }, { "date": "2025-03-19", "reason": "SOLD_OUT" }, { "date": "2025-10-01", "reason": "SOLD_OUT" }, { "date": "2025-03-26", "reason": "SOLD_OUT" }, { "date": "2025-12-05", "reason": "SOLD_OUT" }, { "date": "2025-10-27", "reason": "SOLD_OUT" }, { "date": "2025-06-01", "reason": "SOLD_OUT" }, { "date": "2025-04-02", "reason": "SOLD_OUT" }, { "date": "2025-12-07", "reason": "SOLD_OUT" }, { "date": "2025-03-20", "reason": "SOLD_OUT" }, { "date": "2025-03-27", "reason": "SOLD_OUT" }, { "date": "2025-07-06", "reason": "SOLD_OUT" }, { "date": "2025-05-07", "reason": "SOLD_OUT" }, { "date": "2025-06-10", "reason": "SOLD_OUT" }, { "date": "2025-10-10", "reason": "SOLD_OUT" }, { "date": "2025-12-09", "reason": "SOLD_OUT" }, { "date": "2025-03-29", "reason": "SOLD_OUT" }, { "date": "2025-03-22", "reason": "SOLD_OUT" }, { "date": "2025-03-25", "reason": "SOLD_OUT" }, { "date": "2025-07-09", "reason": "SOLD_OUT" }, { "date": "2025-09-24", "reason": "SOLD_OUT" }, { "date": "2025-03-18", "reason": "SOLD_OUT" }, { "date": "2025-07-04", "reason": "SOLD_OUT" }, { "date": "2025-12-06", "reason": "SOLD_OUT" }, { "date": "2025-06-21", "reason": "SOLD_OUT" }, { "date": "2025-06-28", "reason": "SOLD_OUT" } ] }, { "startTime": "10:30" }, { "startTime": "08:30" }, { "startTime": "16:30", "unavailableDates": [ { "date": "2025-12-10", "reason": "SOLD_OUT" }, { "date": "2025-05-01", "reason": "SOLD_OUT" }, { "date": "2025-07-09", "reason": "SOLD_OUT" }, { "date": "2025-09-24", "reason": "SOLD_OUT" }, { "date": "2025-10-27", "reason": "SOLD_OUT" }, { "date": "2025-12-05", "reason": "SOLD_OUT" }, { "date": "2025-04-14", "reason": "SOLD_OUT" }, { "date": "2025-03-18", "reason": "SOLD_OUT" }, { "date": "2025-03-25", "reason": "SOLD_OUT" }, { "date": "2025-07-04", "reason": "SOLD_OUT" }, { "date": "2025-12-06", "reason": "SOLD_OUT" }, { "date": "2025-03-20", "reason": "SOLD_OUT" }, { "date": "2025-03-27", "reason": "SOLD_OUT" }, { "date": "2025-12-08", "reason": "SOLD_OUT" }, { "date": "2025-06-25", "reason": "SOLD_OUT" }, { "date": "2025-07-06", "reason": "SOLD_OUT" }, { "date": "2025-05-07", "reason": "SOLD_OUT" }, { "date": "2025-03-29", "reason": "SOLD_OUT" }, { "date": "2025-03-22", "reason": "SOLD_OUT" }, { "date": "2025-03-24", "reason": "SOLD_OUT" }, { "date": "2025-05-09", "reason": "SOLD_OUT" }, { "date": "2025-05-02", "reason": "SOLD_OUT" }, { "date": "2025-03-31", "reason": "SOLD_OUT" }, { "date": "2025-03-17", "reason": "SOLD_OUT" }, { "date": "2025-10-01", "reason": "SOLD_OUT" }, { "date": "2025-03-19", "reason": "SOLD_OUT" }, { "date": "2025-03-26", "reason": "SOLD_OUT" }, { "date": "2025-06-28", "reason": "SOLD_OUT" }, { "date": "2025-06-01", "reason": "SOLD_OUT" }, { "date": "2025-06-21", "reason": "SOLD_OUT" }, { "date": "2025-03-28", "reason": "SOLD_OUT" }, { "date": "2025-04-02", "reason": "SOLD_OUT" }, { "date": "2025-03-21", "reason": "SOLD_OUT" }, { "date": "2025-04-01", "reason": "SOLD_OUT" }, { "date": "2025-12-07", "reason": "SOLD_OUT" }, { "date": "2025-07-05", "reason": "SOLD_OUT" }, { "date": "2025-05-13", "reason": "SOLD_OUT" }, { "date": "2025-03-30", "reason": "SOLD_OUT" }, { "date": "2025-03-23", "reason": "SOLD_OUT" }, { "date": "2025-06-10", "reason": "SOLD_OUT" }, { "date": "2025-10-10", "reason": "SOLD_OUT" }, { "date": "2025-12-09", "reason": "SOLD_OUT" } ] }, { "startTime": "14:30" }, { "startTime": "15:00", "unavailableDates": [ { "date": "2025-03-24", "reason": "SOLD_OUT" }, { "date": "2025-05-09", "reason": "SOLD_OUT" }, { "date": "2025-05-07", "reason": "SOLD_OUT" }, { "date": "2025-03-31", "reason": "SOLD_OUT" }, { "date": "2025-03-17", "reason": "SOLD_OUT" }, { "date": "2025-07-06", "reason": "SOLD_OUT" }, { "date": "2025-03-22", "reason": "SOLD_OUT" }, { "date": "2025-06-10", "reason": "SOLD_OUT" }, { "date": "2025-05-02", "reason": "SOLD_OUT" }, { "date": "2025-12-09", "reason": "SOLD_OUT" }, { "date": "2025-10-10", "reason": "SOLD_OUT" }, { "date": "2025-03-29", "reason": "SOLD_OUT" }, { "date": "2025-03-28", "reason": "SOLD_OUT" }, { "date": "2025-12-05", "reason": "SOLD_OUT" }, { "date": "2025-05-13", "reason": "SOLD_OUT" }, { "date": "2025-03-21", "reason": "SOLD_OUT" }, { "date": "2025-10-27", "reason": "SOLD_OUT" }, { "date": "2025-10-01", "reason": "SOLD_OUT" }, { "date": "2025-04-14", "reason": "SOLD_OUT" }, { "date": "2025-03-26", "reason": "SOLD_OUT" }, { "date": "2025-12-07", "reason": "SOLD_OUT" }, { "date": "2025-07-05", "reason": "SOLD_OUT" }, { "date": "2025-04-02", "reason": "SOLD_OUT" }, { "date": "2025-06-01", "reason": "SOLD_OUT" }, { "date": "2025-03-19", "reason": "SOLD_OUT" }, { "date": "2025-05-01", "reason": "SOLD_OUT" }, { "date": "2025-12-10", "reason": "SOLD_OUT" }, { "date": "2025-07-09", "reason": "SOLD_OUT" }, { "date": "2025-06-25", "reason": "SOLD_OUT" }, { "date": "2025-12-08", "reason": "SOLD_OUT" }, { "date": "2025-03-30", "reason": "SOLD_OUT" }, { "date": "2025-03-23", "reason": "SOLD_OUT" }, { "date": "2025-07-04", "reason": "SOLD_OUT" }, { "date": "2025-03-20", "reason": "SOLD_OUT" }, { "date": "2025-04-01", "reason": "SOLD_OUT" }, { "date": "2025-03-27", "reason": "SOLD_OUT" }, { "date": "2025-06-21", "reason": "SOLD_OUT" }, { "date": "2025-09-24", "reason": "SOLD_OUT" }, { "date": "2025-03-18", "reason": "SOLD_OUT" }, { "date": "2025-03-25", "reason": "SOLD_OUT" }, { "date": "2025-12-06", "reason": "SOLD_OUT" }, { "date": "2025-06-28", "reason": "SOLD_OUT" } ] }, { "startTime": "11:00" } ], "pricingDetails": [ { "pricingPackageType": "PER_PERSON", "minTravelers": 1, "maxTravelers": 1, "ageBand": "ADULT", "price": { "original": { "recommendedRetailPrice": 275, "partnerNetPrice": 253, "bookingFee": 0, "commission": 22, "partnerTotalPrice": 253 } } }, { "pricingPackageType": "PER_PERSON", "minTravelers": 7, "maxTravelers": 7, "ageBand": "ADULT", "price": { "original": { "recommendedRetailPrice": 41, "partnerNetPrice": 37.72, "bookingFee": 0, "commission": 3.28, "partnerTotalPrice": 37.72 } } }, { "pricingPackageType": "PER_PERSON", "minTravelers": 5, "maxTravelers": 5, "ageBand": "ADULT", "price": { "original": { "recommendedRetailPrice": 55, "partnerNetPrice": 50.6, "bookingFee": 0, "commission": 4.4, "partnerTotalPrice": 50.6 } } }, { "pricingPackageType": "PER_PERSON", "minTravelers": 8, "maxTravelers": 8, "ageBand": "ADULT", "price": { "original": { "recommendedRetailPrice": 35, "partnerNetPrice": 32.2, "bookingFee": 0, "commission": 2.8, "partnerTotalPrice": 32.2 } } }, { "pricingPackageType": "PER_PERSON", "minTravelers": 6, "maxTravelers": 6, "ageBand": "ADULT", "price": { "original": { "recommendedRetailPrice": 46, "partnerNetPrice": 42.32, "bookingFee": 0, "commission": 3.68, "partnerTotalPrice": 42.32 } } }, { "pricingPackageType": "PER_PERSON", "minTravelers": 2, "maxTravelers": 2, "ageBand": "ADULT", "price": { "original": { "recommendedRetailPrice": 138, "partnerNetPrice": 126.96, "bookingFee": 0, "commission": 11.04, "partnerTotalPrice": 126.96 } } }, { "pricingPackageType": "PER_PERSON", "minTravelers": 4, "maxTravelers": 4, "ageBand": "ADULT", "price": { "original": { "recommendedRetailPrice": 71, "partnerNetPrice": 65.32, "bookingFee": 0, "commission": 5.68, "partnerTotalPrice": 65.32 } } }, { "pricingPackageType": "PER_PERSON", "minTravelers": 3, "maxTravelers": 3, "ageBand": "ADULT", "price": { "original": { "recommendedRetailPrice": 92, "partnerNetPrice": 84.64, "bookingFee": 0, "commission": 7.36, "partnerTotalPrice": 84.64 } } } ] } ] } ] } ], "currency": "EUR", "summary": { "fromPrice": 138 }, "extraChargesSummary": { "fromPrice": 157, "extraCharges": 19 } } ], "nextCursor": "MTc0MjE1NjczMnwzNDkwMTNQMQ==" } }, "bookings-cart-hold-request-viator-form-example": { "summary": "Viator Form", "value": { "currency": "AUD", "partnerCartRef": "lW83mqyU", "items": [ { "partnerBookingRef": "irk5vCJ7", "productCode": "172432P20", "productOptionCode": "TG2", "startTime": "09:00", "travelDate": "2023-08-20", "paxMix": [ { "ageBand": "ADULT", "numberOfTravelers": 2 } ] } ], "paymentDataSubmissionMode": "VIATOR_FORM", "hostingUrl": "https://www.partner-example-hosting-url.com" } }, "bookings-cart-hold-request-partner-form-example": { "summary": "Partner Form", "value": { "currency": "AUD", "partnerCartRef": "NK1ECYpu", "items": [ { "partnerBookingRef": "SMN94A9b", "productCode": "172432P20", "productOptionCode": "TG2", "startTime": "09:00", "travelDate": "2023-08-20", "paxMix": [ { "ageBand": "ADULT", "numberOfTravelers": 2 } ] } ], "paymentDataSubmissionMode": "PARTNER_FORM" } }, "bookings-cart-hold-request-merchant-example": { "summary": "Merchant", "value": { "currency": "AUD", "partnerCartRef": "PYU2vBfV", "items": [ { "partnerBookingRef": "C6gF8U5g", "productCode": "101116P3", "startTime": "14:00", "travelDate": "2023-08-20", "paxMix": [ { "ageBand": "ADULT", "numberOfTravelers": 2 } ] } ] } }, "bookings-cart-hold-response-viator-form-example": { "summary": "Viator Form", "value": { "cartRef": "CR-cb9c9d63017a63c96454e4a5b0b153eb", "partnerCartRef": "lW83mqyU", "currency": "AUD", "items": [ { "partnerBookingRef": "irk5vCJ7", "bookingRef": "BR-593038025", "status": "BOOKABLE", "lineItems": [ { "ageBand": "ADULT", "numberOfTravelers": 2, "subtotalPrice": { "price": { "recommendedRetailPrice": 13.6, "partnerNetPrice": 12.52 } } } ], "itemTotalPrice": { "price": { "recommendedRetailPrice": 13.6, "partnerNetPrice": 12.52, "bookingFee": 0, "commission": 1.08, "partnerTotalPrice": 12.52 } }, "bookingHoldInfo": { "availability": { "status": "HOLD_NOT_PROVIDED" }, "pricing": { "status": "HOLDING", "validUntil": "2023-07-21T03:17:37.494535Z" } } } ], "totalHeldPrice": { "price": { "recommendedRetailPrice": 13.6, "partnerNetPrice": 12.52, "bookingFee": 0, "commission": 1.08, "partnerTotalPrice": 12.52 } }, "paymentSessionToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6ImVlZTgzNTdmLTJjMWMtNGFmOS1iNGY5LTMzZDgzMGIzODI2ZCJ9.eyJjaGVja291dFNlc3Npb25JZCI6IkNTSS1TLWE1c3ZvNDdub3ZhNHRkc2VidWg2aWkzd2JtIiwibWVyY2hhbnRJZCI6Ik1FUi1WSUFUT1IiLCJjbGllbnRJZCI6IlBBUlRORVI6QVBJLWVuOkFGRklMSUFURTo4MjAxNiIsImFtb3VudCI6MTIuNTIsImN1cnJlbmN5IjoiQVVEIiwibG9jYWxlIjoiZW4iLCJjcmVkaXRDYXJkRW50cnlVcmwiOiJodHRwczovL2FwaS5zdGFnaW5nLnRhcGF5bWVudHMuY29tL3VpL3YxL2NoZWNrb3V0L0NTSS1TLWE1c3ZvNDdub3ZhNHRkc2VidWg2aWkzd2JtL2NjZW50cnkiLCJhdWdtZW50VG9rZW5VcmwiOiJodHRwczovL2NoZWNrb3V0LWFwaS1oYXJlLnBheW1lbnRzLWRldi50YW1nLmNsb3VkL3YxL2NoZWNrb3V0L2F1Z21lbnRlZFBheW1lbnRTZXNzaW9uIiwidGhyZWVEU0RhdGFVcmwiOiJodHRwczovL2NoZWNrb3V0LWFwaS1oYXJlLnBheW1lbnRzLWRldi50YW1nLmNsb3VkL3YxL2NoZWNrb3V0LzNkcyIsImxvZ2dpbmdVcmwiOiJodHRwczovL2NoZWNrb3V0LWFwaS1oYXJlLnBheW1lbnRzLWRldi50YW1nLmNsb3VkL3YxL2NoZWNrb3V0L2xvZyIsImZpbmdlcnByaW50U3VibWlzc2lvblVybCI6Imh0dHBzOi8vY2hlY2tvdXQtYXBpLWhhcmUucGF5bWVudHMtZGV2LnRhbWcuY2xvdWQvdjEvY2hlY2tvdXQvZGV2aWNlRmluZ2VycHJpbnQiLCJwcm9maWxpbmdDb25maWd1cmF0aW9uIjp7ImNsaWVudElkIjoiVmdaZ0ZSMF9SMmhhVVBKV0F6OFlsemZGa2NNIiwiaG9zdG5hbWUiOiJ0ZXN0LmFjY2RhYi5uZXQiLCJmaW5nZXJwcmludElkIjoiSU5BVVRILTlhNTlkMTI4LWQzYjQtNDUyOS1iNmE2LTVmYjk3OWQwNTc3YiJ9LCJwdXJjaGFzZUNvbnRleHRzIjpbXX0.BgBJadCdH95l3Re1ohYujYjHwSaVTds5MQ_H7WfUeMpuuXbTEzIvPF8YtBlDQ-aL66yBirrorol8RetAUb_phhLXO6scsAgsZEmgTPe6-dqbrjB3IkdJcf5bbdUDbyykUkY2Tf4vhYZc3UhR0fOCc_Ibdhpkt7bfA0O7bnTrAHGaE6Tl1328xuGthdSggFBdaNSVPoeEl4CTb2Q1tYotuFlUcLawzQgravgWWfMvPN9V6sDiP17bROSigXw0f3IBKs5JYKKMYpHLSJ370DasuMTJ8_5kXUXq8thXEHJOh0cGurOhx32gDUUuCAuRwBRa9HeEgig7RrN0UmlSs7_iEQ" } }, "bookings-cart-hold-response-partner-form-example": { "summary": "Partner Form", "value": { "cartRef": "CR-5eeac311d6cdd74472bc80b4bfaed558", "partnerCartRef": "NK1ECYpu", "currency": "AUD", "items": [ { "partnerBookingRef": "SMN94A9b", "bookingRef": "BR-593036817", "status": "BOOKABLE", "lineItems": [ { "ageBand": "ADULT", "numberOfTravelers": 2, "subtotalPrice": { "price": { "recommendedRetailPrice": 13.6, "partnerNetPrice": 12.52 } } } ], "itemTotalPrice": { "price": { "recommendedRetailPrice": 13.6, "partnerNetPrice": 12.52, "bookingFee": 0, "commission": 1.08, "partnerTotalPrice": 12.52 } }, "bookingHoldInfo": { "availability": { "status": "HOLD_NOT_PROVIDED" }, "pricing": { "status": "HOLDING", "validUntil": "2023-07-21T02:23:32.711043Z" } } } ], "totalHeldPrice": { "price": { "recommendedRetailPrice": 13.6, "partnerNetPrice": 12.52, "bookingFee": 0, "commission": 1.08, "partnerTotalPrice": 12.52 } }, "paymentSessionToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6ImVlZTgzNTdmLTJjMWMtNGFmOS1iNGY5LTMzZDgzMGIzODI2ZCJ9.eyJjaGVja291dFNlc3Npb25JZCI6IkNTSS1TLWJ0aTQ0b2hrZHZhd3ZndWYycWI2bmFwZ2RxIiwibWVyY2hhbnRJZCI6Ik1FUi1WSUFUT1IiLCJjbGllbnRJZCI6IlBBUlRORVI6QVBJLWVuOkFGRklMSUFURTo4MjAxNiIsImFtb3VudCI6MCwiY3VycmVuY3kiOiJBVUQiLCJsb2NhbGUiOiJlbiIsImNyZWRpdENhcmRFbnRyeVVybCI6Imh0dHBzOi8vYXBpLnN0YWdpbmcudGFwYXltZW50cy5jb20vdWkvdjEvY2hlY2tvdXQvQ1NJLVMtYnRpNDRvaGtkdmF3dmd1ZjJxYjZuYXBnZHEvY2NlbnRyeSIsInBheW1lbnREYXRhU3VibWlzc2lvblVybCI6Imh0dHBzOi8vYXBpLnN0YWdpbmcudGFwYXltZW50cy5jb20vdjEvY2hlY2tvdXRzZXNzaW9ucy9DU0ktUy1idGk0NG9oa2R2YXd2Z3VmMnFiNm5hcGdkcS9wYXltZW50YWNjb3VudHMiLCJhdWdtZW50VG9rZW5VcmwiOiJodHRwczovL2NoZWNrb3V0LWFwaS1oYXJlLnBheW1lbnRzLWRldi50YW1nLmNsb3VkL3YxL2NoZWNrb3V0L2F1Z21lbnRlZFBheW1lbnRTZXNzaW9uIiwidGhyZWVEU0RhdGFVcmwiOiJodHRwczovL2NoZWNrb3V0LWFwaS1oYXJlLnBheW1lbnRzLWRldi50YW1nLmNsb3VkL3YxL2NoZWNrb3V0LzNkcyIsImxvZ2dpbmdVcmwiOiJodHRwczovL2NoZWNrb3V0LWFwaS1oYXJlLnBheW1lbnRzLWRldi50YW1nLmNsb3VkL3YxL2NoZWNrb3V0L2xvZyIsImZpbmdlcnByaW50U3VibWlzc2lvblVybCI6Imh0dHBzOi8vY2hlY2tvdXQtYXBpLWhhcmUucGF5bWVudHMtZGV2LnRhbWcuY2xvdWQvdjEvY2hlY2tvdXQvZGV2aWNlRmluZ2VycHJpbnQiLCJwcm9maWxpbmdDb25maWd1cmF0aW9uIjp7ImNsaWVudElkIjoiVmdaZ0ZSMF9SMmhhVVBKV0F6OFlsemZGa2NNIiwiaG9zdG5hbWUiOiJ0ZXN0LmFjY2RhYi5uZXQiLCJmaW5nZXJwcmludElkIjoiSU5BVVRILWMzZjdiZTM1LTRhMDMtNGFjZC1hMTc1LTA5ZGQ0YjkxNGYxMCJ9LCJwdXJjaGFzZUNvbnRleHRzIjpbXX0.5hQwDidxiUi6ySjRUVto4LYHdrD2WIQxTX_2_o0D66kGsFi0XpiSNYo2MYcbVb0aVKPkRSUnnww5zJWiP9T4qlhmldOw0qhDWpqXUlIGeDCM3CkcFISDg5FZzLr3iwFGK90WZMwJevq-pmiJ8efFGLtqlrnozylHdSDBVwumExJnfcrPflNfhlwNlj4khkeRMRTHt0FfB0Ief0PUeSw5uQ1cvuS0J8n4WEhcryEhAF4ZumgrTUMbPpuY0e-CxDuZnUg6l2bKxXg7No3PRUmF98V34RUIj9_4Wf7NIjxNJQjAaTkxy6ujwk6Y5BS4pExoAsGr8Obz1KWvtAb9pHocrw", "paymentDataSubmissionUrl": "https://api.staging.tapayments.com/v1/checkoutsessions/CSI-S-bti44ohkdvawvguf2qb6napgdq/paymentaccounts" } }, "bookings-cart-hold-response-merchant-example": { "summary": "Merchant", "value": { "cartRef": "CR-d79993d2c97048940def455f6d4c4adb", "partnerCartRef": "PYU2vBfV", "currency": "AUD", "items": [ { "partnerBookingRef": "C6gF8U5g", "bookingRef": "BR-593037231", "status": "BOOKABLE", "lineItems": [ { "ageBand": "ADULT", "numberOfTravelers": 2, "subtotalPrice": { "price": { "recommendedRetailPrice": 365.58, "partnerNetPrice": 361.92 } } } ], "itemTotalPrice": { "price": { "recommendedRetailPrice": 365.58, "partnerNetPrice": 361.92, "bookingFee": 0, "commission": 3.66, "partnerTotalPrice": 361.92 } }, "bookingHoldInfo": { "availability": { "status": "HOLD_NOT_PROVIDED" }, "pricing": { "status": "HOLDING", "validUntil": "2023-07-21T02:47:42.324852Z" } } } ], "totalHeldPrice": { "price": { "recommendedRetailPrice": 365.58, "partnerNetPrice": 361.92, "bookingFee": 0, "commission": 3.66, "partnerTotalPrice": 361.92 } } } }, "bookings-cart-hold-response-extra-charges-example": { "summary": "Extra Charges", "value": { "cartRef": "CR-b54b65e9796a1b825c2bfbdf1c8fc561", "partnerCartRef": "gHJBEkWL", "currency": "USD", "items": [ { "partnerBookingRef": "kSmyaN8Y", "bookingRef": "BR-204279587", "status": "BOOKABLE", "lineItems": [ { "ageBand": "ADULT", "numberOfTravelers": 3, "subtotalPrice": { "price": { "recommendedRetailPrice": 2175, "partnerNetPrice": 2001 } } } ], "itemTotalPrice": { "price": { "recommendedRetailPrice": 2175, "partnerNetPrice": 2001, "bookingFee": 0, "commission": 174, "partnerTotalPrice": 2001 } }, "bookingHoldInfo": { "availability": { "status": "HOLD_NOT_PROVIDED" }, "pricing": { "status": "HOLDING", "validUntil": "2025-03-18T12:06:58.861994308Z" } }, "extraChargesSummary": { "price": { "recommendedRetailPrice": 2304.87 }, "mandatory": { "totalExtraCharges": 129.87, "items": [ { "name": "Test fee 1 - Per Person", "numberOfUnits": 3, "amountPerUnit": 6.78, "totalAmount": 20.35, "inDestination": { "amountPerUnit": 1000, "totalAmount": 3000, "currency": "JPY" } }, { "name": "Test fee 2 - Fixed", "numberOfUnits": 1, "amountPerUnit": 109.52, "totalAmount": 109.52, "inDestination": { "amountPerUnit": 100, "totalAmount": 100, "currency": "EUR" } } ] } } } ], "totalHeldPrice": { "price": { "recommendedRetailPrice": 2175, "partnerNetPrice": 2001, "bookingFee": 0, "commission": 174, "partnerTotalPrice": 2001 } }, "paymentSessionToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6ImVlZTgzNTdmLTJjMWMtNGFmOS1iNGY5LTMzZDgzMGIzODI2ZCJ9.eyJjaGVja291dFNlc3Npb25JZCI6IkNTSS1TLXVzMmdjd3hwNXZiMmZldm43NmFpb253NzZtIiwibWVyY2hhbnRJZCI6Ik1FUi1WSUFUT1IiLCJjbGllbnRJZCI6IlAwMDEwODk1MCIsImFtb3VudCI6MCwiY3VycmVuY3kiOiJVU0QiLCJsb2NhbGUiOiJlbiIsImNyZWRpdENhcmRFbnRyeVVybCI6Imh0dHBzOi8vYXBpLnN0YWdpbmcudGFwYXltZW50cy5jb20vdWkvdjEvY2hlY2tvdXQvQ1NJLVMtdXMyZ2N3eHA1dmIyZmV2bjc2YWlvbnc3Nm0vY2NlbnRyeSIsInBheW1lbnREYXRhU3VibWlzc2lvblVybCI6Imh0dHBzOi8vYXBpLnN0YWdpbmcudGFwYXltZW50cy5jb20vdjEvY2hlY2tvdXRzZXNzaW9ucy9DU0ktUy11czJnY3d4cDV2YjJmZXZuNzZhaW9udzc2bS9wYXltZW50YWNjb3VudHMiLCJhdWdtZW50VG9rZW5VcmwiOiJodHRwczovL2NoZWNrb3V0LWFwaS1oYXJlLnBheW1lbnRzLWRldi50YW1nLmNsb3VkL3YxL2NoZWNrb3V0L2F1Z21lbnRlZFBheW1lbnRTZXNzaW9uIiwidGhyZWVEU0RhdGFVcmwiOiJodHRwczovL2NoZWNrb3V0LWFwaS1oYXJlLnBheW1lbnRzLWRldi50YW1nLmNsb3VkL3YxL2NoZWNrb3V0LzNkcyIsImxvZ2dpbmdVcmwiOiJodHRwczovL2NoZWNrb3V0LWFwaS1oYXJlLnBheW1lbnRzLWRldi50YW1nLmNsb3VkL3YxL2NoZWNrb3V0L2xvZyIsImZpbmdlcnByaW50U3VibWlzc2lvblVybCI6Imh0dHBzOi8vY2hlY2tvdXQtYXBpLWhhcmUucGF5bWVudHMtZGV2LnRhbWcuY2xvdWQvdjEvY2hlY2tvdXQvZGV2aWNlRmluZ2VycHJpbnQiLCJwcm9maWxpbmdDb25maWd1cmF0aW9uIjp7ImNsaWVudElkIjoiVmdaZ0ZSMF9SMmhhVVBKV0F6OFlsemZGa2NNIiwiaG9zdG5hbWUiOiJ0ZXN0LmFjY2RhYi5uZXQiLCJmaW5nZXJwcmludElkIjoiSU5BVVRILTNmNTdiNzA3LThlNTYtNDExNC1hNzU5LTU3MDViZjc0MjUxOCJ9LCJwdXJjaGFzZUNvbnRleHRzIjpbeyJzdXBwbGllcklkIjoiMTI4MjE2Iiwic3VwcGxpZXJMb2NhdGlvbiI6eyJjb3VudHJ5IjoiRUcifSwic3VwcGxpZXJKdXJpc2RpY3Rpb24iOiJOT05FIn1dfQ.OZ8uTgTHsQ8pEEjgHZ9-iiF3D_-lqjkAE8xto5vm2VpZRRJaNXgRJCXujndieX7g-qhUuY41APjTbgL7zMmVchIX7Mh7xhseQQ-FXaxTiq69vazETPSqvAx2GBks7eqN-JH5bebiV-VVsWqKEE3FDkHwqUtCYsZ9p4S7Ygh_K7zt5ei87XHceZQ61WQ5JZt2mVKjHkO-eLEeWUyYxXoBjTjzfGzD_v4R9x9WZvWZIFbd0Q5HzxRzXyXF8LCqZdCR7onz9jUypOdlswynnu8K7IleMNRNjgkvq4xPDsdpKT6NZUhNjOhkKy0fu2IO3lDVGRkOHbUY8uuj7mj0m6ZQcQ", "paymentDataSubmissionUrl": "https://api.staging.tapayments.com/v1/checkoutsessions/CSI-S-us2gcwxp5vb2fevn76aionw76m/paymentaccounts", "extraChargesSummary": { "price": { "recommendedRetailPrice": 2304.87 }, "totalExtraCharges": 129.87 }, "translationInfo": { "containsMachineTranslatedText": false, "translationSource": "ORIGINAL" } } }, "bookings-cart-book-request-viator-form-example": { "summary": "Viator Form", "value": { "cartRef": "CR-cb9c9d63017a63c96454e4a5b0b153eb", "bookerInfo": { "firstName": "Jane", "lastName": "Doe" }, "communication": { "email": "jane.doe@example.com", "phone": "+61 444444444" }, "items": [ { "bookingRef": "BR-593038025", "bookingQuestionAnswers": [ { "question": "SPECIAL_REQUIREMENTS", "answer": "No blue M&Ms" } ], "languageGuide": { "type": "GUIDE", "language": "cmn", "legacyGuide": "cmn/SERVICE_GUIDE" } } ], "paymentToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c" } }, "bookings-cart-book-request-partner-form-example": { "summary": "Partner Form", "value": { "cartRef": "CR-5eeac311d6cdd74472bc80b4bfaed558", "bookerInfo": { "firstName": "Jane", "lastName": "Doe" }, "communication": { "email": "jane.doe@example.com", "phone": "+61 444444444" }, "items": [ { "bookingRef": "BR-593036817", "bookingQuestionAnswers": [ { "question": "SPECIAL_REQUIREMENTS", "answer": "No blue M&Ms" } ], "languageGuide": { "type": "GUIDE", "language": "cmn", "legacyGuide": "cmn/SERVICE_GUIDE" } } ], "paymentToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c" } }, "bookings-cart-book-request-merchant-example": { "summary": "Merchant", "value": { "cartRef": "CR-d79993d2c97048940def455f6d4c4adb", "bookerInfo": { "firstName": "Jane", "lastName": "Doe" }, "communication": { "email": "jane.doe@example.com", "phone": "+61 444444444" }, "items": [ { "bookingRef": "BR-593037231", "bookingQuestionAnswers": [ { "question": "SPECIAL_REQUIREMENTS", "answer": "No blue M&Ms" }, { "question": "AGEBAND", "answer": "ADULT", "travelerNum": 1 }, { "question": "AGEBAND", "answer": "ADULT", "travelerNum": 2 }, { "question": "DATE_OF_BIRTH", "answer": "1970-01-01", "travelerNum": 1 }, { "question": "DATE_OF_BIRTH", "answer": "1970-01-01", "travelerNum": 2 }, { "question": "FULL_NAMES_FIRST", "answer": "Traveler First", "travelerNum": 1 }, { "question": "FULL_NAMES_FIRST", "answer": "Traveler First", "travelerNum": 2 }, { "question": "FULL_NAMES_LAST", "answer": "Traveler Last", "travelerNum": 1 }, { "question": "FULL_NAMES_LAST", "answer": "Traveler Last", "travelerNum": 2 } ], "languageGuide": { "type": "GUIDE", "language": "en", "legacyGuide": "en/SERVICE_GUIDE" } } ] } }, "bookings-cart-book-response-viator-form-example": { "summary": "Viator Form", "value": { "cartRef": "CR-cb9c9d63017a63c96454e4a5b0b153eb", "partnerCartRef": "lW83mqyU", "currency": "AUD", "items": [ { "partnerBookingRef": "irk5vCJ7", "bookingRef": "BR-593038025", "status": "CONFIRMED", "lineItems": [ { "ageBand": "ADULT", "numberOfTravelers": 2, "subtotalPrice": { "price": { "recommendedRetailPrice": 13.6, "partnerNetPrice": 12.52 } } } ], "itemTotalPrice": { "price": { "recommendedRetailPrice": 13.6, "partnerNetPrice": 12.52, "bookingFee": 0, "commission": 1.08, "partnerTotalPrice": 12.52 } }, "cancellationPolicy": { "type": "STANDARD", "description": "For a full refund, cancel at least 24 hours before the scheduled departure time.", "cancelIfBadWeather": true, "cancelIfInsufficientTravelers": false, "refundEligibility": [ { "dayRangeMin": 1, "percentageRefundable": 100, "startTimestamp": "2023-07-21T02:19:02Z", "endTimestamp": "2023-08-18T22:59:59Z" }, { "dayRangeMin": 0, "dayRangeMax": 1, "percentageRefundable": 0, "startTimestamp": "2023-08-18T23:00:00Z", "endTimestamp": "2023-08-19T23:00:00Z" } ] }, "voucherInfo": { "url": "https://shop.live.rc.viator.com/ticket?code=1006658118:1176d4aed0e88ffec7faf11e67183edc0cd40d5b5244b30b0cd08aab14f72b4b", "format": "HTML", "type": "STANDARD" } } ], "voucherInfo": { "url": "https://shop.live.rc.viator.com/ticket?code=1006658118:1176d4aed0e88ffec7faf11e67183edc0cd40d5b5244b30b0cd08aab14f72b4b", "format": "HTML", "type": "STANDARD" }, "totalConfirmedPrice": { "price": { "recommendedRetailPrice": 13.6, "partnerNetPrice": 12.52, "bookingFee": 0, "commission": 1.08, "partnerTotalPrice": 12.52 } }, "totalPendingPrice": { "price": { "recommendedRetailPrice": 0, "partnerNetPrice": 0, "bookingFee": 0, "commission": 0, "partnerTotalPrice": 0 } } } }, "bookings-cart-book-response-partner-form-example": { "summary": "Partner Form", "value": { "cartRef": "CR-5eeac311d6cdd74472bc80b4bfaed558", "partnerCartRef": "NK1ECYpu", "currency": "AUD", "items": [ { "partnerBookingRef": "SMN94A9b", "bookingRef": "BR-593036817", "status": "CONFIRMED", "lineItems": [ { "ageBand": "ADULT", "numberOfTravelers": 2, "subtotalPrice": { "price": { "recommendedRetailPrice": 13.6, "partnerNetPrice": 12.52 } } } ], "itemTotalPrice": { "price": { "recommendedRetailPrice": 13.6, "partnerNetPrice": 12.52, "bookingFee": 0, "commission": 1.08, "partnerTotalPrice": 12.52 } }, "cancellationPolicy": { "type": "STANDARD", "description": "For a full refund, cancel at least 24 hours before the scheduled departure time.", "cancelIfBadWeather": true, "cancelIfInsufficientTravelers": false, "refundEligibility": [ { "dayRangeMin": 1, "percentageRefundable": 100, "startTimestamp": "2023-07-21T01:28:33Z", "endTimestamp": "2023-08-18T22:59:59Z" }, { "dayRangeMin": 0, "dayRangeMax": 1, "percentageRefundable": 0, "startTimestamp": "2023-08-18T23:00:00Z", "endTimestamp": "2023-08-19T23:00:00Z" } ] }, "voucherInfo": { "url": "https://shop.live.rc.viator.com/ticket?code=1006658118:1176d4aed0e88ffec7faf11e67183edc0cd40d5b5244b30b0cd08aab14f72b4b", "format": "HTML", "type": "STANDARD" } } ], "voucherInfo": { "url": "https://shop.live.rc.viator.com/ticket?code=1006658118:1176d4aed0e88ffec7faf11e67183edc0cd40d5b5244b30b0cd08aab14f72b4b", "format": "HTML", "type": "STANDARD" }, "totalConfirmedPrice": { "price": { "recommendedRetailPrice": 13.6, "partnerNetPrice": 12.52, "bookingFee": 0, "commission": 1.08, "partnerTotalPrice": 12.52 } }, "totalPendingPrice": { "price": { "recommendedRetailPrice": 0, "partnerNetPrice": 0, "bookingFee": 0, "commission": 0, "partnerTotalPrice": 0 } } } }, "bookings-cart-book-response-merchant-example": { "summary": "Merchant", "value": { "cartRef": "CR-d79993d2c97048940def455f6d4c4adb", "partnerCartRef": "PYU2vBfV", "currency": "AUD", "items": [ { "partnerBookingRef": "C6gF8U5g", "bookingRef": "BR-593037231", "status": "CONFIRMED", "lineItems": [ { "ageBand": "ADULT", "numberOfTravelers": 2, "subtotalPrice": { "price": { "recommendedRetailPrice": 365.58, "partnerNetPrice": 361.92 } } } ], "itemTotalPrice": { "price": { "recommendedRetailPrice": 365.58, "partnerNetPrice": 361.92, "bookingFee": 0, "commission": 3.66, "partnerTotalPrice": 361.92 } }, "cancellationPolicy": { "type": "STANDARD", "description": "For a full refund, cancel at least 24 hours before the scheduled departure time.", "cancelIfBadWeather": false, "cancelIfInsufficientTravelers": false, "refundEligibility": [ { "dayRangeMin": 1, "percentageRefundable": 100, "startTimestamp": "2023-07-21T01:49:17Z", "endTimestamp": "2023-08-19T11:59:59Z" }, { "dayRangeMin": 0, "dayRangeMax": 1, "percentageRefundable": 0, "startTimestamp": "2023-08-19T12:00:00Z", "endTimestamp": "2023-08-20T12:00:00Z" } ] }, "voucherInfo": { "url": "https://shop.live.rc.viator.com/ticket?code=1006658118:1176d4aed0e88ffec7faf11e67183edc0cd40d5b5244b30b0cd08aab14f72b4b", "format": "HTML", "type": "STANDARD" } } ], "voucherInfo": { "url": "https://shop.live.rc.viator.com/ticket?code=1006658118:1176d4aed0e88ffec7faf11e67183edc0cd40d5b5244b30b0cd08aab14f72b4b", "format": "HTML", "type": "STANDARD" }, "totalConfirmedPrice": { "price": { "recommendedRetailPrice": 365.58, "partnerNetPrice": 361.92, "bookingFee": 0, "commission": 3.66, "partnerTotalPrice": 361.92 } }, "totalPendingPrice": { "price": { "recommendedRetailPrice": 0, "partnerNetPrice": 0, "bookingFee": 0, "commission": 0, "partnerTotalPrice": 0 } } } }, "bookings-hold-example": { "summary": "/bookings/hold", "value": { "bookingRef": "BR-788161184", "bookingHoldInfo": { "availability": { "status": "HOLD_NOT_PROVIDED" }, "pricing": { "status": "HOLDING", "validUntil": "2020-09-21T00:18:47.233Z" } }, "currency": "AUD", "lineItems": [ { "ageBand": "ADULT", "numberOfTravelers": 2, "subtotalPrice": { "price": { "recommendedRetailPrice": 601.68, "partnerNetPrice": 463.3 } } } ], "totalPrice": { "price": { "recommendedRetailPrice": 601.68, "partnerNetPrice": 463.3, "bookingFee": 27.8, "partnerTotalPrice": 491.1 } } } }, "bookings-hold-extra-charges-example": { "summary": "/bookings/hold - ExtraCharges", "value": { "bookingRef": "BR-204279583", "bookingHoldInfo": { "availability": { "status": "HOLD_NOT_PROVIDED" }, "pricing": { "status": "HOLDING", "validUntil": "2025-03-18T10:58:47.644585048Z" } }, "currency": "USD", "lineItems": [ { "ageBand": "ADULT", "numberOfTravelers": 3, "subtotalPrice": { "price": { "recommendedRetailPrice": 2175, "partnerNetPrice": 2153.25 } } } ], "totalPrice": { "price": { "recommendedRetailPrice": 2175, "partnerNetPrice": 2153.25, "bookingFee": 0, "commission": 21.75, "partnerTotalPrice": 2153.25 } }, "extraChargesSummary": { "price": { "recommendedRetailPrice": 2304.87 }, "mandatory": { "totalExtraCharges": 129.87, "items": [ { "name": "Test fee 1 - Per Person", "numberOfUnits": 3, "amountPerUnit": 6.78, "totalAmount": 20.35, "inDestination": { "amountPerUnit": 1000, "totalAmount": 3000, "currency": "JPY" } }, { "name": "Test fee 2 - Fixed", "numberOfUnits": 1, "amountPerUnit": 109.52, "totalAmount": 109.52, "inDestination": { "amountPerUnit": 100, "totalAmount": 100, "currency": "EUR" } } ] } }, "translationInfo": { "containsMachineTranslatedText": false, "translationSource": "ORIGINAL" } } }, "bookings-book-example": { "summary": "/bookings/book", "value": { "status": "CONFIRMED", "bookingRef": "BR-581567752", "partnerBookingRef": "BR-581567752", "currency": "AUD", "lineItems": [ { "ageBand": "ADULT", "numberOfTravelers": 1, "subtotalPrice": { "price": { "recommendedRetailPrice": 71.1, "partnerNetPrice": 56.79 } } } ], "totalPrice": { "price": { "recommendedRetailPrice": 71.1, "partnerNetPrice": 56.79, "bookingFee": 3.41, "partnerTotalPrice": 60.2 } }, "cancellationPolicy": { "type": "STANDARD", "description": "For a full refund, cancel at least 24 hours before the scheduled departure time.", "cancelIfBadWeather": false, "cancelIfInsufficientTravelers": false, "refundEligibility": [ { "dayRangeMin": 1, "percentageRefundable": 100, "startTimestamp": "2020-08-25T00:36:49.69005Z", "endTimestamp": "2020-11-28T13:00:00Z" }, { "dayRangeMin": 0, "dayRangeMax": 1, "percentageRefundable": 0, "startTimestamp": "2020-11-28T13:00:00Z", "endTimestamp": "2020-11-29T13:00:00Z" } ] }, "voucherInfo": { "url": "https://shop.live.rc.viator.com/ticket?code=1006658118:1176d4aed0e88ffec7faf11e67183edc0cd40d5b5244b30b0cd08aab14f72b4b", "format": "HTML", "type": "STANDARD" } } }, "bookings-status-example": { "summary": "Confirmed booking", "value": { "status": "CONFIRMED", "bookingRef": "BR-791143912", "partnerBookingRef": "BR-791143912", "currency": "USD", "lineItems": [ { "ageBand": "ADULT", "numberOfTravelers": 2, "subtotalPrice": { "price": { "recommendedRetailPrice": 21.4, "partnerNetPrice": 20.52 } } } ], "totalPrice": { "price": { "recommendedRetailPrice": 21.4, "partnerNetPrice": 20.52, "bookingFee": 1.23, "partnerTotalPrice": 21.75 } }, "cancellationPolicy": { "type": "STANDARD", "description": "For a full refund, cancel at least 24 hours before the scheduled departure time.", "cancelIfBadWeather": false, "cancelIfInsufficientTravelers": false, "refundEligibility": [ { "dayRangeMin": 2, "percentageRefundable": 100, "startTimestamp": "2020-11-10T02:04:15Z", "endTimestamp": "2021-03-30T23:00:00Z" }, { "dayRangeMin": 0, "dayRangeMax": 1, "percentageRefundable": 0, "startTimestamp": "2021-03-31T23:00:00Z", "endTimestamp": "2021-04-01T23:00:00Z" } ] }, "voucherInfo": { "url": "https://www.viator.com/ticket?code=1187186744:8ac3e6308555ab632fe89e8a6b83c41620e840a3bc485f6e0d836192eae1ffc4", "format": "HTML", "type": "STANDARD" } } }, "bookings-status-pending-example": { "summary": "Pending booking", "value": { "status": "PENDING", "bookingRef": "BR-784007177", "partnerBookingRef": "PR-784007177", "currency": "USD", "lineItems": [ { "ageBand": "ADULT", "numberOfTravelers": 3, "subtotalPrice": { "price": { "recommendedRetailPrice": 510, "partnerNetPrice": 504.9 } } } ], "totalPrice": { "price": { "recommendedRetailPrice": 510, "partnerNetPrice": 504.9, "bookingFee": 0, "commission": 5.1, "partnerTotalPrice": 504.9 } }, "cancellationPolicy": { "type": "CUSTOM", "description": "If you cancel at least 2 full day(s) before the scheduled departure time, you will receive a full refund. If you cancel within 2 day(s) of the scheduled departure, you will receive a 0% refund.", "cancelIfBadWeather": false, "cancelIfInsufficientTravelers": false, "refundEligibility": [ { "dayRangeMin": 2, "percentageRefundable": 100, "startTimestamp": "2025-07-22T09:23:54Z", "endTimestamp": "2025-07-27T07:59:59Z" }, { "dayRangeMin": 0, "dayRangeMax": 2, "percentageRefundable": 0, "startTimestamp": "2025-07-27T08:00:00Z", "endTimestamp": "2025-07-29T08:00:00Z" } ] }, "nextPollAt": "2025-07-22T11:24:05.764088Z" } }, "bookings-status-example-2": { "summary": "Canceled booking", "value": { "bookingRef": "BR-582323272", "status": "CANCELED", "partnerBookingRef": "test-partner-ref-aejsmont-num-1604985575" } }, "bookings-cancel-reasons-example": { "summary": "type=\"CUSTOMER\"", "value": { "reasons": [ { "cancellationReasonText": "Supplier No Show", "cancellationReasonCode": "Customer_Service.Supplier_no_show" }, { "cancellationReasonText": "Chose a different/cheaper tour", "cancellationReasonCode": "Customer_Service.Chose_a_different_cheaper_tour" }, { "cancellationReasonText": "Unexpected medical circumstances", "cancellationReasonCode": "Customer_Service.Unexpected_medical_circumstances" }, { "cancellationReasonText": "Weather", "cancellationReasonCode": "Customer_Service.Weather" }, { "cancellationReasonText": "Booked wrong tour date", "cancellationReasonCode": "Customer_Service.Booked_wrong_tour_date" }, { "cancellationReasonText": "Duplicate Booking", "cancellationReasonCode": "Customer_Service.Duplicate_Booking" }, { "cancellationReasonText": "Significant global event", "cancellationReasonCode": "Customer_Service.Significant_global_event" }, { "cancellationReasonText": "I canceled my entire trip", "cancellationReasonCode": "Customer_Service.I_canceled_my_entire_trip" } ] } }, "bookings-cancel-reasons-example-2": { "summary": "type=\"SUPPLIER\"", "value": { "reasons": [ { "cancellationReasonText": "Supplier unable to fulfill booking", "cancellationReasonCode": "Supplier_Support.Default" }, { "cancellationReasonText": "Minimum number of passenger not met", "cancellationReasonCode": "Supplier_Support.Minimum_number_of_passenger_not_met" }, { "cancellationReasonText": "Date not available", "cancellationReasonCode": "Supplier_Support.Date_not_available" }, { "cancellationReasonText": "Time not available", "cancellationReasonCode": "Supplier_Support.Time_not_available" }, { "cancellationReasonText": "Product no longer available", "cancellationReasonCode": "Supplier_Support.Product_no_longer_available" }, { "cancellationReasonText": "Customer requested a cancellation", "cancellationReasonCode": "Supplier_Support.Customer_requested_a_cancellation" }, { "cancellationReasonText": "Tour was sold out", "cancellationReasonCode": "Supplier_Support.Tour_was_sold_out" }, { "cancellationReasonText": "Duplicate booking", "cancellationReasonCode": "Supplier_Support.Duplicate_booking" }, { "cancellationReasonText": "Significant global event/force Majeure", "cancellationReasonCode": "Supplier_Support.Significant_global_event_Force_majeure" }, { "cancellationReasonText": "Weather", "cancellationReasonCode": "Supplier_Support.Weather" }, { "cancellationReasonText": "Booking was not received via API", "cancellationReasonCode": "Supplier_Support.Booking_was_not_received_via_API" } ] } }, "bookings-cancel-quote-example": { "summary": "/bookings/{product-code}/cancel-quote", "value": { "bookingId": "BR-581567752", "refundDetails": { "itemPrice": 60.2, "refundAmount": 60.2, "refundPercentage": 100, "currencyCode": "AUD" }, "status": "CANCELLABLE" } }, "bookings-cancel-example": { "summary": "/bookings/{product-code}/cancel", "value": { "bookingId": "BR-581567752", "status": "ACCEPTED" } }, "bookings-modified-since-example": { "summary": "/bookings/modified-since", "value": { "bookings": [ { "transactionRef": "1234", "eventType": "CANCELLATION", "acknowledgeBy": "2022-04-08T09:22:48Z", "bookingRef": "BR-204104077", "partnerBookingRef": "BK2041040771234567", "lastUpdated": "2022-04-07T13:25:00Z", "bookedItem": { "productCode": "281620P2", "productOptionCode": "TG1", "travelDate": "2022-05-12", "travelTime": "09:30" }, "cancellation": { "cancellationReasonCode": "Supplier_Support.Significant_global_event", "refundDetails": { "itemPrice": 59.4, "refundAmount": 59.4, "refundPercentage": 100, "currencyCode": "AUD" } } }, { "transactionRef": "1235", "eventType": "CANCELLATION", "acknowledgeBy": "2022-04-08T09:22:48Z", "bookingRef": "BR-204104078", "partnerBookingRef": "BK2041040771234568", "lastUpdated": "2022-04-08T09:17:48Z", "bookedItem": { "productCode": "172432P11", "productOptionCode": "TG1", "travelDate": "2022-05-14", "travelTime": "09:30" }, "cancellation": { "cancellationReasonCode": "Supplier_Support.Weather", "refundDetails": { "itemPrice": 120, "refundAmount": 120, "refundPercentage": 100, "currencyCode": "EUR" } } } ], "nextCursor": "MTYxMjc2OTM4NXwxNTU5MTlQMXxJTkFDVElWRQ==" } }, "locations-bulk-example": { "summary": "/locations/bulk", "value": { "locations": [ { "provider": "GOOGLE", "reference": "LOC-f698f2a1-a53a-46bb-8708-3d45bf740f59", "providerReference": "ChIJi96kKfceB3wRhQLL_6FzrSg" }, { "provider": "GOOGLE", "reference": "LOC-9e88ac35-2e2c-4ecc-af8d-10b76770785f", "providerReference": "ChIJ--9uPvceB3wR-4BkkxaaWEI" }, { "provider": "TRIPADVISOR", "reference": "LOC-453b3cd4-4afa-414d-a8d8-bedb458d73fe", "name": "Hanalei Bay", "address": { "street": ", ", "state": "Hawaii", "country": "United States", "countryCode": "US", "postcode": "" }, "center": { "latitude": 22.207436, "longitude": -159.49841 } }, { "provider": "TRIPADVISOR", "reference": "CONTACT_SUPPLIER_LATER", "name": "I will contact the supplier later" }, { "provider": "TRIPADVISOR", "reference": "MEET_AT_DEPARTURE_POINT", "name": "I will meet at the departure point" } ] } }, "exchange-rates-example": { "summary": "/exchange-rates", "value": { "rates": [ { "sourceCurrency": "EUR", "targetCurrency": "EUR", "rate": 1, "lastUpdated": "2020-09-10T07:00:09Z", "expiry": "2020-09-12T07:05:09Z" }, { "sourceCurrency": "AUD", "targetCurrency": "AUD", "rate": 1, "lastUpdated": "2020-09-10T07:00:09Z", "expiry": "2020-09-12T07:05:09Z" }, { "sourceCurrency": "EUR", "targetCurrency": "USD", "rate": 1.2145889436, "lastUpdated": "2020-09-16T06:55:00Z", "expiry": "2020-09-18T07:05:00Z" }, { "sourceCurrency": "USD", "targetCurrency": "GBP", "rate": 0.78444221728675, "lastUpdated": "2020-09-10T07:00:09Z", "expiry": "2020-09-12T07:05:09Z" }, { "sourceCurrency": "GBP", "targetCurrency": "GBP", "rate": 1, "lastUpdated": "2020-09-10T07:00:10Z", "expiry": "2020-09-12T07:05:10Z" }, { "sourceCurrency": "AUD", "targetCurrency": "GBP", "rate": 0.56872265726375, "lastUpdated": "2020-09-10T07:00:09Z", "expiry": "2020-09-12T07:05:09Z" }, { "sourceCurrency": "USD", "targetCurrency": "AUD", "rate": 1.4034428375, "lastUpdated": "2020-09-10T07:00:09Z", "expiry": "2020-09-12T07:05:09Z" }, { "sourceCurrency": "GBP", "targetCurrency": "AUD", "rate": 1.8204061975, "lastUpdated": "2020-09-10T07:00:09Z", "expiry": "2020-09-12T07:05:09Z" }, { "sourceCurrency": "AUD", "targetCurrency": "EUR", "rate": 0.6257333533055, "lastUpdated": "2020-09-10T07:00:09Z", "expiry": "2020-09-12T07:05:09Z" }, { "sourceCurrency": "EUR", "targetCurrency": "AUD", "rate": 1.65454861, "lastUpdated": "2020-09-10T07:00:09Z", "expiry": "2020-09-12T07:05:09Z" }, { "sourceCurrency": "USD", "targetCurrency": "USD", "rate": 1, "lastUpdated": "2020-09-10T07:00:09Z", "expiry": "2020-09-12T07:05:09Z" }, { "sourceCurrency": "EUR", "targetCurrency": "GBP", "rate": 0.924811674699, "lastUpdated": "2020-09-10T07:00:09Z", "expiry": "2020-09-12T07:05:09Z" }, { "sourceCurrency": "GBP", "targetCurrency": "USD", "rate": 1.3234666156, "lastUpdated": "2020-09-16T06:55:00Z", "expiry": "2020-09-18T07:05:00Z" }, { "sourceCurrency": "USD", "targetCurrency": "EUR", "rate": 0.863156412382, "lastUpdated": "2020-09-10T07:00:09Z", "expiry": "2020-09-12T07:05:09Z" }, { "sourceCurrency": "GBP", "targetCurrency": "EUR", "rate": 1.11947792, "lastUpdated": "2020-09-10T07:00:09Z", "expiry": "2020-09-12T07:05:09Z" }, { "sourceCurrency": "AUD", "targetCurrency": "USD", "rate": 0.7376903585645, "lastUpdated": "2020-09-10T07:00:10Z", "expiry": "2020-09-12T07:05:10Z" } ] } }, "products-reviews-example": { "summary": "/products/reviews", "value": { "reviews": [ { "reviewReference": "REV-q6mwlHKh14wicyE6pG4nptLgIzdbv1Mmpuq6xA1q7hc=", "language": "en", "publishedDate": "2021-06-05T03:28:52Z", "userName": "junehV5012PE", "rating": 5, "text": "We thoroughly enjoyed our 2 days on the bus. James and the other two drivers were so friendly and helpful with where we wanted to go. Can't recommend them highly enough. The online price was great too", "title": "Great way to see Sydney", "machineTranslated": false, "provider": "TRIPADVISOR", "ownerResponse": { "reviewReference": "REV-Nf8eTVCosx7+S3kjeNef6f4akSq5yUt+15A5Xvv+fCQ=", "language": "en", "publishedDate": "2021-06-15T03:06:31Z", "userName": "PamelaS3823", "text": "Thank you for joining the Big Bus tours and for your feedback: I will be certain to pass on your compliments to the drivers. ", "machineTranslated": false }, "helpfulVotes": 0 }, { "reviewReference": "REV-9TpCW7MX6+wdcvBsEvCaNbYGb/umSSBgT1YYS/a4PnI=", "language": "en", "publishedDate": "2021-04-05T06:03:51Z", "userName": "G4377PJstephenb", "rating": 1, "text": "It's not exactly hop.on hop off. If you get off there is a 2 hour wait for the next bus. Also they advertise 24 hr pass , this is not true last bus is 2 or 2.30pm . Very disappointing", "title": "Disappointed", "machineTranslated": false, "provider": "TRIPADVISOR", "helpfulVotes": 2 }, { "reviewReference": "REV-7GMRfrA79CGhRAmjwU+4lIXU/a48chrbfdax19evxL8=", "language": "en", "publishedDate": "2021-01-02T11:17:12Z", "userName": "Michele_H", "rating": 5, "text": "Loved the fact that I was outdoors while riding on the upstairs section of the bus. Especially important during Covid to have the fresh air in my face. ", "title": "Loved Being Outdoors While Tiding The Bus ", "machineTranslated": false, "provider": "VIATOR", "helpfulVotes": 0 }, { "reviewReference": "REV-ytLmIiqg7xWUqJIyCX5x2IXU/a48chrbfdax19evxL8=", "language": "en", "publishedDate": "2020-12-17T18:31:11Z", "userName": "Susanna_L", "rating": 3, "text": "The staff are fantastic but due to COVID the service is only running from 10.00 am to 3.00 pm so I don't think it is worth booking the Hop on Hop off as a way to enjoy Sydney. The train and ferry system in Sydney is amazing so it is better to simply top up an Opal card and go.", "title": "Not good value with COVID restrictions", "machineTranslated": false, "provider": "VIATOR", "helpfulVotes": 3 }, { "reviewReference": "REV-fcMOcpu9m1A///1mQytKvIXU/a48chrbfdax19evxL8=", "language": "en", "publishedDate": "2020-12-10T15:30:35Z", "userName": "Michele_H", "rating": 5, "text": "It was a fantastic trip. The driver was friendly, kind and helpful and went out of his way to ensure I got the return connection from Bondi to the Opera House so I could get back to my hotel. ", "title": "A Must Do Trip Around Sydney!! ", "machineTranslated": false, "provider": "VIATOR", "helpfulVotes": 0, "photosInfo": [ { "photoVersions": [ { "height": 0, "width": 0, "url": "https://hare-dynamic-image-cutter.media.tamg.cloud/media/photo-o/1c/69/c5/02/caption.jpg?w=100&h=100&s=1" }, { "height": 50, "width": 50, "url": "https://hare-media-cdn.tripadvisor.com/media/photo-t/1c/69/c5/02/caption.jpg" }, { "height": 150, "width": 150, "url": "https://hare-media-cdn.tripadvisor.com/media/photo-l/1c/69/c5/02/caption.jpg" }, { "height": 205, "width": 154, "url": "https://hare-media-cdn.tripadvisor.com/media/photo-f/1c/69/c5/02/caption.jpg" }, { "height": 200, "width": 180, "url": "https://hare-media-cdn.tripadvisor.com/media/photo-i/1c/69/c5/02/caption.jpg" }, { "height": 450, "width": 338, "url": "https://hare-media-cdn.tripadvisor.com/media/photo-s/1c/69/c5/02/caption.jpg" }, { "height": 733, "width": 550, "url": "https://hare-media-cdn.tripadvisor.com/media/photo-p/1c/69/c5/02/caption.jpg" }, { "height": 1280, "width": 960, "url": "https://hare-media-cdn.tripadvisor.com/media/photo-m/1280/1c/69/c5/02/caption.jpg" }, { "height": 1365, "width": 1024, "url": "https://hare-media-cdn.tripadvisor.com/media/photo-w/1c/69/c5/02/caption.jpg" } ] } ] }, { "reviewReference": "REV-Q6yPvQx0JhE3xui8rRV/AIXU/a48chrbfdax19evxL8=", "language": "en", "publishedDate": "2020-09-02T05:51:57Z", "userName": "Denise_H", "rating": 5, "text": "I am a local and have always wondered about the commentary. It was fantastic. I would recommend it to anyone.", "title": "Sydney hop on hop off", "machineTranslated": false, "provider": "VIATOR", "helpfulVotes": 1 }, { "reviewReference": "REV-R789jtQQPSIwzjyKLg/rawQdD4ih+e6prjHzsnWBJwI=", "language": "en", "publishedDate": "2020-08-29T03:24:22Z", "userName": "kathryno455", "rating": 4, "text": "This is a great way to see Sydney and Bondi. All hop on hop off buses do take 1-2 hours to complete one whole loop which can get annoying when you only have the ticket for one day and you have many sights to explore. We purchased this ticket to get to Bondi hassle free which we did. Good planning is needed for one day ticket holders!", "title": "Transportation", "machineTranslated": false, "provider": "TRIPADVISOR", "helpfulVotes": 2 }, { "reviewReference": "REV-kEBAXEIoQIFpcgFvYmHv5YXU/a48chrbfdax19evxL8=", "language": "en", "publishedDate": "2020-08-12T22:20:31Z", "userName": "Bertha_B", "rating": 5, "text": "This experience is one memorable one for me and husband. Regardless of the weather we enjoyed the tour. Listening to the history and seeing it at the time was so beautiful. I highly recommend the Hop-on-Hop-off bus if you want to know Sydney CDB well and the History. i will take my kids and Family back there at anytime.\n\nRegards\nBex & Fred", "title": "MEMORABLE EXPERIENCE", "machineTranslated": false, "provider": "VIATOR", "helpfulVotes": 2 }, { "reviewReference": "REV-BA/XoUwy8zr88uv6QaX4a4XU/a48chrbfdax19evxL8=", "language": "en", "publishedDate": "2020-07-26T18:18:03Z", "userName": "Peter_Vassallo", "rating": 5, "text": "We travelled by train from Penrith to Sydney to do some sight seeing . Travelling by bus we covered a lot of ground and the commentary informed us about the many sights . My wife Marina and I Highly Recommend Hop on Hop off Bus Tours .", "title": "Time Out in the City .", "machineTranslated": false, "provider": "VIATOR", "helpfulVotes": 1 }, { "reviewReference": "REV-5CoEYhO9Rr28J4y9YflxxoXU/a48chrbfdax19evxL8=", "language": "en", "publishedDate": "2020-07-21T20:56:43Z", "userName": "Jenny_V", "rating": 5, "text": "Great time. Even the 24 year old, who lives in Sydney, enjoyed the commentary. We have been twice and there is new information each time....Great for overseas travellers..A snapshot of Sydney for a small cost", "title": "Hop on and off...best idea ever", "machineTranslated": false, "provider": "VIATOR", "helpfulVotes": 1 } ], "totalReviewsSummary": { "sources": [ { "provider": "VIATOR", "reviewCounts": [ { "rating": 1, "count": 36 }, { "rating": 2, "count": 100 }, { "rating": 3, "count": 169 }, { "rating": 4, "count": 390 }, { "rating": 5, "count": 578 } ], "totalCount": 1273 }, { "provider": "TRIPADVISOR", "reviewCounts": [ { "rating": 1, "count": 35 }, { "rating": 2, "count": 25 }, { "rating": 3, "count": 49 }, { "rating": 4, "count": 74 }, { "rating": 5, "count": 147 } ], "totalCount": 330 } ], "reviewCountTotals": [ { "rating": 1, "count": 71 }, { "rating": 2, "count": 125 }, { "rating": 3, "count": 218 }, { "rating": 4, "count": 464 }, { "rating": 5, "count": 725 } ], "totalReviews": 1603 }, "filteredReviewsSummary": { "sources": [ { "provider": "VIATOR", "totalCount": 1273 }, { "provider": "TRIPADVISOR", "totalCount": 330 } ], "totalReviews": 1603 } } }, "suppliers-search-product-codes-certified-business-example": { "summary": "Certified Business - Supplier agreed to legal compliance", "value": { "suppliers": [ { "reference": "SUPPLIER-Hy8bCJznTmRf+DsMECR0rw==", "name": "London Executive Airport Transfer", "supplierInfoVerified": false, "supplierAgreedToLegalCompliance": true, "logo": "https://hare-media-cdn.tripadvisor.com/media/attractions-splice-spp-720x480/14/2b/81/16.jpg", "registrationCountry": "GB", "tradeRegisterName": "Companies House", "registeredBusinessNumber": "15201398", "type": "BUSINESS", "productCode": "472736P32", "contact": { "email": "2a7b09a6ef152b85412e5a0aa5a9744e@tripadvisor.com", "address": "18B Otley Road London E16 3JT GB", "phone": "+442081294557", "countryCode": "GB" } } ] } }, "suppliers-search-product-codes-business-example": { "summary": "Business", "value": { "suppliers": [ { "reference": "SUPPLIER-5VKSuubSdpsjjT67V9h0aA==", "name": "City Sightseeing Orlando", "type": "BUSINESS", "productCode": "2855KENNEDY_TKTS", "supplierInfoVerified": true, "contact": { "email": "email@example.com", "address": "1 Example Drive , Suite 100 Orlando Florida 32819 US", "phone": "+1123456789" } } ] } }, "suppliers-search-product-codes-individual-example": { "summary": "Individual - Supplier agreed to legal compliance", "value": { "suppliers": [ { "reference": "SUPPLIER-Ydyu2Yd4RacdUHUUwvWuQA==", "name": "Ph\u00fa L\u00e0nh Travel", "supplierAgreedToLegalCompliance": true, "type": "INDIVIDUAL", "productCode": "383247P2" } ] } }, "amendment-check-response-amendable": { "summary": "Amendable", "value": { "bookingRef": "BR-000000001", "isAmendable": true, "amendmentTypes": [ "BOOKING_DETAILS", "UPDATE_PAX_MIX", "PER_TRAVELER_QUESTIONS", "PER_BOOKING_QUESTIONS" ], "paxMixSummary": [ { "travelerNum": 1, "ageBand": "ADULT", "bookingQuestions": [ { "question": "FULL_NAMES_FIRST", "answer": "John" }, { "question": "FULL_NAMES_LAST", "answer": "Smith" }, { "question": "WEIGHT", "answer": "80", "unit": "KG" } ] }, { "travelerNum": 2, "ageBand": "ADULT", "bookingQuestions": [ { "question": "FULL_NAMES_FIRST", "answer": "Mary" }, { "question": "FULL_NAMES_LAST", "answer": "Smith" }, { "question": "WEIGHT", "answer": "60", "unit": "KG" } ] }, { "travelerNum": 3, "ageBand": "CHILD", "bookingQuestions": [ { "question": "FULL_NAMES_FIRST", "answer": "Jane" }, { "question": "FULL_NAMES_LAST", "answer": "Smith" }, { "question": "WEIGHT", "answer": "40", "unit": "KG" } ] } ] } }, "amendment-check-response-amendable-with-questions-unanswered": { "summary": "Amendable with questions unanswered", "value": { "bookingRef": "BR-000000001", "isAmendable": true, "amendmentTypes": [ "BOOKING_DETAILS", "UPDATE_PAX_MIX", "PER_TRAVELER_QUESTIONS", "PER_BOOKING_QUESTIONS" ], "paxMixSummary": [ { "travelerNum": 1, "ageBand": "ADULT", "bookingQuestions": [ { "question": "FULL_NAMES_FIRST" }, { "question": "FULL_NAMES_LAST" }, { "question": "WEIGHT" } ] }, { "travelerNum": 2, "ageBand": "ADULT", "bookingQuestions": [ { "question": "FULL_NAMES_FIRST" }, { "question": "FULL_NAMES_LAST" }, { "question": "WEIGHT" } ] }, { "travelerNum": 3, "ageBand": "CHILD", "bookingQuestions": [ { "question": "FULL_NAMES_FIRST" }, { "question": "FULL_NAMES_LAST" }, { "question": "WEIGHT" } ] } ] } }, "amendment-check-response-partially-amendable": { "summary": "Partially Amendable", "value": { "bookingRef": "BR-000000001", "isAmendable": true, "amendmentTypes": [ "BOOKING_DETAILS", "PER_BOOKING_QUESTIONS" ] } }, "amendment-check-response-not-amendable": { "summary": "Not Amendable", "value": { "bookingRef": "BR-000000001", "isAmendable": false, "reason": "UNSUPPORTED_PRODUCT" } }, "amendment-quote-request-booking-details": { "summary": "Booking Details", "value": { "bookingRef": "BR-123456789", "bookingDetails": { "startTime": "14:00", "travelDate": "2023-08-20", "productOptionCode": "TG1" }, "voucherFormat": "PDF" } }, "amendment-quote-request-update-pax-mix": { "summary": "Add/Remove PaxMix", "value": { "updatePaxMix": { "removePaxMix": [ { "travelerNum": 1 }, { "travelerNum": 2 } ], "addPaxMix": [ { "travelerNum": 4, "ageBand": "ADULT", "bookingQuestions": [ { "question": "DATE_OF_BIRTH", "answer": "1986-05-25" }, { "question": "FULL_NAMES_FIRST", "answer": "Alice" }, { "question": "FULL_NAMES_LAST", "answer": "Doe" } ] } ] } } }, "amendment-quote-request-per-traveler-questions": { "summary": "Per traveler booking questions", "value": { "bookingRef": "BR-123456789", "perTravelerQuestions": [ { "travelerNum": 1, "bookingQuestions": [ { "question": "DATE_OF_BIRTH", "answer": "1970-01-01" }, { "question": "FULL_NAMES_FIRST", "answer": "John" }, { "question": "FULL_NAMES_LAST", "answer": "Doe" } ] }, { "travelerNum": 2, "bookingQuestions": [ { "question": "DATE_OF_BIRTH", "answer": "1971-10-11" }, { "question": "FULL_NAMES_FIRST", "answer": "Jane" }, { "question": "FULL_NAMES_LAST", "answer": "Doe" } ] } ] } }, "amendment-quote-request-per-booking-questions": { "summary": "Per booking questions", "value": { "bookingRef": "BR-123456789", "perBookingQuestions": [ { "question": "TRANSFER_AIR_ARRIVAL_AIRLINE", "answer": "Qantas" }, { "question": "TRANSFER_AIR_ARRIVAL_FLIGHT_NO", "answer": "QA123" }, { "question": "TRANSFER_ARRIVAL_TIME", "answer": "09:00" }, { "question": "TRANSFER_ARRIVAL_MODE", "answer": "AIR" }, { "question": "TRANSFER_ARRIVAL_DROP_OFF", "answer": "Dump in the sea", "unit": "FREETEXT" }, { "question": "PICKUP_POINT", "answer": "LOC-6eKJ+or5y8o99Qw0C8xWyBUjh6pMvKC4jOdy64DW0Qo=", "unit": "LOCATION_REFERENCE" } ], "voucherFormat": "HTML" } }, "amendment-quote-response-price-changed": { "summary": "Amended (price changed)", "value": { "bookingRef": "BR-123456789", "quoteRef": "QR-4891fddc-7e2e-4203-9517-ec75703daa8a", "status": "CONFIRMED", "quoteExpiresAt": "2023-07-21T03:17:37.494535Z", "initialBookingPrice": 75, "quotePriceDifference": { "recommendedRetailPrice": 100, "partnerNetPrice": 100, "bookingFee": 0, "commission": 20, "partnerTotalPrice": 80 }, "amendedBookingPrice": { "lineItems": [ { "ageBand": "ADULT", "numberOfTravelers": 1, "subtotalPrice": { "price": { "recommendedRetailPrice": 75, "partnerNetPrice": 75 } } }, { "ageBand": "ADULT", "numberOfTravelers": 1, "subtotalPrice": { "price": { "recommendedRetailPrice": 100, "partnerNetPrice": 100 } } } ], "totalPrice": { "price": { "recommendedRetailPrice": 175, "partnerNetPrice": 175, "bookingFee": 0, "commission": 35, "partnerTotalPrice": 140 } } }, "currency": "EUR", "paymentMethod": { "type": "CARD", "identifierType": "CARD_LAST_FOUR", "identifier": 7 } } }, "amendment-quote-response-same-price": { "summary": "Amended (same price)", "value": { "bookingRef": "BR-123456789", "quoteRef": "QR-4891fddc-7e2e-4203-9517-ec75703daa8a", "status": "CONFIRMED", "quoteExpiresAt": "2023-07-21T03:17:37.494535Z", "initialBookingPrice": 75, "quotePriceDifference": { "recommendedRetailPrice": 0, "partnerNetPrice": 0, "bookingFee": 0, "commission": 0, "partnerTotalPrice": 0 }, "amendedBookingPrice": { "lineItems": [ { "ageBand": "ADULT", "numberOfTravelers": 1, "subtotalPrice": { "price": { "recommendedRetailPrice": 75, "partnerNetPrice": 75 } } } ], "totalPrice": { "price": { "recommendedRetailPrice": 75, "partnerNetPrice": 75, "bookingFee": 0, "commission": 15, "partnerTotalPrice": 60 } } }, "currency": "EUR", "paymentMethod": { "type": "CARD", "identifierType": "CARD_LAST_FOUR", "identifier": 7 } } }, "amendment-amend-response-amended": { "summary": "Amended", "value": { "status": "AMENDED", "initialBookingPrice": 75, "quotePriceDifference": { "recommendedRetailPrice": 100, "partnerNetPrice": 100, "bookingFee": 0, "commission": 20, "partnerTotalPrice": 80 }, "amendedBookingPrice": { "lineItems": [ { "ageBand": "ADULT", "numberOfTravelers": 1, "subtotalPrice": { "price": { "recommendedRetailPrice": 75, "partnerNetPrice": 75, "bookingFee": 0 } } }, { "ageBand": "ADULT", "numberOfTravelers": 1, "subtotalPrice": { "price": { "recommendedRetailPrice": 100, "partnerNetPrice": 100 } } } ], "totalPrice": { "price": { "recommendedRetailPrice": 175, "partnerNetPrice": 175, "bookingFee": 0, "commission": 35, "partnerTotalPrice": 140 } } }, "currency": "EUR", "paymentMethod": { "type": "CARD", "identifierType": "CARD_LAST_FOUR", "identifier": 7 }, "voucherInfo": { "url": "https://shop.live.rc.viator.com/ticket?code=1006658118:1176d4aed0e88ffec7faf11e67183edc0cd40d5b5244b30b0cd08aab14f72b4b", "format": "HTML", "type": "STANDARD" } } }, "amendment-amend-response-amended-no-voucher-info": { "summary": "Amended without voucher info", "value": { "status": "PENDING", "initialBookingPrice": 75, "quotePriceDifference": { "recommendedRetailPrice": 0, "partnerNetPrice": 0, "bookingFee": 0, "commission": 0, "partnerTotalPrice": 0 }, "amendedBookingPrice": { "lineItems": [ { "ageBand": "ADULT", "numberOfTravelers": 1, "subtotalPrice": { "price": { "recommendedRetailPrice": 75, "partnerNetPrice": 75 } } } ], "totalPrice": { "price": { "recommendedRetailPrice": 75, "partnerNetPrice": 75 } } }, "currency": "EUR", "paymentMethod": { "type": "CARD", "identifierType": "CARD_LAST_FOUR", "identifier": 7 } } }, "amendment-amend-response-rejected": { "summary": "Amendment Rejected", "value": { "status": "REJECTED", "rejectionReasonCode": "ISSUE_WITH_PICKUP" } } }, "responses": { "BadRequest": { "description": "Bad Request", "headers": { "X-Unique-ID": { "$ref": "#/components/headers/XUniqueId" }, "RateLimit-Limit": { "$ref": "#/components/headers/RateLimit-Limit" }, "RateLimit-Remaining": { "$ref": "#/components/headers/RateLimit-Remaining" }, "RateLimit-Reset": { "$ref": "#/components/headers/RateLimit-Reset" }, "Retry-After": { "$ref": "#/components/headers/Retry-After" } }, "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/ErrorResponse" }, { "type": "object", "properties": { "code": { "description": "Code for this error type\n\n**Example**: `\"BAD_REQUEST\"`\n" }, "message": { "description": "Details of this error\n\n**Example**: `\"Invalid request\"`\n" } } }, { "type": "object", "example": { "code": "BAD_REQUEST", "message": "Invalid request", "timestamp": "2019-09-17T03:20:45.737043Z" } } ] } } } }, "Unauthorized": { "description": "Unauthorized", "headers": { "X-Unique-ID": { "$ref": "#/components/headers/XUniqueId" }, "RateLimit-Limit": { "$ref": "#/components/headers/RateLimit-Limit" }, "RateLimit-Remaining": { "$ref": "#/components/headers/RateLimit-Remaining" }, "RateLimit-Reset": { "$ref": "#/components/headers/RateLimit-Reset" }, "Retry-After": { "$ref": "#/components/headers/Retry-After" } }, "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/ErrorResponse" }, { "type": "object", "properties": { "code": { "description": "Code for this error type\n\n**Example**: `\"UNAUTHORIZED\"`\n" }, "message": { "description": "Details of this error\n\n**Example**: `\"Invalid API Key\"`\n" } } }, { "type": "object", "example": { "code": "UNAUTHORIZED", "message": "Invalid API Key", "timestamp": "2019-09-17T03:20:45.737043Z" } } ] } } } }, "Forbidden": { "description": "Forbidden", "headers": { "X-Unique-ID": { "$ref": "#/components/headers/XUniqueId" }, "RateLimit-Limit": { "$ref": "#/components/headers/RateLimit-Limit" }, "RateLimit-Remaining": { "$ref": "#/components/headers/RateLimit-Remaining" }, "RateLimit-Reset": { "$ref": "#/components/headers/RateLimit-Reset" }, "Retry-After": { "$ref": "#/components/headers/Retry-After" } }, "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/ErrorResponse" }, { "type": "object", "properties": { "code": { "description": "Code for this error type\n\n**Example**: `\"FORBIDDEN\"`\n" }, "message": { "description": "Details of this error\n\n**Example**: `\"Request is forbidden\"`\n" } }, "example": { "code": "FORBIDDEN", "message": "Request is forbidden", "timestamp": "2019-09-17T03:20:45.737043Z" } } ] } } } }, "NotFound": { "description": "Not Found", "headers": { "X-Unique-ID": { "$ref": "#/components/headers/XUniqueId" }, "RateLimit-Limit": { "$ref": "#/components/headers/RateLimit-Limit" }, "RateLimit-Remaining": { "$ref": "#/components/headers/RateLimit-Remaining" }, "RateLimit-Reset": { "$ref": "#/components/headers/RateLimit-Reset" }, "Retry-After": { "$ref": "#/components/headers/Retry-After" } }, "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/ErrorResponse" }, { "type": "object", "properties": { "code": { "description": "Code for this error type\n\n**Example**: `\"NOT_FOUND\"`\n" }, "message": { "description": "Details of this error\n\n**Example**: `\"The specified resource was not found\"`\n" } } }, { "type": "object", "example": { "code": "NOT_FOUND", "message": "The specified resource was not found", "timestamp": "2019-09-17T03:20:45.737043Z" } } ] } } } }, "TooManyRequests": { "description": "Too Many Requests", "headers": { "X-Unique-ID": { "$ref": "#/components/headers/XUniqueId" }, "RateLimit-Limit": { "$ref": "#/components/headers/RateLimit-Limit" }, "RateLimit-Remaining": { "$ref": "#/components/headers/RateLimit-Remaining" }, "RateLimit-Reset": { "$ref": "#/components/headers/RateLimit-Reset" }, "Retry-After": { "$ref": "#/components/headers/Retry-After" } }, "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/ErrorResponse" }, { "type": "object", "properties": { "code": { "description": "Code for this error type\n\n**Example**: `\"TOO_MANY_REQUESTS\"`\n\nSee [Workflows - Rate limiting](#section/Workflows/Rate-limiting) for more information about this error.\n" }, "message": { "description": "Details of this error\n\n**Example**: `\"Too many requests, please try again\"`\n" } } }, { "type": "object", "example": { "code": "TOO_MANY_REQUESTS", "message": "Too many requests", "timestamp": "2019-09-17T03:20:45.737043Z" } } ] } } } }, "InternalServerError": { "description": "Internal Server Error", "headers": { "X-Unique-ID": { "$ref": "#/components/headers/XUniqueId" }, "RateLimit-Limit": { "$ref": "#/components/headers/RateLimit-Limit" }, "RateLimit-Remaining": { "$ref": "#/components/headers/RateLimit-Remaining" }, "RateLimit-Reset": { "$ref": "#/components/headers/RateLimit-Reset" }, "Retry-After": { "$ref": "#/components/headers/Retry-After" } }, "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/ErrorResponse" }, { "type": "object", "properties": { "code": { "description": "Code for this error type\n\n**Example**: `\"INTERNAL_SERVER_ERROR\"`\n" }, "message": { "description": "Details of this error\n\n**Example**: `\"Internal server error\"`\n" } } }, { "type": "object", "example": { "code": "INTERNAL_SERVER_ERROR", "message": "Internal Server Error", "timestamp": "2019-09-17T03:20:45.737043Z" } } ] } } } }, "ServiceUnavailable": { "description": "Service Unavailable", "headers": { "X-Unique-ID": { "$ref": "#/components/headers/XUniqueId" }, "Retry-After": { "$ref": "#/components/headers/Retry-After" } }, "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/ErrorResponse" }, { "type": "object", "properties": { "code": { "description": "Code for this error type\n\n**Example**: `\"SERVICE_UNAVAILABLE\"`\n" }, "message": { "description": "Details of this error\n\n**Example**: `\"Service unavailable\"`\n" } } }, { "type": "object", "example": { "code": "SERVICE_UNAVAILABLE", "message": "Service Unavailable", "timestamp": "2019-09-17T03:20:45.737043Z" } } ] } } } }, "MethodNotAllowed": { "description": "HTTP Method Not Allowed", "headers": { "X-Unique-ID": { "$ref": "#/components/headers/XUniqueId" }, "RateLimit-Limit": { "$ref": "#/components/headers/RateLimit-Limit" }, "RateLimit-Remaining": { "$ref": "#/components/headers/RateLimit-Remaining" }, "RateLimit-Reset": { "$ref": "#/components/headers/RateLimit-Reset" }, "Retry-After": { "$ref": "#/components/headers/Retry-After" } }, "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/ErrorResponse" }, { "type": "object", "properties": { "code": { "description": "Code for this error type\n\n**Example**: `\"METHOD_NOT_ALLOWED\"`\n" }, "message": { "description": "Details of this error\n\n**Example**: `\"HTTP 405 Method Not Allowed\"`\n" } } }, { "type": "object", "example": { "code": "METHOD_NOT_ALLOWED", "message": "HTTP 405 Method Not Allowed", "timestamp": "2019-09-17T03:20:45.737043Z" } } ] } } } }, "NotAcceptable": { "description": "Not Acceptable", "headers": { "X-Unique-ID": { "$ref": "#/components/headers/XUniqueId" }, "RateLimit-Limit": { "$ref": "#/components/headers/RateLimit-Limit" }, "RateLimit-Remaining": { "$ref": "#/components/headers/RateLimit-Remaining" }, "RateLimit-Reset": { "$ref": "#/components/headers/RateLimit-Reset" }, "Retry-After": { "$ref": "#/components/headers/Retry-After" } }, "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/ErrorResponse" }, { "type": "object", "properties": { "code": { "description": "Code for this error type\n\n**Example**: `\"NOT_ACCEPTABLE\"`\n" }, "message": { "description": "Details of this error\n\n**Example**: `\"Not acceptable\"`\n" } } }, { "type": "object", "example": { "code": "NOT_ACCEPTABLE", "message": "Not acceptable", "timestamp": "2019-09-17T03:20:45.737043Z" } } ] } } } } } } }