For the complete documentation index, see llms.txt. This page is also available as Markdown.

Availability

Getting availability for a product

The first step when making a sale is to check availability. If allowFreesale is set to true on the product then this step is optional, but it is still recommended to detect closures and operational limits.

Availability Calendar Query

post

Returns one availability object per date for calendar rendering over a date range. This endpoint is optimized for faster calendar rendering, but it does not replace POST /availability for booking flow. You must call POST /availability to obtain an availabilityId before creating or reserving a booking.

Body

Request schema for /availability/calendar.

productIdstringRequired

Product ID or code.

Example: e7cc8bb4-8d1c-4848-8824-5dbedb718681
optionIdstringRequired

Option ID or code. Use DEFAULT only when the product has no options.

Example: 94cdd032-3d32-416d-b0a4-abf8b7495b8b
localDateStartstring · dateRequired

Start of local date range in the product timezone (YYYY-MM-DD).

Example: 2026-05-14
localDateEndstring · dateRequired

End of local date range in the product timezone (YYYY-MM-DD).

Example: 2026-05-21
currencystringOptional

ISO 4217 currency code.

Example: USD
uuidstringOptional

User-submitted UUID field that can be used to uniquely reference this resource and provide idempotency against repeat requests with the same UUID.

Example: 89fe0192-ddcd-430a-b285-e1396a4725d2
offerCodestringOptional

Offer code to evaluate for pricing and eligibility. From capability octo/offers.

Example: SUMMER25
rentalDurationIdstringOptional

Rental duration identifier for rental products. From capability octo/rentals.

Example: rental_duration_2h
Responses
200

Successful response

application/json
availabilityLocalStartTimesstring[]Required

List of availability local start time values.

Example: ["09:00","13:00"]
availablebooleanRequired

Whether this availability can be booked.

Example: true
availableWeightnumber · nullableOptional

Available weight numeric value.

Example: 20
capacityinteger · nullableOptional

Capacity numeric value.

Example: 2
localDatestring · dateRequired

Local date in YYYY-MM-DD format.

Example: 2026-03-01
maxPaxCountinteger · nullableOptional

Max pax count numeric value.

Example: 2
maxUnitsinteger · nullableOptional

Max units numeric value.

Example: 2
maxWeightnumber · nullableOptional

Max weight numeric value.

Example: 20
paxCountintegerOptional

Pax count numeric value.

Example: 2
paxWeightnumberOptional

Pax weight numeric value.

Example: 20
statusstring · enumRequired

Current status value.

Example: AVAILABLEPossible values:
statusMessagestringRequired

Status message value.

Example: Limited availability for this departure.
utcCutoffAtstring · date-timeRequired

Utc cutoff at timestamp in ISO 8601 format.

Example: 2026-05-14T13:00:00Z
utcOnsaleAtstring · date-time · nullableOptional

Utc onsale at timestamp in ISO 8601 format.

Example: 2026-05-14T13:00:00Z
vacanciesinteger · nullableOptional

Vacancies numeric value.

Example: 2
weightUnitstring · nullableOptional

Weight unit for the weight value.

Example: kg
offerCodestring · nullableOptional

From capability octo/offers.

Example: SUMMER25
post/availability/calendar
POST /octo/availability/calendar HTTP/1.1
Host: api.ventrata.com
Content-Type: application/json
Accept: */*
Content-Length: 662

{
  "productId": "e7cc8bb4-8d1c-4848-8824-5dbedb718681",
  "optionId": "94cdd032-3d32-416d-b0a4-abf8b7495b8b",
  "localDateStart": "2026-05-14",
  "localDateEnd": "2026-05-21",
  "units": [
    {
      "id": "3d6f0a3a-59d4-4b16-a0c5-11d2d8a4e6b7",
      "quantity": 2,
      "weightValue": 20,
      "weightUnit": "kg"
    }
  ],
  "currency": "USD",
  "uuid": "89fe0192-ddcd-430a-b285-e1396a4725d2",
  "offerCode": "SUMMER25",
  "extras": [
    {
      "id": "3d6f0a3a-59d4-4b16-a0c5-11d2d8a4e6b7",
      "quantity": 2,
      "retail": 1500
    }
  ],
  "rentalDurationId": "rental_duration_2h",
  "membership": {
    "id": "89fe0192-ddcd-430a-b285-e1396a4725d2",
    "email": "jane.doe@goldengatetours.com",
    "mobile": "+12025550123",
    "country": "US",
    "reference": "REF-2026-001",
    "verification": "123456"
  }
}
200

Successful response

[
  {
    "availabilityLocalStartTimes": [
      "09:00",
      "13:00"
    ],
    "available": true,
    "availableWeight": 20,
    "capacity": 2,
    "localDate": "2026-03-01",
    "maxPaxCount": 2,
    "maxUnits": 2,
    "maxWeight": 20,
    "openingHours": [
      {
        "from": "09:00",
        "to": "17:00"
      }
    ],
    "paxCount": 2,
    "paxWeight": 20,
    "status": "AVAILABLE",
    "statusMessage": "Limited availability for this departure.",
    "utcCutoffAt": "2026-05-14T13:00:00Z",
    "utcOnsaleAt": "2026-05-14T13:00:00Z",
    "vacancies": 2,
    "weightUnit": "kg",
    "extraPricingFrom": [
      {
        "currency": "USD",
        "currencyPrecision": 2,
        "extraId": "extra_fast_track",
        "net": 18000,
        "original": 22000,
        "retail": 20000,
        "includedTaxes": [
          {
            "name": "Sales Tax",
            "shortDescription": "Local sales tax",
            "original": 2000,
            "retail": 1800,
            "net": 1600
          }
        ],
        "offerDiscount": {
          "retail": 2000,
          "net": 2000,
          "includedTaxes": [
            {
              "name": "Sales Tax",
              "shortDescription": "Local sales tax",
              "retail": 200,
              "net": 200
            }
          ]
        }
      }
    ],
    "pricingFrom": {
      "currency": "USD",
      "currencyPrecision": 2,
      "net": 18000,
      "original": 22000,
      "retail": 20000,
      "includedTaxes": [
        {
          "name": "Sales Tax",
          "shortDescription": "Local sales tax",
          "original": 2000,
          "retail": 1800,
          "net": 1600
        }
      ],
      "offerDiscount": {
        "retail": 2000,
        "net": 2000,
        "includedTaxes": [
          {
            "name": "Sales Tax",
            "shortDescription": "Local sales tax",
            "retail": 200,
            "net": 200
          }
        ]
      }
    },
    "unitPricingFrom": [
      {
        "currency": "USD",
        "currencyPrecision": 2,
        "net": 18000,
        "original": 22000,
        "retail": 20000,
        "unitId": "unit_adult",
        "unitType": "ADULT",
        "includedTaxes": [
          {
            "name": "Sales Tax",
            "shortDescription": "Local sales tax",
            "original": 2000,
            "retail": 1800,
            "net": 1600
          }
        ],
        "offerDiscount": {
          "retail": 2000,
          "net": 2000,
          "includedTaxes": [
            {
              "name": "Sales Tax",
              "shortDescription": "Local sales tax",
              "retail": 200,
              "net": 200
            }
          ]
        }
      }
    ],
    "offer": {
      "id": "89fe0192-ddcd-430a-b285-e1396a4725d2",
      "tags": [
        "vip",
        "partner"
      ],
      "title": "Summer Promotion",
      "label": "Save 20%",
      "code": "SUMMER25",
      "description": "20% off selected departures this month.",
      "netDiscount": "FULL",
      "restrictions": {
        "minUnits": 1,
        "maxUnits": 10,
        "minTotal": 0,
        "maxTotal": 50000,
        "unitIds": [
          "3d6f0a3a-59d4-4b16-a0c5-11d2d8a4e6b7",
          "6b65fd83-4a1f-4744-8f4a-c24d8d770f29"
        ]
      },
      "usable": true,
      "unusableReason": "Offer is not valid for the selected date.",
      "membershipBenefit": {
        "id": "e7cc8bb4-8d1c-4848-8824-5dbedb718681",
        "title": "Summer Promotion",
        "description": "Morning departure with central pickup included."
      }
    },
    "offerCode": "SUMMER25",
    "offers": [
      {
        "id": "89fe0192-ddcd-430a-b285-e1396a4725d2",
        "tags": [
          "vip",
          "partner"
        ],
        "title": "Summer Promotion",
        "label": "Save 20%",
        "code": "SUMMER25",
        "description": "20% off selected departures this month.",
        "netDiscount": "FULL",
        "restrictions": {
          "minUnits": 1,
          "maxUnits": 10,
          "minTotal": 0,
          "maxTotal": 50000,
          "unitIds": [
            "3d6f0a3a-59d4-4b16-a0c5-11d2d8a4e6b7",
            "6b65fd83-4a1f-4744-8f4a-c24d8d770f29"
          ]
        },
        "usable": true,
        "unusableReason": "Offer is not valid for the selected date.",
        "membershipBenefit": {
          "id": "e7cc8bb4-8d1c-4848-8824-5dbedb718681",
          "title": "Summer Promotion",
          "description": "Morning departure with central pickup included."
        }
      }
    ]
  }
]

Availability Query

post

Returns detailed availability objects per departure time or day. Use this endpoint before booking to obtain the availabilityId required by booking creation/reservation requests.

Body

Request schema for /availability. productId and optionId are required, and at least one availability selector must be provided (localDate, localDateStart+localDateEnd, availabilityId, or availabilityIds).

productIdstringRequired

Product ID or code.

Example: e7cc8bb4-8d1c-4848-8824-5dbedb718681
optionIdstringRequired

Option ID or code. Use DEFAULT only when the product has no options.

Example: 94cdd032-3d32-416d-b0a4-abf8b7495b8b
availabilityIdstringOptional

Single availability identifier (ISO-8601 local date or date-time).

Example: 2026-05-14T09:00:00-04:00
availabilityIdsstring[]Optional

Multiple availability identifiers.

Example: ["2026-05-14T09:00:00-04:00","2026-05-15T09:00:00-04:00"]
currencystringOptional

ISO 4217 currency code.

Example: USD
localDatestring · dateOptional

Local date in the product timezone (YYYY-MM-DD).

Example: 2026-05-14
localDateEndstring · dateOptional

End of local date range in the product timezone (YYYY-MM-DD).

Example: 2026-05-21
localDateStartstring · dateOptional

Start of local date range in the product timezone (YYYY-MM-DD).

Example: 2026-05-14
localTimestringOptional

Local start time in the product timezone (HH:MM).

Example: 09:00
uuidstringOptional

User-submitted UUID field that can be used to uniquely reference this resource and provide idempotency against repeat requests with the same UUID.

Example: 89fe0192-ddcd-430a-b285-e1396a4725d2
offerCodestringOptional

Offer code to evaluate for pricing and eligibility. From capability octo/offers.

Example: SUMMER25
rentalDurationIdstringOptional

Rental duration identifier for rental products. From capability octo/rentals.

Example: rental_duration_2h
Responses
200

Successful response

application/json
allDaybooleanRequired

Whether all day is enabled.

Example: false
availablebooleanRequired

Whether this availability can be booked.

Example: true
capacityinteger · nullableOptional

Capacity numeric value.

Example: 2
idstring · uuidRequired

Unique identifier for this resource.

Example: 94cdd032-3d32-416d-b0a4-abf8b7495b8b
localDateTimeEndstring · date-timeRequired

Local date time end timestamp in ISO 8601 format.

Example: 2026-03-01T12:00:00-08:00
localDateTimeStartstring · date-timeRequired

Local date time start timestamp in ISO 8601 format.

Example: 2026-03-01T09:00:00-08:00
maxPaxCountinteger · nullableOptional

Max pax count numeric value.

Example: 2
maxUnitsinteger · nullableOptional

Max units numeric value.

Example: 2
paxCountintegerOptional

Pax count numeric value.

Example: 2
referencestring · nullableOptional

Reference value.

Example: REF-2026-001
statusstring · enumRequired

Current status value.

Example: AVAILABLEPossible values:
statusMessagestringRequired

Status message value.

Example: Limited availability for this departure.
utcCutoffAtstring · date-timeRequired

Utc cutoff at timestamp in ISO 8601 format.

Example: 2026-05-14T13:00:00Z
utcOnsaleAtstring · date-time · nullableOptional

Utc onsale at timestamp in ISO 8601 format.

Example: 2026-05-14T13:00:00Z
vacanciesinteger · nullableOptional

Vacancies numeric value.

Example: 2
offerCodestring · nullableOptional

From capability octo/offers.

Example: SUMMER25
dropoffAvailablebooleanOptional

From capability octo/pickups.

Example: true
dropoffRequiredbooleanOptional

From capability octo/pickups.

Example: true
pickupAvailablebooleanOptional

From capability octo/pickups.

Example: true
pickupRequiredbooleanOptional

From capability octo/pickups.

Example: true
hasResourcesbooleanOptional

From capability octo/resources.

Example: true
post/availability
POST /octo/availability HTTP/1.1
Host: api.ventrata.com
Content-Type: application/json
Accept: */*
Content-Length: 301

