ResytechResytech Docs

API Reference

Complete reference for ResytechClient, ResytechApi, and all TypeScript types in resytech.js.

ResytechClient

The iframe-based booking widget. Creates a full-screen overlay with the Resytech checkout UI.

Constructor

const client = new ResytechClient(config: ResytechClientConfig);
interface ResytechClientConfig {
  locationId: string;          // Required. Your Resytech location UUID.
  baseUrl: string;             // Required. Base URL of your booking platform.
  theme?: {
    primaryColor?: string;     // Primary theme color.
    fontFamily?: string;       // Font family override.
  };
  debug?: boolean;             // Enable console logging.
}

Methods

MethodSignatureDescription
showUIshowUI(options?: Partial<CheckoutRequest>): voidOpen the checkout overlay. Optionally pre-fill activity, equipment, date, and time.
closeclose(): voidClose the checkout overlay and clean up the iframe.
onon(event: string, callback: (data: any) => void): voidSubscribe to an event.
offoff(event: string, callback: (data: any) => void): voidUnsubscribe from an event.
updateConfigupdateConfig(config: Partial<ResytechClientConfig>): voidUpdate client configuration at runtime.
destroydestroy(): voidClose the overlay, remove message listeners, and clear all event subscriptions.

CheckoutRequest

Passed to showUI() to pre-fill booking parameters:

FieldTypeRequiredDescription
locationstringAutoLocation UUID (set from config)
activitystringNoActivity UUID to pre-select
equipmentstringNoEquipment UUID to pre-select
datestringNoPre-selected date
durationMinsnumberNoDuration in minutes
timeSlotStartstringNoTime slot start time
timeSlotEndstringNoTime slot end time
timeSlotPricenumberNoTime slot price

Events

EventPayloadDescription
checkout:openCheckoutRequestFired when the checkout overlay opens.
checkout:readyundefinedFired when the iframe has loaded and is visible.
checkout:complete{ confirmationCode, price, ...data }Fired when a booking is successfully completed.
checkout:closeundefinedFired when the checkout overlay is closed.
client.on('checkout:complete', (data) => {
  console.log('Booking confirmed:', data.confirmationCode);
});

Data Attributes

Add these to any HTML element to create click-to-book triggers. The ResytechClient automatically binds click handlers to elements with data-resytech-activity-id or data-resytech-equipment-id.

AttributeDescription
data-resytech-activity-idActivity UUID. Opens checkout pre-filtered to this activity.
data-resytech-equipment-idEquipment UUID. Opens checkout pre-filtered to this equipment.
data-resytech-datePre-selected date.
data-resytech-durationDuration in minutes (parsed as integer).
data-resytech-time-startTime slot start time.
data-resytech-time-endTime slot end time.
data-resytech-priceTime slot price (parsed as float).
<button
  data-resytech-activity-id="abc-123"
  data-resytech-date="2025-07-04"
  data-resytech-duration="60">
  Book Now
</button>

ResytechApi

The programmatic API client. Organizes methods into controller namespaces.

Constructor

const api = new ResytechApi(config?: Partial<ResytechApiConfig>);
interface ResytechApiConfig {
  baseUrl: string;                     // Default: 'https://api.bookingui.com/v1'
  cmsBaseUrl: string;                  // Default: 'https://crm-intake.resytech.com/v1'
  debug?: boolean;                     // Default: false
  timeout?: number;                    // Default: 30000 (ms)
  headers?: Record<string, string>;    // Custom headers for all requests
}

Instance Methods

MethodSignatureDescription
setAuthTokensetAuthToken(token: string): voidSet the Bearer token on all controllers. Called automatically after initialization.initialize().
clearAuthTokenclearAuthToken(): voidRemove the auth token from all controllers.
getAuthTokengetAuthToken(): string | nullGet the current auth token.
isAuthenticatedisAuthenticated(): booleanCheck if an auth token is set.
setCustomHeaderssetCustomHeaders(headers: Record<string, string>): voidSet custom headers on all controllers.
getConfiggetConfig(): ResytechApiConfigGet a copy of the current configuration.
setDebugsetDebug(debug: boolean): voidEnable or disable debug logging on all controllers.

Controllers

Access methods through controller namespaces on the ResytechApi instance.


api.initialization

MethodSignatureReturnsDescription
initializeinitialize(request: InitializationRequest)Promise<InitializationResponse>Initialize a session. Returns activities, auth token, operator info. Auto-sets auth token and blog location GUID.

InitializationRequest

FieldTypeRequiredDescription
identifierstringNoUnique session identifier

InitializationResponse

