Skip to content

Objects

  • AcknowledgementRegistrationBlock
    An inline consent acknowledgement: a bold prompt/statement followed by a single checkbox with a short accept label (e.g. "I agree"). Unlike a contract block it renders inline — no review-and-sign sheet, no signature — and required gates submission until the box is checked.
  • Activity
  • ActivityConnection
    Cursor-paginated list of activities for a business.
  • ActivityRegistration
  • ActivityRegistrationConnection
    Cursor-paginated list of activity registrations. Used by activity- and session-detail pages to page through confirmed attendees and the waitlist.
  • ActivityServiceLink
  • ActivitySession
  • ActivitySessionConnection
    Cursor-paginated list of activity sessions. Sort order is startAt ASC, id ASC. Pair with the starting filter to scope the window to upcoming/past/from-date.
  • ActivitySessionSpotMap
    Spot-map layout, occupancy, and viewer-relative state for one session.
  • AddFavoriteResult
  • AdmissionTier
    A named price band a session's admissions sell at — "Adult", "Child", "Front row". Door pricing: distinct from early-bird pricing, which applies on top.
  • AppointmentBookingResult
    The result of booking time on a structure: booking activity (bookActivityTime).
  • AppointmentSlot
    A single open, bookable time range for an appointment type on a specific resource. Computed live from the resource's availability minus its existing commitments; never persisted until a customer books it.
  • AvailabilityBlock
    A recurring weekly open block within a resource's appointment availability. Times are local wall-clock "HH:mm" strings interpreted in the schedule's timezone.
  • BankDebitCheckoutOption
    Bank debit offered to the buyer for a membership purchase.
  • BankDebitMandateSetup
    A bank-debit mandate in the making: the SetupIntent a buyer authorizes before the thing they are paying for exists.
  • BillingCycle
  • Booking
    One party's claim on one thing to attend. Carries attendance only: no price, no payment pointer, no refund columns. That is what lets the rows nobody paid for — a staff comp, an imported roster, a waitlist join — be a booking with no purchase rather than a fabricated $0 order.
  • BookingAvailability
    Whether a location or facility is taking bookings, and how many it holds. Not a booking — a place's availability to be booked. The Booking name now belongs to a party's claim on a session.
  • BookingCancellation
  • BookingCancellationPreview
    What cancelling a booking right now would do, under the policy in force.
  • BookingConnection
  • BotChallenge
    Bot-challenge (CAPTCHA-style) configuration for the single platform-wide widget. Delivered to the public guest checkout / registration sheets (web app and embeds) so the client can render the challenge; the resulting token is verified server-side on the guest path (BuyerInput.botChallengeToken). Provider-neutral; the current provider is Cloudflare Turnstile. See issues #2455 / #2456.
  • BrandActionColor
    An action fill (accent/critical/positive). on is the contrast-aware foreground for use when the value is the fill color; subdued is a lighter variant suitable for tinted backgrounds and hover states.
  • BrandColors
  • BrandSurface
    A container palette: background + text + border, plus subdued variants for striped rows and de-emphasized text. Every value is an OKLCH string (oklch(L C H)) post-expansion.
  • BrandSurfaces
  • Business
  • BusinessBrand
    Business brand configuration: icon image, design-system seed values, and server-computed theming tokens. The expander in @sessions-internal/core/branding fills every leaf the business hasn't explicitly set, so an unconfigured business gets sensible defaults.
  • BusinessEmailMarketing
    Email-marketing consent collection settings for a business. Off by default; a business must deliberately enable collection. Sessions never sends marketing email — these settings govern whether an opt-in is presented on registration and checkout so the business can lawfully email participants via its own provider.
  • BusinessLocalization
    Localization settings for a business — the canonical IANA timezone and the ISO 4217 charge currency, with locale likely to follow.
  • Buyer
    Who placed an order. Either an account and its participant record, or — for an anonymous checkout — the name and email the buyer typed, snapshotted so a later account change can never rewrite what a receipt said.
  • BuyPassPaymentOption
    A "buy and use" suggestion: the viewer doesn't have a covering membership or pass, but the business sells passes that would work for this session. Carries the candidate passes the client should offer in its inline pass picker. Filtered server-side by business, visibility, sale window, and (for passes flagged purchaseRules.introOffer) by ownership; signed-out viewers never see this option because pass purchases require an account. Suppressed when the viewer already has a covering pass or membership option in this resolution.
  • CalendarUrl
  • CancelActivityRegistrationResult
  • CancelBookingResult
  • CancelSocialSignUpResult
  • CardPaymentOption
    A payment option requiring direct card payment via Stripe.
  • CheckoutPreview
    A priced basket, before anything is minted. Same item shape as checkout, so what the buyer previews and what they are charged cannot disagree.
  • CheckoutPreviewCredit
  • CheckoutPreviewLine
  • CheckoutPreviewResult
    Side-effect-free preview used by checkout UIs to show line totals as the customer types a discount code or gift-card code, before committing to purchase. Pricing rules apply first, the discount code subtracts, then tax is computed on the post-discount line; the gift card covers the resulting tax-inclusive total up to its balanceRemaining. The customer pays amountDueCents via Stripe.
  • CheckoutResult
  • CheckoutSession
    Response from creating a checkout for a payment.
  • CompleteCheckoutResult
    Result from completing a checkout after Stripe payment confirmation. Returns whichever entity was fulfilled based on the payment type.
  • CompletePurchaseResult
  • ContractRegistrationBlock
  • CreateBankDebitMandateSetupResult
  • EmailMarketingRegistrationBlock
    An optional email-marketing opt-in placed into a registration form by the business. Renders the standardized, compliant opt-in (unchecked, never gates submission). The shown disclosure — and the exact text frozen into the consent ledger — is built from the business's name + mailing address + this block's descriptor + the participant's locale. Honoured only when the business has email-marketing collection enabled (the master switch); otherwise inert.
  • Entitlement
    Something a participant owns and can spend: a pass with credits, a membership with a billing period, a gift card with a balance. Kept apart from the line that sold it, so buying three passes is three spendable things.
  • EntitlementSubscription
    The Stripe subscription behind a membership.
  • Facility
    A named sub-space within a Location — e.g. a room, court, or studio. A facility inherits its address from the parent location and adds a name plus optional instructions. Its booking overrides the location's when configured on the facility, and otherwise inherits from the location. Sessions can target a facility directly (see ActivitySession.facility).
  • GiftCard
    A gift card offered by a business. The face value is the product price. When purchased, the buyer receives a unique code that can be redeemed.
  • GiftCardPaymentOption
    A payment option backed by a gift card with sufficient balance.
  • Image
    An uploaded image stored in R2, with pre-computed dimensions and thumbhash.
  • JoinWaitlistResult
  • Location
  • Me
  • Membership
    A recurring membership offered by a business. Sessions reset or accumulate each billing period.
  • MembershipGuestPassPaymentOption
    A payment option backed by an active membership purchase's guest-pass balance. Returned for guest registrations only, when the membership has guest passes remaining for the current billing period.
  • MembershipPaymentOption
    A payment option backed by an active membership purchase, consumed against the member's own session balance. Returned for self registrations only.
  • MetadataEntry
    A single named metadata field on an entity, with its ordered list of values. Scalar fields carry exactly one value.
  • OperationError
  • Participant
    A person known to a business — the primary entity for all business interactions. The optional user field links the participant to a real user account.
  • Pass
    A session pass offered by a business. Grants registration for a fixed number of sessions, with an optional expiration window.
  • PassPaymentOption
    A payment option backed by an active pass purchase.
  • PaymentResolution
    Resolved payment options for the current user and a specific activity session. Returns null when the user is not authenticated.
  • PendingSocialSignUp
    A social sign-in that resolved to no existing account and is waiting on the viewer's answer before one is created. Held server-side as a short-lived signed token — in an HttpOnly cookie for the redirect flow, or handed to the opener for the popup flow — so nothing about the identity can be edited in between.
  • PersonName
    A person's name, resolved into parts. full is the canonical, always-present name; first and last are derived from it (the leading whitespace token is the first name, the remainder the last name) unless the person has set an explicit override. Greet people with first.
  • PhysicalFulfillment
    Where a physical item is in being handed to its buyer.
  • PhysicalProduct
    A physical product (merchandise, equipment, etc.) offered by a business. Has finite inventory and must be fulfilled by staff handing the item to the purchaser after payment.
  • PriceTier
    One step in an early-bird price timeline — the public, forward-looking view of date-based (beforeDate) pricing rules, e.g. "$80 until May 1, then $100". Tiers are ordered current-first; every subject with pricing has at least one (its base price, with a null until). Reflects the current viewer, so members see their member-rate schedule and anonymous visitors see the public one.
  • ProductConnection
    Cursor-paginated list of products. Used by the business product list page and any other admin surface that wants a full paginated view across product subtypes.
  • ProductPurchase
  • ProductPurchaseConnection
    Cursor-paginated list of product purchases. Used by participant- and account-level admin pages to page through a participant's full purchase history (memberships, passes, gift cards, physical products).
  • ProductPurchaseRules
  • ProductSalePeriod
    The window during which a product can be purchased. Both bounds are optional — null startsAt means available immediately; null endsAt means available indefinitely. The wrapper is always present so callers can read a consistent shape across product types.
  • Purchase
    One checkout. Every line the buyer bought hangs off it, every source that paid for it, and everything it created.
  • PurchaseConnection
  • PurchaseItem
    One line of one order, and the only place a price is stated. Every amount is an immutable snapshot: editing the activity, product or menu afterwards can never change what a buyer was charged.
  • PurchasePageBlock
    A single configurable block rendered on a product's purchase page. Required blocks gate checkout submission.
  • PurchaseProductResult
  • RecurrenceSchedule
    A generalized recurrence rule for an activity. Null when the activity is marked recurring but has no specific schedule set, or when the activity is a single session.
  • Refund
    Money sent back against an order. A purchase can be refunded more than once, line by line, across more than one source — which is why this is a row and not a column on whatever was cancelled.
  • RefundLine
  • RegisterForActivityResult
  • RegistrationBlockFilter
    One filter clause scoping the registration block that carries it. A block with no filters applies to every registration (the default). values are OR-ed within a clause; multiple clauses on one block are AND-ed across kinds. Values are plain strings so a future kind can carry ids (division / price-tier) without a shape change — each kind defines the valid values for its dimension (for registrationType: individual, team).
  • RegistrationConfiguration
    Registration settings for an activity or individual activity session. Embedded value object (no ID) — lives on Activity or ActivitySession.
  • RegistrationParticipantPolicy
    Whether the public registration flow accepts self registrations, guest registrations, or both. Admin-side registrations (added by staff on the session sheet) are unaffected by this policy.
  • RegistrationPrice
    Per-registration-type price configuration.
  • RegistrationRestrictions
  • RegistrationTypeRestriction
  • RemoveFavoriteResult
  • RequestAuthCodeResult
    Result of requesting a sign-in or account-creation email. The response is intentionally opaque — it returns the same shape regardless of whether the email matched an existing account, to avoid leaking account existence.
  • ReservedCard
    A card on file reserved for charging if a waitlist spot is promoted.
  • ResourceUrl
    The canonical URLs for a resource across the surfaces it can appear on. Resolved server-side (never hand-built in the view layer) so the URL contract lives in one place. go is the public consumer page, business the staff-admin page, and account the signed-in member's own view of the resource — present only for resources that have a member-facing page.
  • SavedPaymentMethod
    A saved Stripe PaymentMethod attached to the viewer's customer record. Listed and managed via Me.paymentMethods so customers can add, remove, and pick a default card before any charge happens.
  • SearchResults
    Mixed-entity search results returned by Query.search. Currently surfaces matching businesses; the type's shape will grow over time to include favorite instructors, activities, and other public entities without breaking the field name. Each list is independently scoped and capped at the requested first.
  • SectionHeaderRegistrationBlock
    A non-input heading placed into a registration form by the business to group the blocks that follow it under a titled section. Purely presentational — it never captures a response and never gates submission.
  • SelectRegistrationBlock
  • SelectRegistrationBlockOption
  • Service
    A bookable service in a business's catalogue — the salon/beauty menu entry ("Women's Cut & Style, $75, 60 min"). Services are a business-level resource, reused across as many booking activities as you like; how a service appears on a particular activity's menu (primary vs addOn, and its position) lives on the {@link ActivityServiceLink} that attaches it.
  • Services
    Third-party service configuration available to the client.
  • SignInResult
  • SocialSignIn
    Which optional social sign-in providers this deployment has configured, so the client knows whether to render the "Sign in with Google/Apple" buttons. A provider is only true when its server credentials are present.
  • Spot
    One spot, at fractional map coordinates with its own rotation — which is what makes a curved row read as a curve rather than as squares on an arc.
  • SpotBlock
    A block of spots described by rule rather than enumeration — eighteen rows of twenty-four is one of these, not 432 objects.
  • SpotMap
    A venue spot map. Belongs to a location, optionally narrowed to one facility (a single auditorium inside a multi-screen building).
  • SpotMapArtwork
    Venue-supplied artwork the spots are registered against, so a historic house gets their map rather than a generated one. SVG is preferred.
  • SpotMapBounds
    The map's drawn extent — every spot, the stage, and every element — so the picker can fit the whole house before the buyer zooms in.
  • SpotMapElement
  • SpotMapPoint
  • SpotMapSection
    A named tier within a map — orchestra, mezzanine, balcony, boxes. Row letters restart per section, so a spot's rowLabel is only unique within one.
  • SpotMapStage
    The stage or screen. x/y is its centre in map space and rotation turns it about that centre; at rotation: 0 the stage faces +y (down the map). width runs along the stage's lateral axis, depth along its facing axis.
  • SpotNumberingScheme
  • SpotOverride
    One spot's deviation from its block rule. Only the fields that differ are set; everything else comes from expanding the rule.
  • SpotPlacement
  • SpotRowLabelScheme
  • SpotRowRuns
    Unavailable spot positions within one row of one block, run-length encoded.
  • SpotSectionAvailability
    Availability for one section. For a assigned section the counts are spots; for a unassigned pool they are places in the pool.
  • SpotsTogetherSuggestion
    One "four spots together" offer.
  • StaffAssignment
    A staff member assigned to an activity or individual session, along with the role they fill.
  • StaffMember
    A staff member belonging to a business. Combines the staff directory (name, email, bio) with optional login access (user + permissions).
  • StaffMemberConnection
    Cursor-paginated list of staff members for a business.
  • TextRegistrationBlock
  • User
  • WaitlistConfiguration