{
  "productId": "e7cc8bb4-8d1c-4848-8824-5dbedb718681",
  "optionId": "94cdd032-3d32-416d-b0a4-abf8b7495b8b",
  "localDate": "2026-05-14",
  "units": [
    {
      "id": "3d6f0a3a-59d4-4b16-a0c5-11d2d8a4e6b7",
      "quantity": 2,
      "weightValue": 20,
      "weightUnit": "kg"
    }
  ],
  "extras": [
    {
      "id": "f1a5d2e8-8d57-4f0b-9c3f-6a12d7a8bc90",
      "quantity": 1
    }
  ]
}
200

Successful response

[
  {
    "allDay": false,
    "available": true,
    "capacity": 2,
    "id": "94cdd032-3d32-416d-b0a4-abf8b7495b8b",
    "localDateTimeEnd": "2026-03-01T12:00:00-08:00",
    "localDateTimeStart": "2026-03-01T09:00:00-08:00",
    "maxPaxCount": 2,
    "maxUnits": 2,
    "openingHours": [
      {
        "from": "09:00",
        "to": "17:00"
      }
    ],
    "paxCount": 2,
    "reference": "REF-2026-001",
    "status": "AVAILABLE",
    "statusMessage": "Limited availability for this departure.",
    "utcCutoffAt": "2026-05-14T13:00:00Z",
    "utcOnsaleAt": "2026-05-14T13:00:00Z",
    "vacancies": 2,
    "extraPricing": [
      {
        "currency": "USD",
        "currencyPrecision": 2,
        "extraId": "extra_fast_track",
        "net": 18000,
        "original": 22000,
        "retail": 20000,
        "includedTaxes": [
          {
            "name": "Sales Tax",
            "shortDescription": "Local sales tax",
            "original": 2000,
            "retail": 1800,
            "net": 1600
          }
        ],
        "offerDiscount": {
          "retail": 2000,
          "net": 2000,
          "includedTaxes": [
            {
              "name": "Sales Tax",
              "shortDescription": "Local sales tax",
              "retail": 200,
              "net": 200
            }
          ]
        }
      }
    ],
    "pricing": {
      "currency": "USD",
      "currencyPrecision": 2,
      "net": 18000,
      "original": 22000,
      "retail": 20000,
      "includedTaxes": [
        {
          "name": "Sales Tax",
          "shortDescription": "Local sales tax",
          "original": 2000,
          "retail": 1800,
          "net": 1600
        }
      ],
      "offerDiscount": {
        "retail": 2000,
        "net": 2000,
        "includedTaxes": [
          {
            "name": "Sales Tax",
            "shortDescription": "Local sales tax",
            "retail": 200,
            "net": 200
          }
        ]
      }
    },
    "unitPricing": [
      {
        "currency": "USD",
        "currencyPrecision": 2,
        "net": 18000,
        "original": 22000,
        "retail": 20000,
        "unitId": "unit_adult",
        "unitType": "ADULT",
        "includedTaxes": [
          {
            "name": "Sales Tax",
            "shortDescription": "Local sales tax",
            "original": 2000,
            "retail": 1800,
            "net": 1600
          }
        ],
        "offerDiscount": {
          "retail": 2000,
          "net": 2000,
          "includedTaxes": [
            {
              "name": "Sales Tax",
              "shortDescription": "Local sales tax",
              "retail": 200,
              "net": 200
            }
          ]
        }
      }
    ],
    "offer": {
      "id": "89fe0192-ddcd-430a-b285-e1396a4725d2",
      "tags": [
        "vip",
        "partner"
      ],
      "title": "Summer Promotion",
      "label": "Save 20%",
      "code": "SUMMER25",
      "description": "20% off selected departures this month.",
      "netDiscount": "FULL",
      "restrictions": {
        "minUnits": 1,
        "maxUnits": 10,
        "minTotal": 0,
        "maxTotal": 50000,
        "unitIds": [
          "3d6f0a3a-59d4-4b16-a0c5-11d2d8a4e6b7",
          "6b65fd83-4a1f-4744-8f4a-c24d8d770f29"
        ]
      },
      "usable": true,
      "unusableReason": "Offer is not valid for the selected date.",
      "membershipBenefit": {
        "id": "e7cc8bb4-8d1c-4848-8824-5dbedb718681",
        "title": "Summer Promotion",
        "description": "Morning departure with central pickup included."
      }
    },
    "offerCode": "SUMMER25",
    "offers": [
      {
        "id": "89fe0192-ddcd-430a-b285-e1396a4725d2",
        "tags": [
          "vip",
          "partner"
        ],
        "title": "Summer Promotion",
        "label": "Save 20%",
        "code": "SUMMER25",
        "description": "20% off selected departures this month.",
        "netDiscount": "FULL",
        "restrictions": {
          "minUnits": 1,
          "maxUnits": 10,
          "minTotal": 0,
          "maxTotal": 50000,
          "unitIds": [
            "3d6f0a3a-59d4-4b16-a0c5-11d2d8a4e6b7",
            "6b65fd83-4a1f-4744-8f4a-c24d8d770f29"
          ]
        },
        "usable": true,
        "unusableReason": "Offer is not valid for the selected date.",
        "membershipBenefit": {
          "id": "e7cc8bb4-8d1c-4848-8824-5dbedb718681",
          "title": "Summer Promotion",
          "description": "Morning departure with central pickup included."
        }
      }
    ],
    "packageAvailabilities": [
      {
        "allDay": false,
        "available": true,
        "capacity": 2,
        "id": "94cdd032-3d32-416d-b0a4-abf8b7495b8b",
        "localDateTimeEnd": "2026-03-01T12:00:00-08:00",
        "localDateTimeStart": "2026-03-01T09:00:00-08:00",
        "maxPaxCount": 2,
        "maxUnits": 2,
        "openingHours": [
          {
            "from": "09:00",
            "to": "17:00"
          }
        ],
        "packageIncludeId": "package_include_id-example",
        "paxCount": 2,
        "reference": "REF-2026-001",
        "status": "AVAILABLE",
        "statusMessage": "Limited availability for this departure.",
        "utcCutoffAt": "2026-05-14T13:00:00Z",
        "utcOnsaleAt": "2026-05-14T13:00:00Z",
        "vacancies": 2,
        "extraPricing": [
          {
            "currency": "USD",
            "currencyPrecision": 2,
            "extraId": "extra_fast_track",
            "net": 18000,
            "original": 22000,
            "retail": 20000,
            "includedTaxes": [
              {
                "name": "Sales Tax",
                "shortDescription": "Local sales tax",
                "original": 2000,
                "retail": 1800,
                "net": 1600
              }
            ],
            "offerDiscount": {
              "retail": 2000,
              "net": 2000,
              "includedTaxes": [
                {
                  "name": "Sales Tax",
                  "shortDescription": "Local sales tax",
                  "retail": 200,
                  "net": 200
                }
              ]
            }
          }
        ],
        "pricing": {
          "currency": "USD",
          "currencyPrecision": 2,
          "net": 18000,
          "original": 22000,
          "retail": 20000,
          "includedTaxes": [
            {
              "name": "Sales Tax",
              "shortDescription": "Local sales tax",
              "original": 2000,
              "retail": 1800,
              "net": 1600
            }
          ],
          "offerDiscount": {
            "retail": 2000,
            "net": 2000,
            "includedTaxes": [
              {
                "name": "Sales Tax",
                "shortDescription": "Local sales tax",
                "retail": 200,
                "net": 200
              }
            ]
          }
        },
        "unitPricing": [
          {
            "currency": "USD",
            "currencyPrecision": 2,
            "net": 18000,
            "original": 22000,
            "retail": 20000,
            "unitId": "unit_adult",
            "unitType": "ADULT",
            "includedTaxes": [
              {
                "name": "Sales Tax",
                "shortDescription": "Local sales tax",
                "original": 2000,
                "retail": 1800,
                "net": 1600
              }
            ],
            "offerDiscount": {
              "retail": 2000,
              "net": 2000,
              "includedTaxes": [
                {
                  "name": "Sales Tax",
                  "shortDescription": "Local sales tax",
                  "retail": 200,
                  "net": 200
                }
              ]
            }
          }
        ],
        "offer": {
          "id": "89fe0192-ddcd-430a-b285-e1396a4725d2",
          "tags": [
            "vip",
            "partner"
          ],
          "title": "Summer Promotion",
          "label": "Save 20%",
          "code": "SUMMER25",
          "description": "20% off selected departures this month.",
          "netDiscount": "FULL",
          "restrictions": {
            "minUnits": 1,
            "maxUnits": 10,
            "minTotal": 0,
            "maxTotal": 50000,
            "unitIds": [
              "3d6f0a3a-59d4-4b16-a0c5-11d2d8a4e6b7",
              "6b65fd83-4a1f-4744-8f4a-c24d8d770f29"
            ]
          },
          "usable": true,
          "unusableReason": "Offer is not valid for the selected date.",
          "membershipBenefit": {
            "id": "e7cc8bb4-8d1c-4848-8824-5dbedb718681",
            "title": "Summer Promotion",
            "description": "Morning departure with central pickup included."
          }
        },
        "offerCode": "SUMMER25",
        "offers": [
          {
            "id": "89fe0192-ddcd-430a-b285-e1396a4725d2",
            "tags": [
              "vip",
              "partner"
            ],
            "title": "Summer Promotion",
            "label": "Save 20%",
            "code": "SUMMER25",
            "description": "20% off selected departures this month.",
            "netDiscount": "FULL",
            "restrictions": {
              "minUnits": 1,
              "maxUnits": 10,
              "minTotal": 0,
              "maxTotal": 50000,
              "unitIds": [
                "3d6f0a3a-59d4-4b16-a0c5-11d2d8a4e6b7",
                "6b65fd83-4a1f-4744-8f4a-c24d8d770f29"
              ]
            },
            "usable": true,
            "unusableReason": "Offer is not valid for the selected date.",
            "membershipBenefit": {
              "id": "e7cc8bb4-8d1c-4848-8824-5dbedb718681",
              "title": "Summer Promotion",
              "description": "Morning departure with central pickup included."
            }
          }
        ],
        "packageAvailabilities": [
          {
            "allDay": false,
            "available": true,
            "capacity": 2,
            "id": "94cdd032-3d32-416d-b0a4-abf8b7495b8b",
            "localDateTimeEnd": "2026-03-01T12:00:00-08:00",
            "localDateTimeStart": "2026-03-01T09:00:00-08:00",
            "maxPaxCount": 2,
            "maxUnits": 2,
            "openingHours": [
              {
                "from": "09:00",
                "to": "17:00"
              }
            ],
            "packageIncludeId": "package_include_id-example",
            "paxCount": 2,
            "reference": "REF-2026-001",
            "status": "AVAILABLE",
            "statusMessage": "Limited availability for this departure.",
            "utcCutoffAt": "2026-05-14T13:00:00Z",
            "utcOnsaleAt": "2026-05-14T13:00:00Z",
            "vacancies": 2,
            "extraPricing": [
              {
                "currency": "USD",
                "currencyPrecision": 2,
                "extraId": "extra_fast_track",
                "net": 18000,
                "original": 22000,
                "retail": 20000,
                "includedTaxes": [
                  {
                    "name": "Sales Tax",
                    "shortDescription": "Local sales tax",
                    "original": 2000,
                    "retail": 1800,
                    "net": 1600
                  }
                ],
                "offerDiscount": {
                  "retail": 2000,
                  "net": 2000,
                  "includedTaxes": [
                    {
                      "name": "Sales Tax",
                      "shortDescription": "Local sales tax",
                      "retail": 200,
                      "net": 200
                    }
                  ]
                }
              }
            ],
            "pricing": {
              "currency": "USD",
              "currencyPrecision": 2,
              "net": 18000,
              "original": 22000,
              "retail": 20000,
              "includedTaxes": [
                {
                  "name": "Sales Tax",
                  "shortDescription": "Local sales tax",
                  "original": 2000,
                  "retail": 1800,
                  "net": 1600
                }
              ],
              "offerDiscount": {
                "retail": 2000,
                "net": 2000,
                "includedTaxes": [
                  {
                    "name": "Sales Tax",
                    "shortDescription": "Local sales tax",
                    "retail": 200,
                    "net": 200
                  }
                ]
              }
            },
            "unitPricing": [
              {
                "currency": "USD",
                "currencyPrecision": 2,
                "net": 18000,
                "original": 22000,
                "retail": 20000,
                "unitId": "unit_adult",
                "unitType": "ADULT",
                "includedTaxes": [
                  {
                    "name": "Sales Tax",
                    "shortDescription": "Local sales tax",
                    "original": 2000,
                    "retail": 1800,
                    "net": 1600
                  }
                ],
                "offerDiscount": {
                  "retail": 2000,
                  "net": 2000,
                  "includedTaxes": [
                    {
                      "name": "Sales Tax",
                      "shortDescription": "Local sales tax",
                      "retail": 200,
                      "net": 200
                    }
                  ]
                }
              }
            ],
            "offer": {
              "id": "89fe0192-ddcd-430a-b285-e1396a4725d2",
              "tags": [
                "vip",
                "partner"
              ],
              "title": "Summer Promotion",
              "label": "Save 20%",
              "code": "SUMMER25",
              "description": "20% off selected departures this month.",
              "netDiscount": "FULL",
              "restrictions": {
                "minUnits": 1,
                "maxUnits": 10,
                "minTotal": 0,
                "maxTotal": 50000,
                "unitIds": [
                  "3d6f0a3a-59d4-4b16-a0c5-11d2d8a4e6b7",
                  "6b65fd83-4a1f-4744-8f4a-c24d8d770f29"
                ]
              },
              "usable": true,
              "unusableReason": "Offer is not valid for the selected date.",
              "membershipBenefit": {
                "id": "e7cc8bb4-8d1c-4848-8824-5dbedb718681",
                "title": "Summer Promotion",
                "description": "Morning departure with central pickup included."
              }
            },
            "offerCode": "SUMMER25",
            "offers": [
              {
                "id": "89fe0192-ddcd-430a-b285-e1396a4725d2",
                "tags": [
                  "vip",
                  "partner"
                ],
                "title": "Summer Promotion",
                "label": "Save 20%",
                "code": "SUMMER25",
                "description": "20% off selected departures this month.",
                "netDiscount": "FULL",
                "restrictions": {
                  "minUnits": 1,
                  "maxUnits": 10,
                  "minTotal": 0,
                  "maxTotal": 50000,
                  "unitIds": [
                    "3d6f0a3a-59d4-4b16-a0c5-11d2d8a4e6b7",
                    "6b65fd83-4a1f-4744-8f4a-c24d8d770f29"
                  ]
                },
                "usable": true,
                "unusableReason": "Offer is not valid for the selected date.",
                "membershipBenefit": {
                  "id": "e7cc8bb4-8d1c-4848-8824-5dbedb718681",
                  "title": "Summer Promotion",
                  "description": "Morning departure with central pickup included."
                }
              }
            ],
            "packageAvailabilities": "[Circular Reference]",
            "dropoffAvailable": true,
            "dropoffPoints": [
              {
                "id": "1cfe2c68-4a91-4df8-8d69-4b393d469caf",
                "name": "Union Square Pickup",
                "directions": "Meet outside the main entrance beside the red awning.",
                "address": "333 O'Farrell St, San Francisco, CA 94102",
                "latitude": 37.785452,
                "longitude": -122.408058,
                "googlePlaceId": "ChIJN1t_tDeuEmsRUsoyG83frY4",
                "street": "333 O'Farrell St",
                "postalCode": "94102",
                "locality": "San Francisco",
                "region": "California",
                "state": "CA",
                "country": "US",
                "localDateTime": "2026-05-14T08:30:00-07:00",
                "localDateTimeTo": "2026-05-14T08:45:00-07:00"
              }
            ],
            "dropoffRequired": true,
            "pickupAvailable": true,
            "pickupPoints": [
              {
                "id": "1cfe2c68-4a91-4df8-8d69-4b393d469caf",
                "name": "Union Square Pickup",
                "directions": "Meet outside the main entrance beside the red awning.",
                "address": "333 O'Farrell St, San Francisco, CA 94102",
                "latitude": 37.785452,
                "longitude": -122.408058,
                "googlePlaceId": "ChIJN1t_tDeuEmsRUsoyG83frY4",
                "street": "333 O'Farrell St",
                "postalCode": "94102",
                "locality": "San Francisco",
                "region": "California",
                "state": "CA",
                "country": "US",
                "localDateTime": "2026-05-14T08:30:00-07:00",
                "localDateTimeTo": "2026-05-14T08:45:00-07:00"
              }
            ],
            "pickupRequired": true,
            "hasResources": true,
            "mappings": [
              {
                "resellerReference": "RES-BOOK-10045",
                "resellerStatus": "CONFIRMED",
                "resellerProduct": "grand-canyon-day-tour",
                "productId": "e7cc8bb4-8d1c-4848-8824-5dbedb718681",
                "optionId": "94cdd032-3d32-416d-b0a4-abf8b7495b8b",
                "unitId": "unit_adult",
                "optionRequired": true,
                "unitRequired": true,
                "validityDays": 2,
                "webhookUrl": "https://www.city-sightseeing.com"
              }
            ]
          }
        ],
        "dropoffAvailable": true,
        "dropoffPoints": [
          {
            "id": "1cfe2c68-4a91-4df8-8d69-4b393d469caf",
            "name": "Union Square Pickup",
            "directions": "Meet outside the main entrance beside the red awning.",
            "address": "333 O'Farrell St, San Francisco, CA 94102",
            "latitude": 37.785452,
            "longitude": -122.408058,
            "googlePlaceId": "ChIJN1t_tDeuEmsRUsoyG83frY4",
            "street": "333 O'Farrell St",
            "postalCode": "94102",
            "locality": "San Francisco",
            "region": "California",
            "state": "CA",
            "country": "US",
            "localDateTime": "2026-05-14T08:30:00-07:00",
            "localDateTimeTo": "2026-05-14T08:45:00-07:00"
          }
        ],
        "dropoffRequired": true,
        "pickupAvailable": true,
        "pickupPoints": [
          {
            "id": "1cfe2c68-4a91-4df8-8d69-4b393d469caf",
            "name": "Union Square Pickup",
            "directions": "Meet outside the main entrance beside the red awning.",
            "address": "333 O'Farrell St, San Francisco, CA 94102",
            "latitude": 37.785452,
            "longitude": -122.408058,
            "googlePlaceId": "ChIJN1t_tDeuEmsRUsoyG83frY4",
            "street": "333 O'Farrell St",
            "postalCode": "94102",
            "locality": "San Francisco",
            "region": "California",
            "state": "CA",
            "country": "US",
            "localDateTime": "2026-05-14T08:30:00-07:00",
            "localDateTimeTo": "2026-05-14T08:45:00-07:00"
          }
        ],
        "pickupRequired": true,
        "hasResources": true,
        "mappings": [
          {
            "resellerReference": "RES-BOOK-10045",
            "resellerStatus": "CONFIRMED",
            "resellerProduct": "grand-canyon-day-tour",
            "productId": "e7cc8bb4-8d1c-4848-8824-5dbedb718681",
            "optionId": "94cdd032-3d32-416d-b0a4-abf8b7495b8b",
            "unitId": "unit_adult",
            "optionRequired": true,
            "unitRequired": true,
            "validityDays": 2,
            "webhookUrl": "https://www.city-sightseeing.com"
          }
        ]
      }
    ],
    "dropoffAvailable": true,
    "dropoffPoints": [
      {
        "id": "1cfe2c68-4a91-4df8-8d69-4b393d469caf",
        "name": "Union Square Pickup",
        "directions": "Meet outside the main entrance beside the red awning.",
        "address": "333 O'Farrell St, San Francisco, CA 94102",
        "latitude": 37.785452,
        "longitude": -122.408058,
        "googlePlaceId": "ChIJN1t_tDeuEmsRUsoyG83frY4",
        "street": "333 O'Farrell St",
        "postalCode": "94102",
        "locality": "San Francisco",
        "region": "California",
        "state": "CA",
        "country": "US",
        "localDateTime": "2026-05-14T08:30:00-07:00",
        "localDateTimeTo": "2026-05-14T08:45:00-07:00"
      }
    ],
    "dropoffRequired": true,
    "pickupAvailable": true,
    "pickupPoints": [
      {
        "id": "1cfe2c68-4a91-4df8-8d69-4b393d469caf",
        "name": "Union Square Pickup",
        "directions": "Meet outside the main entrance beside the red awning.",
        "address": "333 O'Farrell St, San Francisco, CA 94102",
        "latitude": 37.785452,
        "longitude": -122.408058,
        "googlePlaceId": "ChIJN1t_tDeuEmsRUsoyG83frY4",
        "street": "333 O'Farrell St",
        "postalCode": "94102",
        "locality": "San Francisco",
        "region": "California",
        "state": "CA",
        "country": "US",
        "localDateTime": "2026-05-14T08:30:00-07:00",
        "localDateTimeTo": "2026-05-14T08:45:00-07:00"
      }
    ],
    "pickupRequired": true,
    "hasResources": true,
    "mappings": [
      {
        "resellerReference": "RES-BOOK-10045",
        "resellerStatus": "CONFIRMED",
        "resellerProduct": "grand-canyon-day-tour",
        "productId": "e7cc8bb4-8d1c-4848-8824-5dbedb718681",
        "optionId": "94cdd032-3d32-416d-b0a4-abf8b7495b8b",
        "unitId": "unit_adult",
        "optionRequired": true,
        "unitRequired": true,
        "validityDays": 2,
        "webhookUrl": "https://www.city-sightseeing.com"
      }
    ]
  }
]