FieldTypeDescription
successbooleanWhether the request succeeded
messagestringResponse message
statusCodenumberHTTP status code
activitiesInitializationActivity[]List of activities for the location
buiAccessTokenstringBearer token for subsequent API calls
operatorOperatorOperator/company details
locationGuidstringLocation UUID
checkoutSettingsCheckoutSettingsCheckout UI configuration
hasSmsWorkflowbooleanWhether SMS workflows are enabled
isTestModebooleanWhether the location is in test mode

api.activity

MethodSignatureReturnsDescription
getActivitygetActivity(uuid: string)Promise<ActivityResponse>Get full details for a specific activity.

ActivityResponse

FieldTypeDescription
successbooleanWhether the request succeeded
activityActivityFull activity object

api.calendar

MethodSignatureReturnsDescription
getActivityCalendargetActivityCalendar(request: ActivityCalendarRequest)Promise<CalendarResponse>Get availability calendar for an activity.
getCartCalendargetCartCalendar(request: ActivityCalendarRequest)Promise<CalendarResponse>Get availability calendar for items in cart.

ActivityCalendarRequest

FieldTypeRequiredDescription
activitystringYesActivity UUID
monthnumberYesMonth (1-12)
yearnumberYesYear
includePricesbooleanNoInclude daily pricing
durationstringNoDuration UUID filter
startTimestringNoStart time filter
equipmentClientShoppingCartEquipment[]NoEquipment selection
durationMinsnumberNoDynamic duration in minutes
cartIdstringNoExisting cart ID

CalendarResponse

FieldTypeDescription
successbooleanWhether the request succeeded
calendarCalendarMonthCalendar month data

api.timeslots

MethodSignatureReturnsDescription
getActivityTimeSlotsgetActivityTimeSlots(request: TimeSlotRequest)Promise<ActivityTimeSlotsResponse>Get time slots for a specific activity on a date.
getLocationTimeSlotsgetLocationTimeSlots(request: TimeSlotRequest)Promise<LocationTimeSlotsResponse>Get time slots for all activities at the location.
getCartTimeSlotsgetCartTimeSlots(request: TimeSlotRequest)Promise<ActivityTimeSlotsResponse>Get time slots for items in cart.

TimeSlotRequest

FieldTypeRequiredDescription
activitystringNoActivity UUID (recommended for activity-specific slots)
datestringYesDate string
durationstringNoDuration UUID
durationMinsnumberNoDynamic duration in minutes
equipmentClientShoppingCartEquipment[]NoEquipment selection
isPrivateTourbooleanNoFilter for private tour availability
ignoreEarlyCutoffbooleanNoIgnore early cutoff restrictions

ActivityTimeSlotsResponse

FieldTypeDescription
successbooleanWhether the request succeeded
timeSlotsActivityTimeSlot[]Available time slots

LocationTimeSlotsResponse

FieldTypeDescription
successbooleanWhether the request succeeded
resultsLocationAllActivityTimeSlots[]Slots grouped by activity

api.addon

MethodSignatureReturnsDescription
getEligibleAddonsgetEligibleAddons(request: GetEligibleAddonsRequest)Promise<GetEligibleAddonsResponse>Get addons available for the selected activity, date, and time.

GetEligibleAddonsRequest

FieldTypeRequiredDescription
activitystringYesActivity UUID
datestringYesDate string
timestringYesTime string
durationstringNoDuration UUID
dynamicDurationMinutesnumberNoDynamic duration in minutes
equipmentClientShoppingCartEquipment[]NoEquipment selection

GetEligibleAddonsResponse

FieldTypeDescription
successbooleanWhether the request succeeded
addonsEligibleAddon[]List of eligible addons

api.cart

MethodSignatureReturnsDescription
createOrUpdateCartcreateOrUpdateCart(request: CreateOrUpdateCartRequest)Promise<CreateOrUpdateShoppingCartResponse>Create or update a shopping cart.
updateCustomerupdateCustomer(request: UpdateShoppingCartCustomerRequest)Promise<ApiResponseBase>Update customer info on the cart.
applyCouponapplyCoupon(request: ApplyCouponRequest)Promise<ApplyCouponResponse>Apply a coupon code.
removeCouponremoveCoupon(request?: ApplyCouponRequest)Promise<ApplyCouponResponse>Remove an applied coupon.
applyGiftCardapplyGiftCard(request: ApplyGiftCardRequest)Promise<ApplyGiftCardResponse>Apply a gift card.
removeGiftCardremoveGiftCard(request?: ApplyGiftCardRequest)Promise<ApplyGiftCardResponse>Remove an applied gift card.
getTripProtectionPreviewgetTripProtectionPreview(request: TripProtectionPreviewRequest)Promise<TripProtectionPreviewResponse>Preview trip protection pricing.

