Memberships
Exposes Ventrata membership capabilities to OCTO.
This capability allows member benefits to be redeemed when making new bookings.
To use this capability, add octo/memberships to your Octo-Capabilities header.
All paths below are public /octo routes.
Member Login
First, provide a member login entry point in your interface (for example a "Member Login" button) and collect one of the following identifiers:
Email We send a verification code to the customer's email, and you repeat that code in a follow-up request to verify identity.
Mobile We send a verification code to the customer's mobile number, and you repeat that code in a follow-up request to verify identity.
Reference If a booking exists, we ask for the customer's last name to verify identity.
Looks up memberships by email, mobile, or reference. The first request may return verified: false and a message prompting verification. Repeat with verification to receive memberships.
From capability octo/memberships. Provide one lookup identifier (email, mobile, or reference). On follow-up requests include verification.
Successful response
From capability octo/memberships.
Whether membership verification is complete for this lookup.
trueVerification guidance message for follow-up lookup requests.
A verification email has been sent to jane.doe@goldengatetours.comPOST /octo/memberships/lookup HTTP/1.1
Host: api.ventrata.com
Content-Type: application/json
Accept: */*
Content-Length: 40
{
"email": "jane.doe@goldengatetours.com"
}Successful response
{
"verified": true,
"message": "A verification email has been sent to jane.doe@goldengatetours.com",
"memberships": [
{
"id": "89fe0192-ddcd-430a-b285-e1396a4725d2",
"title": "Annual Membership",
"contact": {
"id": "89fe0192-ddcd-430a-b285-e1396a4725d2",
"tags": [
"vip",
"partner"
],
"fullName": "Jane Doe",
"title": "Ms",
"firstName": "Jane",
"lastName": "Doe",
"emailAddress": "jane.doe@goldengatetours.com",
"phoneNumber": "+12025550123",
"age": 34,
"birthdate": "1992-04-23",
"streetAddress": "223 Market Street",
"city": "San Francisco",
"state": "CA",
"postalCode": "94103",
"country": "US",
"locales": [
"en"
],
"notes": "Vegetarian meal requested",
"allowMarketing": false,
"taxId": "US1234567",
"company": "Golden Gate Tours LLC",
"photoUrl": "https://images.ventrata.com/profiles/jane-doe.jpg"
},
"reference": "REF-2026-001",
"resellerReference": "RES-MEM-10045",
"supplierReference": "SUP-MEM-7782",
"availabilityLocalDateStart": "2026-01-01",
"availabilityLocalDateEnd": "2026-12-31"
}
]
}Request Body / Query Parameters
You should send either email, mobile, or reference. If using reference, it must be at least 3 characters.
See the lookup operation above for request/response schemas.
The response returns 400 Bad Request if no memberships are found. Otherwise, it returns a message with "verified": false; prompt for the verification code and repeat the request with that value.
For reference, the verification value is the guest's last name. For email and mobile, the verification value is a 6-digit code sent to the provided email address or mobile number.
Once you repeat the request, including the verification field with the verification code, it will verify the member and return a list of memberships that they have.
If multiple memberships are returned, provide an interface to pick one, using title and/or contact to differentiate between them.
Membership Object For Requests
After lookup, include a membership object on membership-aware requests (or membership[...] query parameters for GET endpoints).
membership[id] is required.
Also include one of membership[email], membership[mobile], or membership[reference], together with membership[verification].
If using membership[mobile], include membership[country].
Product Benefits
Memberships can have multiple benefits. Once you have logged in and selected a membership, include a membership object in each request.
Product benefits are returned on base product routes:
GET /products/{productId}GET /products
Call the product endpoint and include the membership object as query parameters.
You should repeat the same identifier (email, mobile or reference) and verification from the login step, and include id to specify which membership to apply.
Base product schema: Products.
Memberships with product benefits add additional units to the list. You can identify units that belong to a membership benefit via the membershipBenefit object, which is otherwise null.
If you're rendering this on a page showing the available units to choose from, we recommend grouping units by membershipBenefit.id and displaying those units in a highlighted box.
Units with "membershipBenefit": null should go at the end as they are now, these are the regular units that weren't made available with the membership.
Include these units in the unitItems array as normal, ensuring you also include the membership object in the booking request.
When a membership unit benefit has limits, unit.restrictions.maxQuantity will be reduced to the lowest effective limit.
Lists bookings linked to a selected membership. Include membership[id], membership[verification], and one of membership[email], membership[mobile], or membership[reference].
Membership identifier returned by /memberships/lookup.
89fe0192-ddcd-430a-b285-e1396a4725d2Verification token from lookup (OTP for email/mobile, or guest name for reference).
123456Membership email used during lookup.
jane.doe@goldengatetours.comMembership mobile number used during lookup.
+12025550123ISO 3166-1 alpha-2 country code used to parse membership[mobile].
USMembership reference used during lookup.
REF-2026-001Successful response
Whether active is enabled.
trueAlias value.
booking-alias-001Availability identifier (local date or local date-time).
2026-05-14T09:00:00-04:00Availability local date end value.
2026-05-21Availability local date start value.
2026-05-14Whether cancellable is enabled.
trueWhether confirmable is enabled.
trueISO 4217 currency code.
USDDelivery methods available on this booking. VOUCHER means use booking.voucher; TICKET means use booking.unitItems[].ticket.
["VOUCHER","TICKET"]Whether email receipt is enabled.
trueWhether freesale is enabled.
trueUnique identifier for this resource.
89fe0192-ddcd-430a-b285-e1396a4725d2Invoice pdf url URL.
https://www.city-sightseeing.comLocal date time end timestamp in ISO 8601 format.
2026-05-14T13:00:00ZLocal date time start timestamp in ISO 8601 format.
2026-05-14T13:00:00ZNotes value.
Vegetarian meal requestedOption identifier.
94cdd032-3d32-416d-b0a4-abf8b7495b8bUUID value for this resource.
89fe0192-ddcd-430a-b285-e1396a4725d2Product identifier.
e7cc8bb4-8d1c-4848-8824-5dbedb718681Whether quote is enabled.
falseUUID value for this resource.
89fe0192-ddcd-430a-b285-e1396a4725d2List of required contact field values.
["fullName","emailAddress"]Reseller reference value.
RES-BOOK-10045Settlement method value.
DIRECTCurrent status value.
ON_HOLDPossible values: Human-readable supplier reference to share with the guest and store for support and billing reconciliation.
SUP-BOOK-7782List of tag values.
["vip","partner"]Whether test mode is enabled.
falseWhether updatable is enabled.
trueUtc confirmed at timestamp in ISO 8601 format.
2026-05-14T13:00:00ZUtc created at timestamp in ISO 8601 format.
2026-05-14T13:00:00ZUtc expires at timestamp in ISO 8601 format.
2026-05-14T13:00:00ZUtc noshowed at timestamp in ISO 8601 format.
2026-05-14T13:00:00ZUtc rebooked at timestamp in ISO 8601 format.
2026-05-14T13:00:00ZUtc redeemed at timestamp in ISO 8601 format.
2026-05-14T13:00:00ZUtc updated at timestamp in ISO 8601 format.
2026-05-14T13:00:00ZUser-submitted UUID field that can be used to uniquely reference this resource and provide idempotency against repeat requests with the same UUID.
89fe0192-ddcd-430a-b285-e1396a4725d2List of visible contact field values.
["fullName","emailAddress"]From capability octo/content.
trueFrom capability octo/offers.
SUMMER25From capability octo/offers.
trueFrom capability octo/offers.
Summer PromotionFrom capability octo/packages.
package_include_id-exampleFrom capability octo/packages.
89fe0192-ddcd-430a-b285-e1396a4725d2From capability octo/packages.
89fe0192-ddcd-430a-b285-e1396a4725d2From capability octo/pickups. Resolved dropoff hotel name and address.
Hotel Riu Plaza Fisherman's Wharf, San Francisco, CAFrom capability octo/pickups.
Drop-off at Fisherman's Wharf.From capability octo/pickups. Selected dropoff point UUID.
8d7a2fd8-f8f8-4e61-bbaf-5adac58f5d46From capability octo/pickups.
trueFrom capability octo/pickups. Resolved pickup hotel name and address.
Hilton Union Square, 333 O'Farrell St, San Francisco, CA 94102From capability octo/pickups.
1208From capability octo/pickups.
Meet the guide by the hotel lobby.From capability octo/pickups. Selected pickup point UUID.
1cfe2c68-4a91-4df8-8d69-4b393d469cafFrom capability octo/pickups.
trueFrom capability octo/waivers. URL to the stored waiver file.
https://api.ventrata.com/uploads/waivers/waiver_booking_10045.pdfFrom capability octo/waivers. Selected waiver template UUID.
6d8c49eb-d6d3-4f03-a242-6f5f95f4d56fFrom capability octo/waivers. Whether waiver requirements are complete for this booking.
trueFrom capability octo/rentals.
rental_duration_2hFrom capability octo/cart.
ord_20260514_9f3c21From capability octo/cart.
https://www.city-sightseeing.comFrom capability octo/cart.
ORDER-2026-0514-1001From capability octo/cart.
trueFrom capability octo/checkin.
trueFrom capability octo/checkin.
trueFrom capability octo/checkin.
https://checkin.city-sightseeing.com/booking/89fe0192From capability octo/cardPayments.
https://checkout.city-sightseeing.com/returnFrom capability octo/memberships.
trueFrom capability octo/identities.
identity_customer_001GET /octo/memberships/bookings?membership[id]=123e4567-e89b-12d3-a456-426614174000&membership[verification]=text HTTP/1.1
Host: api.ventrata.com
Accept: */*
Successful response
[
{
"active": true,
"agent": {
"id": "e7cc8bb4-8d1c-4848-8824-5dbedb718681",
"name": "Morning City Tour",
"reference": "REF-2026-001",
"tags": [
"vip",
"partner"
],
"emailAddress": "jane.doe@goldengatetours.com",
"phoneNumber": "+12025550123"
},
"alias": "booking-alias-001",
"availabilityId": "2026-05-14T09:00:00-04:00",
"availabilityLocalDateEnd": "2026-05-21",
"availabilityLocalDateStart": "2026-05-14",
"cancellable": true,
"cancellation": {
"refund": "FULL",
"reason": "Customer request",
"utcCancelledAt": "2026-05-14T13:00:00Z"
},
"confirmable": true,
"contact": {
"id": "89fe0192-ddcd-430a-b285-e1396a4725d2",
"tags": [
"vip",
"partner"
],
"fullName": "Jane Doe",
"title": "Ms",
"firstName": "Jane",
"lastName": "Doe",
"emailAddress": "jane.doe@goldengatetours.com",
"phoneNumber": "+12025550123",
"age": 34,
"birthdate": "1992-04-23",
"streetAddress": "223 Market Street",
"city": "San Francisco",
"state": "CA",
"postalCode": "94103",
"country": "US",
"locales": [
"en"
],
"notes": "Vegetarian meal requested",
"allowMarketing": false,
"taxId": "US1234567",
"company": "Golden Gate Tours LLC",
"photoUrl": "https://images.ventrata.com/profiles/jane-doe.jpg"
},
"currency": "USD",
"deliveryMethods": [
"VOUCHER",
"TICKET"
],
"driver": {
"id": "e7cc8bb4-8d1c-4848-8824-5dbedb718681",
"name": "Morning City Tour",
"reference": "REF-2026-001",
"tags": [
"vip",
"partner"
],
"emailAddress": "jane.doe@goldengatetours.com",
"phoneNumber": "+12025550123"
},
"emailReceipt": true,
"freesale": true,
"guide": {
"id": "e7cc8bb4-8d1c-4848-8824-5dbedb718681",
"name": "Morning City Tour",
"reference": "REF-2026-001",
"tags": [
"vip",
"partner"
],
"emailAddress": "jane.doe@goldengatetours.com",
"phoneNumber": "+12025550123"
},
"id": "89fe0192-ddcd-430a-b285-e1396a4725d2",
"invoicePdfUrl": "https://www.city-sightseeing.com",
"label": {
"id": "89fe0192-ddcd-430a-b285-e1396a4725d2",
"name": "Morning City Tour"
},
"localDateTimeEnd": "2026-05-14T13:00:00Z",
"localDateTimeStart": "2026-05-14T13:00:00Z",
"metadata": {
"bookingSource": "affiliate_portal",
"partnerOrderId": "PO-12345"
},
"notes": "Vegetarian meal requested",
"optionId": "94cdd032-3d32-416d-b0a4-abf8b7495b8b",
"originalRebookingUuid": "89fe0192-ddcd-430a-b285-e1396a4725d2",
"productId": "e7cc8bb4-8d1c-4848-8824-5dbedb718681",
"quote": false,
"rebookingUuid": "89fe0192-ddcd-430a-b285-e1396a4725d2",
"rejection": {
"reason": "Customer request",
"utcRejectedAt": "2026-05-14T13:00:00Z"
},
"requiredContactFields": [
"fullName",
"emailAddress"
],
"reseller": {
"id": "e7cc8bb4-8d1c-4848-8824-5dbedb718681",
"name": "Morning City Tour",
"reference": "REF-2026-001",
"tags": [
"vip",
"partner"
],
"emailAddress": "jane.doe@goldengatetours.com",
"phoneNumber": "+12025550123"
},
"resellerReference": "RES-BOOK-10045",
"seller": {
"id": "e7cc8bb4-8d1c-4848-8824-5dbedb718681",
"name": "Morning City Tour",
"reference": "REF-2026-001",
"tags": [
"vip",
"partner"
],
"emailAddress": "jane.doe@goldengatetours.com",
"phoneNumber": "+12025550123"
},
"settlementMethod": "DIRECT",
"status": "ON_HOLD",
"supplierReference": "SUP-BOOK-7782",
"tags": [
"vip",
"partner"
],
"testMode": false,
"tickets": [
{
"redemptionMethod": "DIGITAL",
"utcRedeemedAt": "2026-05-14T13:00:00Z",
"utcNoshowedAt": "2026-05-14T13:00:00Z",
"deliveryOptions": [
{
"deliveryFormat": "PDF_URL",
"deliveryValue": "https://api.ventrata.com/octo/download/signed-message"
}
]
}
],
"unitItems": [
{
"alias": "booking-alias-001",
"contact": {
"id": "89fe0192-ddcd-430a-b285-e1396a4725d2",
"tags": [
"vip",
"partner"
],
"fullName": "Jane Doe",
"title": "Ms",
"firstName": "Jane",
"lastName": "Doe",
"emailAddress": "jane.doe@goldengatetours.com",
"phoneNumber": "+12025550123",
"age": 34,
"birthdate": "1992-04-23",
"streetAddress": "223 Market Street",
"city": "San Francisco",
"state": "CA",
"postalCode": "94103",
"country": "US",
"locales": [
"en"
],
"notes": "Vegetarian meal requested",
"allowMarketing": false,
"taxId": "US1234567",
"company": "Golden Gate Tours LLC",
"photoUrl": "https://images.ventrata.com/profiles/jane-doe.jpg"
},
"id": "3d6f0a3a-59d4-4b16-a0c5-11d2d8a4e6b7",
"localDateTimeEnd": "2026-05-14T13:00:00Z",
"localDateTimeStart": "2026-05-14T13:00:00Z",
"originalRebookingUnitItemUuid": "89fe0192-ddcd-430a-b285-e1396a4725d2",
"originalRebookingUuid": "89fe0192-ddcd-430a-b285-e1396a4725d2",
"rebookingUnitItemUuid": "89fe0192-ddcd-430a-b285-e1396a4725d2",
"rebookingUuid": "89fe0192-ddcd-430a-b285-e1396a4725d2",
"requiredContactFields": [
"fullName",
"emailAddress"
],
"resellerReference": "RES-BOOK-10045",
"status": "CONFIRMED",
"supplierReference": "SUP-BOOK-7782",
"ticket": {
"redemptionMethod": "DIGITAL",
"utcRedeemedAt": "2026-05-14T13:00:00Z",
"utcNoshowedAt": "2026-05-14T13:00:00Z",
"deliveryOptions": [
{
"deliveryFormat": "PDF_URL",
"deliveryValue": "https://api.ventrata.com/octo/download/signed-message"
}
]
},
"unitId": "unit_adult",
"unitType": "ADULT",
"utcNoshowedAt": "2026-05-14T13:00:00Z",
"utcRebookedAt": "2026-05-14T13:00:00Z",
"utcRedeemedAt": "2026-05-14T13:00:00Z",
"uuid": "89fe0192-ddcd-430a-b285-e1396a4725d2",
"visibleContactFields": [
"fullName",
"emailAddress"
],
"weightUnit": "kg",
"weightValue": 20,
"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
}
]
}
},
"offerCode": "SUMMER25",
"offerComparisons": [
{
"offerCode": "SUMMER25",
"offerTitle": "Summer Promotion",
"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
}
]
}
},
"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."
}
}
}
],
"offerIsCombination": true,
"offerTitle": "Summer Promotion",
"extraItems": [
{
"id": "89fe0192-ddcd-430a-b285-e1396a4725d2",
"uuid": "89fe0192-ddcd-430a-b285-e1396a4725d2",
"resellerReference": "RES-BOOK-10045",
"supplierReference": "SUP-BOOK-7782",
"extraId": "extra_3d6f0a3a-59d4-4b16-a0c5-11d2d8a4e6b7",
"retail": 1500,
"status": "CONFIRMED",
"utcRedeemedAt": "2026-05-14T13:00:00Z",
"contact": {
"id": "89fe0192-ddcd-430a-b285-e1396a4725d2",
"tags": [
"vip",
"partner"
],
"fullName": "Jane Doe",
"title": "Ms",
"firstName": "Jane",
"lastName": "Doe",
"emailAddress": "jane.doe@goldengatetours.com",
"phoneNumber": "+12025550123",
"age": 34,
"birthdate": "1992-04-23",
"streetAddress": "223 Market Street",
"city": "San Francisco",
"state": "CA",
"postalCode": "94103",
"country": "US",
"locales": [
"en"
],
"notes": "Vegetarian meal requested",
"allowMarketing": false,
"taxId": "US1234567",
"company": "Golden Gate Tours LLC",
"photoUrl": "https://images.ventrata.com/profiles/jane-doe.jpg"
},
"visibleContactFields": [
"fullName",
"emailAddress"
],
"requiredContactFields": [
"fullName",
"emailAddress"
],
"ticket": {
"redemptionMethod": "DIGITAL",
"utcRedeemedAt": "2026-05-14T13:00:00Z",
"utcNoshowedAt": "2026-05-14T13:00:00Z",
"deliveryOptions": [
{
"deliveryFormat": "PDF_URL",
"deliveryValue": "https://api.ventrata.com/octo/download/signed-message"
}
]
},
"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
}
]
}
},
"offerCode": "SUMMER25",
"offerTitle": "Summer Promotion",
"offerIsCombination": true,
"offerComparisons": [
{
"offerCode": "SUMMER25",
"offerTitle": "Summer Promotion",
"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
}
]
}
},
"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."
}
}
}
]
}
],
"packageIncludeId": "package_include_id-example",
"packageUnitItemUuid": "89fe0192-ddcd-430a-b285-e1396a4725d2",
"questionAnswers": [
{
"questionId": "question_dietary_requirements",
"value": "value-example"
}
],
"waiverFieldValues": [
{
"fieldId": "first_name",
"value": "US"
}
],
"waiverFileUrl": "https://api.ventrata.com/uploads/waivers/waiver_booking_10045.pdf",
"waiverId": "6d8c49eb-d6d3-4f03-a242-6f5f95f4d56f",
"waiversComplete": true,
"scans": [
{
"id": "e7cc8bb4-8d1c-4848-8824-5dbedb718681",
"status": "CONFIRMED",
"utcScannedAt": "2026-05-14T13:00:00Z",
"seller": {
"id": "e7cc8bb4-8d1c-4848-8824-5dbedb718681",
"name": "Morning City Tour",
"reference": "REF-2026-001",
"tags": [
"vip",
"partner"
],
"emailAddress": "jane.doe@goldengatetours.com",
"phoneNumber": "+12025550123"
}
}
]
}
],
"updatable": true,
"user": {
"id": "e7cc8bb4-8d1c-4848-8824-5dbedb718681",
"name": "Morning City Tour",
"reference": "REF-2026-001",
"tags": [
"vip",
"partner"
],
"emailAddress": "jane.doe@goldengatetours.com",
"phoneNumber": "+12025550123"
},
"utcConfirmedAt": "2026-05-14T13:00:00Z",
"utcCreatedAt": "2026-05-14T13:00:00Z",
"utcExpiresAt": "2026-05-14T13:00:00Z",
"utcNoshowedAt": "2026-05-14T13:00:00Z",
"utcRebookedAt": "2026-05-14T13:00:00Z",
"utcRedeemedAt": "2026-05-14T13:00:00Z",
"utcUpdatedAt": "2026-05-14T13:00:00Z",
"uuid": "89fe0192-ddcd-430a-b285-e1396a4725d2",
"visibleContactFields": [
"fullName",
"emailAddress"
],
"voucher": {
"redemptionMethod": "DIGITAL",
"utcRedeemedAt": "2026-05-14T13:00:00Z",
"utcNoshowedAt": "2026-05-14T13:00:00Z",
"deliveryOptions": [
{
"deliveryFormat": "PDF_URL",
"deliveryValue": "https://api.ventrata.com/octo/download/signed-message"
}
]
},
"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
}
]
}
},
"termsAccepted": true,
"offerCode": "SUMMER25",
"offerComparisons": [
{
"offerCode": "SUMMER25",
"offerTitle": "Summer Promotion",
"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
}
]
}
},
"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."
}
}
}
],
"offerIsCombination": true,
"offerTitle": "Summer Promotion",
"extraItems": [
{
"id": "89fe0192-ddcd-430a-b285-e1396a4725d2",
"uuid": "89fe0192-ddcd-430a-b285-e1396a4725d2",
"resellerReference": "RES-BOOK-10045",
"supplierReference": "SUP-BOOK-7782",
"extraId": "extra_3d6f0a3a-59d4-4b16-a0c5-11d2d8a4e6b7",
"retail": 1500,
"status": "CONFIRMED",
"utcRedeemedAt": "2026-05-14T13:00:00Z",
"contact": {
"id": "89fe0192-ddcd-430a-b285-e1396a4725d2",
"tags": [
"vip",
"partner"
],
"fullName": "Jane Doe",
"title": "Ms",
"firstName": "Jane",
"lastName": "Doe",
"emailAddress": "jane.doe@goldengatetours.com",
"phoneNumber": "+12025550123",
"age": 34,
"birthdate": "1992-04-23",
"streetAddress": "223 Market Street",
"city": "San Francisco",
"state": "CA",
"postalCode": "94103",
"country": "US",
"locales": [
"en"
],
"notes": "Vegetarian meal requested",
"allowMarketing": false,
"taxId": "US1234567",
"company": "Golden Gate Tours LLC",
"photoUrl": "https://images.ventrata.com/profiles/jane-doe.jpg"
},
"visibleContactFields": [
"fullName",
"emailAddress"
],
"requiredContactFields": [
"fullName",
"emailAddress"
],
"ticket": {
"redemptionMethod": "DIGITAL",
"utcRedeemedAt": "2026-05-14T13:00:00Z",
"utcNoshowedAt": "2026-05-14T13:00:00Z",
"deliveryOptions": [
{
"deliveryFormat": "PDF_URL",
"deliveryValue": "https://api.ventrata.com/octo/download/signed-message"
}
]
},
"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
}
]
}
},
"offerCode": "SUMMER25",
"offerTitle": "Summer Promotion",
"offerIsCombination": true,
"offerComparisons": [
{
"offerCode": "SUMMER25",
"offerTitle": "Summer Promotion",
"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
}
]
}
},
"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."
}
}
}
]
}
],
"packageIncludeId": "package_include_id-example",
"packageUnitItemUuid": "89fe0192-ddcd-430a-b285-e1396a4725d2",
"packageUuid": "89fe0192-ddcd-430a-b285-e1396a4725d2",
"dropoffDispatch": {
"id": "3d6f0a3a-59d4-4b16-a0c5-11d2d8a4e6b7",
"vehicle": "coach_12",
"driver": "Alex Johnson",
"guide": "Maria Santos",
"area": "Downtown Loop",
"notes": "Vehicle departs from Bay 4."
},
"dropoffHotel": "Hotel Riu Plaza Fisherman's Wharf, San Francisco, CA",
"dropoffNotes": "Drop-off at Fisherman's Wharf.",
"dropoffPoint": {
"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"
},
"dropoffPointId": "8d7a2fd8-f8f8-4e61-bbaf-5adac58f5d46",
"dropoffRequested": true,
"pickupDispatch": {
"id": "3d6f0a3a-59d4-4b16-a0c5-11d2d8a4e6b7",
"vehicle": "coach_12",
"driver": "Alex Johnson",
"guide": "Maria Santos",
"area": "Downtown Loop",
"notes": "Vehicle departs from Bay 4."
},
"pickupHotel": "Hilton Union Square, 333 O'Farrell St, San Francisco, CA 94102",
"pickupHotelRoom": "1208",
"pickupNotes": "Meet the guide by the hotel lobby.",
"pickupPoint": {
"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"
},
"pickupPointId": "1cfe2c68-4a91-4df8-8d69-4b393d469caf",
"pickupRequested": true,
"questionAnswers": [
{
"questionId": "question_dietary_requirements",
"value": "value-example"
}
],
"waiverFieldValues": [
{
"fieldId": "first_name",
"value": "US"
}
],
"waiverFileUrl": "https://api.ventrata.com/uploads/waivers/waiver_booking_10045.pdf",
"waiverId": "6d8c49eb-d6d3-4f03-a242-6f5f95f4d56f",
"waiversComplete": true,
"resourceAllocations": [
{
"resourceGroupId": "resource_group_front_row",
"resourceGroup": {
"id": "94cdd032-3d32-416d-b0a4-abf8b7495b8b",
"title": "Summer Promotion",
"split": true,
"required": true
},
"resourceId": "resource_coach_12",
"resource": {
"id": "89fe0192-ddcd-430a-b285-e1396a4725d2",
"title": "Summer Promotion",
"capacity": 2,
"seating": true,
"seats": [
{
"id": "f1a5d2e8-8d57-4f0b-9c3f-6a12d7a8bc90",
"row": "A",
"column": "4",
"status": "CONFIRMED"
}
]
},
"seatIds": [
"seat_one",
"seat_two"
],
"seats": [
{
"id": "f1a5d2e8-8d57-4f0b-9c3f-6a12d7a8bc90",
"row": "A",
"column": "4",
"status": "CONFIRMED"
}
],
"paxCount": 2
}
],
"rentalDuration": {
"id": "e7cc8bb4-8d1c-4848-8824-5dbedb718681",
"duration": "2",
"durationAmount": 220,
"durationUnit": "HOUR",
"title": "Summer Promotion",
"description": "Morning departure with central pickup included."
},
"rentalDurationId": "rental_duration_2h",
"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"
}
],
"orderId": "ord_20260514_9f3c21",
"orderInvoicePdfUrl": "https://www.city-sightseeing.com",
"orderReference": "ORDER-2026-0514-1001",
"primary": true,
"giftPayment": {
"giftCode": "GIFT-2026-0001",
"code": "SUMMER25",
"amount": 220,
"currency": "USD"
},
"checkedIn": true,
"checkinAvailable": true,
"checkinUrl": "https://checkin.city-sightseeing.com/booking/89fe0192",
"cardPayment": {
"id": "3d6f0a3a-59d4-4b16-a0c5-11d2d8a4e6b7",
"cardPaymentId": "cp_20260514_42ad10",
"gateway": "adyen",
"source": "POS",
"paid": 2,
"totalPaid": 2,
"totalRefunded": 2,
"paidSurcharge": 2,
"balance": 2,
"surcharge": 2,
"outstandingBalance": 2,
"amount": 220,
"currency": "USD",
"currencyPrecision": 2,
"status": "CONFIRMED",
"reusableCards": [
{
"id": "e7cc8bb4-8d1c-4848-8824-5dbedb718681",
"brand": "visa",
"bin": "411111",
"last4": "1111",
"expMonth": 2,
"expYear": 2
}
],
"adyen": {
"environment": "test",
"clientKey": "test_client_key_123",
"session": {
"id": "89fe0192-ddcd-430a-b285-e1396a4725d2",
"sessionData": "session_data_payload"
},
"countryCode": "US",
"paymentMethodsConfiguration": {}
},
"external": {},
"provider": "adyen",
"providerReference": "PROV-REF-2026-001",
"createdAt": "2026-05-14T13:00:00Z"
},
"returnUrl": "https://checkout.city-sightseeing.com/return",
"appendMembershipValidity": true,
"membership": {
"id": "89fe0192-ddcd-430a-b285-e1396a4725d2",
"title": "Annual Membership",
"contact": {
"id": "89fe0192-ddcd-430a-b285-e1396a4725d2",
"tags": [
"vip",
"partner"
],
"fullName": "Jane Doe",
"title": "Ms",
"firstName": "Jane",
"lastName": "Doe",
"emailAddress": "jane.doe@goldengatetours.com",
"phoneNumber": "+12025550123",
"age": 34,
"birthdate": "1992-04-23",
"streetAddress": "223 Market Street",
"city": "San Francisco",
"state": "CA",
"postalCode": "94103",
"country": "US",
"locales": [
"en"
],
"notes": "Vegetarian meal requested",
"allowMarketing": false,
"taxId": "US1234567",
"company": "Golden Gate Tours LLC",
"photoUrl": "https://images.ventrata.com/profiles/jane-doe.jpg"
},
"reference": "REF-2026-001",
"resellerReference": "RES-MEM-10045",
"supplierReference": "SUP-MEM-7782",
"availabilityLocalDateStart": "2026-01-01",
"availabilityLocalDateEnd": "2026-12-31"
},
"adjustments": [
{
"per": "BOOKING",
"amount": 220,
"quantity": 2,
"notes": "Vegetarian meal requested",
"netDiscount": "NONE"
}
],
"identity": {
"id": "89fe0192-ddcd-430a-b285-e1396a4725d2",
"key": "loyalty_number"
},
"identityId": "identity_customer_001"
}
]Returns bookings linked to the selected membership.
Query Parameters
The membership object is required on this endpoint. Include membership[id], one lookup identifier (membership[email], membership[mobile] or membership[reference]), and membership[verification].
Offers Benefits
Memberships also provide discounts on availability when using the octo/offers capability.
When this is used alongside octo/offers, a membershipBenefit field is added to the offer object:
offer.membershipBenefit uses the same fields as unit.membershipBenefit (id, title, description).
No additional action is required to select this offer. It is applied automatically, just like an entered offerCode or a public promotion. If offer.membershipBenefit is set, display membershipBenefit.title/description in place of offer.title/description wherever you show offer text.
Booking / Order
Finally, when creating the booking or order (if you're using the octo/cart capability), include the membership object as in the steps above.
Membership-related request fields are included on the operations in this section.
This will associate the booking to the membership and automatically apply any benefits available.
Membership-related response fields are returned on the same operations.
When bookings are nested inside an order response, the membership summary is returned on the order object (order.membership) and omitted from each nested booking item.
Schema Additions (JSON)
These are additive fragments showing only fields introduced by this capability.
AvailabilityBatchRequest
AvailabilityCalendarBatchRequest
AvailabilityCalendarRequest
AvailabilityRequest
Booking
BookingWriteRequest
Gift
GiftCreateRequest
Offer
Order
OrderCreateRequest
OrderUpdateRequest
Product
Unit
Last updated