Batch Availability Calendar Query

post

Returns calendar availability across multiple products/options. Designed for background batch jobs and back-office processing, not realtime client requests. For realtime calendar UX use POST /availability/calendar, then call POST /availability to obtain the availabilityId required for booking.

Body

Request schema for /availability/calendar/batch. Includes the same selectors as /availability/calendar, with optional product filters.

localDateStartstring · dateRequired

Start local date in YYYY-MM-DD format.

Example: 2026-05-14
localDateEndstring · dateRequired

End local date in YYYY-MM-DD format.

Example: 2026-05-21
productIdsstring[]Optional

Optional multi-product filter.

Example: ["e7cc8bb4-8d1c-4848-8824-5dbedb718681","prod_london_hop_on_hop_off"]
currencystringOptional

ISO 4217 currency code.

Example: USD
uuidstringOptional

User-submitted UUID field that can be used to uniquely reference this resource and provide idempotency against repeat requests with the same UUID.

Example: 89fe0192-ddcd-430a-b285-e1396a4725d2
offerCodestringOptional

From capability octo/offers.

Example: SUMMER25
rentalDurationIdstringOptional

From capability octo/rentals.

Example: rental_duration_2h
Responses
200

Successful response

application/json
availabilityLocalStartTimesstring[]Required

List of availability local start time values.