CreateOrUpdateCartRequest

FieldTypeRequiredDescription
cartClientShoppingCartYesCart data
cartIdstringNoExisting cart ID (for updates)

ClientShoppingCart

FieldTypeRequiredDescription
activitystringYesActivity UUID
durationstringYesDuration UUID
datestringYesBooking date
timeSlotStartstringYesTime slot start
timeSlotEndstringYesTime slot end
equipmentClientShoppingCartEquipment[]NoSelected equipment
customerClientShoppingCartCustomerNoCustomer info
downPaymentRequestedbooleanNoRequest down payment option
isPrivateTourbooleanNoBook as private tour
durationMinsnumberNoDynamic duration in minutes
tripProtectionSelectedbooleanNoInclude trip protection

ClientShoppingCartEquipment

FieldTypeRequiredDescription
equipmentUuidstringYesEquipment UUID
quantitynumberYesNumber of equipment units
seatsnumberYesNumber of seats/guests
addonsClientShoppingCartEquipmentAddon[]NoSelected addons

ClientShoppingCartEquipmentAddon

FieldTypeRequiredDescription
addonUuidstringYesAddon UUID
quantitynumberYesAddon quantity
equipmentUuidstringYesParent equipment UUID

ClientShoppingCartCustomer

FieldTypeRequiredDescription
fullNamestringNoCustomer full name
emailstringNoCustomer email
countryCodestringNoPhone country code
countrystringNoCountry
phonestringNoPhone number

UpdateShoppingCartCustomerRequest

FieldTypeRequiredDescription
customerClientShoppingCartCustomerYesCustomer data
cartIdstringNoCart ID

ApplyCouponRequest

FieldTypeRequiredDescription
couponCodestringNoCoupon code to apply
cartIdstringNoCart ID

ApplyGiftCardRequest

FieldTypeRequiredDescription
giftCardCodestringNoGift card code to apply
cartIdstringNoCart ID

TripProtectionPreviewRequest

FieldTypeRequiredDescription
cartIdstringNoCart ID

CreateOrUpdateShoppingCartResponse

FieldTypeDescription
successbooleanWhether the request succeeded
errorCodeShoppingCartErrorCodeError code (if failed)
cartIdstringCart identifier
removalsShoppingCartRemoval[]Items removed due to constraints
cartServerShoppingCartOverviewCart summary
clientSecretstringStripe client secret for payment
operatorAccountIdstringStripe connected account ID

ApplyGiftCardResponse

FieldTypeDescription
successbooleanWhether the request succeeded
errorCodeGiftCardErrorCodeError code (if failed)
availableBalancenumberRemaining gift card balance

TripProtectionPreviewResponse

FieldTypeDescription
successbooleanWhether the request succeeded
availablebooleanWhether trip protection is available
pricenumberTrip protection price
titlestringDisplay title
descriptionstringDisplay description
coverageTypenumberCoverage type identifier
coverageAmountnumberCoverage amount

api.checkout

MethodSignatureReturnsDescription
checkoutcheckout(request: CheckoutRequest)Promise<CheckoutResponse>Process checkout for a shopping cart.

CheckoutRequest

FieldTypeRequiredDescription
cartClientShoppingCartYesFull cart data (must include customer email)
customFieldsCustomFieldAnswer[]NoAnswers to custom fields
demographicsDemographicValue[]NoDemographic selections
stripeConfirmationTokenstringNoStripe confirmation token
handledNextActionstringNoStripe next action result
agreementsstring[]NoAccepted agreement UUIDs
smsOptInbooleanNoSMS opt-in consent
cartIdstringNoExisting cart ID

CustomFieldAnswer

FieldTypeRequiredDescription
uuidstringYesCustom field UUID
answerstringNoAnswer value

DemographicValue

FieldTypeRequiredDescription
demographicUuidstringYesDemographic UUID
uuidstringYesValue UUID
valuenumberYesCount/value

CheckoutResponse

FieldTypeDescription
successbooleanWhether the request succeeded
cartServerShoppingCartOverviewFinal cart state
cartActionCreateOrUpdateShoppingCartResponseCart action result
confirmationstringBooking confirmation code
clientSecretstringStripe client secret (if payment required)
paymentIntentIdstringStripe payment intent ID

api.invoice

MethodSignatureReturnsDescription
getInvoicegetInvoice(invoiceUuid: string)Promise<GetInvoiceResponse>Get invoice details.
payInvoicepayInvoice(invoiceUuid: string, request: PayInvoiceRequest)Promise<PayInvoiceResponse>Pay an invoice.

