Queries
All queries are sent as POST /graphql with the operation in the request body. Include the Clerk JWT in the SessionToken header for authenticated queries.
← Back to GraphQL API Reference
accountabilityPartner
Returns the active accountability partner for a user, or null if none.
Returns: AccountabilityPartner (↗)
Arguments:
| Name | Type | Required | Description |
|---|---|---|---|
userId | ID | No | public_id of the user whose accountability partner to retrieve. Defaults to the current user. |
activeSeasonalEvent
The current active seasonal event, if any. Nil when seasonal_events_enabled is off.
Returns: SeasonalEvent (↗)
activeSeasonalEvents
Lists currently active seasonal events. Empty when seasonal_events_enabled is off.
Returns: [SeasonalEvent!] (↗)
adminActions
Admin only. Audit log, newest first, cursor-paginated.
Returns: AdminActionConnection! (↗)
Arguments:
| Name | Type | Required | Description |
|---|---|---|---|
actionType | String | No | — |
actorId | ID | No | — |
after | String | No | Returns the elements in the list that come after the specified cursor. |
before | String | No | Returns the elements in the list that come before the specified cursor. |
first | Int | No | Returns the first n elements from the list. |
last | Int | No | Returns the last n elements from the list. |
scopedTo | String | No | Bucket filter — e.g. 'demo_data' narrows to Phase 30 demo-data actions. |
targetType | String | No | — |
adminAiUsage
Returns aggregated AI spend and usage for the admin dashboard. Admin only.
Returns: AdminAiUsage (↗)
Arguments:
| Name | Type | Required | Description |
|---|---|---|---|
daysBack | Int | No | Number of days to look back for AI spend aggregation. Defaults to 30. |
adminSearchUsers
Admin only. pg_trgm-backed user search; sub-200ms on 100K users.
Returns: UserConnection! (↗)
Arguments:
| Name | Type | Required | Description |
|---|---|---|---|
after | String | No | Returns the elements in the list that come after the specified cursor. |
before | String | No | Returns the elements in the list that come before the specified cursor. |
first | Int | No | Returns the first n elements from the list. |
last | Int | No | Returns the last n elements from the list. |
query | String! | Yes | Trigram search string; 4+ chars recommended. |
adminStats
Returns platform-wide statistics for the admin dashboard. Admin only.
Returns: AdminStats (↗)
Arguments:
| Name | Type | Required | Description |
|---|---|---|---|
daysBack | Int | No | Number of days to look back for time-series metrics. Defaults to 90. |
adminTeamsMonitoring
Admin-only. Read-only Teams monitoring list (M11, PRIVACY-3): seat count, subscription status, and last-active per team.
Returns: [AdminTeamMonitoring!] (↗)
aiEmployee
Fetch a single AI employee by public_id. Admin only.
Returns: AiEmployee (↗)
Arguments:
| Name | Type | Required | Description |
|---|---|---|---|
id | String! | Yes | — |
aiEmployees
Admin only. AI employee list, cursor-paginated.
Returns: AiEmployeeConnection! (↗)
Arguments:
| Name | Type | Required | Description |
|---|---|---|---|
after | String | No | Returns the elements in the list that come after the specified cursor. |
autonomy | String | No | — |
before | String | No | Returns the elements in the list that come before the specified cursor. |
first | Int | No | Returns the first n elements from the list. |
last | Int | No | Returns the last n elements from the list. |
roleKey | String | No | — |
status | String | No | — |
aiRequest
Fetch a single async AiRequest by public_id. Owning user only; the reconnect-recovery counterpart to aiRequestUpdate (v4.60 Phase 1).
Returns: AiRequest (↗)
Arguments:
| Name | Type | Required | Description |
|---|---|---|---|
id | ID! | Yes | public_id of the AiRequest to retrieve. |
aiRun
Fetch a single AI run by public_id. Admin only.
Returns: AiRun (↗)
Arguments:
| Name | Type | Required | Description |
|---|---|---|---|
id | String! | Yes | — |
allyActivityFeed
Returns paginated activity events from the current user's accepted allies. Each item carries a kind discriminator (GOAL / JOIN / POST / ACHIEVEMENT / FOLLOW) and a per-kind details payload.
Returns: [AllyActivity!] (↗)
Arguments:
| Name | Type | Required | Description |
|---|---|---|---|
limit | Int | No | Maximum number of events to return. Defaults to 20, capped at 50. |
offset | Int | No | Number of items to skip for pagination. Defaults to 0. |
userId | ID! | Yes | public_id of the user whose ally feed to retrieve. |
allyInvitePreview
Public preview of an invite token — returns inviter name, avatar, and validity. No auth required. Rate-limited (60 req/min per IP for anonymous callers; per user when authenticated.).
Returns: AllyInvitePreview! (↗)
Arguments:
| Name | Type | Required | Description |
|---|---|---|---|
token | String! | Yes | Invite token from the deep link. |
askDocsQuestion
Ask a question about the Objectuve engineering docs corpus. Requires a Clerk session on an @objectuve.com email, verified server-side. Rate-limited 20 req/min per user. Returns DISABLED (not an error) when the assistant is off.
Returns: DocsAssistantAnswer! (↗)
Arguments:
| Name | Type | Required | Description |
|---|---|---|---|
question | String! | Yes | The question to ask the docs assistant. |
askGuideQuestion
Ask a question about the Objectuve guide. No auth required. Rate-limited (20 req/min per IP for anonymous callers; per user when authenticated). Returns DISABLED (not an error) when the assistant is off.
Returns: GuideAssistantAnswer! (↗)
Arguments:
| Name | Type | Required | Description |
|---|---|---|---|
question | String! | Yes | The question to ask the guide assistant. |
authzCheck
Checks whether the current user has a specific permission (e.g. admin).
Returns: Result (↗)
Arguments:
| Name | Type | Required | Description |
|---|---|---|---|
concern | String! | Yes | Permission name to check (e.g. "admin"). |
id | ID! | Yes | public_id of the user to check authorization for. |
badgeHolderCount
Public. Distinct number of users who have unlocked a given badge. Returns 0 for unknown keys (validated against the BadgeCatalog allowlist). Cached for 1 hour.
Returns: Int!
Arguments:
| Name | Type | Required | Description |
|---|---|---|---|
badgeKey | String! | Yes | Badge key from Achievements::BadgeCatalog::BADGE_KEYS. |
badgeStats
Returns the unlock percentage for each badge across all users. Cached for 1 hour.
Returns: [BadgeStat!] (↗)
blockedUsers
Returns the authenticated user's blocked set (either direction — a block hides content symmetrically). Auth required.
Returns: [UserSearchResult!]! (↗)
coachConversation
Returns the persisted Coach conversation thread for the authenticated user. Scoped per goal if goal_id is provided; returns the global thread otherwise.
Returns: CoachConversation (↗)
Arguments:
| Name | Type | Required | Description |
|---|---|---|---|
goalId | String | No | public_id of the goal to scope the thread to. Omit for the global thread. |
coachModelSetting
Returns the runtime Coach Gemini model setting: current value, allowlisted options with current rates, and the last 5 changes. Admin only.
Returns: CoachModelSetting! (↗)
communities
Lists communities, optionally filtered by user membership or goal category.
Returns: [Community!] (↗)
Arguments:
| Name | Type | Required | Description |
|---|---|---|---|
goalCategoryIds | [ID!] | No | Array of goal category IDs to filter communities by. |
userId | ID | No | public_id of a user to return only communities they are a member of. |
community
Fetches a community by its public_id. Authorization: For a team-scoped room (teamId present), requires an actual CommunityMember record — seated team membership alone is not enough. Admins bypass. teamId-nil (public/free) communities are unaffected. See Communities § Room Access Boundary.
Returns: Community (↗)
Arguments:
| Name | Type | Required | Description |
|---|---|---|---|
id | ID! | Yes | public_id of the community to retrieve. |
communityBadges
Returns the threshold and status marks for a community. Authorization: For a team-scoped room (teamId present), requires an actual CommunityMember record — seated team membership alone is not enough. Admins bypass. teamId-nil (public/free) communities are unaffected. See Communities § Room Access Boundary.
Returns: CommunityBadges (↗)
Arguments:
| Name | Type | Required | Description |
|---|---|---|---|
communityId | ID! | Yes | public_id of the community. |
communityChallenge
Fetches a community challenge by public_id.
Returns: CommunityChallenge (↗)
Arguments:
| Name | Type | Required | Description |
|---|---|---|---|
id | ID! | Yes | public_id of the challenge to retrieve. |
communityChallengeLeaderboard
Paginated leaderboard for a challenge, ranked by progress_count DESC.
Returns: [ChallengeParticipant!] (↗)
Arguments:
| Name | Type | Required | Description |
|---|---|---|---|
challengeId | ID! | Yes | public_id of the challenge. |
completedOnly | Boolean | No | When true, returns only participants who have completed the challenge. |
limit | Int | No | Number of participants to return. Defaults to 50. |
offset | Int | No | Number of participants to skip. Defaults to 0. |
communityChallenges
Lists challenges in a community, optionally filtered by status.
Returns: [CommunityChallenge!] (↗)
Arguments:
| Name | Type | Required | Description |
|---|---|---|---|
communityId | ID! | Yes | public_id of the community. |
status | String | No | Filter by status: "active", "upcoming", or "completed". Omit for all. |
communityFeed
Returns the paginated post feed for a community, ordered by most recent. Authorization: For a team-scoped room (teamId present), requires an actual CommunityMember record — seated team membership alone is not enough. Admins bypass. teamId-nil (public/free) communities are unaffected. See Communities § Room Access Boundary.
Returns: [CommunityPost!] (↗)
Arguments:
| Name | Type | Required | Description |
|---|---|---|---|
communityId | ID! | Yes | public_id of the community whose feed to retrieve. |
limit | Int | No | Number of posts to return per page. Defaults to 20. |
offset | Int | No | Number of posts to skip for pagination. Defaults to 0. |
communityGoals
Returns paginated goals shared into a community. Authorization: For a team-scoped room (teamId present), requires an actual CommunityMember record — seated team membership alone is not enough. Admins bypass. teamId-nil (public/free) communities are unaffected. See Communities § Room Access Boundary.
Returns: [Goal!] (↗)
Arguments:
| Name | Type | Required | Description |
|---|---|---|---|
communityId | ID! | Yes | public_id of the community. |
limit | Int | No | Number of goals to return. Defaults to 20. |
offset | Int | No | Number of goals to skip. Defaults to 0. |
communityInsights
Returns community engagement insights and recommendations for a user.
Returns: CommunityInsights (↗)
Arguments:
| Name | Type | Required | Description |
|---|---|---|---|
userId | ID! | Yes | public_id of the user to generate insights for. |
communityMemberCheck
Checks whether a given user is a member of a community.
Returns: Result (↗)
Arguments:
| Name | Type | Required | Description |
|---|---|---|---|
cid | ID! | Yes | public_id of the community to check membership for. |
id | ID | No | public_id of the user to check. Defaults to the authenticated user. |
communityMembers
Returns paginated members of a community. Authorization: For a team-scoped room (teamId present), requires an actual CommunityMember record — seated team membership alone is not enough. Admins bypass. teamId-nil (public/free) communities are unaffected. See Communities § Room Access Boundary.
Returns: [CommunityMember!] (↗)
Arguments:
| Name | Type | Required | Description |
|---|---|---|---|
communityId | ID! | Yes | public_id of the community. |
limit | Int | No | Number of members to return. Defaults to 50. |
offset | Int | No | Number of members to skip. Defaults to 0. |
communitySuggestions
Returns communities suggested for a user based on their goals and interests.
Returns: [CommunitySuggestion!] (↗)
Arguments:
| Name | Type | Required | Description |
|---|---|---|---|
userId | ID | No | public_id of the user to generate suggestions for. Defaults to the current user. |
connectedApps
Returns the current user's Connected Apps state: available providers plus their own connections and mappings. Requires authentication.
Returns: ConnectedApps! (↗)
contentReports
Admin only. Pending user-submitted content reports, newest first.
Returns: [ContentReport!]! (↗)
criticalPathReminderPreferences
Returns the daily reminder preferences for the authenticated user.
Returns: CriticalPathReminderPreferences! (↗)
criticalPathStimXpStatus
Returns the authenticated user's Stim XP totals, streak, theme, and theme catalog.
Returns: StimXpStatus! (↗)
criticalPathToday
Returns today's Critical Path puzzle status for the authenticated user.
Returns: CriticalPathPlayStatus! (↗)
curatableCommunities
Returns discoverable communities with their editorial fields, ordered by editorial_slot, editorial_position, then name. Admin only.
Returns: [Community!] (↗)
dataImportStatus
Reads commit progress/result for a DataImport owned by the authenticated user.
Returns: DataImport (↗)
Arguments:
| Name | Type | Required | Description |
|---|---|---|---|
id | ID! | Yes | public_id of the DataImport to read. |
demoDataRunStatus
Polls Rails.cache for the progress of an in-flight demo-data job.
Returns: DemoDataRunStatus! (↗)
Arguments:
| Name | Type | Required | Description |
|---|---|---|---|
jobId | ID! | Yes | — |
demoScopePreview
Live counts of demo-tagged records across all 12 demo-bearing tables.
Returns: DemoScopePreview! (↗)
editorialCommunities
Returns up to 8 communities admin-assigned to the given editorial slot, ordered by editorial_position then editorial_updated_at. Unknown slots return [].
Returns: [Community!] (↗)
Arguments:
| Name | Type | Required | Description |
|---|---|---|---|
slot | String! | Yes | Editorial slot to fetch (e.g. "active_now", "just_started", "most_members"). |
enneagramAssessment
Returns the latest non-deleted Enneagram assessment for a user. Auth: own user or admin.
Returns: EnneagramAssessment (↗)
Arguments:
| Name | Type | Required | Description |
|---|---|---|---|
userId | ID! | Yes | public_id of the user whose latest assessment to retrieve. |
enneagramAssessmentHistory
Returns all Enneagram assessments for a user, newest first. Auth: own user or admin.
Returns: [EnneagramAssessment!]! (↗)
Arguments:
| Name | Type | Required | Description |
|---|---|---|---|
userId | ID! | Yes | public_id of the user whose assessment history to retrieve. |
feedbackPost
Returns a single feedback post by public ID.
Returns: FeedbackPost (↗)
Arguments:
| Name | Type | Required | Description |
|---|---|---|---|
id | ID! | Yes | Public ID of the feedback post. |
feedbackPosts
Returns feedback posts, filterable by category, status, and search.
Returns: [FeedbackPost!] (↗)
Arguments:
| Name | Type | Required | Description |
|---|---|---|---|
category | String | No | Filter by category (feature, improvement, bug, other). |
filter | String | No | Filter view: my_posts (current user posts), my_votes (posts user voted on). |
search | String | No | Search titles and descriptions (case-insensitive). |
sort | String | No | Sort order: votes (default), newest. |
status | String | No | Filter by status (open, planned, in_progress, completed, declined). |
tags | [String!] | No | Filter by tag slugs (any-of). Posts carrying any of the given tags are returned. |
feedbackStats
Returns feedback board statistics for admin dashboard. Admin only.
Returns: FeedbackStats (↗)
feedbackTags
Returns feedback tags, non-archived by default. Admin only.
Returns: [FeedbackTag!] (↗)
Arguments:
| Name | Type | Required | Description |
|---|---|---|---|
includeArchived | Boolean | No | Include archived tags (for the admin UI). |
feedbackWeeklySummary
Coach-analyzed themed summary of the past week of feedback. Admin only. Null when feedback_ai_summary_enabled is off or there is nothing to summarize.
Returns: FeedbackWeeklySummary (↗)
findUserForInvite
Phase 75. Looks up a user by username or email for ally invite. Exactly one arg required. Auth-required. Rate-limited (10/min). Returns nil for not-found or soft-deleted users (no enumeration).
Returns: User (↗)
Arguments:
| Name | Type | Required | Description |
|---|---|---|---|
email | String | No | Email address to search for. Mutually exclusive with username. |
username | String | No | Username to search for. Mutually exclusive with email. |
formingCommunities
Returns up to 12 newly forming communities (0-4 members), newest first, excluding communities the caller admins. Requires authentication.
Returns: [Community!] (↗)
funnelStats
Onboarding funnel aggregates and TTFG percentiles. Admin only.
Returns: OnboardingFunnel (↗)
Arguments:
| Name | Type | Required | Description |
|---|---|---|---|
periodSeconds | Int | No | Window in seconds (default 30 days = 2,592,000). |
variantId | String | No | Filter to a specific onboarding variant cohort (e.g. control, variant_a). |
gdprRequest
Fetch a GDPR request by public_id. super_admin or support only.
Returns: GdprRequest (↗)
Arguments:
| Name | Type | Required | Description |
|---|---|---|---|
publicId | String! | Yes | public_id of the GDPR request. |
gdprRequests
GDPR request queue. super_admin or support only.
Returns: GdprRequestConnection! (↗)
Arguments:
| Name | Type | Required | Description |
|---|---|---|---|
after | String | No | Returns the elements in the list that come after the specified cursor. |
before | String | No | Returns the elements in the list that come before the specified cursor. |
first | Int | No | Returns the first n elements from the list. |
last | Int | No | Returns the last n elements from the list. |
requestType | String | No | Filter by request type. |
status | String | No | Filter by status. |
goal
Fetches a private goal owned by the authenticated user.
Returns: Goal (↗)
Arguments:
| Name | Type | Required | Description |
|---|---|---|---|
id | ID! | Yes | public_id of the goal to retrieve. |
goalCategories
Returns all available goal categories (fitness, learning, personal, etc.).
Returns: [GoalCategory!] (↗)
goalEvent
Fetches a single goal progress event by public_id.
Returns: GoalEvent (↗)
Arguments:
| Name | Type | Required | Description |
|---|---|---|---|
id | ID! | Yes | public_id of the goal event to retrieve. |
goalKinds
Returns all available goal types/kinds (habit, milestone, quantity, etc.).
Returns: [GoalType!] (↗)
goalProgressData
Returns progress visualization data for a goal.
Returns: GoalProgressData (↗)
Arguments:
| Name | Type | Required | Description |
|---|---|---|---|
id | ID! | Yes | public_id of the goal to get progress data for. |
lookbackDays | Int | No | Number of days to look back. Defaults to 90. |
period | String | No | Grouping period: day, week, or month. Defaults to week. |
goals
Lists top-level goals (no parent) for the authenticated user or a specified user (admin only).
Returns: [Goal!] (↗)
Arguments:
| Name | Type | Required | Description |
|---|---|---|---|
userId | ID | No | public_id of the user whose goals to retrieve. Omit to use the current user. |
goalSummary
Aggregated KPI counts for the current user's goals.
Returns: GoalSummary! (↗)
goalTemplates
Returns all non-deleted goal templates ordered by (theme, display_order). Auth required.
Returns: [GoalTemplate!]! (↗)
isFollowingGoal
Checks whether the authenticated user is currently following a goal.
Returns: Result (↗)
Arguments:
| Name | Type | Required | Description |
|---|---|---|---|
id | ID! | Yes | public_id of the goal to check. |
me
Returns the currently authenticated user. Requires authentication.
Returns: User (↗)
moderationQueue
Admin only. Pending moderation flags, cursor-paginated.
Returns: ContentFlagConnection! (↗)
Arguments:
| Name | Type | Required | Description |
|---|---|---|---|
after | String | No | Returns the elements in the list that come after the specified cursor. |
ageBucket | String | No | Single-select age bucket: under_1h|under_24h|under_7d|older_than_7d. |
before | String | No | Returns the elements in the list that come before the specified cursor. |
first | Int | No | Returns the first n elements from the list. |
flaggableType | [String!] | No | Filter by polymorphic flaggable class name (e.g. CommunityPost). |
flaggedUserId | String | No | Public_id of the user whose flagged content should be returned. |
last | Int | No | Returns the last n elements from the list. |
severity | [String!] | No | Filter by severity: low|medium|high|critical. Multi-select ORs within; AND with other filters. |
source | [String!] | No | Filter by source: profanity_filter|ai_screen|user_report. |
myAllyInvites
Returns the authenticated user's active accountability-partner invites. Auth required.
Returns: [AllyInvite!]! (↗)
myLatestDataExport
Returns the most recent self-service data export request for the authenticated user.
Returns: GdprRequest (↗)
myTeam
The authenticated user's Team, if any. Null when the user has no team membership.
Returns: Team (↗)
myTeams
Every team the authenticated user belongs to, ordered joined_at ASC. Backs the team-picker switcher (OBJ-1821). Empty array, never null, for a user with no memberships.
Returns: [TeamSwitcherEntry!]! (↗)
notificationHistory
Returns paginated notification history for the current user, newest first.
Returns: NotificationHistory (↗)
Arguments:
| Name | Type | Required | Description |
|---|---|---|---|
limit | Int | No | Number of notifications per page. Defaults to 20. |
offset | Int | No | Number of items to skip for pagination. Defaults to 0. |
teamId | ID | No | When present, scopes results to notifications for this team. A non-member gets an empty result. |
outgoingAllyRequests
Returns pending ally requests the authenticated user has sent. Auth required.
Returns: [UserSearchResult!]! (↗)
pendingAllyRequests
Returns incoming pending ally requests for the authenticated user. Auth required.
Returns: [UserAlly!]! (↗)
pendingArtifacts
Admin only. Artifacts awaiting review, cursor-paginated.
Returns: AiArtifactConnection! (↗)
Arguments:
| Name | Type | Required | Description |
|---|---|---|---|
after | String | No | Returns the elements in the list that come after the specified cursor. |
before | String | No | Returns the elements in the list that come before the specified cursor. |
employeeId | ID | No | — |
first | Int | No | Returns the first n elements from the list. |
kind | String | No | — |
last | Int | No | Returns the last n elements from the list. |
pendingCounts
Per-queue pending item counts for the admin sidebar, filtered by role. Admin only.
Returns: PendingCounts! (↗)
personalAnalyticsActivityHeatmap
Trailing 90-day activity heatmap for the current user. Auth required; gated behind personal_analytics_enabled.
Returns: AnalyticsActivityHeatmap (↗)
personalAnalyticsCompletionByCategory
Completion-by-category series for the current user, month-to-date. Auth required; gated behind personal_analytics_enabled.
Returns: AnalyticsCompletionByCategory (↗)
personalAnalyticsMonthInReview
Month-in-review hero card for the current user, month-to-date. Auth required; gated behind personal_analytics_enabled.
Returns: AnalyticsMonthInReview (↗)
personalAnalyticsStreakHistory
Trailing 26-week streak history for the current user. Auth required; gated behind personal_analytics_enabled.
Returns: AnalyticsStreakHistory (↗)
personalAnalyticsXpOverTime
Trailing 26-week cumulative XP for the current user. Auth required; gated behind personal_analytics_enabled.
Returns: AnalyticsXpOverTime (↗)
pickableFeedbackTags
Returns non-archived feedback tags, ordered by position then name. Any authenticated user — for the feedback create-post picker and board filter.
Returns: [FeedbackTag!]! (↗)
plans
Returns all active subscription plans (Supporter tiers).
Returns: [Plan!]! (↗)
publicFeedbackPost
Returns a single public feedback post by public ID. Null when not found, soft-deleted, or the read path is disabled.
Returns: PublicFeedbackPost (↗)
Arguments:
| Name | Type | Required | Description |
|---|---|---|---|
id | ID! | Yes | Public ID of the feedback post. |
publicFeedbackPosts
Public, unauthenticated feedback board listing. Null when the read path is disabled. Rate-limited (30 req/min per IP for anonymous callers; per user when authenticated).
Returns: [PublicFeedbackPost!] (↗)
Arguments:
| Name | Type | Required | Description |
|---|---|---|---|
status | String | No | Filter by status (open, planned, in_progress, completed, declined). |
tags | [String!] | No | Filter by tag slugs (any-of). Posts carrying any of the given tags are returned. |
publicGoal
Fetches a publicly visible goal by public_id. Returns an error if the goal is private.
Returns: Goal (↗)
Arguments:
| Name | Type | Required | Description |
|---|---|---|---|
id | ID! | Yes | public_id of the goal to retrieve. |
recentArtifacts
Admin only. Recently processed (approved/rejected/delivered) artifacts from the last 7 days, cursor-paginated.
Returns: AiArtifactConnection! (↗)
Arguments:
| Name | Type | Required | Description |
|---|---|---|---|
after | String | No | Returns the elements in the list that come after the specified cursor. |
before | String | No | Returns the elements in the list that come before the specified cursor. |
employeeId | ID | No | — |
first | Int | No | Returns the first n elements from the list. |
kind | String | No | — |
last | Int | No | Returns the last n elements from the list. |
recommendedCommunities
Returns communities recommended for a user based on their goal interests.
Returns: [SuggestedCommunity!] (↗)
Arguments:
| Name | Type | Required | Description |
|---|---|---|---|
limit | Int | No | Maximum number of recommendations to return. Defaults to 5. |
userId | ID! | Yes | public_id of the user to generate recommendations for. |
searchUsers
Auth-gated user search by username or email; pg_trgm-backed; rate-limited 10/min/user. Returns per-result allyStatus enrichment. Excludes the searching user and users who have blocked them.
Returns: UserSearchResultConnection! (↗)
Arguments:
| Name | Type | Required | Description |
|---|---|---|---|
after | String | No | Returns the elements in the list that come after the specified cursor. |
before | String | No | Returns the elements in the list that come before the specified cursor. |
first | Int | No | Returns the first n elements from the list. |
last | Int | No | Returns the last n elements from the list. |
query | String! | Yes | Search query, minimum 2 characters. |
seasonalEvent
Fetches a seasonal event by its public_id, regardless of status or is_active. Nil (never a GraphQL error) for an unknown id, a soft-deleted event, or when seasonal_events_enabled is off.
Returns: SeasonalEvent (↗)
Arguments:
| Name | Type | Required | Description |
|---|---|---|---|
id | ID! | Yes | public_id of the seasonal event to retrieve. |
seasonalEvents
Returns all seasonal events, newest first. Admin only.
Returns: [SeasonalEvent!] (↗)
shareableMoment
Server-authored share-card facts for a celebration the caller owns and has earned. Auth required. Returns null for a not-found, unowned, or not-yet-earned subject.
Returns: ShareableMoment (↗)
Arguments:
| Name | Type | Required | Description |
|---|---|---|---|
kind | String! | Yes | One of: badge, goal_completion, milestone, streak. |
subjectPublicId | ID! | Yes | public_id of the subject (badge key for kind: badge; the caller's own public_id for kind: streak). |
suggestedAllies
Returns suggested ally candidates ranked by shared community overlap. Auth required.
Returns: [AllySuggestion!]! (↗)
Arguments:
| Name | Type | Required | Description |
|---|---|---|---|
limit | Int | No | Maximum number of suggestions to return. Defaults to 10, capped at 25. |
systemHealth
Admin-only self-health probes for infra + identity.
Returns: SystemHealth! (↗)
teamHome
Aggregate read backing TeamHomeView (N13). Null when the team does not exist, or the caller is not a member (PRIVACY-2).
Returns: TeamHome (↗)
Arguments:
| Name | Type | Required | Description |
|---|---|---|---|
teamId | String! | Yes | — |
teamInvitePreview
Public preview of a team invite by code — team name, inviter first name, and member count. No auth required. Never distinguishes expired/revoked/exhausted from each other ("unavailable"), only from a code that never existed ("not_found"). Rate-limited (60 req/min per IP for anonymous callers; per user when authenticated).
Returns: TeamInvitePreview! (↗)
Arguments:
| Name | Type | Required | Description |
|---|---|---|---|
code | String! | Yes | Invite code from the /join-team/{code} URL. |
teamLeaderboard
Aggregate read backing TeamLeaderboardView (N19). Null when the teams_leaderboards kill switch is off, the team/community does not exist, or the caller is not a member (PRIVACY-2).
Returns: TeamLeaderboard (↗)
Arguments:
| Name | Type | Required | Description |
|---|---|---|---|
communityId | String | No | Scopes to a sub-community leaderboard. Omit for the team-wide leaderboard. |
period | String! | Yes | weekly, monthly, or all_time. |
teamId | String! | Yes | — |
teamLeaderboardOptOutStats
Admin-only. Raw per-team leaderboard opt-out counts (LEADERBOARD-5 anti-metric monitoring).
Returns: [TeamLeaderboardOptOutStat!] (↗)
teamMemberActivity
Read-only team-scoped activity summary for one member (N7b "View activity"). Null when the team or member does not exist, the member is not seated on the team, or the caller lacks manage_team (owner/admin only).
Returns: TeamMemberActivity (↗)
Arguments:
| Name | Type | Required | Description |
|---|---|---|---|
memberId | String! | Yes | The target member's User public_id. |
teamId | String! | Yes | — |
teamNotificationPreferences
Returns the team notification preferences for the authenticated user.
Returns: TeamNotificationPreferences! (↗)
teamPulseEligibility
Whether the viewer should be prompted for this quarter's pulse survey. Null when the team does not exist, or the caller is not a member (PRIVACY-2).
Returns: Boolean
Arguments:
| Name | Type | Required | Description |
|---|---|---|---|
teamId | String! | Yes | — |
teamSettings
Aggregate read backing Team Settings (N7). Null when the team does not exist, or the caller is not a member (PRIVACY-2).
Returns: TeamSettings (↗)
Arguments:
| Name | Type | Required | Description |
|---|---|---|---|
teamId | String! | Yes | — |
tourFunnelStats
Tour-completion funnel aggregates per tour id. Admin only.
Returns: [TourFunnel!] (↗)
Arguments:
| Name | Type | Required | Description |
|---|---|---|---|
periodSeconds | Int | No | Window in seconds, scoped by user signup date (default 30 days = 2,592,000). |
trendingCommunities
Returns communities with the highest recent growth or activity.
Returns: [TrendingCommunity!] (↗)
Arguments:
| Name | Type | Required | Description |
|---|---|---|---|
limit | Int | No | Maximum number of trending communities to return. Defaults to 5. |
unifiedFeed
Returns a paginated unified activity feed combining ally activity, community posts, notifications, and own progress.
Returns: UnifiedFeed (↗)
Arguments:
| Name | Type | Required | Description |
|---|---|---|---|
limit | Int | No | Number of feed items per page. Defaults to 20. |
offset | Int | No | Number of items to skip for pagination. Defaults to 0. |
user
Fetches a user by public_id. Requires authentication; admins can fetch any user.
Returns: User (↗)
Arguments:
| Name | Type | Required | Description |
|---|---|---|---|
id | ID! | Yes | public_id of the user to retrieve. |
userAllies
Returns a user's accepted ally (friend) connections.
Returns: [UserAlly!] (↗)
Arguments:
| Name | Type | Required | Description |
|---|---|---|---|
userId | ID! | Yes | public_id of the user whose allies to retrieve. |
userByUsername
Looks up a user by username and returns their public profile (public-safe fields only). Auth-required. Rate-limited (30/min). Returns nil for not-found, soft-deleted, or blank usernames.
Returns: PublicProfile (↗)
Arguments:
| Name | Type | Required | Description |
|---|---|---|---|
username | String! | Yes | Username (handle) to look up. Case-insensitive. |
users
Admin only. Cursor-paginated user list, created_at DESC.
Returns: UserConnection! (↗)
Arguments:
| Name | Type | Required | Description |
|---|---|---|---|
after | String | No | Returns the elements in the list that come after the specified cursor. |
before | String | No | Returns the elements in the list that come before the specified cursor. |
first | Int | No | Returns the first n elements from the list. |
last | Int | No | Returns the last n elements from the list. |
weeklyDigestPreferences
Returns the weekly digest email preferences for the authenticated user.
Returns: WeeklyDigestPreferences! (↗)
wordCloud
Generates word frequency data from a model column for admin analytics.
Returns: [WordCloud!] (↗)
Arguments:
| Name | Type | Required | Description |
|---|---|---|---|
column | String! | Yes | Column name to analyze for word frequency (e.g. "name"). |
model | String! | Yes | ActiveRecord model name to query (e.g. "Goal"). |
Last updated: 2026-09-19 (auto-generated from schema.graphql)