Example: ["09:00","13:00"]
availablebooleanRequired

Whether this availability can be booked.

Example: true
availableWeightnumber · nullableOptional

Available weight numeric value.

Example: 20
capacityinteger · nullableOptional

Capacity numeric value.

Example: 2
localDatestring · dateRequired

Local date in YYYY-MM-DD format.

Example: 2026-03-01
maxPaxCountinteger · nullableOptional

Max pax count numeric value.

Example: 2
maxUnitsinteger · nullableOptional

Max units numeric value.

Example: 2
maxWeightnumber · nullableOptional

Max weight numeric value.

Example: 20
optionIdstringRequired

Option identifier.

Example: 94cdd032-3d32-416d-b0a4-abf8b7495b8b
paxCountintegerOptional

Pax count numeric value.

Example: 2
paxWeightnumberOptional

Pax weight numeric value.

Example: 20
productIdstringRequired

Product identifier.

Example: e7cc8bb4-8d1c-4848-8824-5dbedb718681
statusstring · enumRequired

Current status value.

Example: AVAILABLEPossible values:
statusMessagestringRequired

Status message value.

Example: Limited availability for this departure.
utcCutoffAtstring · date-timeRequired

Utc cutoff at timestamp in ISO 8601 format.

Example: 2026-05-14T13:00:00Z
utcOnsaleAtstring · date-time · nullableOptional