PayInvoiceRequest

FieldTypeRequiredDescription
agreementsstring[]NoAccepted agreement UUIDs
stripeConfirmationTokenstringNoStripe confirmation token
handledNextActionstringNoStripe next action result

GetInvoiceResponse

FieldTypeDescription
successbooleanWhether the request succeeded
invoiceServerInvoiceInvoice details ({ uuid, dueNowCents })
cartServerShoppingCartOverviewAssociated cart overview
activitystringActivity name
datestringBooking date
startstringStart time
endstringEnd time
endDatestringEnd date (if multi-day)

PayInvoiceResponse

FieldTypeDescription
successbooleanWhether the request succeeded
clientSecretstringStripe client secret
confirmationstringPayment confirmation code

api.waiver

MethodSignatureReturnsDescription
getWaivergetWaiver(locationUuid: string, waiverId: string)Promise<GetWaiverResponse>Get waiver definition and fields.
getReservationgetReservation(request: GetReservationRequest)Promise<GetReservationResponse>Look up a reservation for waiver signing.
submitWaiversubmitWaiver(request: SubmitWaiverRequest)Promise<SubmitWaiverResponse>Submit a completed waiver.

GetReservationRequest

FieldTypeRequiredDescription
lidstringYesLocation ID
widstringYesWaiver ID
typestringNoLookup type
valuestringNoLookup value

SubmitWaiverRequest

FieldTypeRequiredDescription
waiverIdstringYesWaiver UUID
locationIdstringYesLocation UUID
waiverNamestringNoWaiver name
reservationIdstringYesReservation UUID
reservationConfirmationNumberstringYesConfirmation number
fieldsany[]YesCompleted field values
submittedAtstringYesISO timestamp
dataHashstringYesIntegrity hash
bfpstringYesBrowser fingerprint

GetWaiverResponse

FieldTypeDescription
successbooleanWhether the request succeeded
waiverWaiverWaiver definition

GetReservationResponse

FieldTypeDescription
successbooleanWhether the request succeeded
idstringReservation UUID
datestringBooking date
customerNamestringCustomer name
customerEmailstringCustomer email
customerPhonestringCustomer phone
statusstringReservation status
confirmationNumberstringConfirmation code

SubmitWaiverResponse

FieldTypeDescription
successbooleanWhether the request succeeded
submissionIdstringSubmission UUID
submittedAtDateSubmission timestamp
confirmationNumberstringConfirmation code

api.survey

MethodSignatureReturnsDescription
getSurveygetSurvey(token: string)Promise<GetPublicSurveyResponse>Get a survey by access token.
submitSurveysubmitSurvey(request: SubmitSurveyRequest)Promise<SubmitSurveyResponse>Submit survey responses.

SubmitSurveyRequest

FieldTypeRequiredDescription
tokenstringNoSurvey access token
responsesRecord<string, any>NoQuestion responses (keyed by question ID)
namestringNoRespondent name
emailstringNoRespondent email

GetPublicSurveyResponse

FieldTypeDescription
successbooleanWhether the request succeeded
surveyPublicSurveySurvey definition
bookingContextPublicBookingContextAssociated booking info
brandingBrandingOperator branding

SubmitSurveyResponse

FieldTypeDescription
successbooleanWhether the request succeeded
thankYouMessagestringCustom thank you message

api.giftCardPurchase

MethodSignatureReturnsDescription
getSettingsgetSettings()Promise<GetGiftCardPurchaseSettingsResponse>Get gift card purchase configuration.
purchasepurchase(request: PurchaseGiftCardRequest)Promise<PurchaseGiftCardResponse>Purchase a gift card.

PurchaseGiftCardRequest

FieldTypeRequiredDescription
amountnumberYesGift card amount in cents
purchaserNamestringNoPurchaser name
purchaserEmailstringNoPurchaser email
purchaserPhonestringNoPurchaser phone
purchaserPhoneCountryCodestringNoPhone country code
recipientNamestringNoRecipient name
recipientEmailstringNoRecipient email
customMessagestringNoGift message
stripeConfirmationTokenstringNoStripe confirmation token
handledNextActionstringNoStripe next action result

GetGiftCardPurchaseSettingsResponse

