Skip to content

GraphQL reference

233 types, 14 queries, and 18 mutations published on the public schema.

Queries

  • previewCheckout
    Price a basket without minting anything. Takes the same items checkout does, so what a buyer previews and what they are charged cannot disagree — hand taxCalculationId back to checkout to be charged the figure shown.
  • purchase
    One order, by id. Readable by its buyer, and by anyone holding the id for an anonymous checkout — which is what lets a guest see their own receipt.
  • booking
    One booking, by id.
  • services
    Third-party service configuration (Stripe keys, Mapbox tokens, etc.).
  • me
    Me
    The currently authenticated user and their passkeys.
  • business
  • activitySession
  • staffMember
    One staff member of the business the request is scoped to (the @handle whose page is being viewed) — how a public profile sheet fetches the schedule behind a staff member it only knows the id of, without the page query carrying every member's sessions up front. Null when the request has no business scope, or the id belongs to another business or a removed member.
  • bookingActivitySlots
    Open, bookable increments for a structure: booking activity within the [from, to] window — the activity's weekly windows minus the assigned resource's commitments, honoring its booking notice + advance window. Each slot is one increment; customers compose a longer booking from a contiguous run (bounded by minIncrements/maxIncrements). Empty when the activity isn't bookable or the appointments feature is off.
  • bookingActivityNextAvailability
    The start of the earliest open booking increment strictly after after (scanning forward up to a bounded horizon), so a booking calendar can jump the customer to the next day/week that actually has availability. Null when there's none within the horizon, the activity isn't bookable, or the appointments feature is off. Pass services for a services-priced activity so the opening spans the selection's full derived duration.
  • product
  • checkoutPreview
    Read-only preview of what a customer would be charged at checkout for a product or activity, with optional discountCode and giftCardCode applied. Used by checkout UIs to show line totals as the customer types. Returns per-field errors (invalid code, conditions not met, expired, etc.) instead of throwing.
  • search
    Global search across Sessions' public surfaces, used by the Cmd-K Go menu's contextual results. Today returns matching businesses; the result type will grow over time to surface favorite instructors, activities, and other public entities alongside without breaking the field name. Each list is capped at first (default 5, max 10); matches are case-insensitive substring matches on the entity's primary text columns. Returns empty lists for an empty query.
  • pendingSocialSignUp
    The social sign-in waiting on a confirmation in this browser, if any. Only ever non-null right after a popup-blocked social sign-in bounced back with ?confirmSignUp=1: it reads the pending token out of its HttpOnly cookie so the app can ask about the account without the address ever travelling through the URL.

Mutations

  • checkout
    Price a basket, mint the order, and — when money is owed — the PaymentIntent to pay for it. The single entry point that replaces registerForActivity, purchaseProduct, bookActivityTime, signUpTeam and signUpIndividual: one mutation, any mix of items, one order.
  • completePurchase
    Fulfill a minted purchase once its payment has been confirmed: books the sessions, mints the entitlements, spends the credits, and records how the order was funded, all in one transaction.
  • cancelBooking
    Cancel a booking and, under the activity's cancellation policy, return the money and the credits it consumed. Booking.cancellationPreview says what this will do before it is called.
  • joinBookingWaitlist
    Join the queue for a full session. Writes a waitlisted booking with no order behind it — nothing is charged until a place is offered and accepted.
  • acceptBookingOffer
    Accept an offered place. Re-enters checkout for the amount owed, so the result carries a CheckoutSession exactly as checkout does; the existing waitlisted booking is confirmed rather than a second one inserted.
  • createAccount
    Request an email containing a 6-digit code to confirm a new account. Always returns success regardless of whether the email is already in use (anti-enumeration). If an account already exists for the email, a sign-in code is sent instead.
  • signIn
    Request a sign-in email containing a 6-digit code. Always returns success regardless of whether the email matches an existing account (anti-enumeration).
  • redeemAuthCode
    Redeem a 6-digit auth code and sign the user in. Returns the created or signed-in user, the JWT token, and the redirect URL stored on the code. Sets the auth cookie on success — except for codes that were issued with a business pin, which return a business-scoped token without touching the cookie session.
  • confirmSocialSignUp
    Create the account a social sign-in stopped short of creating, and sign in as it. token is the pending sign-up handed to a popup opener; omit it and the pending cookie is used instead (the popup-blocked flow, which has no opener to hand anything to). name is the viewer's chosen display name, falling back to whatever the provider shared.
  • cancelSocialSignUp
    Discard a pending social sign-up without creating anything. Clears the pending cookie so a later page load doesn't ask again.
  • registerForActivity
    Register for an individual activity session. Use productPurchase to pay with an existing pass/membership, or omit it for direct purchase. Pass guest to register on behalf of someone else; the caller is recorded as the booker and pays. The activity's participant policy must allow guest registrations.
  • bookActivityTime
    Books an open time range on a structure: booking activity. Validates [startAt, endAt) is a contiguous run of the activity's open increments whose increment count is within [minIncrements, maxIncrements], then creates the booking — an activityId-tied appointment session + registration. Free bookings confirm immediately; activities set to request mode create a pending request the business approves or declines. Paid bookings charge bookingPricePerIncrement × increments and create the booking only once payment succeeds (via completeCheckout). buyer supplies guest details when the caller is not signed in.
  • cancelActivityRegistration
    Cancel an existing activity registration.
  • completeCheckout
    Complete a checkout after Stripe confirmation, then fulfill the underlying entity (pass purchase or registration). Idempotent — safe to call multiple times.
  • purchaseProduct
    Purchase a product (pass, membership, gift card, or physical product). Returns a checkout session if payment is required, or the purchase directly for free products.
  • createBankDebitMandateSetup
    Mint a SetupIntent on the business's connected account so the buyer can authorize a bank-debit mandate before the subscription they're paying for exists.
  • addFavorite
    Add a business, staff member (instructor), or activity to the authenticated user's favorites. Idempotent — adding an existing favorite is a no-op.
  • removeFavorite
    Remove a business, staff member, or activity from the authenticated user's favorites. Idempotent — removing a favorite that isn't set is a no-op.

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