Utc onsale at timestamp in ISO 8601 format.

Example: 2026-05-14T13:00:00Z
vacanciesinteger · nullableOptional

Vacancies numeric value.

Example: 2
weightUnitstring · nullableOptional

Weight unit for the weight value.

Example: kg
offerCodestring · nullableOptional

From capability octo/offers.

Example: SUMMER25
post/availability/calendar/batch
POST /octo/availability/calendar/batch HTTP/1.1
Host: api.ventrata.com
Content-Type: application/json
Accept: */*
Content-Length: 644

{
  "localDateStart": "2026-05-14",
  "localDateEnd": "2026-05-21",
  "productIds": [
    "e7cc8bb4-8d1c-4848-8824-5dbedb718681",
    "prod_london_hop_on_hop_off"
  ],
  "units": [
    {
      "id": "3d6f0a3a-59d4-4b16-a0c5-11d2d8a4e6b7",
      "quantity": 2,
      "weightValue": 20,
      "weightUnit": "kg"
    }
  ],
  "currency": "USD",
  "uuid": "89fe0192-ddcd-430a-b285-e1396a4725d2",
  "offerCode": "SUMMER25",
  "extras": [
    {
      "id": "3d6f0a3a-59d4-4b16-a0c5-11d2d8a4e6b7",
      "quantity": 2,
      "retail": 1500
    }
  ],
  "rentalDurationId": "rental_duration_2h",
  "membership": {
    "id": "89fe0192-ddcd-430a-b285-e1396a4725d2",
    "email": "jane.doe@goldengatetours.com",
    "mobile": "+12025550123",
    "country": "US",
    "reference": "REF-2026-001",
    "verification": "123456"
  }
}
200

Successful response

[
  {
    "availabilityLocalStartTimes": [
      "09:00",
      "13:00"
    ],
    "available": true,
    "availableWeight": 20,
    "capacity": 2,
    "localDate": "2026-03-01",
    "maxPaxCount": 2,
    "maxUnits": 2,
    "maxWeight": 20,
    "openingHours": [
      {
        "from": "09:00",
        "to": "17:00"
      }
    ],
    "optionId": "94cdd032-3d32-416d-b0a4-abf8b7495b8b",
    "paxCount": 2,
    "paxWeight": 20,
    "productId": "e7cc8bb4-8d1c-4848-8824-5dbedb718681",
    "status": "AVAILABLE",
    "statusMessage": "Limited availability for this departure.",
    "utcCutoffAt": "2026-05-14T13:00:00Z",
    "utcOnsaleAt": "2026-05-14T13:00:00Z",
    "vacancies": 2,
    "weightUnit": "kg",
    "extraPricingFrom": [
      {
        "currency": "USD",
        "currencyPrecision": 2,
        "extraId": "extra_fast_track",
        "net": 18000,
        "original": 22000,
        "retail": 20000,
        "includedTaxes": [
          {
            "name": "Sales Tax",
            "shortDescription": "Local sales tax",
            "original": 2000,
            "retail": 1800,
            "net": 1600
          }
        ],
        "offerDiscount": {
          "retail": 2000,
          "net": 2000,
          "includedTaxes": [
            {
              "name": "Sales Tax",
              "shortDescription": "Local sales tax",
              "retail": 200,
              "net": 200
            }
          ]
        }
      }
    ],
    "pricingFrom": {
      "currency": "USD",
      "currencyPrecision": 2,
      "net": 18000,
      "original": 22000,
      "retail": 20000,
      "includedTaxes": [
        {
          "name": "Sales Tax",
          "shortDescription": "Local sales tax",
          "original": 2000,
          "retail": 1800,
          "net": 1600
        }
      ],
      "offerDiscount": {
        "retail": 2000,
        "net": 2000,
        "includedTaxes": [
          {
            "name": "Sales Tax",
            "shortDescription": "Local sales tax",
            "retail": 200,
            "net": 200
          }
        ]
      }
    },
    "unitPricingFrom": [
      {
        "currency": "USD",
        "currencyPrecision": 2,
        "net": 18000,
        "original": 22000,
        "retail": 20000,
        "unitId": "unit_adult",
        "unitType": "ADULT",
        "includedTaxes": [
          {
            "name": "Sales Tax",
            "shortDescription": "Local sales tax",
            "original": 2000,
            "retail": 1800,
            "net": 1600
          }
        ],
        "offerDiscount": {
          "retail": 2000,
          "net": 2000,
          "includedTaxes": [
            {
              "name": "Sales Tax",
              "shortDescription": "Local sales tax",
              "retail": 200,
              "net": 200
            }
          ]
        }
      }
    ],
    "offer": {
      "id": "89fe0192-ddcd-430a-b285-e1396a4725d2",
      "tags": [
        "vip",
        "partner"
      ],
      "title": "Summer Promotion",
      "label": "Save 20%",
      "code": "SUMMER25",
      "description": "20% off selected departures this month.",
      "netDiscount": "FULL",
      "restrictions": {
        "minUnits": 1,
        "maxUnits": 10,
        "minTotal": 0,
        "maxTotal": 50000,
        "unitIds": [
          "3d6f0a3a-59d4-4b16-a0c5-11d2d8a4e6b7",
          "6b65fd83-4a1f-4744-8f4a-c24d8d770f29"
        ]
      },
      "usable": true,
      "unusableReason": "Offer is not valid for the selected date.",
      "membershipBenefit": {
        "id": "e7cc8bb4-8d1c-4848-8824-5dbedb718681",
        "title": "Summer Promotion",
        "description": "Morning departure with central pickup included."
      }
    },
    "offerCode": "SUMMER25",
    "offers": [
      {
        "id": "89fe0192-ddcd-430a-b285-e1396a4725d2",
        "tags": [
          "vip",
          "partner"
        ],
        "title": "Summer Promotion",
        "label": "Save 20%",
        "code": "SUMMER25",
        "description": "20% off selected departures this month.",
        "netDiscount": "FULL",
        "restrictions": {
          "minUnits": 1,
          "maxUnits": 10,
          "minTotal": 0,
          "maxTotal": 50000,
          "unitIds": [
            "3d6f0a3a-59d4-4b16-a0c5-11d2d8a4e6b7",
            "6b65fd83-4a1f-4744-8f4a-c24d8d770f29"
          ]
        },
        "usable": true,
        "unusableReason": "Offer is not valid for the selected date.",
        "membershipBenefit": {
          "id": "e7cc8bb4-8d1c-4848-8824-5dbedb718681",
          "title": "Summer Promotion",
          "description": "Morning departure with central pickup included."
        }
      }
    ]
  }
]

Batch Availability Query

post

Returns detailed availability across multiple products and options. Designed for background batch jobs and back-office processing, not realtime client requests. For realtime client requests use POST /availability.

Body

Request schema for /availability/batch. Includes the same selectors as /availability, with optional product filters.

availabilityIdstringOptional

Single availability identifier (ISO-8601 local date or date-time).

Example: 2026-05-14T09:00:00-04:00
availabilityIdsstring[]Optional

Multiple availability identifiers.

Example: ["2026-05-14T09:00:00-04:00","2026-05-15T09:00:00-04:00"]
currencystringOptional

ISO 4217 currency code.

Example: USD
localDatestring · dateOptional

Local date in the product timezone (YYYY-MM-DD).

Example: 2026-05-14
localDateEndstring · dateOptional

End of local date range in the product timezone (YYYY-MM-DD).

Example: 2026-05-21
localDateStartstring · dateOptional

Start of local date range in the product timezone (YYYY-MM-DD).

Example: 2026-05-14
localTimestringOptional

Local start time in the product timezone (HH:MM).

Example: 09:00
productIdsstring[]Optional

Optional multi-product filter.

Example: ["e7cc8bb4-8d1c-4848-8824-5dbedb718681","prod_london_hop_on_hop_off"]
uuidstringOptional

User-submitted UUID field that can be used to uniquely reference this resource and provide idempotency against repeat requests with the same UUID.

Example: 89fe0192-ddcd-430a-b285-e1396a4725d2
offerCodestringOptional

Offer code to evaluate for pricing and eligibility. From capability octo/offers.

Example: SUMMER25
rentalDurationIdstringOptional

Rental duration identifier for rental products. From capability octo/rentals.

Example: rental_duration_2h
Responses
200

Successful response

application/json
allDaybooleanRequired

Whether all day is enabled.

Example: false
availablebooleanRequired

Whether this availability can be booked.

Example: true
capacityinteger · nullableOptional

Capacity numeric value.

Example: 2
idstring · uuidRequired

Unique identifier for this resource.

Example: 94cdd032-3d32-416d-b0a4-abf8b7495b8b
localDateTimeEndstring · date-timeRequired

Local date time end timestamp in ISO 8601 format.

Example: 2026-03-01T12:00:00-08:00
localDateTimeStartstring · date-timeRequired

Local date time start timestamp in ISO 8601 format.

Example: 2026-03-01T09:00:00-08:00
maxPaxCountinteger · nullableOptional

Max pax count numeric value.

Example: 2
maxUnitsinteger · nullableOptional

Max units numeric value.

Example: 2
optionIdstringRequired

Option identifier.

Example: 94cdd032-3d32-416d-b0a4-abf8b7495b8b
paxCountintegerOptional

Pax count numeric value.

Example: 2
productIdstringRequired

Product identifier.

Example: e7cc8bb4-8d1c-4848-8824-5dbedb718681
referencestring · nullableOptional

Reference value.

Example: REF-2026-001
statusstring · enumRequired

Current status value.

Example: AVAILABLEPossible values:
statusMessagestringRequired

Status message value.

Example: Limited availability for this departure.
utcCutoffAtstring · date-timeRequired

Utc cutoff at timestamp in ISO 8601 format.

Example: 2026-05-14T13:00:00Z
utcOnsaleAtstring · date-time · nullableOptional

Utc onsale at timestamp in ISO 8601 format.

Example: 2026-05-14T13:00:00Z
vacanciesinteger · nullableOptional

Vacancies numeric value.

Example: 2
offerCodestring · nullableOptional

From capability octo/offers.

Example: SUMMER25
dropoffAvailablebooleanOptional

From capability octo/pickups.

Example: true
dropoffRequiredbooleanOptional

From capability octo/pickups.

Example: true
pickupAvailablebooleanOptional

From capability octo/pickups.

Example: true
pickupRequiredbooleanOptional

From capability octo/pickups.

Example: true
hasResourcesbooleanOptional

From capability octo/resources.

Example: true
post/availability/batch
POST /octo/availability/batch HTTP/1.1
Host: api.ventrata.com
Content-Type: application/json
Accept: */*
Content-Length: 810