FieldTypeDescription
successbooleanWhether the request succeeded
isAvailablebooleanWhether gift card purchases are enabled
allowFlatAmountsbooleanWhether preset amounts are available
flatAmountsnumber[]Preset amount options
allowVariableAmountsbooleanWhether custom amounts are allowed
variableMinAmountnumberMinimum custom amount
variableMaxAmountnumberMaximum custom amount
requireRecipientEmailbooleanWhether recipient email is required
allowCustomMessagebooleanWhether custom messages are allowed
expirationDaysnumberDays until gift card expires

PurchaseGiftCardResponse

FieldTypeDescription
successbooleanWhether the request succeeded
clientSecretstringStripe client secret
paymentIntentIdstringStripe payment intent ID
giftCardCodestringGenerated gift card code
giftCardAmountnumberGift card value
expiresAtDateExpiration date
recipientEmailstringRecipient email

api.blog

The blog controller uses the CMS API (cmsBaseUrl), not the BookingUI API. No auth token is required, but a location GUID must be set. It is set automatically after initialization.initialize().

MethodSignatureReturnsDescription
getPostsgetPosts(page?: number, pageSize?: number, locationGuid?: string)Promise<GetBlogPostListResponse>Get paginated published blog posts. Default: page 1, 20 per page (max 50).
getPostgetPost(slug: string, locationGuid?: string)Promise<GetBlogPostResponse>Get a single blog post by slug (includes full content).
getCategoriesgetCategories(locationGuid?: string)Promise<GetBlogCategoryListResponse>Get all blog categories.
getPostsByCategorygetPostsByCategory(categorySlug: string, page?: number, pageSize?: number, locationGuid?: string)Promise<GetBlogPostListResponse>Get posts filtered by category slug.
setLocationGuidsetLocationGuid(locationGuid: string): voidvoidManually set the location GUID.

GetBlogPostListResponse

FieldTypeDescription
successbooleanWhether the request succeeded
postsBlogPost[]Array of blog posts
totalCountnumberTotal number of matching posts
pagenumberCurrent page number
pageSizenumberItems per page

GetBlogPostResponse

FieldTypeDescription
successbooleanWhether the request succeeded
postBlogPostBlog post with full content

GetBlogCategoryListResponse

FieldTypeDescription
successbooleanWhether the request succeeded
categoriesBlogCategory[]Array of categories

api.health

MethodSignatureReturnsDescription
checkcheck()Promise<boolean>Perform a HEAD request to /health. Returns true if healthy, false otherwise.

Data Model Types

Activity

FieldTypeDescription
uuidstringUnique identifier
namestringActivity name
basePricenumberStarting price
descriptionstringFull description
cancellationPolicystringCancellation policy text
detailsstringAdditional details
mediaMedia[]Photos and videos
durationsDuration[]Available durations
equipmentEquipment[]Available equipment
manifestManifestGuest limits and demographics
firstAvailableDateDateEarliest bookable date
allowEquipmentMixingbooleanCan mix equipment types
maxEquipmentPerBookingnumberMax equipment per booking
customFieldsCustomField[]Custom checkout fields
agreementsActivityAgreement[]Required agreements
typenumberActivity type identifier
allowPrivateToursbooleanSupports private tours
dynamicDurationSettingsActivityDynamicDurationSettingDynamic duration config
schedulingActivitySchedulingScheduling restrictions
tripProtectionTripProtectionTrip protection config

InitializationActivity

Simplified activity returned from initialization (before full activity fetch).

FieldTypeDescription
uuidstringUnique identifier
namestringActivity name
taglinestringShort tagline
descriptionstringDescription
equipmentEquipment[]Available equipment
mediaMedia[]Photos and videos
startingAtPricenumberStarting price
manifestManifestGuest limits
firstAvailableDateDateEarliest bookable date
durationsDuration[]Available durations
typenumberActivity type
dynamicDurationSettingsActivityDynamicDurationSettingDynamic duration config

Equipment

FieldTypeDescription
uuidstringUnique identifier
quantitynumberAvailable quantity
namestringEquipment name
descriptionstringDescription
detailsstringAdditional details
mediaMedia[]Photos
capacitynumberMax capacity per unit
addonsAddon[]Available addons
amenitiesAmenity[]Amenities
propertiesEquipmentProperty[]Custom properties

Media

FieldTypeDescription
uuidstringUnique identifier
ordernumberDisplay order
typenumberMedia type (0 = image, etc.)
uristringFull-size URL
thumbnailUristringThumbnail URL

Duration

FieldTypeDescription
uuidstringUnique identifier
minutesnumberDuration in minutes

Addon

FieldTypeDescription
namestringAddon name
descriptionstringDescription
uuidstringUnique identifier
pricenumberPrice

EligibleAddon

