openapi: 3.2.0
info:
title: Viator Reservation System Deprecated API
x-logo:
url: resources/img/sapi/Viator_Logo_RGB_Green.png
altText: Viator
href: https://www.viator.com
contact:
name: API Integrations Support
email: supplierAPI@viator.com
version: ''
description: "\n\n# Introduction\nThese API specifications detail the technical requirements for integrating operator reservation systems with Viator. This guide is intended for developers and technical teams to ensure a standardized implementation and reliable data exchange.\n\n# Prerequisites\nAccess is restricted to operators registered with Viator and their authorized reservation system providers. Integration workflows may only proceed following technical evaluation and formal approval by Viator.\n\nFurthermore, development **may only commence** if Viator registered operators are using the reservation system. For operator onboarding details, please refer to the [supplier sign-up page](https://supplier.viator.com/sign-up-info).\n\n# Getting Started\nReview the following core components to begin your implementation:\n\n- [What’s new](#tag/What's-new)\n- [Connectivity overview](#tag/Connectivity-overview)\n- [API overview](#tag/API-overview)\n- [Implementation approach](#tag/Implementation-approach)\n- [Frequently asked questions](#tag/FAQs)\n\nAdherence to these specifications is crucial for successful integration, guaranteeing optimal performance, data integrity, and a superior user experience for both operators and Viator customers. \n\nIf at any point you need clarification or help, please don’t hesitate to [contact us here](#tag/Contact-us).\n"
servers:
- url: https://your-reservation-system.example.com
description: Placeholder for the reservation system's own server — replace with your actual domain. Viator calls this host for all operations except event and special offer notifications, which are sent by the reservation system to Viator instead (see below).
tags:
- name: Deprecated
description: 'This section lists endpoints that are no longer recommended for new or updated integrations. These endpoints remain available for existing connections only, will stop receiving new features or behavior improvements, and will eventually be retired once an end-of-life procedure is agreed with Viator (see the [v2 migration guide](#tag/v2-migration-guide) for details).
For all new development, use the current, fully supported endpoints documented in the main sections of this guide.
### REST v1.0 endpoints — deprecated
- [Real-time Availability API](#operation/availability) — superseded by the Availability Check API and Reserve API
- [Batch Availability API](#operation/batchAvailability) — superseded by the Calendar API
- [Batch Pricing API](#operation/batchPricing) — superseded by the Calendar API
- [Availability Notifications (2) API](#operation/availabilityNotification2) — superseded by the Event Notifications API
### Data format: XML — deprecated
XML (`application/xml`) requests and responses are deprecated. **New integrations must use JSON (`application/json`) exclusively.** XML remains available for existing v1.0 integrations only and will receive no new features or behavior improvements. All v2.0 endpoints are JSON-only. XML will eventually be retired once an end-of-life procedure is agreed with Viator.
### SOAP interface (WSDL/XSD) — deprecated
The legacy SOAP interface definitions are deprecated. SOAP is no longer supported for new or updated integrations; use the REST endpoints documented in the main sections of this guide instead.
The WSDL and XSD files are kept for historical reference only:
- [Reseller-to-supplier WSDL](resources/api_specs/wsdl/tgds-reseller-to-supplier.wsdl)
- [Supplier-to-reseller WSDL](resources/api_specs/wsdl/tgds-supplier-to-reseller.wsdl)
- [API XSD](resources/api_specs/xsd/api.xsd)
'
paths:
/availability:
post:
summary: Real-time Availability
operationId: availability
tags:
- Deprecated
description: "The Real-time Availability API (v1.0) enables Viator to instantly verify the capacity and availability of a product or product option for a specified number of passengers. \n\nThis versatile API allows reservation systems to provide tour availability data for single dates or a range of dates. Viator then uses this information to either allow (if available) or prevent (if unavailable) customer bookings.\n\nWhen used for a **single date**, the API's main purpose is to confirm real-time availability during a customer's booking process for a specific date and passenger count. If the reservation system confirms availability, the customer can complete their booking. This direct check with the reservation system is expected to decrease booking rejections and increase last-minute reservations.\n\nTo reduce latency, Viator also conducts periodic single-date availability checks, though these do not include traveler mix information as they are not tied to user activity. \n\nIn contrast, when the Availability API is used with a **date range**, its aim is to determine future availability. This data is stored within Viator's systems, allowing for caching of availability information. This cached data is crucial in situations where the reservation system cannot be accessed for real-time availability checks (e.g., due to a communication line disruption).\n\n### Supported customer booking flows\nAs the customer progresses through their workflow, real-time availability requests are made at three distinct stages. Below lists key information in requests and responses:\n1. **Product and Date Selection**: When the traveler chooses a product, a specific travel date, and their desired traveler mix.\n - Requests include: `StartDate`, `SupplierProductCode`, and `TravellerMix`.\n - Response returns: All available `TourOptions` for customer selection.\n2. **Product option selection and adding to Cart**: After the traveler selects a product option and adds the product to their shopping cart.\n - Requests include: `StartDate`, `SupplierProductCode`, `TourOptions` and `TravellerMix`.\n - Response returns: Availability status for the requested product variant defined by `SupplierProductCode` and `TourOptions` and `TravellerMix`. \n3. **Checkout**: When the traveler proceeds to the checkout process.\n - Requests include: `StartDate`, `SupplierProductCode`, `TravellerMix`, `TourOptions`, and `AvailabilityHold`.\n - Response returns: Availability and inventory hold status for the requested product variant defined by `SupplierProductCode` and `TourOptions` and `TravellerMix`.\n"
requestBody:
content:
application/json:
schema:
allOf:
- type: object
properties:
requestType:
type: string
description: '`AvailabilityRequest`'
- type: object
properties:
data:
$ref: '#/components/schemas/AvailabilityRequest'
required:
- requestType
- data
examples:
workflow1:
$ref: '#/components/examples/availabilityRequestWorkflow1Json'
workflow2:
$ref: '#/components/examples/availabilityRequestWorkflow2Json'
workflow3:
$ref: '#/components/examples/availabilityRequestWorkflow3Json'
singleDate:
$ref: '#/components/examples/availabilitySingleDateRequestJson'
dateRange:
$ref: '#/components/examples/availabilityDateRangeRequestJson'
application/xml:
schema:
allOf:
- type: object
properties:
AvailabilityRequest:
$ref: '#/components/schemas/AvailabilityRequest'
required:
- AvailabilityRequest
examples:
workflow1:
$ref: '#/components/examples/availabilityRequestWorkflow1Xml'
workflow2:
$ref: '#/components/examples/availabilityRequestWorkflow2Xml'
workflow3:
$ref: '#/components/examples/availabilityRequestWorkflow3Xml'
singleDate:
$ref: '#/components/examples/availabilitySingleDateRequestXml'
dateRange:
$ref: '#/components/examples/availabilityDateRangeRequestXml'
responses:
'200':
description: Success
content:
application/json:
schema:
allOf:
- type: object
properties:
responseType:
type: string
description: '`AvailabilityResponse`'
- type: object
properties:
data:
$ref: '#/components/schemas/AvailabilityResponse'
required:
- responseType
- data
examples:
singleDate:
$ref: '#/components/examples/availabilitySingleDateResponseJson'
dateRange:
$ref: '#/components/examples/availabilityDateRangeResponseJson'
application/xml:
schema:
allOf:
- type: object
properties:
AvailabilityResponse:
$ref: '#/components/schemas/AvailabilityResponse'
required:
- AvailabilityResponse
examples:
singleDate:
$ref: '#/components/examples/availabilitySingleDateResponseXml'
dateRange:
$ref: '#/components/examples/availabilityDateRangeResponseXml'
/batch-availability:
post:
summary: Batch Availability
operationId: batchAvailability
tags:
- Deprecated
description: "The Batch Availability API (v1.0) enables Viator to efficiently determine capacity/availability for a future date range using a pull-based method. \n\nReservation systems share availability/capacity of all operator products and associated options across a specified future date range through this API. Upon receiving this information, Viator's systems are updated to either permit (available) or prohibit (unavailable) bookings. \n\nThis proactive approach provides operators control over future bookings and helps drive customers to remaining available dates according to the capacity returned by the reservation system.\n"
requestBody:
content:
application/json:
schema:
allOf:
- type: object
properties:
requestType:
type: string
description: '`BatchAvailabilityRequest`'
- type: object
properties:
data:
$ref: '#/components/schemas/BatchAvailabilityRequest'
required:
- requestType
- data
examples:
batchAvailabilityRequest:
$ref: '#/components/examples/batchAvailabilityRequestJson'
application/xml:
schema:
allOf:
- type: object
properties:
BatchAvailabilityRequest:
$ref: '#/components/schemas/BatchAvailabilityRequest'
required:
- BatchAvailabilityRequest
examples:
batchAvailabilityRequest:
$ref: '#/components/examples/batchAvailabilityRequestXml'
responses:
'200':
description: Success
content:
application/json:
schema:
allOf:
- type: object
properties:
responseType:
type: string
description: '`BatchAvailabilityResponse`'
- type: object
properties:
data:
$ref: '#/components/schemas/BatchAvailabilityResponse'
required:
- responseType
- data
examples:
singleDate:
$ref: '#/components/examples/batchAvailabilitySingleDateResponseJson'
dateRange:
$ref: '#/components/examples/batchAvailabilityDateRangeResponseJson'
application/xml:
schema:
allOf:
- type: object
properties:
BatchAvailabilityResponse:
$ref: '#/components/schemas/BatchAvailabilityResponse'
required:
- BatchAvailabilityResponse
examples:
singleDate:
$ref: '#/components/examples/batchAvailabilitySingleDateResponseXml'
dateRange:
$ref: '#/components/examples/batchAvailabilityDateRangeResponseXml'
/batch-pricing:
post:
summary: Batch Pricing
operationId: batchPricing
tags:
- Deprecated
description: '**Note**: The Batch Pricing API must only be implemented after agreement with Viator. If you wish to use this API, inform your Viator API account manager before any development begins.
The Batch Pricing API (v1.0) enables reservation systems to provide Viator with bulk pricing information for operators'' products.
For guidance on mapping Viator Pricing Rates (Age Bands) to external pricing rates, refer to the [Pricing rates mapping](#tag/API-configurations/Pricing-rates-mapping).
'
requestBody:
content:
application/json:
schema:
allOf:
- type: object
properties:
requestType:
type: string
description: '`BatchPricingRequest`'
- type: object
properties:
data:
$ref: '#/components/schemas/BatchPricingRequest'
required:
- requestType
- data
examples:
batchPricingRequest:
$ref: '#/components/examples/batchPricingRequestJson'
application/xml:
schema:
allOf:
- type: object
properties:
BatchPricingRequest:
$ref: '#/components/schemas/BatchPricingRequest'
required:
- BatchPricingRequest
examples:
batchPricingRequest:
$ref: '#/components/examples/batchPricingRequestXml'
responses:
'200':
description: Success
content:
application/json:
schema:
allOf:
- type: object
properties:
responseType:
type: string
description: '`BatchPricingResponse`'
- type: object
properties:
data:
$ref: '#/components/schemas/BatchPricingResponse'
required:
- responseType
- data
examples:
batchPricingResponse:
$ref: '#/components/examples/batchPricingResponseJson'
application/xml:
schema:
allOf:
- type: object
properties:
BatchPricingResponse:
$ref: '#/components/schemas/BatchPricingResponse'
required:
- BatchPricingResponse
examples:
batchPricingResponse:
$ref: '#/components/examples/batchPricingResponseXml'
/availabilitynotification2:
post:
summary: Availability Notification 2
operationId: availabilityNotification2
tags:
- Deprecated
description: "The Availability Notification 2 API (v1.0) provides reservation systems with the ability to notify Viator when changes to the availability of products occur. \n\nThis allows Viator to immediately either permit or prohibit bookings on dates that have either been made available or unavailable respectively.\n"
requestBody:
content:
application/json:
schema:
allOf:
- type: object
properties:
requestType:
type: string
description: '`AvailabilityNotification2Request`'
- type: object
properties:
data:
$ref: '#/components/schemas/AvailabilityNotification2Request'
required:
- requestType
- data
examples:
availabilityNotification:
$ref: '#/components/examples/availabilityNotification2RequestJson'
application/xml:
schema:
allOf:
- type: object
properties:
AvailabilityNotification2Request:
$ref: '#/components/schemas/AvailabilityNotification2Request'
required:
- AvailabilityNotification2Request
examples:
availabilityNotification:
$ref: '#/components/examples/availabilityNotification2RequestXml'
responses:
'200':
description: Success
content:
application/json:
schema:
allOf:
- type: object
properties:
responseType:
type: string
description: '`AvailabilityNotification2Response`'
- type: object
properties:
data:
$ref: '#/components/schemas/AvailabilityNotification2Response'
required:
- responseType
- data
examples:
availabilityNotification2ResponseRequest:
$ref: '#/components/examples/availabilityNotification2ResponseJson'
application/xml:
schema:
allOf:
- type: object
properties:
AvailabilityNotification2Response:
$ref: '#/components/schemas/AvailabilityNotification2Response'
required:
- AvailabilityNotification2Response
examples:
availabilityNotification2ResponseRequest:
$ref: '#/components/examples/availabilityNotification2ResponseXml'
components:
examples:
batchPricingResponseXml:
value: "\n\n xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n 1000\n 1004\n 10051374722992617\n 2019-06-26T20:40:55.375Z\n \n SUCCESS\n \n USD\n \n 2020-06-20\n BLUE\n \n BASIC\n Basic Shared Accommodation\n 17:00:00\n \n \n \n 10.0\n Infant\n \n \n 10.0\n Child\n \n \n 10.0\n Youth\n \n \n 10.0\n Adult\n \n \n 10.0\n Senior\n \n \n \n AVAILABLE\n \n \n \n 2020-06-21\n BLUE\n \n BASIC\n Basic Shared Accommodation\n 17:00:00\n \n \n \n 45.99\n Infant\n \n \n 45.99\n Child\n \n \n 45.99\n Youth\n \n \n 45.99\n Adult\n \n \n 45.99\n Senior\n \n \n \n AVAILABLE\n \n \n \n\n"
batchAvailabilityDateRangeResponseJson:
summary: Date range / single product response
value:
responseType: BatchAvailabilityResponse
data:
ApiKey: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ResellerId: '1000'
SupplierId: 1004
ExternalReference: '10051374722992616'
Timestamp: '2013-07-25T13:29:52.616+10:00'
RequestStatus:
Status: SUCCESS
BatchTourAvailability:
- Date: '2014-10-30'
TourOptions:
SupplierOptionCode: BASIC
SupplierOptionName: Basic Shared Accommodation
TourDepartureTime: 09:00:00
Option:
- Name: Room
Value: dualocc
SupplierProductCode: BLUE
AvailabilityStatus:
Status: UNAVAILABLE
UnavailabilityReason: SOLD_OUT
VersionTag:
Numeric: 5539573495734986
- Date: '2014-10-31'
TourOptions:
SupplierOptionCode: BASIC
SupplierOptionName: Basic Shared Accommodation
TourDepartureTime: 09:00:00
Option:
- Name: Room
Value: dualocc
SupplierProductCode: BLUE
AvailabilityStatus:
Status: UNAVAILABLE
UnavailabilityReason: SOLD_OUT
VersionTag:
Numeric: 5539573495734987
availabilityRequestWorkflow2Xml:
summary: Workflow stage 2 - Product option selected
value: "\n\n xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n 1000\n 1004\n 10051374722992616\n 2013-07-25T13:29:52.616+10:00\n 2014-10-31\n BLUE\n \n BASIC\n Basic Shared Accommodation\n 09:00:00\n \n \n \n 1\n 1\n 0\n 0\n 0\n 2\n \n\n"
availabilitySingleDateRequestXml:
summary: Single-date request
value: "\n\n xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n 1000\n 1004\n 10051374722992616\n 2013-07-25T13:29:52.616+10:00\n 2014-10-30\n \n BLUE\n \n BASIC\n Basic Shared Accommodation\n 09:00:00\n \n \n \n PT300S\n \n \n 1\n 1\n 0\n 1\n 0\n 3\n \n\n"
availabilitySingleDateResponseJson:
summary: Single-date response
value:
responseType: AvailabilityResponse
data:
ApiKey: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ResellerId: '1000'
SupplierId: 1004
ExternalReference: '10051374722992616'
Timestamp: '2013-07-25T13:29:52.616+10:00'
RequestStatus:
Status: SUCCESS
SupplierProductCode: BLUE
TourAvailability:
- Date: '2014-10-31'
BookingCutoff:
ProductDateTime: '2014-10-29T12:13:14'
TourOptions:
SupplierOptionCode: BASIC
SupplierOptionName: Basic Shared Accommodation
TourDepartureTime: 09:00:00
Option:
- Name: Room
Value: dualocc
AvailabilityStatus:
Status: AVAILABLE
TravellerMixAvailability:
Adult: true
Child: true
Youth: true
Infant: true
Senior: true
Price:
CurrencyCode: EUR
Item:
- RetailPrice: 112
AgeBand: Adult
- RetailPrice: 90
AgeBand: Child
- RetailPrice: 50
AgeBand: Infant
AvailabilityHold:
Expiry: PT300S
Reference: 1K883383K2S12K883383K2S57K883383K2
Capacity:
Simple:
Remaining: 10
ConsumedBy:
- ADULT
- YOUTH
VersionTag:
Textual: 20130705-V000000231434
availabilityDateRangeResponseJson:
summary: Date-range response
value:
responseType: AvailabilityResponse
data:
ApiKey: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ResellerId: '1000'
SupplierId: 1004
ExternalReference: '10051374722992616'
Timestamp: '2013-07-25T13:29:52.616+10:00'
RequestStatus:
Status: SUCCESS
SupplierProductCode: BLUE
TourAvailability:
- Date: '2014-10-30'
BookingCutoff:
ProductDateTime: '2014-10-29T12:13:14'
TourOptions:
SupplierOptionCode: BASIC
SupplierOptionName: Basic Shared Accommodation
TourDepartureTime: ''
Option:
- Name: Room
Value: dualocc
AvailabilityStatus:
Status: AVAILABLE
Capacity:
Simple:
Remaining: 10
ConsumedBy:
- ADULT
- YOUTH
VersionTag:
Textual: 20130705-V000000231435
- Date: '2014-10-31'
BookingCutoff:
ProductDateTime: '2014-10-29T12:13:14'
TourOptions:
SupplierOptionCode: BASIC
SupplierOptionName: Basic Shared Accommodation
TourDepartureTime: ''
Option:
- Name: Room
Value: dualocc
AvailabilityStatus:
Status: UNAVAILABLE
UnavailabilityReason: SOLD_OUT
VersionTag:
Textual: 20130705-V000000231436
availabilityRequestWorkflow1Xml:
summary: Workflow stage 1 - Product and date selected
value: "\n\n xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n 1000\n 1004\n 10051374722992616\n 2013-07-25T13:29:52.616+10:00\n 2014-10-31\n BLUE\n \n 1\n 1\n 0\n 0\n 0\n 2\n \n\n"
availabilityRequestWorkflow1Json:
summary: Workflow stage 1 - Product and date selected
value:
requestType: AvailabilityRequest
data:
ApiKey: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ResellerId: '1000'
SupplierId: 1004
ExternalReference: '10051374722992616'
Timestamp: '2013-07-25T13:29:52.616+10:00'
StartDate: '2014-10-31'
SupplierProductCode: BLUE
TravellerMix:
Adult: 1
Child: 1
Youth: 0
Infant: 0
Senior: 0
Total: 2
batchAvailabilityRequestJson:
value:
requestType: BatchAvailabilityRequest
data:
ApiKey: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ResellerId: '1000'
SupplierId: 1004
ExternalReference: '1023_2936275621425724'
Timestamp: '2020-01-14T13:04:27.500Z'
StartDate: '2020-01-14'
EndDate: '2020-02-13'
Mode: ALL
availabilityDateRangeRequestJson:
summary: Date-range request
value:
requestType: AvailabilityRequest
data:
ApiKey: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ResellerId: '1000'
SupplierId: 1004
ExternalReference: '10051374722992616'
Timestamp: '2013-07-25T13:29:52.616+10:00'
StartDate: '2014-10-30'
EndDate: '2014-10-31'
SupplierProductCode: BLUE
TourOptions:
SupplierOptionCode: BASIC
Option:
- Name: Room
Value: dualocc
TravellerMix:
Adult: 1
Child: 1
Youth: 0
Infant: 1
Senior: 0
Total: 3
availabilityRequestWorkflow3Xml:
summary: Workflow stage 3 - Product checkout (with availability hold)
value: "\n\n xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n 1000\n 1004\n 10051374722992616\n 2013-07-25T13:29:52.616+10:00\n 2014-10-31\n BLUE\n \n BASIC\n Basic Shared Accommodation\n 09:00:00\n \n \n \n PT300S\n \n \n 1\n 1\n 0\n 0\n 0\n 2\n \n\n"
availabilityNotification2ResponseXml:
value: "\n\n xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n 1000\n 1004\n 10061374722913835\n 2021-04-06T10:14:37.682Z\n \n SUCCESS\n \n\n"
batchAvailabilityRequestXml:
value: "\n\n xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n 1000\n 1004\n 1023_2936275621425724\n 2020-01-14T13:04:27.500Z\n 2020-01-14\n 2020-02-13\n ALL\n\n"
availabilityNotification2RequestXml:
value: "\n xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n 1000\n 1004\n 10061374722913835\n 2021-04-06T10:14:37.682Z\n \n 6470\n \n r11811\n 09:00:00\n \n \n \n 2021-04-06\n \n UNAVAILABLE\n SOLD_OUT\n \n \n 2021-04-06T10:14:37.682Z\n \n \n \n\n"
batchPricingRequestJson:
value:
requestType: BatchPricingRequest
data:
ApiKey: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ResellerId: '1000'
SupplierId: 1004
ExternalReference: '10051374722992617'
Timestamp: '2019-06-26T20:40:55.375Z'
StartDate: '2020-06-20'
EndDate: '2020-06-21'
SupplierProductCode:
- BLUE
availabilitySingleDateResponseXml:
summary: Single-date response
value: "\n\n xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n 1000\n 1004\n 10051374722992616\n 2013-07-25T13:29:52.616+10:00\n \n SUCCESS\n \n BLUE\n \n 2014-10-31\n \n 2014-10-29T12:13:14\n \n \n BASIC\n Basic Shared Accommodation\n 09:00:00\n \n \n \n AVAILABLE\n \n true\n true\n true\n true\n true\n \n \n \n PT300S\n 1K883383K2S12K883383K2S57K883383K2\n \n \n \n 10\n ADULT\n YOUTH\n \n \n \n 20130705-V000000231434\n \n \n\n"
batchPricingResponseJson:
value:
responseType: BatchPricingResponse
data:
ApiKey: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ResellerId: '1000'
SupplierId: 1004
ExternalReference: '10051374722992617'
Timestamp: '2019-06-26T20:40:55.375Z'
RequestStatus:
Status: SUCCESS
CurrencyCode: USD
BatchTourPricing:
- Date: '2020-06-20'
SupplierProductCode: BLUE
TourOptions:
SupplierOptionCode: BASIC
SupplierOptionName: Basic Shared Accommodation
TourDepartureTime: '17:00:00'
BatchPrice:
Item:
- RetailPrice: 10
AgeBand: Infant
- RetailPrice: 10
AgeBand: Child
- RetailPrice: 10
AgeBand: Youth
- RetailPrice: 10
AgeBand: Adult
- RetailPrice: 10
AgeBand: Senior
AvailabilityStatus:
Status: AVAILABLE
- Date: '2020-06-21'
SupplierProductCode: BLUE
TourOptions:
SupplierOptionCode: BASIC
SupplierOptionName: Basic Shared Accommodation
TourDepartureTime: '17:00:00'
BatchPrice:
Item:
- RetailPrice: 45.99
AgeBand: Infant
- RetailPrice: 45.99
AgeBand: Child
- RetailPrice: 45.99
AgeBand: Youth
- RetailPrice: 45.99
AgeBand: Adult
- RetailPrice: 45.99
AgeBand: Senior
AvailabilityStatus:
Status: AVAILABLE
availabilitySingleDateRequestJson:
summary: Single-date request
value:
requestType: AvailabilityRequest
data:
ApiKey: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ResellerId: '1000'
SupplierId: 1004
ExternalReference: '10051374722992616'
Timestamp: '2013-07-25T13:29:52.616+10:00'
StartDate: '2014-10-30'
EndDate: ''
SupplierProductCode: BLUE
TourOptions:
SupplierOptionCode: BASIC
SupplierOptionName: Basic Shared Accommodation
TourDepartureTime: 09:00:00
Option:
- Name: Room
Value: dualocc
AvailabilityHold:
Expiry: PT300S
TravellerMix:
Adult: 1
Child: 1
Youth: 0
Infant: 1
Senior: 0
Total: 3
availabilityNotification2RequestJson:
value:
requestType: AvailabilityNotification2Request
data:
ApiKey: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ResellerId: '1000'
SupplierId: 1004
ExternalReference: '10051374722992850'
Timestamp: '2021-03-15T10:14:37.682Z'
VariantAvailability:
SupplierProductCode: '6482'
TourOptions:
SupplierOptionCode: r11828
TourDepartureTime: 08:00:00
Option:
- Name: pickup
Value: Y
DateAvailability:
- Date: '2021-03-15'
AvailabilityStatus:
Status: UNAVAILABLE
UnavailabilityReason: SOLD_OUT
VersionTag:
Textual: '2021-03-15T10:14:37.682Z'
availabilityDateRangeResponseXml:
summary: Range-date response
value: "\n\n xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n 1000\n 1004\n 10051374722992616\n 2013-07-25T13:29:52.616+10:00\n \n SUCCESS\n \n BLUE\n \n 2014-10-30\n \n 2014-10-29T12:13:14\n \n \n BASIC\n Basic Shared Accommodation\n \n \n \n \n AVAILABLE\n \n \n \n 10\n ADULT\n YOUTH\n \n \n \n 20130705-V000000231435\n \n \n \n 2014-10-31\n \n 2014-10-29T12:13:14\n \n \n BASIC\n Basic Shared Accommodation\n \n \n \n \n UNAVAILABLE\n SOLD_OUT\n \n \n 20130705-V000000231436\n \n \n\n"
batchPricingRequestXml:
value: "\n\n xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n 1000\n 1004\n 10051374722992617\n 2019-06-26T20:40:55.375Z\n 2020-06-20\n 2020-06-21\n BLUE\n\n"
availabilityRequestWorkflow3Json:
summary: Workflow stage 3 - Product checkout (with availability hold)
value:
requestType: AvailabilityRequest
data:
ApiKey: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ResellerId: '1000'
SupplierId: 1004
ExternalReference: '10051374722992616'
Timestamp: '2013-07-25T13:29:52.616+10:00'
StartDate: '2014-10-31'
SupplierProductCode: BLUE
TourOptions:
SupplierOptionCode: BASIC
SupplierOptionName: Basic Shared Accommodation
TourDepartureTime: 09:00:00
Option:
- Name: Room
Value: dualocc
AvailabilityHold:
Expiry: PT300S
TravellerMix:
Adult: 1
Child: 1
Youth: 0
Infant: 0
Senior: 0
Total: 2
batchAvailabilityDateRangeResponseXml:
summary: Date range / single product response
value: "\n\n xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n 1000\n 1004\n 10051374722992616\n 2013-07-25T13:29:52.616+10:00\n \n SUCCESS\n \n \n 2014-10-30\n \n BASIC\n Basic Shared Accommodation\n 09:00:00\n \n \n BLUE\n \n UNAVAILABLE\n SOLD_OUT\n \n \n 5539573495734986\n \n \n \n 2014-10-31\n \n BASIC\n Basic Shared Accommodation\n 09:00:00\n \n \n BLUE\n \n UNAVAILABLE\n SOLD_OUT\n \n \n 5539573495734987\n \n \n\n"
batchAvailabilitySingleDateResponseXml:
summary: Single date / multiple products response
value: "\n\n xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n 1000\n 1004\n 10051374722992616\n 2013-07-25T13:29:52.616+10:00\n \n SUCCESS\n \n \n 2014-10-01\n \n BASIC\n Basic Shared Accommodation\n 09:00:00\n \n \n BLUE\n \n UNAVAILABLE\n SOLD_OUT\n \n \n 553957349573497\n \n \n \n 2014-10-01\n \n 9AM\n Bondi Beach Private Lesson 9AM\n 09:00:00\n \n \n BON_GRO\n \n AVAILABLE\n \n \n 553957349573498\n \n \n\n"
availabilityNotification2ResponseJson:
value:
responseType: AvailabilityNotification2Response
data:
ApiKey: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ResellerId: '1000'
SupplierId: 1004
ExternalReference: '10061374722913835'
Timestamp: '2021-04-06T10:14:37.682Z'
RequestStatus:
Status: SUCCESS
availabilityRequestWorkflow2Json:
summary: Workflow stage 2 - Product option selected
value:
requestType: AvailabilityRequest
data:
ApiKey: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ResellerId: '1000'
SupplierId: 1004
ExternalReference: '10051374722992616'
Timestamp: '2013-07-25T13:29:52.616+10:00'
StartDate: '2014-10-31'
SupplierProductCode: BLUE
TourOptions:
SupplierOptionCode: BASIC
SupplierOptionName: Basic Shared Accommodation
TourDepartureTime: 09:00:00
Option:
- Name: Room
Value: dualocc
TravellerMix:
Adult: 1
Child: 1
Youth: 0
Infant: 0
Senior: 0
Total: 2
batchAvailabilitySingleDateResponseJson:
summary: Single date / multiple products response
value:
responseType: BatchAvailabilityResponse
data:
ApiKey: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ResellerId: '1000'
SupplierId: 1004
ExternalReference: '10051374722992616'
Timestamp: '2013-07-25T13:29:52.616+10:00'
RequestStatus:
Status: SUCCESS
BatchTourAvailability:
- Date: '2014-10-01'
TourOptions:
SupplierOptionCode: BASIC
SupplierOptionName: Basic Shared Accommodation
TourDepartureTime: 09:00:00
Option:
- Name: Room
Value: dualocc
SupplierProductCode: BLUE
AvailabilityStatus:
Status: UNAVAILABLE
UnavailabilityReason: SOLD_OUT
VersionTag:
Numeric: 553957349573497
- Date: '2014-10-01'
TourOptions:
SupplierOptionCode: 9AM
SupplierOptionName: Bondi Beach Private Lesson 9AM
TourDepartureTime: 09:00:00
Option:
- Name: ''
Value: ''
SupplierProductCode: BON_GRO
AvailabilityStatus:
Status: AVAILABLE
VersionTag:
Numeric: 553957349573498
availabilityDateRangeRequestXml:
summary: Date-range request
value: "\n\n xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n 1000\n 1004\n 10051374722992616\n 2013-07-25T13:29:52.616+10:00\n 2014-10-30\n 2014-10-31\n BLUE\n \n BASIC\n \n \n \n 1\n 1\n 0\n 1\n 0\n 3\n \n\n"
schemas:
RequestResponseBase:
type: object
required:
- ApiKey
- ResellerId
- SupplierId
- Timestamp
properties:
ApiKey:
type: string
description: Authentication key.
ResellerId:
type: string
description: Unique identifier for Viator.
SupplierId:
type: integer
description: Unique operator identifier within Viator's systems.
ExternalReference:
type: string
description: Unique transaction identifier - unique across all transactions. Used in the response to identify the initial request.
Timestamp:
type: string
description: 'The time of creation of the request. Date/time (timestamp) that requires timezone information along with date/time. The date should be in the following format:
- yyyy-MM-ddTHH:mm:ss.SSSZ (in UTC time), or
- yyyy-MM-ddTHH:mm:ss.SSS[+/-]hh:mm
**Examples:**
- 2013-04-28T13:10:12.120Z
- 2013-04-28T13:10:12.120+10:00
'
format: date-time
description: Request Response Base.
Price:
title: Price
description: Holds the information regarding the price for the associated Tour that was retrieved from the API.
required:
- CurrencyCode
- Item
type: object
properties:
CurrencyCode:
type: string
description: Holds the currency associated with prices returned.
Item:
type: array
description: Single price information retrieved from the API.
items:
type: object
required:
- AgeBand
- RetailPrice
properties:
RetailPrice:
type: number
description: Stores the price for which the booking should be made on the shop by the customer for the given age band.
AgeBand:
type: string
description: Age band of traveler.
enum:
- Adult
- Child
- Youth
- Infant
- Senior
AvailabilityRequest:
description: Root element for Real-time Availability Request
allOf:
- $ref: '#/components/schemas/RequestResponseBase'
- type: object
required:
- StartDate
- SupplierProductCode
properties:
StartDate:
type: string
format: date
description: 'Date for which tour availability is being requested from the reservation system.
* If supplied without an `EndDate`, then a single date availability request is being made.
* If supplied with an `EndDate`, then availability request is for a date range.
The date should be in date format: **YYYY-MM-DD**.
**Example:** 2000-01-31
'
EndDate:
type: string
format: date
description: "End date of date range for which tour availability is being requested from the reservation system. If this is empty, availability will be searched for the given `StartDate` only. \n\nThe date should be in date format: **YYYY-MM-DD**.\n\n**Example:** 2000-01-31\n"
SupplierProductCode:
type: string
maxLength: 50
description: Operator's unique product (tour) identifier in the reservation system.
TourOptions:
$ref: '#/components/schemas/TourOptionItem'
AvailabilityHold:
type: object
description: Availability hold root element. Availability hold is sent with an availability request only if a Viator customer proceeds to checkout (high probability of confirmed sale).
required:
- Expiry
properties:
Expiry:
type: string
description: "Duration after which the availability hold should expire for the current request. \nThis is a suggested value, the reservation system can determine to define its own duration (which will be returned in the availability API response). \nExpiry value must be positive and provided in duration format: **PnYnMnDTnHnMnS**.\n\n**Example:**\n * PT300S (5 minutes)\n"
TravellerMix:
type: object
description: "Traveler mix root element. Holds the number of travelers at each age band for which availability is being requested. \nIf not specified, then overall availability is requested. Traveler age bands are based on age ranges provided by the operator in Viator's supply center.\n"
properties:
Adult:
type: integer
description: Number of adults
Child:
type: integer
description: Number of children
Youth:
type: integer
description: Number of youths
Infant:
type: integer
description: Number of infants
Senior:
type: integer
description: Number of seniors
Total:
type: integer
description: Total number of travelers
BatchPricingResponse:
description: Root element for Batch Pricing Response
allOf:
- $ref: '#/components/schemas/ResponseBase'
- type: object
required:
- CurrencyCode
properties:
CurrencyCode:
type: string
description: 'Currency code for this pricing information. ISO 4217 three-letter currency code associated with the booking price. ISO 4217 is the International Standard for currency codes.
For more information visit [iso.org](https://www.iso.org/).
'
BatchTourPricing:
type: array
description: "`BatchTourPricing` root element. Holds pricing information for the requested product for a specific date and tour option. \nEach date in the requested range must have at least one `BatchTourPricing` element.\n"
items:
type: object
title: BatchTourPricingItem
required:
- Date
- SupplierProductCode
- AvailabilityStatus
properties:
Date:
type: string
format: date
description: "Date for which tour availability is being supplied. \n\nThe date should be in date format: **YYYY-MM-DD.** \n\n**Example:** 2000-01-31\n"
SupplierProductCode:
type: string
maxLength: 50
description: Reservation system unique product (tour) identifier. This code will be used across multiple API calls.
TourOptions:
$ref: '#/components/schemas/TourOptionItem'
AvailabilityStatus:
type: object
description: Availability status root element. Holds the availability status for given product (tour) or product option (tour option).
required:
- Status
properties:
Status:
type: string
description: "Status of availability. Valid values include:\n * `AVAILABLE` - when product is available for the given `Date`\n * `UNAVAILABLE` - when product is not available for the given `Date`\n"
enum:
- AVAILABLE
- UNAVAILABLE
UnavailabilityReason:
enum:
- SOLD_OUT
- BLOCKED_OUT
- INACTIVE
- PAST_CUTOFF_DATE
- NO_EVENT
type: string
description: 'Reason why product is not available; valid values include:
- `SOLD_OUT` - when the product (tour) / product option (tour option) is sold out. When this reason code is received, the product or product option becomes unavailable for sale on Viator systems.
- `BLOCKED_OUT` - when the product (tour) / product option (tour option) has been blocked out (not taking place on this date). When this reason code is received, the product or product option becomes unavailable for sale on Viator systems.
- `INACTIVE` - when the product (tour) / product option (tour option) is no longer active. When this reason code is received, the product or product option becomes unavailable for sale on Viator systems.
- `PAST_CUTOFF_DATE` - when the booking cut-off date has been reached for this product (tour) / product option (tour option). When this reason code is received, the product or product option becomes unavailable for sale on Viator systems.
- `NO_EVENT` - This event is no longer valid. When this reason code is received, the product or product option becomes unavailable for sale on Viator systems
'
TravellerMixAvailability:
description: Holds availability information for each age band. `True` if the traveler mix is available, `false` if sold out
type: object
properties:
Infant:
type: boolean
description: '`True` if availability exists for the Infant age band.
'
Child:
type: boolean
description: '`True` if availability exists for the Child age band.
'
Youth:
type: boolean
description: '`True` if availability exists for the Youth age band.
'
Adult:
type: boolean
description: '`True` if availability exists for the Adult age band.
'
Senior:
type: boolean
description: '`True` if availability exists for the Senior age band.
'
BatchPrice:
type: object
description: '`BatchPrice` root element. Holds pricing information (operator and reseller prices) for each available age band of the given product (tour).
'
properties:
Item:
type: array
description: Single price information retrieved from the API.
items:
type: object
required:
- AgeBand
- RetailPrice
properties:
RetailPrice:
type: number
description: Stores the price for which the booking should be made on the shop by the customer for the given age band.
AgeBand:
type: string
description: Age band of traveler.
enum:
- Adult
- Child
- Youth
- Infant
- Senior
LanguageOption:
type: string
enum:
- GUIDE
- AUDIO
- WRITTEN
example: GUIDE
BatchAvailabilityRequest:
description: Root element for Batch Availability Request
allOf:
- $ref: '#/components/schemas/RequestResponseBase'
- type: object
required:
- StartDate
- Mode
properties:
StartDate:
type: string
format: date
description: 'Date for which tour availability is being requested from the reservation system.
* If supplied without an `EndDate`, then a single date availability request is being made.
* If supplied with an `EndDate`, then availability request is for a date range.
The date should be in date format: **YYYY-MM-DD**.
**Example:** 2000-01-31
'
EndDate:
type: string
format: date
description: "End date of date range for which tour availability is being requested from the reservation system. If this is empty, availability will be searched for the given `StartDate` only. \n\nThe date should be in date format: **YYYY-MM-DD**.\n\n**Example:** 2000-01-31\n"
Mode:
type: string
enum:
- ALL
description: 'Availability request mode. Valid values include:
* `"ALL"` - This mode requests that all dates are returned with appropriate availability status.
'
RequestStatus:
description: Request status root element. Holds the status information for the requested transaction.
required:
- Status
type: object
properties:
Status:
enum:
- SUCCESS
- ERROR
type: string
description: 'Status of the request. Valid values are:
- `"SUCCESS"` for a successful transaction, or
- `"ERROR"` for an unsuccessful transaction. (`Error` node must be populated)
'
Error:
required:
- ErrorCode
type: object
properties:
ErrorCode:
type: string
description: Represents the error code.
ErrorMessage:
type: string
description: Error message in a friendly format.
ErrorDetails:
type: string
description: Technical error cause and details.
description: Error root element.
BatchPricingRequest:
description: Root element for Batch Pricing Request
allOf:
- $ref: '#/components/schemas/RequestResponseBase'
- type: object
required:
- StartDate
- EndDate
properties:
StartDate:
type: string
format: date
description: 'The date should be in date format: **YYYY-MM-DD**.
'
EndDate:
type: string
format: date
description: 'The date should be in date format: **YYYY-MM-DD**.
'
SupplierProductCode:
type: array
description: Array of strings specifying the operator's reservation system unique product identifiers.
items:
type: string
maxLength: 50
ResponseBase:
allOf:
- $ref: '#/components/schemas/RequestResponseBase'
- required:
- RequestStatus
type: object
properties:
RequestStatus:
$ref: '#/components/schemas/RequestStatus'
AvailabilityNotification2Response:
description: Root element for Availability Notification 2 Response
allOf:
- $ref: '#/components/schemas/ResponseBase'
- type: object
AvailabilityNotification2Request:
description: Root element for Availability Notification 2 Request
allOf:
- $ref: '#/components/schemas/RequestResponseBase'
- type: object
required:
- VariantAvailability
properties:
VariantAvailability:
type: object
description: 'Changed availability root element. This element contains a `SupplierProductCode`, associated `TourOptions` and a list of `DateAvailability` items.
'
required:
- SupplierProductCode
- DateAvailability
properties:
SupplierProductCode:
type: string
maxLength: 50
description: 'String representing the operator''s unique product (tour) identifier in the reservation system. This code will be used across multiple API calls.
'
TourOptions:
type: object
description: "Tour option (product option) root element. \nThis should be the same `TourOptions` as given in your `TourListResponse`. This is used to identify one sellable item\n"
properties:
SupplierOptionCode:
type: string
description: 'The operator''s product option (tour option) identifier in the reservation system. A product option is a variant of the product and each option must have a unique identifier.
**Examples:**
- A tour that is conducted by a Spanish guide and also by an English guide has two options.
- A tour that starts at three different times throughout the day may have three options. This could be because each start time is priced differently or because availability is limited for each starting time.
- A Tour that has a luxurious version and a cheaper version is considered to have two options.
'
TourDepartureTime:
type: string
description: 'Time of product option departure. Values should be in time format.
**Example:** 09:00:00.
'
format: time
Option:
type: array
description: Option root element. Contains additional information used to uniquely identify a product option.
items:
type: object
required:
- Name
- Value
properties:
Name:
type: string
description: Option name
Value:
type: string
description: Option value
DateAvailability:
type: array
description: Contains the list of updated dates and their associated updated availability statuses.
items:
title: DateAvailability
required:
- Date
- AvailabilityStatus
properties:
Date:
type: string
format: date
description: 'The date for which the availability has changed. Date should be in date format.
**Example:** 2000-01-31
'
AvailabilityStatus:
type: object
description: Availability status root element. Holds the availability status for given product (tour) or product option (tour option).
required:
- Status
properties:
Status:
type: string
description: "Status of availability. Valid values include:\n * `AVAILABLE` - when product is available\n * `UNAVAILABLE` - when product is not available\n"
enum:
- AVAILABLE
- UNAVAILABLE
UnavailabilityReason:
enum:
- SOLD_OUT
- BLOCKED_OUT
- INACTIVE
- PAST_CUTOFF_DATE
- NO_EVENT
type: string
description: 'Reason why product is not available; valid values include:
- `SOLD_OUT` - when the product (tour) / product option (tour option) is sold out. When this reason code is received, the product or product option becomes unavailable for sale on Viator systems.
- `BLOCKED_OUT` - when the product (tour) / product option (tour option) has been blocked out (not taking place on this date). When this reason code is received, the product or product option becomes unavailable for sale on Viator systems.
- `INACTIVE` - when the product (tour) / product option (tour option) is no longer active. When this reason code is received, the product or product option becomes unavailable for sale on Viator systems.
- `PAST_CUTOFF_DATE` - when the booking cut-off date has been reached for this product (tour) / product option (tour option). When this reason code is received, the product or product option becomes unavailable for sale on Viator systems.
- `NO_EVENT` - This event is no longer valid. When this reason code is received, the product or product option becomes unavailable for sale on Viator systems
'
VersionTag:
$ref: '#/components/schemas/VersionTag'
TourLanguage:
type: object
description: Holds the language of a tour.
required:
- LanguageCode
- LanguageOption
properties:
LanguageCode:
type: string
description: 'ISO 639-1 two-letter code of the language used for the language option provided with the product
(Tour) / product option (Tour Option).
ISO 639 is a standardized nomenclature used to classify all known languages.
For more information visit www.iso.org.
'
example: en
LanguageOption:
type: array
uniqueItems: true
minItems: 1
maxItems: 3
items:
$ref: '#/components/schemas/LanguageOption'
BatchAvailabilityResponse:
description: Root element for Batch Availability Response
allOf:
- $ref: '#/components/schemas/ResponseBase'
- type: object
required:
- BatchTourAvailability
properties:
BatchTourAvailability:
type: array
description: "Batch availability root element. Holds availability for each product (tour) or product option (tour option). \nFor products with more than one option, multiple `TourAvailability` elements will be provided in the response, one for each option. \nIf a product has no options, then a single `BatchTourAvailability` element will be provided in the response with no `SupplierOptionCode`.\n"
items:
type: object
title: BatchTourAvailabilityItem
required:
- Date
- SupplierProductCode
- AvailabilityStatus
properties:
Date:
type: string
format: date
description: "Date for which tour availability is being supplied. \n\nThe date should be in date format: **YYYY-MM-DD.** \n\n**Example:** 2000-01-31\n"
SupplierProductCode:
type: string
maxLength: 50
description: Operator's unique product (tour) identifier in the reservation system.
TourOptions:
$ref: '#/components/schemas/TourOptionItem'
AvailabilityStatus:
type: object
description: Availability status root element. Holds the availability status for given product (tour) or product option (tour option).
required:
- Status
properties:
Status:
type: string
description: "Status of availability. Valid values include:\n * `AVAILABLE` - when product is available for the given `Date`\n * `UNAVAILABLE` - when product is not available for the given `Date`\n"
enum:
- AVAILABLE
- UNAVAILABLE
UnavailabilityReason:
enum:
- SOLD_OUT
- BLOCKED_OUT
- INACTIVE
- PAST_CUTOFF_DATE
- NO_EVENT
type: string
description: 'Reason why product is not available; valid values include:
- `SOLD_OUT` - when the product (tour) / product option (tour option) is sold out. When this reason code is received, the product or product option becomes unavailable for sale on Viator systems.
- `BLOCKED_OUT` - when the product (tour) / product option (tour option) has been blocked out (not taking place on this date). When this reason code is received, the product or product option becomes unavailable for sale on Viator systems.
- `INACTIVE` - when the product (tour) / product option (tour option) is no longer active. When this reason code is received, the product or product option becomes unavailable for sale on Viator systems.
- `PAST_CUTOFF_DATE` - when the booking cut-off date has been reached for this product (tour) / product option (tour option). When this reason code is received, the product or product option becomes unavailable for sale on Viator systems.
- `NO_EVENT` - This event is no longer valid. When this reason code is received, the product or product option becomes unavailable for sale on Viator systems
'
TravellerMixAvailability:
description: Holds availability information for each age band. `True` if the traveler mix is available, `false` if sold out
type: object
properties:
Infant:
type: boolean
description: '`True` if availability exists for the Infant age band.
'
Child:
type: boolean
description: '`True` if availability exists for the Child age band.
'
Youth:
type: boolean
description: '`True` if availability exists for the Youth age band.
'
Adult:
type: boolean
description: '`True` if availability exists for the Adult age band.
'
Senior:
type: boolean
description: '`True` if availability exists for the Senior age band.
'
VersionTag:
$ref: '#/components/schemas/VersionTag'
TourOptionItem:
allOf:
- $ref: '#/components/schemas/TourOptionBase'
- type: object
properties:
Language:
$ref: '#/components/schemas/TourLanguage'
AvailabilityResponse:
description: Root element for Real-time Availability Response
allOf:
- $ref: '#/components/schemas/ResponseBase'
- type: object
required:
- SupplierProductCode
- TourAvailability
properties:
SupplierProductCode:
type: string
maxLength: 50
description: Operator's unique product (tour) identifier in the reservation system.
TourAvailability:
description: "Tour availability root element. Holds availability for each product (tour) or product option (tour option). \nFor products with more than one option, multiple TourAvailability elements will be provided in the response, one for each option. \nIf a product has no options, then a single TourAvailability element will be provided in the response with no `SupplierOptionCode`.\n"
type: array
items:
title: TourAvailabilityItem
required:
- Date
- AvailabilityStatus
properties:
Date:
type: string
format: date
description: "Date for which tour availability is being supplied. \n\nThe date should be in date format: **YYYY-MM-DD.** \n\n**Example:** 2000-01-31\n"
TourOptions:
$ref: '#/components/schemas/TourOptionItem'
AvailabilityStatus:
type: object
description: Availability status root element. Holds the availability status for given product (tour) or product option (tour option).
required:
- Status
properties:
Status:
type: string
description: "Status of availability. Valid values include:\n * `AVAILABLE` - when product is available for the given `Date` and `TravellerMix`\n * `UNAVAILABLE` - when product is not available for the given `Date` and `TravellerMix`\n"
enum:
- AVAILABLE
- UNAVAILABLE
UnavailabilityReason:
enum:
- SOLD_OUT
- BLOCKED_OUT
- INACTIVE
- PAST_CUTOFF_DATE
- TRAVELLER_MISMATCH
- NO_EVENT
type: string
description: 'Reason why product is not available; valid values include:
- `SOLD_OUT` - when the product (tour) / product option (tour option) is sold out. When this reason code is received, the product or product option becomes unavailable for sale on Viator systems.
- `BLOCKED_OUT` - when the product (tour) / product option (tour option) has been blocked out (not taking place on this date). When this reason code is received, the product or product option becomes unavailable for sale on Viator systems.
- `INACTIVE` - when the product (tour) / product option (tour option) is no longer active. When this reason code is received, the product or product option becomes unavailable for sale on Viator systems.
- `PAST_CUTOFF_DATE` - when the booking cut-off date has been reached for this product (tour) / product option (tour option). When this reason code is received, the product or product option becomes unavailable for sale on Viator systems.
- `TRAVELLER_MISMATCH` - when the required combination of travelers for this product (tour) / product option (tour option) is not met or when the number of requested passengers cannot be fulfilled, but a lower number can (i.e. availability status for three people is unavailable, but availability status for two is available).
- `NO_EVENT` - This event is no longer valid. When this reason code is received, the product or product option becomes unavailable for sale on Viator systems
'
TravellerMixAvailability:
description: Holds availability information for each age band. `True` if the traveler mix is available, `false` if sold out
type: object
properties:
Infant:
type: boolean
description: '`True` if availability exists for the Infant age band.
'
Child:
type: boolean
description: '`True` if availability exists for the Child age band.
'
Youth:
type: boolean
description: '`True` if availability exists for the Youth age band.
'
Adult:
type: boolean
description: '`True` if availability exists for the Adult age band.
'
Senior:
type: boolean
description: '`True` if availability exists for the Senior age band.
'
AvailabilityHold:
type: object
description: 'Availability hold root element. Availability hold is sent with an availability request only if a Viator customer proceeds to checkout (high probability of confirmed sale).
**Mandatory** if `AvailabilityHold` feature is supported by the reservation system.
'
required:
- Expiry
- Reference
properties:
Expiry:
type: string
description: "Duration after which the availability hold should expire for the current request. \nThis is a suggested value, the reservation system can determine to define its own duration (which will be returned in the availability API response). \nExpiry value must be positive and provided in duration format: **PnYnMnDTnHnMnS**.\n\n**Example:**\n * PT300S (5 minutes)\n"
Reference:
type: string
description: "Availability hold reference assigned by the reservation system. \nThe reference will be used in a subsequent booking request to advise the reservation system that the booking is related to the prior availability hold request. Response scoped.\n"
Price:
$ref: '#/components/schemas/Price'
BookingCutoff:
type: object
description: "Booking cut-off root element; contains information about the point in time after which the tour option may become unavailable, \nreferred to as the 'booking cut-off'. \n\nIt is **mandatory to provide one of the three child element options** listed below – `DateTime`, `ProductDateTime` or `NotApplicable`\n"
oneOf:
- title: DateTime
type: object
required:
- DateTime
properties:
DateTime:
type: string
format: date-time
description: 'Datetime string that must include the time-zone that describes absolutely when the booking cut-off is.
**Examples:**
* 2021-11-07T12:13:14+10:30
* 2021-11-07T22:22:11.000-10:00
We would prefer that you provide a datetime adjusted to UTC; however, we will accept any legitimate time-zone offset; our systems will adjust accordingly.
'
- title: ProductDateTime
type: object
required:
- ProductDateTime
properties:
ProductDateTime:
type: string
format: date-time
description: 'Datetime string that must not include a time-zone or ''Z'' (UTC) offset that describes when the booking cut-off is **in the time-zone of the product.**
Use this element instead of the `DateTime` element if you are unable to provide the full datetime string with time-zone included.
**Examples:**
* 2021-11-08T12:13:14
* 2021-11-08T11:22:33.000
'
- title: NotApplicable
type: object
required:
- NotApplicable
properties:
NotApplicable:
type: boolean
description: "'True' if a booking cut-off does not exist for this product option. \nIf set, our systems will attempt to make any sale until we receive an `AvailabilityStatus` of `UNAVAILABLE`; \nor, the present moment has advanced beyond the product's start time.\n"
Capacity:
type: object
description: 'Capacity root element. Allows for capacity-management by communicating the remaining places available for Viator to book for this product.
The system allows for all or only certain age bands to draw down on the available places, to allow, for example, infants to be excluded and thereby not affect the remaining capacity.
See "How to use the Capacity element" section for more information.
'
required:
- Simple
properties:
Simple:
type: object
description: Simple capacity root element. Contains elements for remaining places and which age band(s) (if applicable) consume these places.
properties:
Remaining:
type: integer
description: Numeric value representing number of remaining places
ConsumedBy:
type: array
description: 'Name of age band that can consume the remaining places; one of `ADULT`, `CHILD`, `INFANT`, `YOUTH`, `SENIOR`
'
items:
type: string
enum:
- ADULT
- CHILD
- INFANT
- YOUTH
- SENIOR
VersionTag:
$ref: '#/components/schemas/VersionTag'
TourOptionBase:
title: TourOptionItem
description: Tour option root element. Holds details pertaining to each of the product (tour) options (including default if no tour options exist).
properties:
SupplierOptionCode:
type: string
description: 'Reservation system product option (tour option) identifier. A product option is a version or variant of the tour and each option must have a unique code.
**Examples:**
- A tour that is conducted by a Spanish guide and also by an English guide has two options.
- A tour that starts at three different times throughout the day may have three options. This could be because each start time is priced differently or because availability is limited for each starting time.
- A Tour that has a luxurious version and a cheaper version is considered to have two options.
A list of the operator''s Viator product options can be provided for mapping purposes.
'
SupplierOptionName:
type: string
description: Product option (tour option) name (name associated with product option identifier).
TourDepartureTime:
type: string
description: 'Time of tour option departure. Values should be in time format.
**Example:** 09:00:00.
'
format: time
Option:
type: array
description: Option root element. Contains additional optional information used to uniquely identify product options.
items:
type: object
required:
- Name
- Value
properties:
Name:
type: string
description: Option name
Value:
type: string
description: Option value
VersionTag:
description: "Version tag root element. Specifies the version for each changed `DateAvailability`. Version tagging allows availability responses to be tagged with one of: a time-stamp, a text-string, or a numeric identifier. \n\nAttaching this tag will allow our systems to determine which availability response should be taken as the most recent in the event that multiple availability responses for the same product arrive with differing information. \nOur systems will consider the availability response with the most recent timestamp, or highest textual or numeric value as the authoritative response.\n"
oneOf:
- type: object
title: Timestamp
required:
- Timestamp
properties:
Timestamp:
type: string
description: 'Timestamp to determine the order in which this availability response was generated; e.g. `2021-12-02T12:34:56.789012345Z`
'
format: date-time
- type: object
title: Textual
required:
- Textual
properties:
Textual:
type: string
description: 'Text string of your choosing. Our systems will consider the highest-value string to be that which was sent most recently. E.g., `20121202-V000000231434`
'
- type: object
title: Numeric
required:
- Numeric
properties:
Numeric:
type: integer
description: 'Numeric value of your choosing. Our systems will consider the highest number to be that which was sent most recently. E.g., `553957349573498`
'
securitySchemes:
ApiKeyHeader:
type: apiKey
in: header
name: X-Api-Key
x-tagGroups:
- name: Getting started
tags:
- What's new
- Implementation approach
- API overview
- Connectivity overview
- API configurations
- name: API reference
tags:
- Reservation system APIs
- Viator APIs
- Beta
- name: Reliability & testing
tags:
- SLAs
- Circuit breakers
- Contract testing
- name: Resources
tags:
- v2 migration guide
- FAQs
- Contact us
- Appendices
- name: Deprecated
tags:
- Deprecated