{
  "availabilityId": "2026-05-14T09:00:00-04:00",
  "availabilityIds": [
    "2026-05-14T09:00:00-04:00",
    "2026-05-15T09:00:00-04:00"
  ],
  "currency": "USD",
  "localDate": "2026-05-14",
  "localDateEnd": "2026-05-21",
  "localDateStart": "2026-05-14",
  "localTime": "09:00",
  "productIds": [
    "e7cc8bb4-8d1c-4848-8824-5dbedb718681",
    "prod_london_hop_on_hop_off"
  ],
  "units": [
    {
      "id": "3d6f0a3a-59d4-4b16-a0c5-11d2d8a4e6b7",
      "quantity": 2,
      "weightValue": 20,
      "weightUnit": "kg"
    }
  ],
  "uuid": "89fe0192-ddcd-430a-b285-e1396a4725d2",
  "offerCode": "SUMMER25",
  "extras": [
    {
      "id": "3d6f0a3a-59d4-4b16-a0c5-11d2d8a4e6b7",
      "quantity": 2,
      "retail": 1500
    }
  ],
  "rentalDurationId": "rental_duration_2h",
  "membership": {
    "id": "89fe0192-ddcd-430a-b285-e1396a4725d2",
    "email": "jane.doe@goldengatetours.com",
    "mobile": "+12025550123",
    "country": "US",
    "reference": "REF-2026-001",
    "verification": "123456"
  }
}
200

Successful response