FieldTypeDescription
namestringAddon name
descriptionstringDescription
quantitynumberAvailable quantity
mediaUristringImage URL
uuidstringUnique identifier
pricenumberPrice

Amenity

FieldTypeDescription
idstringUnique identifier
namestringAmenity name
descriptionstringDescription
iconTypenumberIcon type identifier
iconstringIcon value
assignmentCountnumberNumber of assignments

EquipmentProperty

FieldTypeDescription
idstringUnique identifier
namestringProperty name
iconTypenumberIcon type identifier
iconstringIcon value
descriptionstringDescription
valuestringProperty value
featuredbooleanShow as featured

Manifest

FieldTypeDescription
guestLimitnumberMaximum guests per booking
ageRestrictionnumberMinimum age
guestMinimumnumberMinimum guests per booking
demographicsDemographic[]Guest demographic categories

Demographic

FieldTypeDescription
uuidstringUnique identifier
titlestringDisplay title (e.g., "Adults", "Children")
descriptionstringDescription

Operator

FieldTypeDescription
uuidstringUnique identifier
companyNamestringCompany name
locationNamestringLocation name
addressLine1stringStreet address
addressLine2stringAddress line 2
citystringCity
statestringState/province
postalCodestringZIP/postal code
operatorAccountIdstringStripe account ID
contactEmailstringContact email
contactPhonestringContact phone
websitestringWebsite URL

CalendarMonth

FieldTypeDescription
monthnumberMonth (1-12)
yearnumberYear
daysActivityCalendarDay[]Day-by-day availability

ActivityCalendarDay

FieldTypeDescription
datestringDate string
isAvailablebooleanWhether the date has availability
pricenumberPrice (if includePrices was set)
isEstimatedPricebooleanWhether the price is an estimate
blackoutMessagestringReason for unavailability

ActivityTimeSlot

FieldTypeDescription
pricenumberSlot price
remainingSeatsnumberSeats still available
canBookPrivateTourbooleanPrivate tour available for this slot

LocationAllActivityTimeSlots

FieldTypeDescription
uuidstringActivity UUID
slotsActivityTimeSlot[]Available slots
nextAvailableDatestringNext date with availability

ServerShoppingCartOverview

FieldTypeDescription
feesFee[]Taxes and fees
lineItemsCartLineItem[]Line items
subtotalnumberSubtotal
totalnumberTotal
feesTotalnumberTotal fees
discountTotalnumberTotal discounts
paidnumberAmount already paid
balancenumberRemaining balance
couponCodestringApplied coupon code
giftCardCodestringApplied gift card code
giftCardAmountAppliednumberGift card amount used
giftCardBalancenumberRemaining gift card balance
dueNownumberAmount due now
dueLaternumberAmount due later
tripProtectionSelectedbooleanTrip protection included
tripProtectionPricenumberTrip protection price
equipmentServerShoppingCartEquipment[]Equipment in cart

Fee

FieldTypeDescription
amountnumberFee amount
uuidstringFee UUID
namestringFee name
typeTaxesAndFeesType0 = Tax, 1 = Fee

CartLineItem

FieldTypeDescription
namestringLine item name
pricenumberLine item price
typestringLine item type

ShoppingCartRemoval

FieldTypeDescription
typeShoppingCartRemovalTypeRemoval reason code (0-9)
uuidstringRemoved item UUID
maxQuantitynumberMaximum allowed quantity

ServerInvoice

FieldTypeDescription
uuidstringInvoice UUID
dueNowCentsnumberAmount due in cents

Waiver

FieldTypeDescription
idstringWaiver UUID
namestringWaiver name
fieldsanyField definitions
contactEmailstringContact email
logoUristringLogo image URL
appendLogobooleanShow logo on waiver
requiresBookingbooleanRequires reservation lookup
themeWaiverThemeColor theme

WaiverTheme

FieldTypeDescription
primarystringPrimary color
secondarystringSecondary color
accentstringAccent color
backgroundstringBackground color
paperstringPaper/card color
textstringText color
textMutedstringMuted text color
borderstringBorder color
errorstringError color
successstringSuccess color
warningstringWarning color

CustomField

FieldTypeDescription
uuidstringUnique identifier
typenumberField type identifier
labelstringDisplay label
requiredbooleanWhether the field is required

ActivityAgreement

FieldTypeDescription
uuidstringUnique identifier
titlestringAgreement title
bodystringAgreement body text
requiredbooleanMust be accepted
enabledbooleanCurrently active

ActivityDynamicDurationSetting

