A session pass offered by a business. Grants registration for a fixed number of sessions, with an optional expiration window.
Implements
Fields
idID!businessBusiness!urlResourceUrl!nameStringdescriptionStringfeaturedImageImagemedia[Image!]!priceInt!visibilityProductVisibility!saleProductSalePeriod!purchaseRulesProductPurchaseRules!pricingRules[PricingRule!]!effectivePriceInt!taxCodeStringsortOrderInt!createdAtDateTime!recentPurchases[ProductPurchase!]!Arguments (1)
purchasesProductPurchaseConnection!Arguments (3)
weeklyPurchases[ProductPurchasesInWeek!]!Arguments (1)
purchasePageBlocks[PurchasePageBlock!]!Ordered list of configurable blocks rendered on this product's purchase page (contract, signature, acknowledgement, recurring-summary, etc.). Empty for products that use the default purchase layout. config on each block is a JSON-encoded string.
metadataStringFirst value of the named metadata key, or null. Accepts the $. alias.
Arguments (1)
nameString!metadataValues[String!]!All values stored for the named metadata key, in order.
Arguments (1)
nameString!metadataEntries[MetadataEntry!]!All metadata stored on this product, one entry per key.
sessionCountIntNumber of sessions the pass grants. Nullable for type-system parity with Membership.sessionCount, which uses null = unlimited. Passes do not use the unlimited convention — this field is always populated in practice.
expirationProductExpirationWhen the pass expires, either as a duration after purchase (expiration.after) or a fixed calendar date (expiration.at). Null means the pass never expires.
activityScopeProductActivityScope!How this pass's activity coverage is scoped.
activityRules[ProductActivityRule!]!Per-activity rules: exclusions and per-activity credit-cost overrides. Empty when the pass applies to every activity at the default credit cost.
clockStartClockStart!When the pass's validity clock starts. With firstSession, a relative expiry (expiration.after) counts from the buyer's first booked session once it occurs rather than from purchase; a fixed calendar expiry (expiration.at) is unaffected. Defaults to purchase.
stripeSyncProductStripeSync!Sync state for the corresponding Stripe Product / Price on the platform account. Always present; inner fields are null until first sync succeeds.