[
  {
    "allDay": false,
    "available": true,
    "capacity": 2,
    "id": "94cdd032-3d32-416d-b0a4-abf8b7495b8b",
    "localDateTimeEnd": "2026-03-01T12:00:00-08:00",
    "localDateTimeStart": "2026-03-01T09:00:00-08:00",
    "maxPaxCount": 2,
    "maxUnits": 2,
    "openingHours": [
      {
        "from": "09:00",
        "to": "17:00"
      }
    ],
    "optionId": "94cdd032-3d32-416d-b0a4-abf8b7495b8b",
    "paxCount": 2,
    "productId": "e7cc8bb4-8d1c-4848-8824-5dbedb718681",
    "reference": "REF-2026-001",
    "status": "AVAILABLE",
    "statusMessage": "Limited availability for this departure.",
    "utcCutoffAt": "2026-05-14T13:00:00Z",
    "utcOnsaleAt": "2026-05-14T13:00:00Z",
    "vacancies": 2,
    "extraPricing": [
      {
        "currency": "USD",
        "currencyPrecision": 2,
        "extraId": "extra_fast_track",
        "net": 18000,
        "original": 22000,
        "retail": 20000,
        "includedTaxes": [
          {
            "name": "Sales Tax",
            "shortDescription": "Local sales tax",
            "original": 2000,
            "retail": 1800,
            "net": 1600
          }
        ],
        "offerDiscount": {
          "retail": 2000,
          "net": 2000,
          "includedTaxes": [
            {
              "name": "Sales Tax",
              "shortDescription": "Local sales tax",
              "retail": 200,
              "net": 200
            }
          ]
        }
      }
    ],
    "pricing": {
      "currency": "USD",
      "currencyPrecision": 2,
      "net": 18000,
      "original": 22000,
      "retail": 20000,
      "includedTaxes": [
        {
          "name": "Sales Tax",
          "shortDescription": "Local sales tax",
          "original": 2000,
          "retail": 1800,
          "net": 1600
        }
      ],
      "offerDiscount": {
        "retail": 2000,
        "net": 2000,
        "includedTaxes": [
          {
            "name": "Sales Tax",
            "shortDescription": "Local sales tax",
            "retail": 200,
            "net": 200
          }
        ]
      }
    },
    "unitPricing": [
      {
        "currency": "USD",
        "currencyPrecision": 2,
        "net": 18000,
        "original": 22000,
        "retail": 20000,
        "unitId": "unit_adult",
        "unitType": "ADULT",
        "includedTaxes": [
          {
            "name": "Sales Tax",
            "shortDescription": "Local sales tax",
            "original": 2000,
            "retail": 1800,
            "net": 1600
          }
        ],
        "offerDiscount": {
          "retail": 2000,
          "net": 2000,
          "includedTaxes": [
            {
              "name": "Sales Tax",
              "shortDescription": "Local sales tax",
              "retail": 200,
              "net": 200
            }
          ]
        }
      }
    ],
    "offer": {
      "id": "89fe0192-ddcd-430a-b285-e1396a4725d2",
      "tags": [
        "vip",
        "partner"
      ],
      "title": "Summer Promotion",
      "label": "Save 20%",
      "code": "SUMMER25",
      "description": "20% off selected departures this month.",
      "netDiscount": "FULL",
      "restrictions": {
        "minUnits": 1,
        "maxUnits": 10,
        "minTotal": 0,
        "maxTotal": 50000,
        "unitIds": [
          "3d6f0a3a-59d4-4b16-a0c5-11d2d8a4e6b7",
          "6b65fd83-4a1f-4744-8f4a-c24d8d770f29"
        ]
      },
      "usable": true,
      "unusableReason": "Offer is not valid for the selected date.",
      "membershipBenefit": {
        "id": "e7cc8bb4-8d1c-4848-8824-5dbedb718681",
        "title": "Summer Promotion",
        "description": "Morning departure with central pickup included."
      }
    },
    "offerCode": "SUMMER25",
    "offers": [
      {
        "id": "89fe0192-ddcd-430a-b285-e1396a4725d2",
        "tags": [
          "vip",
          "partner"
        ],
        "title": "Summer Promotion",
        "label": "Save 20%",
        "code": "SUMMER25",
        "description": "20% off selected departures this month.",
        "netDiscount": "FULL",
        "restrictions": {
          "minUnits": 1,
          "maxUnits": 10,
          "minTotal": 0,
          "maxTotal": 50000,
          "unitIds": [
            "3d6f0a3a-59d4-4b16-a0c5-11d2d8a4e6b7",
            "6b65fd83-4a1f-4744-8f4a-c24d8d770f29"
          ]
        },
        "usable": true,
        "unusableReason": "Offer is not valid for the selected date.",
        "membershipBenefit": {
          "id": "e7cc8bb4-8d1c-4848-8824-5dbedb718681",
          "title": "Summer Promotion",
          "description": "Morning departure with central pickup included."
        }
      }
    ],
    "packageAvailabilities": [
      {
        "allDay": false,
        "available": true,
        "capacity": 2,
        "id": "94cdd032-3d32-416d-b0a4-abf8b7495b8b",
        "localDateTimeEnd": "2026-03-01T12:00:00-08:00",
        "localDateTimeStart": "2026-03-01T09:00:00-08:00",
        "maxPaxCount": 2,
        "maxUnits": 2,
        "openingHours": [
          {
            "from": "09:00",
            "to": "17:00"
          }
        ],
        "packageIncludeId": "package_include_id-example",
        "paxCount": 2,
        "reference": "REF-2026-001",
        "status": "AVAILABLE",
        "statusMessage": "Limited availability for this departure.",
        "utcCutoffAt": "2026-05-14T13:00:00Z",
        "utcOnsaleAt": "2026-05-14T13:00:00Z",
        "vacancies": 2,
        "extraPricing": [
          {
            "currency": "USD",
            "currencyPrecision": 2,
            "extraId": "extra_fast_track",
            "net": 18000,
            "original": 22000,
            "retail": 20000,
            "includedTaxes": [
              {
                "name": "Sales Tax",
                "shortDescription": "Local sales tax",
                "original": 2000,
                "retail": 1800,
                "net": 1600
              }
            ],
            "offerDiscount": {
              "retail": 2000,
              "net": 2000,
              "includedTaxes": [
                {
                  "name": "Sales Tax",
                  "shortDescription": "Local sales tax",
                  "retail": 200,
                  "net": 200
                }
              ]
            }
          }
        ],
        "pricing": {
          "currency": "USD",
          "currencyPrecision": 2,
          "net": 18000,
          "original": 22000,
          "retail": 20000,
          "includedTaxes": [
            {
              "name": "Sales Tax",
              "shortDescription": "Local sales tax",
              "original": 2000,
              "retail": 1800,
              "net": 1600
            }
          ],
          "offerDiscount": {
            "retail": 2000,
            "net": 2000,
            "includedTaxes": [
              {
                "name": "Sales Tax",
                "shortDescription": "Local sales tax",
                "retail": 200,
                "net": 200
              }
            ]
          }
        },
        "unitPricing": [
          {
            "currency": "USD",
            "currencyPrecision": 2,
            "net": 18000,
            "original": 22000,
            "retail": 20000,
            "unitId": "unit_adult",
            "unitType": "ADULT",
            "includedTaxes": [
              {
                "name": "Sales Tax",
                "shortDescription": "Local sales tax",
                "original": 2000,
                "retail": 1800,
                "net": 1600
              }
            ],
            "offerDiscount": {
              "retail": 2000,
              "net": 2000,
              "includedTaxes": [
                {
                  "name": "Sales Tax",
                  "shortDescription": "Local sales tax",
                  "retail": 200,
                  "net": 200
                }
              ]
            }
          }
        ],
        "offer": {
          "id": "89fe0192-ddcd-430a-b285-e1396a4725d2",
          "tags": [
            "vip",
            "partner"
          ],
          "title": "Summer Promotion",
          "label": "Save 20%",
          "code": "SUMMER25",
          "description": "20% off selected departures this month.",
          "netDiscount": "FULL",
          "restrictions": {
            "minUnits": 1,
            "maxUnits": 10,
            "minTotal": 0,
            "maxTotal": 50000,
            "unitIds": [
              "3d6f0a3a-59d4-4b16-a0c5-11d2d8a4e6b7",
              "6b65fd83-4a1f-4744-8f4a-c24d8d770f29"
            ]
          },
          "usable": true,
          "unusableReason": "Offer is not valid for the selected date.",
          "membershipBenefit": {
            "id": "e7cc8bb4-8d1c-4848-8824-5dbedb718681",
            "title": "Summer Promotion",
            "description": "Morning departure with central pickup included."
          }
        },
        "offerCode": "SUMMER25",
        "offers": [
          {
            "id": "89fe0192-ddcd-430a-b285-e1396a4725d2",
            "tags": [
              "vip",
              "partner"
            ],
            "title": "Summer Promotion",
            "label": "Save 20%",
            "code": "SUMMER25",
            "description": "20% off selected departures this month.",
            "netDiscount": "FULL",
            "restrictions": {
              "minUnits": 1,
              "maxUnits": 10,
              "minTotal": 0,
              "maxTotal": 50000,
              "unitIds": [
                "3d6f0a3a-59d4-4b16-a0c5-11d2d8a4e6b7",
                "6b65fd83-4a1f-4744-8f4a-c24d8d770f29"
              ]
            },
            "usable": true,
            "unusableReason": "Offer is not valid for the selected date.",
            "membershipBenefit": {
              "id": "e7cc8bb4-8d1c-4848-8824-5dbedb718681",
              "title": "Summer Promotion",
              "description": "Morning departure with central pickup included."
            }
          }
        ],
        "packageAvailabilities": [
          {
            "allDay": false,
            "available": true,
            "capacity": 2,
            "id": "94cdd032-3d32-416d-b0a4-abf8b7495b8b",
            "localDateTimeEnd": "2026-03-01T12:00:00-08:00",
            "localDateTimeStart": "2026-03-01T09:00:00-08:00",
            "maxPaxCount": 2,
            "maxUnits": 2,
            "openingHours": [
              {
                "from": "09:00",
                "to": "17:00"
              }
            ],
            "packageIncludeId": "package_include_id-example",
            "paxCount": 2,
            "reference": "REF-2026-001",
            "status": "AVAILABLE",
            "statusMessage": "Limited availability for this departure.",
            "utcCutoffAt": "2026-05-14T13:00:00Z",
            "utcOnsaleAt": "2026-05-14T13:00:00Z",
            "vacancies": 2,
            "extraPricing": [
              {
                "currency": "USD",
                "currencyPrecision": 2,
                "extraId": "extra_fast_track",
                "net": 18000,
                "original": 22000,
                "retail": 20000,
                "includedTaxes": [
                  {
                    "name": "Sales Tax",
                    "shortDescription": "Local sales tax",
                    "original": 2000,
                    "retail": 1800,
                    "net": 1600
                  }
                ],
                "offerDiscount": {
                  "retail": 2000,
                  "net": 2000,
                  "includedTaxes": [
                    {
                      "name": "Sales Tax",
                      "shortDescription": "Local sales tax",
                      "retail": 200,
                      "net": 200
                    }
                  ]
                }
              }
            ],
            "pricing": {
              "currency": "USD",
              "currencyPrecision": 2,
              "net": 18000,
              "original": 22000,
              "retail": 20000,
              "includedTaxes": [
                {
                  "name": "Sales Tax",
                  "shortDescription": "Local sales tax",
                  "original": 2000,
                  "retail": 1800,
                  "net": 1600
                }
              ],
              "offerDiscount": {
                "retail": 2000,
                "net": 2000,
                "includedTaxes": [
                  {
                    "name": "Sales Tax",
                    "shortDescription": "Local sales tax",
                    "retail": 200,
                    "net": 200
                  }
                ]
              }
            },
            "unitPricing": [
              {
                "currency": "USD",
                "currencyPrecision": 2,
                "net": 18000,
                "original": 22000,
                "retail": 20000,
                "unitId": "unit_adult",
                "unitType": "ADULT",
                "includedTaxes": [
                  {
                    "name": "Sales Tax",
                    "shortDescription": "Local sales tax",
                    "original": 2000,
                    "retail": 1800,
                    "net": 1600
                  }
                ],
                "offerDiscount": {
                  "retail": 2000,
                  "net": 2000,
                  "includedTaxes": [
                    {
                      "name": "Sales Tax",
                      "shortDescription": "Local sales tax",
                      "retail": 200,
                      "net": 200
                    }
                  ]
                }
              }
            ],
            "offer": {
              "id": "89fe0192-ddcd-430a-b285-e1396a4725d2",
              "tags": [
                "vip",
                "partner"
              ],
              "title": "Summer Promotion",
              "label": "Save 20%",
              "code": "SUMMER25",
              "description": "20% off selected departures this month.",
              "netDiscount": "FULL",
              "restrictions": {
                "minUnits": 1,
                "maxUnits": 10,
                "minTotal": 0,
                "maxTotal": 50000,
                "unitIds": [
                  "3d6f0a3a-59d4-4b16-a0c5-11d2d8a4e6b7",
                  "6b65fd83-4a1f-4744-8f4a-c24d8d770f29"
                ]
              },
              "usable": true,
              "unusableReason": "Offer is not valid for the selected date.",
              "membershipBenefit": {
                "id": "e7cc8bb4-8d1c-4848-8824-5dbedb718681",
                "title": "Summer Promotion",
                "description": "Morning departure with central pickup included."
              }
            },
            "offerCode": "SUMMER25",
            "offers": [
              {
                "id": "89fe0192-ddcd-430a-b285-e1396a4725d2",
                "tags": [
                  "vip",
                  "partner"
                ],
                "title": "Summer Promotion",
                "label": "Save 20%",
                "code": "SUMMER25",
                "description": "20% off selected departures this month.",
                "netDiscount": "FULL",
                "restrictions": {
                  "minUnits": 1,
                  "maxUnits": 10,
                  "minTotal": 0,
                  "maxTotal": 50000,
                  "unitIds": [
                    "3d6f0a3a-59d4-4b16-a0c5-11d2d8a4e6b7",
                    "6b65fd83-4a1f-4744-8f4a-c24d8d770f29"
                  ]
                },
                "usable": true,
                "unusableReason": "Offer is not valid for the selected date.",
                "membershipBenefit": {
                  "id": "e7cc8bb4-8d1c-4848-8824-5dbedb718681",
                  "title": "Summer Promotion",
                  "description": "Morning departure with central pickup included."
                }
              }
            ],
            "packageAvailabilities": "[Circular Reference]",
            "dropoffAvailable": true,
            "dropoffPoints": [
              {
                "id": "1cfe2c68-4a91-4df8-8d69-4b393d469caf",
                "name": "Union Square Pickup",
                "directions": "Meet outside the main entrance beside the red awning.",
                "address": "333 O'Farrell St, San Francisco, CA 94102",
                "latitude": 37.785452,
                "longitude": -122.408058,
                "googlePlaceId": "ChIJN1t_tDeuEmsRUsoyG83frY4",
                "street": "333 O'Farrell St",
                "postalCode": "94102",
                "locality": "San Francisco",
                "region": "California",
                "state": "CA",
                "country": "US",
                "localDateTime": "2026-05-14T08:30:00-07:00",
                "localDateTimeTo": "2026-05-14T08:45:00-07:00"
              }
            ],
            "dropoffRequired": true,
            "pickupAvailable": true,
            "pickupPoints": [
              {
                "id": "1cfe2c68-4a91-4df8-8d69-4b393d469caf",
                "name": "Union Square Pickup",
                "directions": "Meet outside the main entrance beside the red awning.",
                "address": "333 O'Farrell St, San Francisco, CA 94102",
                "latitude": 37.785452,
                "longitude": -122.408058,
                "googlePlaceId": "ChIJN1t_tDeuEmsRUsoyG83frY4",
                "street": "333 O'Farrell St",
                "postalCode": "94102",
                "locality": "San Francisco",
                "region": "California",
                "state": "CA",
                "country": "US",
                "localDateTime": "2026-05-14T08:30:00-07:00",
                "localDateTimeTo": "2026-05-14T08:45:00-07:00"
              }
            ],
            "pickupRequired": true,
            "hasResources": true,
            "mappings": [
              {
                "resellerReference": "RES-BOOK-10045",
                "resellerStatus": "CONFIRMED",
                "resellerProduct": "grand-canyon-day-tour",
                "productId": "e7cc8bb4-8d1c-4848-8824-5dbedb718681",
                "optionId": "94cdd032-3d32-416d-b0a4-abf8b7495b8b",
                "unitId": "unit_adult",
                "optionRequired": true,
                "unitRequired": true,
                "validityDays": 2,
                "webhookUrl": "https://www.city-sightseeing.com"
              }
            ]
          }
        ],
        "dropoffAvailable": true,
        "dropoffPoints": [
          {
            "id": "1cfe2c68-4a91-4df8-8d69-4b393d469caf",
            "name": "Union Square Pickup",
            "directions": "Meet outside the main entrance beside the red awning.",
            "address": "333 O'Farrell St, San Francisco, CA 94102",
            "latitude": 37.785452,
            "longitude": -122.408058,
            "googlePlaceId": "ChIJN1t_tDeuEmsRUsoyG83frY4",
            "street": "333 O'Farrell St",
            "postalCode": "94102",
            "locality": "San Francisco",
            "region": "California",
            "state": "CA",
            "country": "US",
            "localDateTime": "2026-05-14T08:30:00-07:00",
            "localDateTimeTo": "2026-05-14T08:45:00-07:00"
          }
        ],
        "dropoffRequired": true,
        "pickupAvailable": true,
        "pickupPoints": [
          {
            "id": "1cfe2c68-4a91-4df8-8d69-4b393d469caf",
            "name": "Union Square Pickup",
            "directions": "Meet outside the main entrance beside the red awning.",
            "address": "333 O'Farrell St, San Francisco, CA 94102",
            "latitude": 37.785452,
            "longitude": -122.408058,
            "googlePlaceId": "ChIJN1t_tDeuEmsRUsoyG83frY4",
            "street": "333 O'Farrell St",
            "postalCode": "94102",
            "locality": "San Francisco",
            "region": "California",
            "state": "CA",
            "country": "US",
            "localDateTime": "2026-05-14T08:30:00-07:00",
            "localDateTimeTo": "2026-05-14T08:45:00-07:00"
          }
        ],
        "pickupRequired": true,
        "hasResources": true,
        "mappings": [
          {
            "resellerReference": "RES-BOOK-10045",
            "resellerStatus": "CONFIRMED",
            "resellerProduct": "grand-canyon-day-tour",
            "productId": "e7cc8bb4-8d1c-4848-8824-5dbedb718681",
            "optionId": "94cdd032-3d32-416d-b0a4-abf8b7495b8b",
            "unitId": "unit_adult",
            "optionRequired": true,
            "unitRequired": true,
            "validityDays": 2,
            "webhookUrl": "https://www.city-sightseeing.com"
          }
        ]
      }
    ],
    "dropoffAvailable": true,
    "dropoffPoints": [
      {
        "id": "1cfe2c68-4a91-4df8-8d69-4b393d469caf",
        "name": "Union Square Pickup",
        "directions": "Meet outside the main entrance beside the red awning.",
        "address": "333 O'Farrell St, San Francisco, CA 94102",
        "latitude": 37.785452,
        "longitude": -122.408058,
        "googlePlaceId": "ChIJN1t_tDeuEmsRUsoyG83frY4",
        "street": "333 O'Farrell St",
        "postalCode": "94102",
        "locality": "San Francisco",
        "region": "California",
        "state": "CA",
        "country": "US",
        "localDateTime": "2026-05-14T08:30:00-07:00",
        "localDateTimeTo": "2026-05-14T08:45:00-07:00"
      }
    ],
    "dropoffRequired": true,
    "pickupAvailable": true,
    "pickupPoints": [
      {
        "id": "1cfe2c68-4a91-4df8-8d69-4b393d469caf",
        "name": "Union Square Pickup",
        "directions": "Meet outside the main entrance beside the red awning.",
        "address": "333 O'Farrell St, San Francisco, CA 94102",
        "latitude": 37.785452,
        "longitude": -122.408058,
        "googlePlaceId": "ChIJN1t_tDeuEmsRUsoyG83frY4",
        "street": "333 O'Farrell St",
        "postalCode": "94102",
        "locality": "San Francisco",
        "region": "California",
        "state": "CA",
        "country": "US",
        "localDateTime": "2026-05-14T08:30:00-07:00",
        "localDateTimeTo": "2026-05-14T08:45:00-07:00"
      }
    ],
    "pickupRequired": true,
    "hasResources": true,
    "mappings": [
      {
        "resellerReference": "RES-BOOK-10045",
        "resellerStatus": "CONFIRMED",
        "resellerProduct": "grand-canyon-day-tour",
        "productId": "e7cc8bb4-8d1c-4848-8824-5dbedb718681",
        "optionId": "94cdd032-3d32-416d-b0a4-abf8b7495b8b",
        "unitId": "unit_adult",
        "optionRequired": true,
        "unitRequired": true,
        "validityDays": 2,
        "webhookUrl": "https://www.city-sightseeing.com"
      }
    ]
  }
]

Last updated