FieldTypeDescription
enabledbooleanDynamic duration enabled
minimumHoursnumberMinimum bookable hours
maximumHoursnumberMaximum bookable hours
incrementMinutesnumberDuration increment in minutes
baseHourlyRatenumberHourly rate
createdAtDateCreated timestamp
updatedAtDateUpdated timestamp

ActivityScheduling

FieldTypeDescription
dateTypenumberScheduling type identifier
dateRangeDateOnlyRangeAvailable date range
specificDatesstring[]Specific available dates
earlyCutoffValuenumberEarly cutoff value
futureCutoffDaysnumberHow far ahead bookings are allowed
earlyCutoffTypenumberEarly cutoff type identifier

DateOnlyRange

FieldTypeDescription
lowerBoundstringStart date
upperBoundstringEnd date
lowerBoundIsInclusivebooleanStart is inclusive
upperBoundIsInclusivebooleanEnd is inclusive
lowerBoundInfinitebooleanNo start boundary
upperBoundInfinitebooleanNo end boundary
isEmptybooleanRange is empty

TripProtection

FieldTypeDescription
enabledbooleanTrip protection enabled
pricingTypenumberPricing type identifier
flatAmountnumberFlat price amount
percentAmountnumberPercentage amount
coverageTypenumberCoverage type identifier
coverageAmountnumberCoverage amount
customTitlestringCustom display title
customDescriptionstringCustom description

BlogPost

FieldTypeDescription
uuidstringUnique identifier
titlestringPost title
slugstringURL-friendly identifier
excerptstringShort excerpt
contentstring | nullFull JSON content (version 2 block format)
featuredImageUristringFeatured image URL
featuredImageThumbnailUristringFeatured image thumbnail URL
statusstringPublication status
metaTitlestring | nullSEO meta title
metaDescriptionstring | nullSEO meta description
authorstringAuthor name
publishedAtDate | nullPublication date
createdAtDateCreated timestamp
updatedAtDateLast updated timestamp
categoriesBlogCategory[]Assigned categories

BlogCategory

FieldTypeDescription
uuidstringUnique identifier
namestringCategory name
slugstringURL-friendly identifier
descriptionstringCategory description
createdAtDateCreated timestamp

PublicSurvey

FieldTypeDescription
idstringSurvey ID
namestringSurvey name
descriptionstringSurvey description
questionsSurveyQuestion[]Survey questions
thankYouMessagestringMessage shown after submission

SurveyQuestion

FieldTypeDescription
idstringQuestion ID
typestringQuestion type (text, rating, choice, etc.)
labelstringQuestion text
requiredbooleanWhether the question is required
ordernumberDisplay order
maxStarsnumberMax stars for rating questions
optionsSurveyQuestionOption[]Options for choice questions

SurveyQuestionOption

FieldTypeDescription
idstringOption ID
labelstringOption text
ordernumberDisplay order

PublicBookingContext

FieldTypeDescription
customerNamestringCustomer name
customerEmailstringCustomer email
confirmationCodestringBooking confirmation code
bookingDatestringBooking date

Branding

FieldTypeDescription
companyNamestringCompany name
logoUrlstringLogo URL
locationNamestringLocation name
primaryColorstringPrimary color
secondaryColorstringSecondary color
accentColorstringAccent color
backgroundColorstringBackground color
cardBackgroundColorstringCard background color
cardTextColorstringCard text color
headerTextColorstringHeader text color

CheckoutSettings

FieldTypeDescription
pageTitlestringPage title
returnUrlstringPost-checkout redirect URL
successMessagestringSuccess message
showActivitySelectorbooleanShow activity selector
autoRedirectToFirstActivitybooleanAuto-redirect if single activity
allowGuestCheckoutbooleanAllow guest checkout
autoSelectSingleEquipmentbooleanAuto-select if single equipment
durationTitleTextstringDuration step title
dateTitleTextstringDate step title
timeSlotTitleTextstringTime slot step title
popupWindowTitlestringPopup window title
activityPageThemeActivityPageThemeConfigActivity page theme
customCssstringCustom CSS
customJavaScriptstringCustom JavaScript
purchaseCompleteJavaScriptstringPost-purchase JavaScript
gaTrackingIdstringGoogle Analytics ID
fbPixelIdstringFacebook Pixel ID
activitiesCustomOrderActivityOrderItem[]Custom activity ordering
equipmentCustomOrderEquipmentOrderItem[]Custom equipment ordering

Enum Types

ShoppingCartErrorCode

