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.
Fields
Current email-marketing consent state for this participant within this business. Business-internal — never exposed on public surfaces or to any other business. Sessions never sends marketing email itself; this records whether the business may email the participant through its own provider.
Activity registrations for this participant. Cursor-paginated; default page size 50, clamped to [1, 100].
Sort defaults to activitySessions.startAt ASC when the requested status / time filter is future-leaning (or sort: startAsc is passed explicitly), and to startAt DESC otherwise. Without any cross-table filter the page falls back to registration.createdAt DESC, id ASC so registrations not yet attached to a session still surface.
filter.query matches against the registration's activity name or session name (case-insensitive). filter.includeGuests defaults to true; pass false to exclude guest registrations the participant didn't book themselves.
Every product purchase for this participant regardless of status or fulfillment state, newest first. Use this for admin views that want to surface expired passes, exhausted memberships, redeemed gift cards, and picked-up physical products alongside active entitlements. Cursor-paginated; default page size 50, clamped to [1, 100]. Sort order is purchasedAt DESC, id ASC.
Pass filter.scope = active to restrict to currently-usable entitlements: any status in active | pastDue | paymentActionRequired | unpaid | incomplete, plus memberships in their billing grace period (exhausted / cancelled status with currentPeriodEnd in the future).