Interfaces

  • CatalogItem
    Anything that appears in a business's catalog — the admin's single inventory of what it offers, whether that's something a customer buys outright (a pass, a membership, a gift card, a physical good) or a priced line item a customer books (a {@link Service}).
  • Product

Unions

Enums

  • ActivityLifecycle
    Lifecycle phase of an activity, derived from its end date relative to the current moment.
  • ActivityPassGifting
  • ActivityRegistrationIntendedPaymentMethod
  • ActivityRegistrationPaymentFilter
    Narrows a registration feed by whether money changed hands.
  • ActivityRegistrationStatus
  • ActivityRegistrationTimeFilter
    Time-window filter for Me.registrations. upcoming returns registrations whose session has not yet ended; past returns ones whose session has already ended; all returns both.
  • ActivityServiceKind
    Whether a service on a booking activity's menu is a base service (the client picks exactly one) or an optional extra layered on top of the chosen primary.
  • ActivitySessionSort
    Sort order for an activity-session connection. startAsc returns the earliest sessions first (the default); startDesc returns the most recent first — useful for "newest at the top" views. createdAsc / createdDesc order by when the row was created instead of when the session starts — on session connections that's the session's creation time; on registration connections it's the registration's booking time.
  • ActivitySessionSource
    How an activity session came to exist, mirroring activitySessions.source. Used by ActivitySessionFilter.source to let an admin narrow a list to a single kind of session — most usefully to isolate (or hide) appointment bookings.
  • ActivitySessionStatus
  • ActivitySessionTimeOfDay
    Time-of-day buckets used by ActivitySessionFilter.timeOfDay. Each bucket is evaluated in the business's local timezone:
  • ActivityStructure
  • BankDebitMethod
    Which bank rail a connected account can offer. Not an operator choice — Stripe scopes each rail to the merchant's own country, and an account only ever has one: ACH for US accounts, pre-authorized debit for Canadian ones. Canada cannot accept ACH at all.
  • BillingInterval
  • BookingMode
    How a customer books an appointment type. instant runs the normal registration + checkout flow; request creates a pending request a staff member approves before it is confirmed.
  • BookingPricingMode
    How a structure: booking activity is priced. duration charges the per-increment price times the number of increments in a client-chosen time range; services charges the sum of the client's selected services and derives the appointment duration from their summed durations, so the client only picks a start time.
  • BookingStatus
    Where a booking sits. confirmed and requested hold a place; waitlisted and offered are queued behind one; cancelled has released it.
  • BookingWindowStatus
    Whether a location or facility is currently accepting bookings. Named apart from the {@link BookingStatus} that describes a booking's own life — this one is a door being open, not a place being held.
  • BusinessPaymentsMode
    Whether the business is processing real payments or running in test mode (card checkouts go through the platform's Stripe account until Connect is finished). Reflects the business's real stripe_mode flag — live once the business completes live Connect onboarding, otherwise test.
  • CheckoutCreditKind
  • CheckoutFundingSource
    Which funding source the buyer picked in the Sessions-owned toggle above the Stripe Payment Element.
  • CommerceActor
    Who set something in motion — a refund, or a cancellation.
  • DayOfWeek
  • EmailMarketingConsentStatus
    Resulting state of a participant's email-marketing consent. granted means they affirmatively opted in; withdrawn means a prior consent was revoked. The absence of a status (null on {@link ParticipantEmailMarketingConsent.status}) means they were never asked — deliberately distinct from withdrawn.
  • EntitlementKind
    What kind of thing an entitlement is.
  • EntitlementStatus
    Where an entitlement is in its life. The same vocabulary product purchases used, because the states are the same states: an expired pass, an exhausted one, a membership Stripe stopped billing.
  • IntervalUnit
  • MonthlyMode
  • MonthlyWeek
  • PaymentCollection
    When payment for a paid registration is collected. Room is left for future values (e.g. collection when the activity completes).
  • PricingRuleScope
  • ProductAvailability
    Which products a Business.products list includes, relative to the current viewer.
  • ProductFulfillmentStatus
    Fulfillment state for purchases that require handoff (currently physical products). Null for virtual product purchases that self-fulfill at payment time. Additional states (e.g. shipped, cancelled) may be added later.
  • ProductPurchaseStatus
  • ProductType
    Discriminator for the concrete product subtype. Matches the products.type column on the database.
  • ProductVisibility
    Whether a product is currently for sale on the business's storefront. Hidden products remain in admin views but are excluded from public listings and cannot be purchased.
  • PurchaseItemKind
    What a line is a claim on. Stored rather than derived, because a league season entry and a season-scoped session line carry the same references.
  • PurchasePageBlockKind
    The kind of a configurable purchase-page block. Each kind interprets its config (and, at checkout, its captured response) differently.
  • PurchaseStatus
    Where a purchase is in its two-phase life. pending is minted with the PaymentIntent and holds nothing — no booking, no entitlement, no capacity; completed is fulfilled; cancelled never fulfilled. Refunding a completed purchase leaves it completed, because the order still happened.
  • RefundSource
    Where a refund's money went back to.
  • RegistrationBlockFilterKind
    The dimension a {@link RegistrationBlockFilter} scopes on. v1 exposes only registrationType (individual "free agent" vs team sign-ups); adding a dimension (e.g. division, priceTier) is a pure addition — a new enum value, no change to the filter envelope.
  • RegistrationParticipantMode
  • RegistrationStatus
  • ResourceKind
    The kind of resource that owns an appointment availability schedule or fulfills an appointment type: a staff member, a facility, or a location.
  • ScheduleView
    A calendar display mode for a business's schedule. Mirrors the user-facing view vocabulary (the embed view attribute and the display_as URL param); DAY is the single focused day, WEEK the seven-day grid, MONTH the month.
  • SocialSignInProvider
    An identity provider a user can sign in with.
  • SpotAssignment
    How a section sells. assigned is the spot-map case — every spot is a distinct pickable unit. unassigned is a capacity pool (a concert floor, a standing terrace, a lawn): drawn as a shape, sold by the head, with no spot assigned. One map routinely holds both.
  • SpotHoldReason
    Why a spot is off general sale.
  • SpotKind
    What a spot physically is. Non-spot kinds render differently and, for wheelchair, take a wider footprint.
  • SpotLateralPosition
    Where a spot sits, derived from the map's geometry rather than from a layout assumption. Drives the ticket, the wallet pass, and the confirmation email.
  • SpotMapElementKind
    A non-spot element drawn on the map so the picker reads like the room. Presentational only — never sellable.
  • SpotMapStageForm
    How the audience surrounds the stage. This is what stops the renderer — and the "row F, centre, 12 rows back" descriptions — from assuming the stage is at the top of the map.
  • SpotMapStageKind
    What the audience is pointed at.
  • SpotNumberDirection
  • SpotNumberSchemeKind
    How spots within a row are numbered.
  • SpotRowLabelKind
    How a block's rows are named. Theatres overwhelmingly use letters and skip I, because it reads as a 1.
  • SpotSide
    Which bank of a multi-sided house a spot is in, relative to the stage's own facing. Null for a map with no stage.
  • TextBlockInputType

Inputs

  • ActivityFilter
    Filter applied to a paginated activity list. query matches the activity's name (case-insensitive substring). Array filters narrow the result to activities whose type / structure / registration.status is in the supplied set; an empty or omitted array applies no filter. startAfter / endBefore restrict to activities whose configured startDate / endDate falls on or after / on or before the supplied ISO-8601 date string.
  • ActivitySessionFilter
    Optional filters for Business.scheduledSessions. All fields are ANDed together; date-range filtering still goes through the parent starting argument so the same predicates back both fields.
  • ActivitySessionsStarting
  • AppointmentItemInput
    A booked time against an appointment-structured activity.
  • AttributionInput
    Client-captured marketing attribution forwarded through a booking / checkout / sign-up mutation (issue #2060). firstTouch is the visitor's first-ever touch (persisted in browser storage and stamped, immutably, onto a newly created participant); lastTouch is the touch that converted (stamped onto the registration / purchase). Either may be omitted; when only one is present the server uses it for both.
  • AttributionTouchInput
    One captured marketing-attribution touch: the raw utm_* campaign labels plus the referrer host and landing path the visitor arrived on. For privacy, send only the referrer host (never the full referrer URL with its query string) and the landing path. There is deliberately no origin field — the server classifies origin itself and never trusts a client-claimed marketplace origin.
  • BuyerInput
    Buyer details for an unauthenticated checkout. Required when the caller is not signed in and the target product or activity allows guest checkout. Ignored when the caller is signed in. The server finds an existing user by email or creates a new one inline; when createAccount is true (the default), a magic-link email is sent so the buyer can claim the account.
  • CheckoutInput
  • CheckoutItemInput
    One basket. Every branch names its target with id, so an item reads as {session: {id: …, tiers: […]}} rather than repeating the branch key.
  • CheckoutPreviewActivityInput
  • CheckoutPreviewBookingInput
    An appointment booking to price, mirroring the arguments bookActivityTime takes. The quote runs the same pricing rules and sales-tax calculation the mutation runs at charge time, so the buyer's order summary and the amount charged agree. Availability is not checked here — this is a price quote, and the mutation still validates the slot when the booking commits.
  • CheckoutPreviewInput
  • EntityRef
  • FavoriteTargetInput
    Target for a favorite operation. Exactly one of business, staff, or activity must be provided — the mutation dispatches based on which field is set.
  • FundingPreferenceInput
    How the buyer would like to pay, when the business offers a choice.
  • GuestRegistrationInput
    Identifies the guest being registered. The booker (the caller of registerForActivity) is recorded as the payer; the guest is the attendee.
  • JoinWaitlistInput
  • LeagueEntryInput
    A team's or an individual's place in a league division.
  • MetadataFilterInput
    Matches entities that have any of values stored under metadata key name. Key accepts the $. shorthand for the sessions. namespace.
  • ParticipantSelectionInput
    Who a line books for.
  • ProductFilter
    Filter applied to a paginated ProductConnection. Fields combine with AND semantics.
  • ProductItemInput
  • ProductPurchaseGiftInput
  • RegistrationDataInput
  • SessionItemInput
    A claim on one session — a class spot, tickets to a showtime.
  • StaffMemberFilter
    Filter applied to a paginated staff list. query matches the staff member's name.
  • TaxAddressInput
  • TeamEntryInput
  • TeamEntryMemberInput
  • TierQuantityInput

Scalars

  • ActivityType
    Identifier for a kind of activity (sport, fitness modality, mind-body practice). Encoded as a snake_case, dot-separated string. Each .-separated segment matches [a-z][a-z0-9_]*; segments express variant hierarchy from general to specific.
  • Boolean
    The Boolean scalar type represents true or false.
  • DateTime
    An ISO 8601 date-time string (e.g. "2026-03-27T14:30:00.000Z").
  • Float
    The Float scalar type represents signed double-precision fractional values as specified by [IEEE 754](https://en.wikipedia.org/wiki/IEEE_floating_point).
  • FormattedText
    Inline-formatted user-facing text: a restricted Markdown subset — emphasis, code spans, and [label](url) links — whose links may address a place inside the app with a sessions: URL, alongside the ordinary http(s):, mailto: and relative-path hrefs.
  • ID
    The ID scalar type represents a unique identifier, often used to refetch an object or as key for a cache. The ID type appears in a JSON response as a String; however, it is not intended to be human-readable. When expected as an input type, any string (such as "4") or integer (such as 4) input value will be accepted as an ID.
  • Int
    The Int scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1.
  • JSONPath
    A JSON path selector, as specified by [RFC 9535](https://datatracker.ietf.org/doc/html/rfc9535).
  • Locale
    A BCP 47 locale tag (e.g. "en", "fr", "fr-CA"). See https://www.rfc-editor.org/info/bcp47
  • String
    The String scalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text.
  • Timezone
    An IANA timezone identifier (e.g. "America/Toronto"). Validated at the GraphQL layer with Intl.DateTimeFormat; values that the runtime can't resolve to a known zone are rejected.
  • URL
    An absolute URL with an http or https scheme. Inputs are parsed with the WHATWG URL parser; values that don't parse, or that use a different scheme, are rejected at the GraphQL layer.