ValueNameDescription
0NoneNo error
1ActivityNotFoundActivity does not exist
2EquipmentNotFoundEquipment does not exist
3DurationNotFoundDuration does not exist
4TimeSlotNotAvailableSelected time slot is unavailable
5EquipmentNotAvailableEquipment is not available
6EquipmentQuantityExceededRequested quantity exceeds available
7SeatLimitExceededSeat limit exceeded
8GuestMinimumNotMetMinimum guest count not met
9GuestLimitExceededMaximum guest count exceeded
10AddonNotFoundAddon does not exist
11AddonNotAvailableAddon is not available
12AddonQuantityExceededAddon quantity exceeded
13InvalidDateInvalid booking date
14DateNotAvailableDate is not available
15InvalidDurationInvalid duration selection
16InvalidTimeSlotInvalid time slot
17CustomerRequiredCustomer information required
18InvalidCustomerInvalid customer data
19CartExpiredCart session has expired
20CartNotFoundCart does not exist
21PaymentFailedPayment processing failed
22CouponInvalidCoupon code is invalid
23CouponExpiredCoupon has expired
24GeneralErrorUnspecified error

GiftCardErrorCode

ValueNameDescription
0NoneNo error
1InvalidCodeGift card code is invalid
2ExpiredGift card has expired
3NoBalanceGift card has no remaining balance
4InsufficientBalanceGift card balance is too low
5AlreadyAppliedGift card is already applied
6NotFoundGift card not found
7DisabledGift cards are disabled
8LocationMismatchGift card belongs to a different location
9GeneralErrorUnspecified error

ShoppingCartRemovalType

ValueNameDescription
0NoneNo removal
1EquipmentUnavailableEquipment no longer available
2EquipmentQuantityReducedQuantity reduced to max available
3AddonUnavailableAddon no longer available
4AddonQuantityReducedAddon quantity reduced
5SeatReductionSeats reduced to max available
6DurationUnavailableDuration no longer available
7TimeSlotUnavailableTime slot no longer available
8DateUnavailableDate no longer available
9ActivityUnavailableActivity no longer available

TaxesAndFeesType

ValueNameDescription
0TaxTax line item
1FeeFee line item

ApiResponseBase

All API responses extend this base interface:

interface ApiResponseBase {
  success: boolean;        // Whether the request succeeded
  message: string;         // Human-readable message
  statusCode: number;      // HTTP status code (0 for network errors)
  action: string;          // API endpoint/action
  isNetworkError: boolean; // True if the error was a network/timeout issue
}

On this page

ResytechClientConstructorMethodsCheckoutRequestEventsData AttributesResytechApiConstructorInstance MethodsControllersapi.initializationInitializationRequestInitializationResponseapi.activityActivityResponseapi.calendarActivityCalendarRequestCalendarResponseapi.timeslotsTimeSlotRequestActivityTimeSlotsResponseLocationTimeSlotsResponseapi.addonGetEligibleAddonsRequestGetEligibleAddonsResponseapi.cartCreateOrUpdateCartRequestClientShoppingCartClientShoppingCartEquipmentClientShoppingCartEquipmentAddonClientShoppingCartCustomerUpdateShoppingCartCustomerRequestApplyCouponRequestApplyGiftCardRequestTripProtectionPreviewRequestCreateOrUpdateShoppingCartResponseApplyGiftCardResponseTripProtectionPreviewResponseapi.checkoutCheckoutRequestCustomFieldAnswerDemographicValueCheckoutResponseapi.invoicePayInvoiceRequestGetInvoiceResponsePayInvoiceResponseapi.waiverGetReservationRequestSubmitWaiverRequestGetWaiverResponseGetReservationResponseSubmitWaiverResponseapi.surveySubmitSurveyRequestGetPublicSurveyResponseSubmitSurveyResponseapi.giftCardPurchasePurchaseGiftCardRequestGetGiftCardPurchaseSettingsResponsePurchaseGiftCardResponseapi.blogGetBlogPostListResponseGetBlogPostResponseGetBlogCategoryListResponseapi.healthData Model TypesActivityInitializationActivityEquipmentMediaDurationAddonEligibleAddonAmenityEquipmentPropertyManifestDemographicOperatorCalendarMonthActivityCalendarDayActivityTimeSlotLocationAllActivityTimeSlotsServerShoppingCartOverviewFeeCartLineItemShoppingCartRemovalServerInvoiceWaiverWaiverThemeCustomFieldActivityAgreementActivityDynamicDurationSettingActivitySchedulingDateOnlyRangeTripProtectionBlogPostBlogCategoryPublicSurveySurveyQuestionSurveyQuestionOptionPublicBookingContextBrandingCheckoutSettingsEnum TypesShoppingCartErrorCodeGiftCardErrorCodeShoppingCartRemovalTypeTaxesAndFeesTypeApiResponseBase