Object Types
These are the GraphQL object types returned by queries and mutations. Use the anchored headings (e.g. types#goal) to link from queries/mutations pages.
← Back to GraphQL API Reference
AcceptAllyInvitePayload
Autogenerated return type of AcceptAllyInvite.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
userAlly | UserAlly (↗) | — |
AcceptAllyRequestPayload
Autogenerated return type of AcceptAllyRequest.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
userAlly | UserAlly (↗) | — |
AcceptHabitIntegrationMappingPayload
Autogenerated return type of AcceptHabitIntegrationMapping.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
mapping | HabitIntegrationMapping (↗) | — |
AcceptPaceSuggestionPayload
Autogenerated return type of AcceptPaceSuggestion.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
goal | Goal (↗) | — |
previousTargetDate | String | ISO date string of the target date before this change — pass to updateGoal to undo. |
proposedTargetDate | String | ISO date string of the newly applied target date. |
AcceptPartnerRequestPayload
Autogenerated return type of AcceptPartnerRequest.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
userAlly | UserAlly (↗) | — |
AcceptStreakMercyPayload
Autogenerated return type of AcceptStreakMercy.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
goal | Goal (↗) | — |
AcceptTeamInvitePayload
Autogenerated return type of AcceptTeamInvite.
| Field | Type | Description |
|---|---|---|
communityCount | Int | — |
errors | [String!]! | — |
preselectedCommunityIds | [String!] | — |
seatCapExceeded | Boolean! | True only for the seat-cap-exhausted failure — the frontend shows SeatCapBlockerModal for this and nothing else. |
team | Team (↗) | The joined team — lets JoinTeamView set the active team scope (OBJ-1830). |
teamMembership | TeamMembership (↗) | — |
AccountabilityPartner
The current accountability partner for a user.
| Field | Type | Description |
|---|---|---|
accountabilityPartnerSince | ISO8601DateTime (↗) | When the partnership was established. |
firstName | String | The partner user's given name. |
lastName | String | The partner user's family name. |
longestMutualStreak | Int! | All-time longest mutual streak between partners. |
mutualStreakCount | Int! | Current mutual check-in streak between partners. |
mutualStreakLastDate | ISO8601Date (↗) | Date of the most recent mutual bonus award. |
nudgeSentToday | Boolean! | Whether the current user has already sent a nudge to their partner today. |
partnerCheckedInToday | Boolean! | Whether the partner has checked in today. |
photo | UserPhoto (↗) | The partner user's profile photo. |
publicId | ID! | The partner user's public identifier. |
userCheckedInToday | Boolean! | Whether the current user has checked in today. |
username | String | The partner user's unique handle. |
AchievementStats
Computed achievement and rank statistics for a user.
| Field | Type | Description |
|---|---|---|
currentLevel | Int! | Actual XP level (1–10). |
currentRankName | String! | Rank name corresponding to the user's current level. |
currentVolume | Int! | Journey volume: 1 (levels 1–3), 2 (levels 4–6), 3 (level 7+). |
currentXp | Int! | Total XP earned by the user. |
earnedCount | Int! | Number of badges unlocked through action, excluding first_sign_in ("Day One") — the predicate the achievements empty-state UI gates on, since every signed-in user has Day One and unlocked_count alone can never reach 0 (OBJ-3879). |
last7DaysXp | [Int!]! | Daily XP earned for each of the last 7 days, oldest first. |
nextRankName | String | Rank name for the next level, or null at max level. |
rarePlusCount | Int! | Number of Rare, Epic, or Legendary badges the user has unlocked. |
totalCount | Int! | Total number of badges available. |
unlockedCount | Int! | Number of badges the user has unlocked. |
xpToNextRank | Int | XP needed to reach the next rank, or null at max level. |
AcknowledgeActionPayload
Autogenerated return type of AcknowledgeAction.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
result | Result (↗) | — |
AcknowledgeAllNotificationsPayload
Autogenerated return type of AcknowledgeAllNotifications.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
result | Result (↗) | — |
AcknowledgeCollectiveGoalPrivacyContractPayload
Autogenerated return type of AcknowledgeCollectiveGoalPrivacyContract.
| Field | Type | Description |
|---|---|---|
acknowledged | Boolean | — |
errors | [String!]! | — |
AcknowledgeNotificationPayload
Autogenerated return type of AcknowledgeNotification.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
result | Result (↗) | — |
ActivityItem
Recent platform activity item
| Field | Type | Description |
|---|---|---|
action | String! | — |
id | ID! | — |
timestamp | String! | — |
type | String! | — |
userName | String! | — |
AddCommunitySuggestionPayload
Autogenerated return type of AddCommunitySuggestion.
| Field | Type | Description |
|---|---|---|
communitySuggestion | CommunitySuggestion (↗) | — |
errors | [String!]! | — |
AddGoalEventCommentPayload
Autogenerated return type of AddGoalEventComment.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
goalEventComment | GoalEventComment (↗) | — |
AddGoalEventPayload
Autogenerated return type of AddGoalEvent.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
goalEvent | GoalEvent (↗) | — |
AddGoalPayload
Autogenerated return type of AddGoal.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
goal | Goal (↗) | — |
AddGoalToCommunityPayload
Autogenerated return type of AddGoalToCommunity.
| Field | Type | Description |
|---|---|---|
communityGoal | CommunityGoal (↗) | — |
errors | [String!]! | — |
AddMoodLogPayload
Autogenerated return type of AddMoodLog.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
moodLog | MoodLog (↗) | — |
AddPostCommentPayload
Autogenerated return type of AddPostComment.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
postComment | PostComment (↗) | — |
AdjustTeamSeatsPayload
Autogenerated return type of AdjustTeamSeats.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
teamSubscription | TeamSubscription (↗) | — |
AdminAction
A log of administrative actions performed globally.
| Field | Type | Description |
|---|---|---|
action | String! | Legacy alias for actionType — retained for the pre-v1.7 GetRecentActions query. |
actionType | String! | Action category — e.g. demo_data_full_reseed, update_demo_user. |
actor | User! (↗) | The admin user who performed this action. |
adminUser | User! (↗) | Legacy alias for actor — retained for the pre-v1.7 GetRecentActions query. |
createdAt | String! | ISO 8601 timestamp when the action was performed. |
id | ID! | Integer ID. |
metadata | JSON (↗) | Additional action details as JSON. |
targetId | Int | Raw polymorphic target DB ID — nullable alongside target_type. Prefer targetPublicId for display; this integer is retained for back-compat with the pre-v1.7 GetRecentActions query. |
targetPublicId | ID | Opaque public_id of the polymorphic target when it is a PublicRecord and still present. Null when the target has no public_id (non-PublicRecord reference table) or was deleted. Use this instead of targetId in UIs. |
targetType | String | Polymorphic target class — nullable for actions with no target (e.g. full demo-data reseed). |
AdminActionConnection
The connection type for AdminAction.
| Field | Type | Description |
|---|---|---|
edges | [AdminActionEdge] (↗) | A list of edges. |
nodes | [AdminAction] (↗) | A list of nodes. |
pageInfo | PageInfo! (↗) | Information to aid in pagination. |
AdminActionEdge
An edge in a connection.
| Field | Type | Description |
|---|---|---|
cursor | String! | A cursor for use in pagination. |
node | AdminAction (↗) | The item at the end of the edge. |
AdminAiUsage
Aggregated AI spend, usage, and budget utilization for the admin dashboard. Admin only.
| Field | Type | Description |
|---|---|---|
budgetCents | Int! | Monthly budget ceiling from Settings.ai.monthly_budget_cents. |
budgetUtilizationPercent | Float! | Month-to-date spend as a percent of the monthly budget. |
dailySeries | [DailyUsagePoint!]! (↗) | Daily time series for the line chart (oldest → newest). |
perFeature | [FeatureUsagePoint!]! (↗) | Breakdown by feature, sorted by cost_cents DESC. |
perModel | [ModelUsagePoint!]! (↗) | Breakdown by model, sorted by cost_cents DESC. |
perResolvedModel | [ResolvedModelUsagePoint!]! (↗) | Breakdown by resolved model, sorted by cost_cents DESC. |
totalCalls | Int! | Count of AiUsageEvent rows over the selected window. |
totalSpendCents | Int! | Total AI spend in cents over the selected window. |
totalTokens | Int! | Sum of total_tokens over the selected window. |
AdminStats
Admin statistics for platform monitoring
| Field | Type | Description |
|---|---|---|
completedGoals | Int! | — |
criticalFlags | Int! | Number of critical severity pending flags |
goalCategories | [CategoryStats!]! (↗) | — |
goalsLast7Days | Int! | — |
growthData | [GrowthDataPoint!]! (↗) | — |
pendingFlags | Int! | Number of pending content moderation flags |
pendingReports | Int! | Number of pending user content reports |
publicGoals | Int! | — |
recentActivity | [ActivityItem!]! (↗) | — |
supporterStats | SupporterStats! (↗) | MRR and active supporter counts by tier |
totalEncouragements | Int! | — |
totalEvents | Int! | — |
totalGoals | Int! | — |
totalMilestones | Int! | — |
totalUpdates | Int! | — |
totalUsers | Int! | — |
usersLast30Days | Int! | — |
usersLast7Days | Int! | — |
AdminTeamMonitoring
Internal read-only monitoring row for a team (M11, PRIVACY-3). Admin-only. Carries no personal goal/mood/journal/coach data — seat and billing state only.
| Field | Type | Description |
|---|---|---|
lastActiveAt | ISO8601DateTime (↗) | Most recent updated_at across the team's members. Null for an empty team. |
seatCountUsed | Int! | Current seat usage: total number of team memberships. |
seatLimit | Int | Seat limit from the subscription. Null if no subscription. |
subscriptionStatus | String | Raw TeamSubscription.status: trialing, active, past_due, grace, or canceled. Null if no subscription. |
teamName | String! | The team name. |
teamPublicId | String! | The team public_id. |
AiArtifact
—
| Field | Type | Description |
|---|---|---|
aiRun | AiRun! (↗) | — |
approvalStatus | String! | — |
claimedAt | ISO8601DateTime (↗) | — |
createdAt | ISO8601DateTime! (↗) | — |
deliveredAt | ISO8601DateTime (↗) | — |
deliveryMetadata | JSON (↗) | — |
editDistance | Float | — |
id | String! | — |
kind | String! | — |
payload | JSON! (↗) | — |
rejectionReason | String | — |
title | String | — |
AiArtifactConnection
The connection type for AiArtifact.
| Field | Type | Description |
|---|---|---|
edges | [AiArtifactEdge] (↗) | A list of edges. |
nodes | [AiArtifact] (↗) | A list of nodes. |
pageInfo | PageInfo! (↗) | Information to aid in pagination. |
AiArtifactEdge
An edge in a connection.
| Field | Type | Description |
|---|---|---|
cursor | String! | A cursor for use in pagination. |
node | AiArtifact (↗) | The item at the end of the edge. |
AiEmployee
—
| Field | Type | Description |
|---|---|---|
active | Boolean! | — |
aiEmployeeMemories | [AiEmployeeMemory!]! (↗) | — |
aiRuns | [AiRun!]! (↗) | — |
approvalRateData | [ApprovalRateData!]! (↗) | — |
autonomyLevel | String! | — |
crew | String | — |
currentMonthCost | Int! | — |
description | String | — |
id | String! | — |
lastRun | AiRun (↗) | — |
mcpServers | [String!]! | — |
modelPreference | String | — |
monthlyBudgetCents | Int! | — |
name | String! | — |
nextRunAt | ISO8601DateTime (↗) | — |
postFilterSkill | String | — |
promotionCriteria | PromotionCriteria (↗) | — |
roleKey | String! | — |
scheduleCron | String | — |
skillRefs | [String!]! | — |
taskPrompt | String | — |
aiRuns arguments:
| Name | Type | Required | Description |
|---|---|---|---|
limit | Int | No | — |
offset | Int | No | — |
AiEmployeeConnection
The connection type for AiEmployee.
| Field | Type | Description |
|---|---|---|
edges | [AiEmployeeEdge] (↗) | A list of edges. |
nodes | [AiEmployee] (↗) | A list of nodes. |
pageInfo | PageInfo! (↗) | Information to aid in pagination. |
AiEmployeeEdge
An edge in a connection.
| Field | Type | Description |
|---|---|---|
cursor | String! | A cursor for use in pagination. |
node | AiEmployee (↗) | The item at the end of the edge. |
AiEmployeeMemory
—
| Field | Type | Description |
|---|---|---|
id | String! | — |
memoryData | JSON (↗) | — |
memoryKey | String! | — |
updatedAt | ISO8601DateTime! (↗) | — |
AiRequest
—
| Field | Type | Description |
|---|---|---|
completedAt | ISO8601DateTime (↗) | — |
createdAt | ISO8601DateTime! (↗) | — |
errorCode | String | — |
errorMessage | String | — |
id | ID! | — |
kind | String! | — |
resultJson | String | — |
status | String! | — |
AiRun
—
| Field | Type | Description |
|---|---|---|
aiArtifacts | [AiArtifact!]! (↗) | — |
aiEmployee | AiEmployee! (↗) | — |
completionTokens | Int! | — |
costCents | Int! | — |
createdAt | ISO8601DateTime! (↗) | — |
durationSeconds | Int | — |
errorMessage | String | — |
finishedAt | ISO8601DateTime (↗) | — |
id | String! | — |
numTurns | Int | — |
promptTokens | Int! | — |
runLog | JSON (↗) | — |
startedAt | ISO8601DateTime (↗) | — |
status | String! | — |
triggeredBy | String! | — |
AllyActivity
A recent progress event from an accepted ally (friend), shown in the ally activity feed.
| Field | Type | Description |
|---|---|---|
action | String! | Verb describing what the ally did (e.g. "checked in on"). |
allyId | ID | public_id of the ally user who performed the action. |
allyName | String! | Display name of the ally user. |
allyPhoto | String | Profile photo URL of the ally user. |
communityId | ID | public_id of the community involved, if any. |
communityName | String | Name of the community involved, if any. |
details | JSON (↗) | Per-kind display payload; keys vary by kind. |
id | ID! | Public identifier for this activity record. |
kind | AllyActivityKindEnum (↗) | Activity kind discriminator: JOIN, POST, ACHIEVEMENT, GOAL, or FOLLOW. |
target | String! | Name of the goal the ally acted on. |
timestamp | String! | Unix timestamp (string) when the activity occurred. |
AllyInvite
An accountability-partner invite token generated by a user.
| Field | Type | Description |
|---|---|---|
createdAt | ISO8601DateTime! (↗) | When the invite was created. |
expiresAt | ISO8601DateTime! (↗) | When this invite expires (7 days from creation). |
id | ID! | Public identifier for this invite record. |
status | String! | Current status: pending, accepted, expired, or revoked. |
token | String! | URL-safe invite token — embed in the deep link. |
AllyInvitePreview
Minimal public preview of an accountability-partner invite — safe for unauthenticated access.
| Field | Type | Description |
|---|---|---|
invalidReason | String | Why the invite is invalid: 'expired', 'revoked', or 'not_found'. Null when valid is true. |
inviterAvatarUrl | String | URL for the inviter's profile photo, or null if none. |
inviterName | String | The inviter's display name. |
valid | Boolean! | Whether the invite is active and can be accepted. |
AllySuggestion
A user suggested as a potential ally, with a human-readable rationale.
| Field | Type | Description |
|---|---|---|
allyStatus | AllyStatusEnum! (↗) | Relationship status — always NONE for suggestions. |
firstName | String | The user's given name. |
lastName | String | The user's family name. |
mutualCount | Int! | Number of communities shared with the current user. |
photo | UserPhoto (↗) | The user's profile photo. |
publicId | String! | URL-safe public identifier of the suggested user. |
reason | String | Short rationale, e.g. "Both in Marathon in 16 weeks". |
username | String | The user's unique handle. |
AnalyticsActivityHeatmap
Personal Analytics: trailing 90-day activity heatmap.
| Field | Type | Description |
|---|---|---|
days | [AnalyticsHeatmapDay!]! (↗) | — |
AnalyticsCategoryCompletion
Personal Analytics: one category's completion % for the current month-to-date.
| Field | Type | Description |
|---|---|---|
category | String! | Goal category name ("Other" for folded overflow). |
pct | Float! | Percent of that category's goals done this period (0–100). |
AnalyticsCompletionByCategory
Personal Analytics: Completion-by-category chart series.
| Field | Type | Description |
|---|---|---|
series | [AnalyticsCategoryCompletion!]! (↗) | — |
AnalyticsHeatmapDay
Personal Analytics: one day of the activity heatmap.
| Field | Type | Description |
|---|---|---|
count | Int! | Number of activity actions on this date. |
date | String! | ISO8601 date. |
AnalyticsMonthInReview
Personal Analytics: the Month-in-review hero card.
| Field | Type | Description |
|---|---|---|
bestCategory | AnalyticsCategoryCompletion (↗) | The leading category this period, or null with no data. |
bestStreak | Int! | Peak streak length achieved this month-to-date. |
daysActive | Int! | Distinct days with activity this month-to-date. |
daysInMonth | Int! | Total days in the current month. |
goalsDone | Int! | Goals completed this month-to-date. |
xpEarned | Int! | XP earned this month-to-date (badge-unlock proxy). |
AnalyticsStreakHistory
Personal Analytics: trailing 26-week streak history.
| Field | Type | Description |
|---|---|---|
currentRun | Int! | The user's current active streak. |
points | [AnalyticsStreakPoint!]! (↗) | — |
AnalyticsStreakPoint
Personal Analytics: streak length as of one week-start.
| Field | Type | Description |
|---|---|---|
date | String! | ISO8601 date (week start). |
length | Int! | Streak length as of this date. |
AnalyticsXpOverTime
Personal Analytics: trailing 26-week cumulative XP.
| Field | Type | Description |
|---|---|---|
points | [AnalyticsXpPoint!]! (↗) | — |
AnalyticsXpPoint
Personal Analytics: cumulative XP as of one week-start.
| Field | Type | Description |
|---|---|---|
date | String! | ISO8601 date (week start). |
xp | Int! | Cumulative XP as of this date. |
ApprovalRateData
—
| Field | Type | Description |
|---|---|---|
approvedCount | Int! | — |
autoRejectedCount | Int! | — |
rejectedCount | Int! | — |
weekStart | String! | — |
ApproveAiArtifactPayload
Autogenerated return type of ApproveAiArtifact.
| Field | Type | Description |
|---|---|---|
artifact | AiArtifact (↗) | — |
errors | [String!]! | — |
ArchiveFeedbackTagPayload
Autogenerated return type of ArchiveFeedbackTag.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
feedbackTag | FeedbackTag (↗) | — |
ArchiveSubCommunityPayload
Autogenerated return type of ArchiveSubCommunity.
| Field | Type | Description |
|---|---|---|
community | Community (↗) | — |
errors | [String!]! | — |
BadgeStat
Unlock statistics for a single badge
| Field | Type | Description |
|---|---|---|
badgeKey | String! | The badge key (action name) |
percentage | Float! | Percentage of users who have unlocked this badge (0-100) |
BeginImportPayload
Autogenerated return type of BeginImport.
| Field | Type | Description |
|---|---|---|
dataImport | DataImport (↗) | — |
errors | [String!]! | — |
BlockAllyPayload
Autogenerated return type of BlockAlly.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
success | Boolean! | — |
BulkReviewContentFlagsPayload
Autogenerated return type of BulkReviewContentFlags.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
reviewedCount | Int! | — |
CancelSupporterSubscriptionPayload
Autogenerated return type of CancelSupporterSubscription.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
success | Boolean! | — |
CancelTeamSubscriptionPayload
Autogenerated return type of CancelTeamSubscription.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
success | Boolean! | — |
CascadeCounts
—
| Field | Type | Description |
|---|---|---|
adminActions | Int! | — |
aiEmployeeMemories | Int! | — |
communityComments | Int! | — |
communityMemberships | Int! | — |
communityPosts | Int! | — |
goalEventEncouragements | Int! | — |
goalEvents | Int! | — |
goals | Int! | — |
milestones | Int! | — |
moodLogs | Int! | — |
user | Int! | — |
userActions | Int! | — |
userDevices | Int! | — |
CascadePreview
—
| Field | Type | Description |
|---|---|---|
counts | CascadeCounts! (↗) | — |
totalModels | Int! | — |
totalRecords | Int! | — |
CategoryStats
Statistics for goal categories
| Field | Type | Description |
|---|---|---|
count | Int! | — |
name | String! | — |
ChallengeParticipant
A single user participation record within a community challenge, tracking progress toward completion.
| Field | Type | Description |
|---|---|---|
communityChallenge | CommunityChallenge (↗) | The challenge this participation belongs to. |
completed | Boolean! | Whether the participant has met the completion threshold. |
completedAt | ISO8601DateTime (↗) | When the target was crossed. Nil if not yet complete. |
progressCount | Int! | Number of qualifying goal events logged so far. |
progressPercent | Float! | Progress toward completion as a percentage (0–100), clamped. |
publicId | ID! | URL-safe public identifier for this participation record. |
rank | Int | Leaderboard rank (1-indexed). Set by the leaderboard resolver; nil outside that context. |
user | User (↗) | The participating user. |
userPublicId | String | Public ID of the participating user (safe for membership checks). |
CheckInHabitPayload
Autogenerated return type of CheckInHabit.
| Field | Type | Description |
|---|---|---|
checkinToken | String | Rotated check-in token, present only when this request was authenticated by a check-in token. A rejected rotation (nil) is native's signal to fall back to the foreground drain. |
errors | [String!]! | — |
goal | Goal (↗) | — |
goalEvent | GoalEvent (↗) | — |
CheckValidUsernamePayload
Autogenerated return type of CheckValidUsername.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
result | Result (↗) | — |
ClaimAiArtifactPayload
Autogenerated return type of ClaimAiArtifact.
| Field | Type | Description |
|---|---|---|
artifact | AiArtifact (↗) | — |
errors | [String!]! | — |
ClaimStreakInsurancePayload
Autogenerated return type of ClaimStreakInsurance.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
goal | Goal (↗) | — |
CoachAction
A tappable action chip suggested by the Coach alongside its reply.
| Field | Type | Description |
|---|---|---|
kind | String! | Action discriminator: log_event | log_mood | view_goal | create_milestone | open_meet_coach. |
label | String! | Human-readable button label (e.g. "Log progress on Run a 5K"). |
targetId | String | public_id of the target record (e.g. goal public_id for log_event). Null for actions with no specific target. |
CoachConversation
A persisted conversation thread between a user and their Coach.
| Field | Type | Description |
|---|---|---|
goalId | String | public_id of the goal this thread is scoped to, or null for the global thread. |
id | String! | public_id of this conversation. |
lastMessageAt | ISO8601DateTime (↗) | Timestamp of the last message. |
messages | [CoachMessage!]! (↗) | Messages in this thread, oldest first. |
CoachingPreferences
AI Coach persona and communication preferences for the user.
| Field | Type | Description |
|---|---|---|
configured | Boolean! | Whether the user has completed coach setup. |
depth | Int! | Response depth from 1 (brief) to 5 (detailed). |
focusPrimary | String! | Primary coaching focus area. |
focusSecondary | String | Optional secondary coaching focus area. |
persona | String! | Selected coaching persona identifier. |
rhythm | String! | How often Coach reaches out proactively. |
toneBrevity | Int! | Tone brevity from 0 to 4. |
toneWarmth | Int! | Tone warmth from 0 to 4. |
CoachMessage
A single message in a Coach conversation thread.
| Field | Type | Description |
|---|---|---|
content | String! | Message text. |
createdAt | ISO8601DateTime! (↗) | When this message was sent. |
id | String! | public_id of this message. |
role | String! | Who sent the message: "user" or "assistant". |
CoachModelChange
One entry in the Coach model change history, sourced from admin_actions.
| Field | Type | Description |
|---|---|---|
actorName | String | The admin's full name, or null if unavailable. |
changedAt | ISO8601DateTime! (↗) | When the change was made. |
fromModel | String | Prior model id — null for the very first change. |
toModel | String! | Model id the setting was changed to. |
CoachModelOption
An allowlisted Gemini model id Coach may run, with its current effective rate.
| Field | Type | Description |
|---|---|---|
id | String! | Concrete model id (e.g. gemini/gemini-2.5-flash). |
inputCentsPerMillion | Int! | Current input rate, cents per million tokens. |
label | String! | Human-readable name derived from the model id. |
outputCentsPerMillion | Int! | Current output rate, cents per million tokens. |
CoachModelSetting
The runtime Coach Gemini model setting: current value, allowlisted options, and recent change history.
| Field | Type | Description |
|---|---|---|
currentModel | String! | The model id Coach is currently running. |
options | [CoachModelOption!]! (↗) | Allowlisted model ids with their current effective rates. |
recentChanges | [CoachModelChange!]! (↗) | Last 5 changes to the setting, newest first. |
CollectiveGoal
A collective (team-wide or sub-community) goal (N15/N16).
| Field | Type | Description |
|---|---|---|
contributors | [CollectiveGoalContributor!]! (↗) | — |
createdBy | String! | — |
current | Int! | — |
daysLeft | Int | Null when no deadline is set (no CreateCollectiveGoal argument sets one this phase) — never a fabricated 0. |
publicId | ID! | — |
scope | String! | — |
target | Int! | — |
targetMetric | String! | One of CollectiveGoal::TARGET_METRICS (check_ins, milestones_completed, members_active_days, custom). |
title | String! | — |
yourContribution | CollectiveGoalYourContribution (↗) | — |
CollectiveGoalContributor
A contributor slice on a collective goal (N16).
| Field | Type | Description |
|---|---|---|
anonymous | Boolean | — |
color | String | — |
count | Int! | — |
id | ID! | — |
name | String! | — |
CollectiveGoalYourContribution
The viewer's own contribution to a collective goal (N16).
| Field | Type | Description |
|---|---|---|
count | Int! | — |
sourceGoal | String! | — |
CommitImportPayload
Autogenerated return type of CommitImport.
| Field | Type | Description |
|---|---|---|
dataImport | DataImport (↗) | — |
errors | [String!]! | — |
Community
An interest-based group where users share goals and support each other.
| Field | Type | Description |
|---|---|---|
activeChallenge | CommunityChallenge (↗) | The currently active challenge for this community, or nil. |
activeMembers | Int! | Count of members who posted or commented in the past 7 days. |
archiveDaysLeft | Int | Days remaining in the 30-day archive read-only window, or nil when not archived. |
archivedAt | ISO8601DateTime (↗) | When this Team sub-community began its archive window, or nil. |
badges | CommunityBadges! (↗) | Threshold and status marks describing this community. |
category | String | General category label for the community (e.g. "fitness"). |
checkInsPerWeek | Int! | Check-ins logged by members in the trailing 7 days. Always 0 in Phase 3 — no check-in tracking model exists yet for sub-communities. |
coverImage | String | URL of the community banner/cover image. |
createdAt | ISO8601DateTime! (↗) | ISO 8601 datetime when the community was created. |
createdAtTime | String! | Unix timestamp (string) when the community was created. |
demo | Boolean! | Whether this community is a demo-tagged record (Phase 30). |
description | String | Human-readable description of the community purpose. |
editorialPosition | Int | Display order within editorial_slot, or nil when unassigned. |
editorialSlot | String | Editorial discovery slot this community is assigned to, or nil when unassigned. |
feedItems | [CommunityFeedItem!] (↗) | Recent activity feed items for this community. |
goalCategory | GoalCategory (↗) | The primary goal category this community is focused on. |
goals | [Goal!] (↗) | Goals that have been shared into this community. |
growthRate | Float! | Member growth rate as a percentage over the past 7 days. |
guidelines | String | Community rules and posting guidelines. |
healthScore | Int! | Computed health score (0–100) reflecting community engagement. |
icon | String! | Display icon key for a Team sub-community (sunrise/book/leaf/mountain/users). |
id | ID! | Alias of publicId (BaseObject#id) — the Teams frontend list types key on both. |
imageUrl | String | URL of the community avatar/icon image. |
isDefault | Boolean! | Alias of isDefaultForTeam — the Teams frontend (types.ts TeamRoom.isDefault, and every sub-community mutation/query response) is frozen on this shorter name. |
isDefaultForTeam | Boolean! | Whether this is the Team's default landing room. |
isFeatured | Boolean! | Whether the community is featured on the discovery page. |
isFounding | Boolean! | True when the community became discoverable within 30 days of its creation. |
isGated | Boolean! | True when join_policy is "request" — joining requires the lead to approve. |
isMember | Boolean! | Whether the current user is a member of this community. |
isVerified | Boolean! | Whether the community has been verified by Objectuve admins. |
joinPolicy | String! | Join policy for a Team sub-community: "open" or "request". |
leadMembershipId | ID | Public ID of the sub-community lead's TeamMembership on this team, or nil when the lead has since left the team. |
leadName | String | The sub-community's lead (its admin-role CommunityMember) first name, or nil. |
memberCount | Int! | Total number of members in this community. |
members | [CommunityMember!] (↗) | All current members of this community. |
membersToDiscoverable | Int! | Members still needed to appear in discovery (0 when discoverable). |
name | String! | Display name of the community. |
pastChallenges | [CommunityChallenge!] (↗) | Completed challenges for this community. |
privacy | String! | Privacy level string: "public" or "private". |
private | Boolean! | When true, membership requires an invite or approval. |
publicId | ID! | URL-safe public identifier for this community. |
reason | CommunityReason (↗) | Disclosable reason this community is ranked here, or null. |
teamId | ID | Public ID of the owning Team, when this community is a Team sub-community. |
teamName | String | Display name of the owning Team, when this community is a Team sub-community, or nil. |
totalGoals | Int! | Total number of goals shared in this community. |
upcomingChallenges | [CommunityChallenge!] (↗) | Upcoming challenges for this community. |
updatedAtTime | String! | Unix timestamp (string) when the community was last updated. |
userProgressPercent | Float | Per-user aggregate progress (0–100) across shared goals. Null when no shared goals. |
CommunityBadges
Threshold and status marks describing a community. Each field states its own threshold — see field descriptions.
| Field | Type | Description |
|---|---|---|
club1k | Boolean! | 1,000 or more people are currently members of this community. |
featured | Boolean! | An Objectuve admin has marked this community as featured. Does not affect discovery ranking. |
streak100 | Boolean! | 10 or more current members have each reached a streak of 100 days or longer at some point. Derived from users.longest_streak, which is monotonic — never from current_streak, which goes stale. |
wins500 | Boolean! | Members of this community have completed 500 or more goals, all-time. |
CommunityChallenge
A time-boxed challenge within a community where participants track progress toward a shared goal.
| Field | Type | Description |
|---|---|---|
badgeIcon | String! | Emoji or icon string for the completion badge. |
badgeName | String! | Name of the badge awarded to challenge completers. |
community | Community! (↗) | The community this challenge belongs to. |
createdAtTime | String! | Unix timestamp (string) when the challenge was created. |
creator | User! (↗) | The user who created the challenge. |
currentUserParticipant | ChallengeParticipant (↗) | The current user's participation row, or nil. |
description | String | Optional description of the challenge. |
endDate | ISO8601Date! (↗) | Date when the challenge ends (inclusive). |
isParticipating | Boolean! | Whether the current user is an active participant. |
name | String! | Display name of the challenge. |
participantCount | Int! | Total number of active participants in the challenge. |
publicId | ID! | URL-safe public identifier for this challenge. |
startDate | ISO8601Date! (↗) | Date when the challenge begins. |
status | String! | Date-derived status: "upcoming", "active", or "completed". |
targetGoalCount | Int! | Number of qualifying goal events required to complete the challenge. |
targetGoalType | GoalType (↗) | Optional goal type filter. Nil means any goal event counts. |
updatedAtTime | String! | Unix timestamp (string) when the challenge was last updated. |
CommunityEvent
A scheduled event or activity within a community.
| Field | Type | Description |
|---|---|---|
attendeeCount | Int! | Number of community members who have indicated they will attend. |
communityId | ID! | public_id of the community hosting this event. |
communityName | String! | Name of the community hosting this event. |
date | String! | Unix timestamp (string) of when the event takes place. |
description | String | Optional longer description of what the event involves. |
id | ID! | Public identifier for this event. |
title | String! | Title of the community event. |
CommunityFeedItem
A single item in a community activity feed (e.g. a goal update or milestone).
| Field | Type | Description |
|---|---|---|
content | String! | Text content of the feed item. |
createdAtTime | String! | Unix timestamp (string) when this item was created. |
id | ID! | Public identifier for this feed item. |
media | CommunityMedia (↗) | Optional media attachment for this feed item. |
updatedAtTime | String! | Unix timestamp (string) when this item was last updated. |
CommunityGoal
A goal that has been shared into a community, linking the goal to the community feed.
| Field | Type | Description |
|---|---|---|
community | Community (↗) | The community the goal was shared into. |
createdAtTime | String! | Unix timestamp (string) when the goal was shared into the community. |
goal | Goal (↗) | The goal that was shared. |
id | ID! | Public identifier for this community-goal association. |
updatedAtTime | String! | Unix timestamp (string) when the association was last updated. |
CommunityInsights
Community engagement insights and recommendations for a specific user.
| Field | Type | Description |
|---|---|---|
achievementsUnlocked | Int! | Number of community-related achievements unlocked by the user. |
communitiesJoined | Int! | Total number of communities the user has joined. |
hasGoalSignal | Boolean! | True when the user has at least one goal with a goal category set — the signal the Explore subhead (UI-SPEC v4.63 Phase 4 §4) keys its S1/S2/S3 states on. |
partnersCount | Int! | Count of accepted accountability partners for the user. |
postsThisWeek | Int! | Number of posts the user has made in communities this week. |
suggestedCommunities | [SuggestedCommunity!]! (↗) | Communities recommended for the user to join based on their interests. |
suggestedCount | Int! | Number of communities suggested for the user to join. |
totalEngagement | Int! | Aggregate engagement score across all communities. |
trendingCommunities | [TrendingCommunity!]! (↗) | Currently trending communities across the platform. |
upcomingEvents | [CommunityEvent!]! (↗) | Upcoming events in communities the user belongs to. |
yourActivity | [UserActivity!]! (↗) | Recent activity items for the user across their communities. |
CommunityMedia
A media attachment (image) associated with a community feed item or post.
| Field | Type | Description |
|---|---|---|
id | ID! | Public identifier for this media record. |
imageUrl | String | URL of the image. |
name | String | Optional descriptive name or caption for the image. |
CommunityMember
A user membership record within a community, with engagement statistics.
| Field | Type | Description |
|---|---|---|
createdAtTime | String! | Unix timestamp (string) when the user joined the community. |
goalsCompleted | Int! | Number of goals completed by this user (proxy for community contribution). |
helpfulCount | Int! | Count of helpful reactions received by this user in the community. |
id | ID! | Public identifier for this membership record. |
joinedDate | String! | Unix timestamp (string) alias for created_at_time. |
points | Int! | Engagement points accumulated by this member in the community. |
postsCount | Int! | Number of posts this user has made in this community. |
rank | Int | Leaderboard rank of this member within the community. |
role | String! | Role within the community (e.g. "member", "moderator", "admin"). |
updatedAtTime | String! | Unix timestamp (string) when the membership record was last updated. |
user | User (↗) | The user who is a member of the community. |
userPublicId | String | Public ID of the member user (safe for membership checks). |
CommunityPost
A discussion post or update made by a user within a community.
| Field | Type | Description |
|---|---|---|
comments | [PostComment!]! (↗) | Comments left on this post. |
communityId | ID! | public_id of the community this post belongs to. |
content | String! | Body text of the post. |
goalId | ID | public_id of the goal linked to this post, if any. |
goalName | String | Name of the linked goal, if any. |
id | ID! | Public identifier for this post. |
likes | Int! | Number of like reactions on this post. |
timestamp | String! | Unix timestamp (string) when the post was created. |
type | String! | Post type (e.g. "update", "goal_share", "milestone"). |
userId | ID! | public_id of the user who created the post. |
userName | String! | Username of the post author. |
userPhoto | String | Profile photo URL of the post author. |
CommunityReason
The single reason a discovery surface is allowed to show this community, chosen by fixed precedence (goal_category -> seasonal_event -> community_health), never by score. The backend never returns kind: "ally_overlap" — ally overlap ranks but is never disclosed (v4.63 Phase 4 §1).
| Field | Type | Description |
|---|---|---|
disclosable | Boolean! | false for ally_overlap, true for every other kind. Belt-and-braces: the resolver already withholds ally_overlap reasons, but the flag lives on the reason so the frontend is never the thing that remembers which signals are safe to show. |
kind | String! | One of: goal_category, seasonal_event, community_health, ally_overlap. (ally_overlap is never actually returned by any resolver.) |
label | String | The interpolation value only, verbatim and un-re-cased — the goal category name or the SeasonalEvent display name. null for community_health. The frontend composes the chip sentence (UI-SPEC v4.63 Phase 4 §2); this field never carries pre-composed copy. |
CommunitySuggestion
A user-submitted suggestion for a new community topic or interest area.
| Field | Type | Description |
|---|---|---|
content | String! | Text of the community suggestion. |
goalCategory | GoalCategory (↗) | Goal category the suggested community would belong to, if specified. |
goalKind | GoalType (↗) | Goal type the suggested community would focus on, if specified. |
id | ID! | Public identifier for this suggestion. |
CompleteOnboardingAndCreateGoalPayload
Autogenerated return type of CompleteOnboardingAndCreateGoal.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
goal | Goal (↗) | — |
user | User (↗) | — |
ConnectChessComPayload
Autogenerated return type of ConnectChessCom.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
integrationConnection | IntegrationConnection (↗) | — |
ConnectedApps
The current user's Connected Apps state: the provider catalog plus their own connections and mappings.
| Field | Type | Description |
|---|---|---|
connections | [IntegrationConnection!]! (↗) | The current user's connections. |
mappings | [HabitIntegrationMapping!]! (↗) | The current user's habit mappings. |
providers | [IntegrationProvider!]! (↗) | All available providers. |
ConnectStravaPayload
Autogenerated return type of ConnectStrava.
| Field | Type | Description |
|---|---|---|
authorizeUrl | String! | — |
errors | [String!]! | — |
ContentFlag
—
| Field | Type | Description |
|---|---|---|
authorName | String | — |
contentPreview | String | First 200 characters of flagged content |
createdAt | String! | — |
flaggableId | Int! | — |
flaggableType | String! | — |
id | String! | Public ID |
reason | String | — |
reviewedAt | String | — |
reviewerName | String | — |
severity | String! | — |
source | String! | — |
status | String! | — |
ContentFlagConnection
The connection type for ContentFlag.
| Field | Type | Description |
|---|---|---|
edges | [ContentFlagEdge] (↗) | A list of edges. |
nodes | [ContentFlag] (↗) | A list of nodes. |
pageInfo | PageInfo! (↗) | Information to aid in pagination. |
ContentFlagEdge
An edge in a connection.
| Field | Type | Description |
|---|---|---|
cursor | String! | A cursor for use in pagination. |
node | ContentFlag (↗) | The item at the end of the edge. |
ContentReport
—
| Field | Type | Description |
|---|---|---|
contentPreview | String | — |
createdAt | String! | — |
details | String | — |
id | String! | Public ID |
reason | String! | — |
reportableType | String! | — |
reporterName | String | — |
status | String! | — |
CreateAllyInvitePayload
Autogenerated return type of CreateAllyInvite.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
invite | AllyInvite (↗) | — |
CreateCheckoutSessionPayload
Autogenerated return type of CreateCheckoutSession.
| Field | Type | Description |
|---|---|---|
checkoutUrl | String | — |
errors | [String!]! | — |
CreateCollectiveGoalPayload
Autogenerated return type of CreateCollectiveGoal.
| Field | Type | Description |
|---|---|---|
collectiveGoal | CollectiveGoal (↗) | — |
errors | [String!]! | — |
teamReadOnly | Boolean! | True only for the grace-period read-only failure — the frontend renders its own "team is read-only" copy for this. |
CreateCommunityChallengePayload
Autogenerated return type of CreateCommunityChallenge.
| Field | Type | Description |
|---|---|---|
communityChallenge | CommunityChallenge (↗) | — |
errors | [String!]! | — |
CreateCommunityPayload
Autogenerated return type of CreateCommunity.
| Field | Type | Description |
|---|---|---|
community | Community (↗) | — |
errors | [String!]! | — |
CreateCommunityPostPayload
Autogenerated return type of CreateCommunityPost.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
post | CommunityPost (↗) | — |
CreateFeedbackCommentPayload
Autogenerated return type of CreateFeedbackComment.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
feedbackComment | FeedbackComment (↗) | — |
CreateFeedbackPostPayload
Autogenerated return type of CreateFeedbackPost.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
feedbackPost | FeedbackPost (↗) | — |
CreateFeedbackTagPayload
Autogenerated return type of CreateFeedbackTag.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
feedbackTag | FeedbackTag (↗) | — |
CreateSeasonalEventPayload
Autogenerated return type of CreateSeasonalEvent.
| Field | Type | Description |
|---|---|---|
errors | [String!] | — |
seasonalEvent | SeasonalEvent (↗) | — |
CreateSubCommunityPayload
Autogenerated return type of CreateSubCommunity.
| Field | Type | Description |
|---|---|---|
community | Community (↗) | — |
errors | [String!]! | — |
teamReadOnly | Boolean! | True only for the grace-period read-only failure — the frontend renders its own "team is read-only" copy for this. |
CreateTeamInvitePayload
Autogenerated return type of CreateTeamInvite.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
joinUrl | String | — |
teamInvite | TeamInvite (↗) | — |
teamReadOnly | Boolean! | True only for the grace-period read-only failure — the frontend renders its own "team is read-only" copy for this. |
CriticalPathPlayStatus
Today's Critical Path puzzle status for the authenticated user.
| Field | Type | Description |
|---|---|---|
completed | Boolean! | Whether the user has completed today's puzzle. |
elapsedSeconds | Int | Time taken in seconds; null if not yet completed. |
percentile | Int | Rank percentile (1-99) among all players today; null when fewer than 10 plays recorded. |
puzzleDate | ISO8601Date! (↗) | UTC calendar date of today's puzzle. |
puzzleSeed | Int! | YYYYMMDD integer seed identifying today's puzzle; matches frontend dailySeed(). |
typicalSeconds | Int | Median elapsed_seconds of the player's last 10 prior plays at the same grid size; null when fewer than 3 comparable plays exist. |
CriticalPathReminderPreferences
Daily reminder preferences for the Critical Path feature.
| Field | Type | Description |
|---|---|---|
enabled | Boolean! | Whether the user has opted into daily reminders. |
timeOfDay | String! | Preferred local send time in HH:MM format. Defaults to '08:00'. |
timezone | String! | User's current IANA timezone string. |
timezoneNeedsConfirmation | Boolean! | True when reminders are on but the timezone is still the UTC default. |
CriticalPathTheme
A Critical Path visual theme and its unlock requirement.
| Field | Type | Description |
|---|---|---|
key | String! | Theme identifier key (e.g. 'forest'). |
name | String! | Display name shown to the user. |
unlockThreshold | Int! | Minimum stim_streak_longest required to unlock this theme. |
DailyUsagePoint
Single day of AI usage data for the daily spend line chart.
| Field | Type | Description |
|---|---|---|
callCount | Int! | Number of AI calls made on this UTC day. |
costCents | Int! | Total AI spend in cents for this UTC day. |
date | String! | ISO date (YYYY-MM-DD) in UTC. |
tokenCount | Int! | Total tokens consumed on this UTC day. |
DashboardPreferences
Dashboard hierarchy view preferences for the user (v4.15).
| Field | Type | Description |
|---|---|---|
density | String! | Dashboard density: standard or detailed. |
mode | String! | Dashboard mode: focus, standard, detailed, or auto. |
DataImport
—
| Field | Type | Description |
|---|---|---|
collisions | [DataImportCollision!]! (↗) | — |
committedAt | ISO8601DateTime (↗) | — |
completionCount | Int! | Check-in rows that will import — excludes error rows. |
createdAt | ISO8601DateTime! (↗) | — |
createdCount | Int! | — |
currentStep | Int! | — |
currentStreak | Int | Post-import User#current_streak. Only meaningful once status is committed. |
failedCount | Int! | — |
goalCount | Int! | Goal rows that will import — excludes error rows and sub-goals. |
id | ID! | — |
rowErrors | [DataImportRowIssue!]! (↗) | — |
rowWarnings | [DataImportRowIssue!]! (↗) | — |
skippedCount | Int! | — |
source | String! | — |
status | String! | — |
totalSteps | Int! | — |
DataImportCollision
—
| Field | Type | Description |
|---|---|---|
externalId | String | — |
name | String! | — |
DataImportRowIssue
—
| Field | Type | Description |
|---|---|---|
file | String! | — |
line | Int! | — |
reason | String! | — |
DeclineAllyRequestPayload
Autogenerated return type of DeclineAllyRequest.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
success | Boolean! | — |
DeclinePartnerRequestPayload
Autogenerated return type of DeclinePartnerRequest.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
userAlly | UserAlly (↗) | — |
DeleteDemoEntityPayload
Autogenerated return type of DeleteDemoEntity.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
success | Boolean! | — |
DeleteNotificationPayload
Autogenerated return type of DeleteNotification.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
result | Result (↗) | — |
DeleteOwnAccountPayload
Autogenerated return type of DeleteOwnAccount.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
success | Boolean! | — |
DemoDataRunStatus
Progress of an in-flight or recently completed demo-data Sidekiq job.
| Field | Type | Description |
|---|---|---|
currentStep | Int! | — |
error | String | — |
finishedAt | ISO8601DateTime (↗) | — |
scope | String | Scope name for ScopeResetJob; null otherwise. |
startedAt | ISO8601DateTime (↗) | — |
status | String! | 'idle' | 'queued' | 'running' | 'succeeded' | 'failed' |
totalSteps | Int! | — |
DemoScopePreview
Live counts of demo-tagged records across the 12 demo-bearing tables.
| Field | Type | Description |
|---|---|---|
aiArtifacts | Int! | — |
aiEmployees | Int! | — |
aiRuns | Int! | — |
communities | Int! | — |
feedItems | Int! | — |
feedbackComments | Int! | — |
feedbackPosts | Int! | — |
feedbackVotes | Int! | — |
goalEvents | Int! | — |
goals | Int! | — |
totalRecords | Int! | — |
userAllies | Int! | — |
users | Int! | — |
DisconnectIntegrationConnectionPayload
Autogenerated return type of DisconnectIntegrationConnection.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
integrationConnection | IntegrationConnection (↗) | — |
DiscoveryMember
A minimal, public-safe preview of a community member for discovery surfaces.
| Field | Type | Description |
|---|---|---|
avatarUrl | String | URL for the member's profile photo, or null if none. |
displayName | String! | The member's display name. |
publicId | ID! | The member's public identifier. |
DismissDashboardHintPayload
Autogenerated return type of DismissDashboardHint.
| Field | Type | Description |
|---|---|---|
success | Boolean! | — |
DismissEnneagramCardPayload
Autogenerated return type of DismissEnneagramCard.
| Field | Type | Description |
|---|---|---|
success | Boolean! | — |
DismissHabitIntegrationMappingPayload
Autogenerated return type of DismissHabitIntegrationMapping.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
mapping | HabitIntegrationMapping (↗) | — |
DocsAssistantAnswer
Response payload for askDocsQuestion.
| Field | Type | Description |
|---|---|---|
answer | String | Assistant answer text. Null when state is DISABLED. |
citations | [DocsAssistantCitation!]! (↗) | Sources the answer drew from. Always empty when state is REFUSED or DISABLED. |
state | DocsAssistantStateEnum! (↗) | Terminal state discriminator. |
DocsAssistantCitation
A single source the docs assistant drew its answer from — a docs/ path from the committed engineering docs corpus.
| Field | Type | Description |
|---|---|---|
path | String! | Source path within docs/ (e.g. "architecture/authentication.md"). |
title | String | The page title, for display in a source chip. |
EditHabitIntegrationMappingPayload
Autogenerated return type of EditHabitIntegrationMapping.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
mapping | HabitIntegrationMapping (↗) | — |
EndPartnershipPayload
Autogenerated return type of EndPartnership.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
userAlly | UserAlly (↗) | — |
EnneagramAssessment
A completed Enneagram personality assessment result.
| Field | Type | Description |
|---|---|---|
completedAt | ISO8601DateTime! (↗) | When the assessment was completed. |
dominantType | Int! | Dominant Enneagram type (1–9). |
id | ID! | public_id of the assessment. |
scores | JSON! (↗) | Normalized type scores — hash keyed "1".."9", values 0–100. |
tritype | String! | 3-character tritype string (e.g. "583"). |
wing | Int! | Wing type — adjacent type with the higher score. |
EnqueueClearPayload
Autogenerated return type of EnqueueClear.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
jobId | String | — |
EnqueueReseedPayload
Autogenerated return type of EnqueueReseed.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
jobId | String | — |
EnqueueScopeResetPayload
Autogenerated return type of EnqueueScopeReset.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
jobId | String | — |
scope | String | — |
EnsureTodaysCoachMessagePayload
Autogenerated return type of EnsureTodaysCoachMessage.
| Field | Type | Description |
|---|---|---|
generated | Boolean! | — |
insight | String! | — |
ExecuteDeletionPayload
Autogenerated return type of ExecuteDeletion.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
gdprRequest | GdprRequest (↗) | — |
ExecuteExportPayload
Autogenerated return type of ExecuteExport.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
gdprRequest | GdprRequest (↗) | — |
FeatureUsagePoint
Per-feature AI usage aggregation point for the admin dashboard.
| Field | Type | Description |
|---|---|---|
callCount | Int! | Number of AI calls made for this feature over the window. |
costCents | Int! | Sum of cost_cents over the window, rounded to the nearest cent. |
feature | String! | Feature name (e.g. coaching, milestones, insights). |
tokenCount | Int! | Sum of total_tokens over the window. |
FeedbackCategoryBreakdown
—
| Field | Type | Description |
|---|---|---|
count | Int! | — |
name | String! | — |
FeedbackComment
A comment on a feedback post.
| Field | Type | Description |
|---|---|---|
body | String! | The comment text. |
createdAt | ISO8601DateTime! (↗) | — |
id | ID! | Public identifier for this comment. |
isOfficial | Boolean! | Whether this is an official team response. |
user | User! (↗) | The user who wrote this comment. |
FeedbackPost
A user-submitted feedback post (feature request, improvement, bug report).
| Field | Type | Description |
|---|---|---|
category | String! | Category: feature, improvement, bug, or other. |
commentCount | Int! | Total number of comments. |
comments | [FeedbackComment!]! (↗) | Comments on this post. |
createdAt | ISO8601DateTime! (↗) | — |
description | String | Detailed description of the feedback. |
id | ID! | Public identifier for this feedback post. |
shippedAt | ISO8601DateTime (↗) | When this post was marked as completed/shipped. |
status | String! | Status: open, planned, in_progress, completed, or declined. |
tags | [FeedbackTag!]! (↗) | Tags attached to this post. |
title | String! | Title of the feedback post. |
user | User! (↗) | The user who created this post. |
voteCount | Int! | Total number of votes. |
votedByCurrentUser | Boolean! | Whether the current user has voted on this post. |
FeedbackStats
Aggregate statistics for the feedback board (admin only).
| Field | Type | Description |
|---|---|---|
categoryBreakdown | [FeedbackCategoryBreakdown!]! (↗) | — |
completedPosts | Int! | — |
declinedPosts | Int! | — |
inProgressPosts | Int! | — |
openPosts | Int! | — |
plannedPosts | Int! | — |
postsThisWeek | Int! | — |
topPosts | [FeedbackPost!]! (↗) | — |
totalComments | Int! | — |
totalPosts | Int! | — |
totalVotes | Int! | — |
FeedbackTag
An admin-managed tag that can be applied to feedback posts.
| Field | Type | Description |
|---|---|---|
archived | Boolean! | Whether this tag has been archived. |
createdAt | ISO8601DateTime! (↗) | — |
description | String | Optional description of the tag. |
id | ID! | Public identifier for this feedback tag. |
name | String! | Display name of the tag. |
position | Int! | Display order position. |
postsCount | Int! | Number of feedback posts carrying this tag. |
slug | String! | URL-safe slug for this tag. |
FeedbackTheme
—
| Field | Type | Description |
|---|---|---|
postCount | Int! | — |
summary | String | — |
title | String | — |
voteTotal | Int! | — |
FeedbackWeeklySummary
Coach-analyzed themed summary of the past week of feedback board posts (admin only).
| Field | Type | Description |
|---|---|---|
emergingRequests | [String!]! | — |
generatedAt | ISO8601DateTime! (↗) | — |
themes | [FeedbackTheme!]! (↗) | — |
FeedUpdatePayload
Invalidation ping for the unified activity feed — not a rendered item. The client refetches page 1 through unifiedFeed on receipt.
| Field | Type | Description |
|---|---|---|
occurredAt | String! | Unix timestamp (string) when this ping was triggered. |
source | String! | Which feed source changed — matches UnifiedFeedItemType#feed_type (ally_activity, community_post, notification, own_activity). A reconnect catch-up ping (unknown source) never reaches the client as a GraphQL payload — it is synthesized client-side by useLiveQuery on socket restore. |
FollowCommunityPayload
Autogenerated return type of FollowCommunity.
| Field | Type | Description |
|---|---|---|
result | Result (↗) | — |
GdprRequest
—
| Field | Type | Description |
|---|---|---|
cascadePreview | CascadePreview (↗) | — |
dueBy | ISO8601DateTime! (↗) | — |
exportExpiresAt | ISO8601DateTime (↗) | — |
exportFileUrl | String | — |
fulfilledAt | ISO8601DateTime (↗) | — |
fulfilledBy | User (↗) | — |
notes | String | — |
publicId | String! | — |
receivedAt | ISO8601DateTime! (↗) | — |
requestType | String! | — |
requestorEmail | String! | — |
status | String! | — |
GdprRequestConnection
The connection type for GdprRequest.
| Field | Type | Description |
|---|---|---|
edges | [GdprRequestEdge] (↗) | A list of edges. |
nodes | [GdprRequest] (↗) | A list of nodes. |
pageInfo | PageInfo! (↗) | Information to aid in pagination. |
GdprRequestEdge
An edge in a connection.
| Field | Type | Description |
|---|---|---|
cursor | String! | A cursor for use in pagination. |
node | GdprRequest (↗) | The item at the end of the edge. |
GenerateGoalDraftPayload
Autogenerated return type of GenerateGoalDraft.
| Field | Type | Description |
|---|---|---|
aiRequest | AiRequest (↗) | Present when async_ai_delivery_enabled routes this request through Ai::DispatchAiRequestJob instead of resolving the draft inline (v4.60 Phase 4). Subscribe to aiRequestUpdate(requestId: id) or poll aiRequest(id:) for the result. |
draft | GoalDraft (↗) | — |
GenerateMilestonesPayload
Autogenerated return type of GenerateMilestones.
| Field | Type | Description |
|---|---|---|
aiRequest | AiRequest (↗) | Present when async_ai_delivery_enabled routes this request through Ai::DispatchAiRequestJob instead of resolving milestones inline (v4.60 Phase 4). Subscribe to aiRequestUpdate(requestId: id) or poll aiRequest(id:) for the result. |
milestones | [String!] | — |
GetAdvicePayload
Autogenerated return type of GetAdvice.
| Field | Type | Description |
|---|---|---|
advice | String | — |
aiRequest | AiRequest (↗) | Present when async_ai_delivery_enabled routes this request through Ai::DispatchAiRequestJob instead of resolving advice inline (v4.60 Phase 3). Subscribe to aiRequestUpdate(requestId: id) or poll aiRequest(id:) for the result. |
suggestedActions | [CoachAction!]! (↗) | Deterministically derived action chips (0-2). No LLM call — derived from goal/mood signals. |
GetBillingPortalUrlPayload
Autogenerated return type of GetBillingPortalUrl.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
portalUrl | String | — |
GetInsightPayload
Autogenerated return type of GetInsight.
| Field | Type | Description |
|---|---|---|
aiRequest | AiRequest (↗) | Present when async_ai_delivery_enabled routes this request through Ai::DispatchAiRequestJob instead of resolving the insight inline (v4.60 Phase 5). Backend-only migration — no frontend surface consumes this yet (OBJ-3895); the currentInsights query feeds the insight card from a pre-generated cache read, not this mutation. |
ctaLabel | String | — |
insightId | String | — |
insightType | String | — |
message | String | — |
title | String | — |
Goal
A user goal with progress events, milestones, and optional community sharing.
| Field | Type | Description |
|---|---|---|
allEvents | [GoalEvent!]! (↗) | All progress events including soft-deleted ones. |
appLink | String | External app URL (https:// or a custom app scheme, e.g. duolingo://) opened on check-in for one-click redirect to another app. |
averageCheckInTime | Float | Mean hour-of-day (0.0–24.0) in the user's timezone. Null if < 3 completions. |
category | GoalCategory (↗) | The goal category (e.g. fitness, learning, personal). |
checkedInToday | Boolean! | Whether the user has checked in today. |
collectiveGoalContribution | GoalCollectiveContribution (↗) | The collective goal this goal is actively contributing to, if any (GOALS-17). |
comments | [GoalEventComment!]! (↗) | Comments left by other users on this goal. |
completed | Boolean! | Whether the goal has been marked as completed. |
completedAtTime | String | Unix timestamp (string) when the goal was completed. |
completionRate | Float | Percentage of expected check-ins completed in the last 30 days. |
completionReflection | String | Optional free-text reflection captured when the goal was marked complete. Personalizes Coach messaging when present. |
content | String | Optional longer description or motivation note for the goal. |
createdAtTime | String | Unix timestamp (string) when the goal was created. |
currentAmount | Float | Current progress value for quantity-based goals (e.g. 3.2 km). |
dayOfWeekDistribution | [Int!]! | Check-in counts by day of week [Sun, Mon, Tue, Wed, Thu, Fri, Sat]. |
daysToUpdate | Int | How frequently (in days) the user intends to log progress events. |
demo | Boolean! | Whether this goal is a demo-tagged record (Phase 30). |
dueToday | Boolean! | Whether this habit is due for a check-in today. |
durationMinutes | Int | Optional time-per-session in minutes for habits. |
encouragements | [GoalEventEncouragement!]! (↗) | Encouragement reactions left by other users on this goal. |
events | [GoalEvent!]! (↗) | Active (non-deleted) progress events. For habits, routine "Checked in!" rows are filtered; only user-authored updates and milestones are returned. |
followersCount | Int! | Accepted follows on this goal. Drops to zero when the goal becomes private. Owner-only. |
fromTemplate | GoalTemplate (↗) | "From template" badge surface. Null for goals not created from a template. |
fromTemplateName | String | Name of the template this goal was created from. Null if not template-sourced. |
habitCompletions | [HabitCompletion!]! (↗) | Check-in records for this habit (last 30 days). |
habitStreak | Int! | Current consecutive check-in streak for this habit. |
identityPrompt | String | Optional free-text identity framing (e.g. "Who you're becoming"). Personalizes Coach messaging when present. |
imageUrl | String | URL of a cover image associated with the goal. |
kind | GoalType (↗) | The goal kind/type (e.g. habit, milestone, quantity). |
lastCheckedInDate | String | ISO date of the most recent check-in. |
lifeArea | String | The area of life this goal belongs to (e.g. career, health). |
longestHabitStreak | Int! | All-time longest streak for this habit. |
milestones | [Goal!]! (↗) | Sub-goals (milestones) nested under this goal. |
name | String! | Display name of the goal (e.g. "Run a 5K"). |
nonAllyFollowersCount | Int! | Follows held by users who are not accepted allies of the owner — the follows a public → allies change drops. Owner-only. |
parentGoalId | String | public_id of the parent goal if this is a milestone/sub-goal. |
pastAttemptContext | String | Optional free-text context on a prior attempt at this goal. Personalizes Coach messaging when present. |
position | Int | Ordinal position within parent goal's roadmap (nullable for top-level goals). |
preBreakHabitStreak | Int! | Streak snapshot captured before the last break. Used by Welcome Back and Streak Repair. |
private | Boolean! | When true, the goal is visible only to its owner. |
publicId | ID! | URL-safe public identifier for this goal. |
quickUpdatePrompts | [String!]! | Coach-generated quick-fill chip prompts (0-2), pre-generated at goal creation. Always [] (never null) until the async job lands, or when skipped (milestone, demo, coaching disabled). |
recurrenceDays | [String!] | Days of the week for weekly/custom_days recurrence (e.g. ["mon", "wed", "fri"]). |
recurrenceInterval | Int | Number of days between check-ins for interval recurrence. |
recurrenceType | String | Recurrence pattern: daily, weekly, custom_days, or interval. |
sharedWithPartner | Boolean! | When true and the goal is private, a confirmed accountability partner can still see it. Has no effect on non-private goals. |
status | GoalStatusEnum! (↗) | Computed status: on_track | needs_attention | paused | completed. |
streakFreezesAvailable | Int! | Number of streak freeze tokens earned and available. |
streakFreezesUsed | Int! | Number of streak freeze tokens consumed. |
streakRepairEligibleUntil | String | ISO 8601 timestamp when the repair window closes. Null when not in window. |
streakRepairedCount | Int! | Number of times this streak has been repaired or mercied (unified cap). |
targetAmount | Float | Target value for quantity-based goals (e.g. 5.0 km). |
targetDateTime | String | Unix timestamp (string) of the target completion date. |
totalCheckIns | Int! | Total number of actual check-ins ever recorded for this habit. |
unit | String | Unit label for quantity-based goals (e.g. "km", "pages", "reps"). |
updatedAtTime | String | Unix timestamp (string) when the goal was last updated. |
user | User (↗) | The user who owns this goal. |
visibility | GoalVisibilityEnum! (↗) | Who can see this goal: public, allies, or private. |
GoalCategory
A predefined category for organizing goals (e.g. fitness, learning, personal growth).
| Field | Type | Description |
|---|---|---|
id | ID! | Public identifier for this category. |
name | String! | Display name of the category. |
GoalCollectiveContribution
The collective goal this personal goal is actively contributing to, if any (GOALS-17).
| Field | Type | Description |
|---|---|---|
collectiveGoalTitle | String! | — |
teamName | String! | — |
GoalDraft
A Coach-drafted goal: title, category, kind, target date, why, and milestones.
| Field | Type | Description |
|---|---|---|
categoryId | ID | Resolved GoalCategory id, or null if the suggested category was unknown. |
categoryName | String | — |
kindId | ID | Resolved GoalType id, or null if the suggested kind was unknown. |
kindName | String | — |
milestones | [String!]! | — |
targetDate | String | Suggested ISO8601 target date, or null for habits/ongoing goals. |
title | String | — |
why | String | — |
GoalEvent
An immutable progress log entry for a goal. Records what the user did and when.
| Field | Type | Description |
|---|---|---|
clientTimestampTime | String | Unix timestamp (string) when this event actually occurred on the client device. Null for events logged while online or by legacy clients. |
comments | [GoalEventComment!]! (↗) | Comments from other users on this event. |
content | String! | Text describing what the user did (e.g. "Ran 3 km in the park"). |
createdAtTime | String! | Unix timestamp (string) when this event was logged. |
encouragements | [GoalEventEncouragement!]! (↗) | Encouragement reactions from other users on this event. |
goal | Goal (↗) | The goal this event belongs to. |
id | ID! | Alias for public_id. Prefer public_id for new integrations. |
media | GoalMedia (↗) | Optional photo or media attachment for this event. |
milestoneName | String | Name of the milestone this event was logged against, if any. |
mood | String | Optional mood snapshot at the time of logging (amazing/happy/calm/meh/tired/low). |
publicId | ID! | URL-safe public identifier for this event. |
reactions | [GoalEventReaction!]! (↗) | Emoji reactions from other users on this event. |
source | String! | Where this event originated: "manual" (user-entered) or "integration" (auto-imported from a connected app). |
GoalEventComment
A comment left by a user on a goal progress event.
| Field | Type | Description |
|---|---|---|
content | String | Text of the comment. |
createdAtTime | String | Unix timestamp (string) when the comment was posted. |
goal | Goal (↗) | The goal associated with the event being commented on. |
id | ID! | Public identifier for this comment. |
updatedAtTime | String | Unix timestamp (string) when the comment was last edited. |
user | User (↗) | The user who wrote the comment. |
GoalEventEncouragement
An encouragement reaction (like/cheer) left on a goal progress event.
| Field | Type | Description |
|---|---|---|
comment | String | Optional short message included with the encouragement. |
createdAtTime | String | Unix timestamp (string) when the encouragement was given. |
goal | Goal (↗) | The goal associated with the event being encouraged. |
id | ID! | Public identifier for this encouragement. |
updatedAtTime | String | Unix timestamp (string) when it was last updated. |
user | User (↗) | The user who left the encouragement. |
GoalEventReaction
An emoji reaction on a goal event from another user.
| Field | Type | Description |
|---|---|---|
createdAtTime | String | Unix timestamp (string) when this reaction was created. |
emoji | String! | Unicode emoji character for this reaction. |
id | ID! | Public identifier for this reaction. |
user | User (↗) | The user who reacted. |
GoalMedia
A media attachment (image) associated with a goal progress event.
| Field | Type | Description |
|---|---|---|
id | ID! | Public identifier for this media record. |
imageUrl | String | URL of the attached image. |
name | String | Optional descriptive name or caption for the image. |
GoalMotivationProfile
Goal Motivation Snapshot answers captured during onboarding.
| Field | Type | Description |
|---|---|---|
challenge | String | Biggest challenge: starting, staying_consistent, momentum_after_setbacks, knowing_progress. |
completedAt | String | ISO 8601 timestamp of last save. |
experience | String | Prior goal-tracking experience: never, a_few_times, many_still_going, many_struggled. |
socialContext | String | Preferred social context: solo, friend_or_partner, team_or_group. |
workTime | String | Preferred time to work on goals: morning, afternoon, evening, varies. |
GoalProgressData
Progress visualization data for a goal.
| Field | Type | Description |
|---|---|---|
averagePerWeek | Float! | Average events per week in the lookback period. |
dataPoints | [ProgressDataPoint!]! (↗) | Event frequency data grouped by period. |
pace | String! | Current pace status: ahead, on_track, or behind. |
streakData | [ProgressDataPoint!]! (↗) | Habit streak completion data (habits only). |
totalEvents | Int! | Total number of events in the lookback period. |
GoalRefinementSuggestion
A single field-level refinement suggestion for a not-yet-saved goal.
| Field | Type | Description |
|---|---|---|
field | String! | One of: title, description, target_date, milestone. |
issue | String! | — |
suggestedValue | String! | — |
suggestion | String! | — |
GoalSummary
Aggregated statistics for the current user's goals.
| Field | Type | Description |
|---|---|---|
avgProgress | Float | Average progress percentage across active, trackable goals (0–100). Null when no active goal has an observable progress signal (habit rate, roadmap, or target amount) — never a fabricated 0. |
completedCount | Int! | Number of completed goals. |
needAttentionCount | Int! | Number of active goals in needs_attention status. |
totalGoals | Int! | Total number of top-level goals. |
GoalTemplate
A curated goal template users can adopt. Content is placeholder until Phase 85 (Penny).
| Field | Type | Description |
|---|---|---|
category | GoalCategory (↗) | Optional goal category associated with this template. |
description | String! | Longer description or motivation copy for this template. |
displayOrder | Int! | Display position within its theme group (ascending). |
estimatedDurationDays | Int! | Approximate number of days to complete this goal. |
imageUrl | String | Optional cover image URL. Null until Phase 85 canonical content pass. |
milestones | [GoalTemplateMilestone!]! (↗) | Ordered milestone steps stored as JSONB. |
name | String! | Display name of the template (e.g. "TODO(content): Run a 5K"). |
publicId | ID! | URL-safe public identifier for this template. |
theme | String! | Grouping theme: fitness | learning | financial | habit_wellness. |
GoalTemplateMilestone
A milestone entry stored in a GoalTemplate milestones JSONB column.
| Field | Type | Description |
|---|---|---|
daysOffsetFromStart | Int! | Number of days after the goal start date when this milestone is expected. |
name | String! | Display name of this milestone step. |
order | Int! | Zero-based position within the milestone sequence. |
GoalType
A goal kind/type that determines how progress is tracked (e.g. habit, milestone, quantity).
| Field | Type | Description |
|---|---|---|
description | String! | Explanation of how goals of this type work. |
displayNumber | Int | Ordering hint for display in the UI. |
id | ID! | Integer database identifier for this goal type (reference table, not a public_id). |
name | String! | Display name of the goal type (e.g. "Habit", "Milestone", "Quantity"). |
GrantAchievementDebugPayload
Autogenerated return type of GrantAchievementDebug.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
success | Boolean! | — |
GrowthDataPoint
Daily growth metrics for users and goals
| Field | Type | Description |
|---|---|---|
date | String! | — |
goals | Int! | — |
users | Int! | — |
GuideAssistantAnswer
Response payload for askGuideQuestion.
| Field | Type | Description |
|---|---|---|
answer | String | Assistant answer text. Null when state is DISABLED. |
citations | [GuideAssistantCitation!]! (↗) | Sources the answer drew from. Always empty when state is REFUSED or DISABLED. |
state | GuideAssistantStateEnum! (↗) | Terminal state discriminator. |
GuideAssistantCitation
A single source the guide assistant drew its answer from — always a real help.objectuve.com page from the committed guide corpus.
| Field | Type | Description |
|---|---|---|
path | String! | Resolvable help.objectuve.com URL for this source. |
slug | String! | Guide page slug (e.g. "goals"). |
title | String! | The page title, for display in a source chip. |
HabitCompletion
A single habit check-in record for a specific date.
| Field | Type | Description |
|---|---|---|
completedDate | String! | ISO date string for the check-in date. |
createdAt | String! | ISO timestamp when the check-in was recorded. |
id | ID! | Internal identifier for the completion record. |
note | String | Optional one-sentence micro-journal note for this check-in (max 280 characters). Private — visible only to the completion's owner, never on community/ally/team surfaces. |
streakFreezeUsed | Boolean! | Whether a streak freeze was used for this date. |
HabitIntegrationMapping
Links a connected provider activity type to a habit (Goal), with a confidence score.
| Field | Type | Description |
|---|---|---|
autoCheckEnabled | Boolean! | Whether matching activities auto-check-in this habit. |
confidenceScore | Float | Mapping confidence, 0–1, from the auto-mapping engine. |
goal | Goal! (↗) | The habit this provider activity type maps to. |
integrationConnection | IntegrationConnection! (↗) | The connection this mapping belongs to. |
providerActivityType | String! | Provider-specific activity type (e.g. "Strava.run"). |
publicId | ID! | URL-safe public identifier for this mapping. |
InsightPack
A daily AI coaching insight card for a specific app page.
| Field | Type | Description |
|---|---|---|
ctaLabel | String | Button label, or null if no action is required. |
id | String! | Stable ID for client-side dismissal state tracking. |
message | String! | Actionable insight text (max 2 sentences). |
page | String! | Page key this insight targets (e.g. "dashboard", "goals"). |
title | String! | Short card title (max 8 words). |
type | String! | Card type: tip, action, insight, or celebration. |
IntegrationActivity
A single fetched activity from a connected provider (a Strava run, a Chess.com game, ...).
| Field | Type | Description |
|---|---|---|
activityType | String! | Normalized activity type (e.g. "run", "chess_blitz"). |
checkedAt | ISO8601DateTime (↗) | When this activity was auto-checked-in, if ever. |
distanceKm | Float | Distance covered, in kilometers, if applicable. |
durationMinutes | Int | Duration of the activity, in minutes. |
publicId | ID! | URL-safe public identifier for this activity. |
timestamp | ISO8601DateTime! (↗) | When the activity occurred. |
IntegrationConnection
A user's link to a connected provider. Access/refresh tokens are never exposed here.
| Field | Type | Description |
|---|---|---|
createdAt | ISO8601DateTime! (↗) | When this connection was created. |
externalUsername | String | Provider account handle (e.g. Chess.com username), if applicable. |
integrationProvider | IntegrationProvider! (↗) | The connected provider. |
publicId | ID! | URL-safe public identifier for this connection. |
status | String! | Connection status: active, paused, or error. |
syncedAt | ISO8601DateTime (↗) | When activity was last successfully fetched. |
tokenExpiresAt | ISO8601DateTime (↗) | When the current access token expires, if applicable. |
IntegrationProvider
A connectable third-party service (Strava, Chess.com, ...).
| Field | Type | Description |
|---|---|---|
authType | String! | How connections authenticate: oauth, api_key, or none. |
description | String | Short description of what this provider syncs. |
logoUrl | String | URL of the provider logo, if any. |
name | String! | Display name (e.g. "Strava"). |
providerSlug | String! | Stable machine-readable slug (e.g. "strava"). |
publicId | ID! | URL-safe public identifier for this provider. |
InviteAllyToCommunityPayload
Autogenerated return type of InviteAllyToCommunity.
| Field | Type | Description |
|---|---|---|
alreadyInvited | Boolean! | — |
errors | [String!]! | — |
success | Boolean! | — |
JoinCommunityChallengePayload
Autogenerated return type of JoinCommunityChallenge.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
result | Result (↗) | — |
JoinCommunityPayload
Autogenerated return type of JoinCommunity.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
result | Result (↗) | — |
JoinSeasonalEventPayload
Autogenerated return type of JoinSeasonalEvent.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
result | Result (↗) | — |
JoinSubCommunityPayload
Autogenerated return type of JoinSubCommunity.
| Field | Type | Description |
|---|---|---|
community | Community (↗) | — |
errors | [String!]! | — |
LeaveCommunityChallengePayload
Autogenerated return type of LeaveCommunityChallenge.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
result | Result (↗) | — |
LeaveCommunityPayload
Autogenerated return type of LeaveCommunity.
| Field | Type | Description |
|---|---|---|
result | Result (↗) | — |
LeaveSeasonalEventPayload
Autogenerated return type of LeaveSeasonalEvent.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
result | Result (↗) | — |
LeaveSubCommunityPayload
Autogenerated return type of LeaveSubCommunity.
| Field | Type | Description |
|---|---|---|
community | Community (↗) | — |
errors | [String!]! | — |
MappingProposal
A freshly re-scored mapping suggestion from Integrations::MapIncomingActivity.
| Field | Type | Description |
|---|---|---|
confidenceScore | Float! | Score from 0-1. |
decision | String! | "auto", "propose", or "ignore". |
goal | Goal (↗) | The best-matching habit, or null when the decision is "ignore". |
integrationActivity | IntegrationActivity! (↗) | The activity being scored. |
MintCheckInTokenPayload
Autogenerated return type of MintCheckInToken.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
expiresAt | ISO8601DateTime (↗) | — |
token | String | The raw check-in token — shown once, never persisted in plaintext. |
ModelUsagePoint
Per-model AI usage aggregation point for the admin dashboard.
| Field | Type | Description |
|---|---|---|
callCount | Int! | Number of AI calls made with this model over the window. |
costCents | Int! | Sum of cost_cents over the window, rounded to the nearest cent. |
model | String! | Model identifier (e.g. gemini/gemini-3.8-flash). |
tokenCount | Int! | Sum of total_tokens over the window. |
MoodLog
A daily mood check-in recorded by a user, optionally linked to a goal.
| Field | Type | Description |
|---|---|---|
createdAtTime | String! | Unix timestamp (string) when this mood log was recorded. |
goal | Goal (↗) | Goal the user linked this mood entry to, if any. |
mood | String! | Mood value at time of check-in. One of: amazing, happy, calm, meh, tired, low. |
note | String | Optional free-text note (max 300 characters) describing how the user is feeling. |
publicId | ID! | URL-safe public identifier for this mood log entry. |
NextBadge
The locked badge closest to being unlocked for a user.
| Field | Type | Description |
|---|---|---|
key | String! | Badge key matching the UserAction enum action name. |
progressLabel | String! | Human-readable progress label (e.g. "3/5 goals completed"). |
progressPercentage | Float! | Completion percentage toward unlocking this badge (0–100). |
NotificationHistory
Paginated notification history for the current user (acknowledged and unacknowledged).
| Field | Type | Description |
|---|---|---|
hasMore | Boolean! | Whether there are more notifications beyond this page. |
items | [UserNotification!]! (↗) | Notifications for the current page, newest first. |
totalCount | Int! | Total number of notifications across all pages. |
unreadCount | Int! | Total unacknowledged notifications across all pages, for the same scope. |
OnboardingFunnel
Aggregated onboarding funnel counts and time-to-first-goal percentiles. Admin only. Returns aggregates only — no user identifiers.
| Field | Type | Description |
|---|---|---|
firstGoal | Int! | Distinct in-window users who have at least one non-deleted goal. |
signedIn | Int! | Distinct users with a first_sign_in UserAction in the window. |
ttfgP50Seconds | Int | Median seconds from sign-up to first goal. Null when no in-window user has created a goal. |
ttfgP90Seconds | Int | 90th-percentile time-to-first-goal in seconds. Nullable. |
variantId | String | Echoes the variant filter when one was applied; null for unfiltered queries. |
wizardCompleted | Int! | Distinct users with a wizard_completed UserAction in the window. |
wizardStarted | Int! | Distinct users with a wizard_started UserAction in the window. |
OnboardingProgress
In-flight progress through the onboarding wizard. Cleared (null) on exit.
| Field | Type | Description |
|---|---|---|
answers | JSON (↗) | Free-form per-slide answers. Shape refined in Phase 34. |
currentSlide | String | Slide id the user is currently on. |
updatedAt | ISO8601DateTime (↗) | When progress was last written. |
OnboardingStatus
v1.8 onboarding completion status, sourced from UserDetail.data["onboarding"].
| Field | Type | Description |
|---|---|---|
completedAt | ISO8601DateTime (↗) | When the user finished or was backfilled. null if in-flight. |
completedVia | String | How completion happened: "complete" | "skip" | "backfilled". |
progress | OnboardingProgress (↗) | In-flight slide progress. null after completion. |
version | String | Onboarding schema version: "v1.8" (flow-completed) or "pre-v1.8" (lazy-backfilled). |
OptIntoCollectiveGoalPayload
Autogenerated return type of OptIntoCollectiveGoal.
| Field | Type | Description |
|---|---|---|
collectiveGoal | CollectiveGoal (↗) | — |
errors | [String!]! | — |
OptOutOfCollectiveGoalPayload
Autogenerated return type of OptOutOfCollectiveGoal.
| Field | Type | Description |
|---|---|---|
collectiveGoal | CollectiveGoal (↗) | — |
errors | [String!]! | — |
PaceSuggestion
A one-tap timeline-adjustment suggestion for a goal that is consistently ahead of or behind pace.
| Field | Type | Description |
|---|---|---|
currentTargetDate | String! | ISO date string of the goal's current target date. |
direction | String! | "ahead" or "behind" — drives icon and copy branch. |
goalName | String! | Display name of the goal, for body + confirmation copy. |
goalPublicId | String! | public_id of the goal this suggestion targets. |
id | String! | Stable ID for client-side dismissal state tracking. |
paceSummary | String! | Human phrase, e.g. "about 3 weeks faster than planned". |
proposedTargetDate | String! | ISO date string of the computed new target date. |
PageInfo
Information about pagination in a connection.
| Field | Type | Description |
|---|---|---|
endCursor | String | When paginating forwards, the cursor to continue. |
hasNextPage | Boolean! | When paginating forwards, are there more items? |
hasPreviousPage | Boolean! | When paginating backwards, are there more items? |
startCursor | String | When paginating backwards, the cursor to continue. |
PauseAiEmployeePayload
Autogenerated return type of PauseAiEmployee.
| Field | Type | Description |
|---|---|---|
employee | AiEmployee (↗) | — |
errors | [String!]! | — |
PauseIntegrationConnectionPayload
Autogenerated return type of PauseIntegrationConnection.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
integrationConnection | IntegrationConnection (↗) | — |
PendingAllyUser
The requesting user for a pending ally request.
| Field | Type | Description |
|---|---|---|
firstName | String | The requesting user's given name. |
lastName | String | The requesting user's family name. |
photo | UserPhoto (↗) | The requesting user's profile photo. |
publicId | String | The requesting user's URL-safe public identifier. |
username | String | The requesting user's unique handle. |
PendingCounts
Per-queue pending item counts for the admin sidebar. Fields return nil when the current user lacks the role to see that queue (UI hides the badge — never renders 0 for an inaccessible queue).
| Field | Type | Description |
|---|---|---|
gdprRequests | Int | GDPR requests in received state. Nil if the current role cannot handle GDPR requests. Returns 0 until Phase 28 creates the table. |
moderationQueue | Int | Pending content flags awaiting moderator review. Nil if the current role cannot moderate. |
reviewQueue | Int | AI artifacts awaiting admin approval. Nil if the current role cannot approve artifacts. |
Plan
A subscription plan (Supporter Monthly, Yearly, or Lifetime).
| Field | Type | Description |
|---|---|---|
active | Boolean! | Whether the plan is available for purchase. |
currency | String! | ISO currency code (default: usd). |
interval | String | Billing interval (month, year, or null for one-time). |
name | String! | Display name (e.g. "Supporter Monthly"). |
priceCents | Int! | Price in cents (e.g. 300 = $3.00). |
priceDisplay | String! | Formatted price string (e.g. "$3.00/month"). |
publicId | ID! | URL-safe public identifier for the plan. |
slug | String! | URL-safe slug (monthly, yearly, lifetime). |
PostComment
A comment left on a community post.
| Field | Type | Description |
|---|---|---|
content | String! | Text body of the comment. |
id | ID! | Public identifier for this comment. |
timestamp | String! | Unix timestamp (string) when the comment was posted. |
userId | ID! | public_id of the user who wrote the comment. |
userName | String! | Username of the comment author. |
ProgressDataPoint
A single data point in a progress chart.
| Field | Type | Description |
|---|---|---|
count | Int! | Number of events logged in this period. |
date | String! | ISO date string for the start of this period. |
label | String! | Display label for this period (e.g. "Mar 15" or "Mar 15 - Mar 21"). |
PromoteTeamMemberPayload
Autogenerated return type of PromoteTeamMember.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
teamMembership | TeamMembership (↗) | — |
PromotionCriteria
—
| Field | Type | Description |
|---|---|---|
approvalRatePct | Int! | — |
blockReason | String | — |
canPromoteTo | String | — |
promotionConfirmedAt | ISO8601DateTime (↗) | — |
recentRejections | Int! | — |
weeksActive | Int! | — |
PublicFeedbackAuthor
Public-safe author identity for the anonymous feedback read path. Allow-listed by design — structurally cannot reach Types::UserType.
| Field | Type | Description |
|---|---|---|
avatarUrl | String | Profile photo URL, or null for a private_mode author and for an author with no uploaded photo — the two are indistinguishable. |
displayName | String! | Resolves to "{FirstName} {LastInitial}." (e.g. "Priya S.") for a normal author, or the literal "a member" for a private_mode author and for an author with no renderable name — the two are byte-identical so this field never discloses who has private mode on. |
PublicFeedbackComment
A comment on a feedback post, on the anonymous public read path.
| Field | Type | Description |
|---|---|---|
author | PublicFeedbackAuthor! (↗) | The author of this comment. |
body | String! | The comment text. |
createdAt | ISO8601DateTime! (↗) | — |
id | ID! | Public identifier for this comment. |
isOfficial | Boolean! | Whether this is an official team response. |
PublicFeedbackPost
A user-submitted feedback post, on the anonymous public read path (v4.62 Phase 6). No votedByCurrentUser — it cannot be honestly answered for an anonymous caller, so it is not askable at all.
| Field | Type | Description |
|---|---|---|
author | PublicFeedbackAuthor! (↗) | The author of this feedback post. |
category | String! | Category: feature, improvement, bug, or other. |
commentCount | Int! | Total number of comments. |
comments | [PublicFeedbackComment!]! (↗) | Comments on this post. |
createdAt | ISO8601DateTime! (↗) | — |
description | String | Detailed description of the feedback. |
id | ID! | Public identifier for this feedback post. |
shippedAt | ISO8601DateTime (↗) | When this post was marked as completed/shipped. |
status | String! | Status: open, planned, in_progress, completed, or declined. |
tags | [FeedbackTag!]! (↗) | Tags attached to this post. |
title | String! | Title of the feedback post. |
voteCount | Int! | Total number of votes. |
PublicGoal
A goal visible on a public profile. Exposes only the fields safe for any authenticated viewer — no user back-reference.
| Field | Type | Description |
|---|---|---|
category | GoalCategory (↗) | Goal category (e.g. fitness, learning). |
completed | Boolean! | Whether the goal has been marked as completed. |
currentAmount | Float | Current progress value for quantity-based goals. |
imageUrl | String | URL of a cover image associated with the goal. |
milestonesCount | Int! | Total number of milestones (sub-goals) under this goal. |
name | String! | Display name of the goal. |
publicId | ID! | URL-safe public identifier for this goal. |
targetAmount | Float | Target value for quantity-based goals. |
targetDateTime | String | Unix timestamp (string) of the target completion date. |
PublicProfile
Publicly visible profile of a user. Only exposes fields safe for anyone to see.
| Field | Type | Description |
|---|---|---|
achievementStats | AchievementStats (↗) | Computed rank, XP, and badge stats for the profile hero. |
alliesCount | Int! | Number of accepted allies (either direction). |
allyGoals | [PublicGoal!]! (↗) | Owner's active allies-only goals (visibility: allies), not already included in publicGoals. Only populated when the viewer is an accepted ally of the owner; empty otherwise (including for self). |
allyStatus | String | Viewer-relative ally relationship to this profile (NONE / PENDING_OUTGOING / PENDING_INCOMING / ACCEPTED / BLOCKED / SELF). Null for anonymous viewers. SELF when the viewer is the profile owner. |
firstName | String | The user's given name. |
lastName | String | The user's family name. |
level | Int! | Current gamification level derived from XP. |
longestStreak | Int! | All-time longest streak of consecutive active days. |
nextLevelThreshold | Int! | XP required to reach the next level. |
nextOnTheShelfBadge | NextBadge (↗) | The locked badge closest to being unlocked, or null if all earned. |
partnerGoals | [PublicGoal!]! (↗) | Owner's active partner-visible goals (public goals, plus private goals the owner opted to share via shared_with_partner). Only populated when the viewer is a confirmed active accountability partner of the owner; empty otherwise (including for self). |
photo | UserPhoto (↗) | Profile photo for the user. |
progressToNextLevel | Float! | Progress toward the next level. |
publicGoals | [PublicGoal!]! (↗) | Non-private active goals belonging to this user. |
publicId | ID! | Public-safe opaque identifier for this user (base64 token, never the integer PK). |
showcasedAchievements | [String!]! | Achievement identifiers the user has chosen to display on their profile. |
signInDates | [String!] | ISO date strings on which the user logged activity (heatmap source). |
signupAgeDays | Int! | Whole days since the user account was created (signup age). |
streak | Int! | Current number of consecutive days the user has logged activity. |
unlockedBadges | [RecentlyUnlockedBadge!]! (↗) | Earned badges, rarity DESC then unlocked_at DESC. |
username | String! | The user's unique handle (e.g. "jane.doe"). |
viewerIsAccountabilityPartner | Boolean! | Whether the viewer is a confirmed active accountability partner of this profile owner. False for anonymous viewers, non-partners, blocked relationships, and self. |
xp | Int! | Total experience points earned through goals, events, and engagement. |
RecentlyUnlockedBadge
A badge recently unlocked by the user.
| Field | Type | Description |
|---|---|---|
key | String! | Badge key matching the UserAction enum action name. |
unlockedAt | ISO8601DateTime! (↗) | When the badge was unlocked. |
RecordCriticalPathPlayPayload
Autogenerated return type of RecordCriticalPathPlay.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
status | CriticalPathPlayStatus (↗) | — |
stimXpEarned | Int | Stim XP delta awarded this play; null on duplicate or inactive feature. |
RecordSharePayload
Autogenerated return type of RecordShare.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
shareEvent | ShareEvent (↗) | — |
RecordUserActionPayload
Autogenerated return type of RecordUserAction.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
result | Result (↗) | — |
RefineDescriptionPayload
Autogenerated return type of RefineDescription.
| Field | Type | Description |
|---|---|---|
aiRequest | AiRequest (↗) | Present when async_ai_delivery_enabled routes this request through Ai::DispatchAiRequestJob instead of resolving the description inline (v4.60 Phase 5). Subscribe to aiRequestUpdate(requestId: id) or poll aiRequest(id:) for the result. |
description | String | — |
RefineGoalPayload
Autogenerated return type of RefineGoal.
| Field | Type | Description |
|---|---|---|
aiRequest | AiRequest (↗) | Present when async_ai_delivery_enabled routes this request through Ai::DispatchAiRequestJob instead of resolving suggestions inline (v4.60 Phase 4). Subscribe to aiRequestUpdate(requestId: id) or poll aiRequest(id:) for the result. |
suggestions | [GoalRefinementSuggestion!] (↗) | — |
RejectAiArtifactPayload
Autogenerated return type of RejectAiArtifact.
| Field | Type | Description |
|---|---|---|
artifact | AiArtifact (↗) | — |
errors | [String!]! | — |
RemoveAllyPayload
Autogenerated return type of RemoveAlly.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
success | Boolean! | — |
RemoveTeamMemberPayload
Autogenerated return type of RemoveTeamMember.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
teamMembership | TeamMembership (↗) | — |
ReorderMilestonesPayload
Autogenerated return type of ReorderMilestones.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
goal | Goal (↗) | — |
RepairStreakPayload
Autogenerated return type of RepairStreak.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
goal | Goal (↗) | — |
user | User (↗) | — |
ReportContentPayload
Autogenerated return type of ReportContent.
| Field | Type | Description |
|---|---|---|
contentReport | ContentReport (↗) | — |
errors | [String!] | — |
RequestDataExportPayload
Autogenerated return type of RequestDataExport.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
gdprRequest | GdprRequest (↗) | — |
RequestMagicCodePayload
Autogenerated return type of RequestMagicCode.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
success | Boolean! | — |
RerunHabitIntegrationMappingPayload
Autogenerated return type of RerunHabitIntegrationMapping.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
proposals | [MappingProposal!] (↗) | — |
ResetOnboardingPayload
Autogenerated return type of ResetOnboarding.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
success | Boolean! | — |
user | User (↗) | — |
ResolvedModelUsagePoint
Per-resolved-model AI usage aggregation point for the admin dashboard.
| Field | Type | Description |
|---|---|---|
callCount | Int! | Number of AI calls made with this resolved model over the window. |
costCents | Int! | Sum of cost_cents over the window, rounded to the nearest cent. |
resolvedModel | String! | Concrete model id that served the request (e.g. gemini/gemini-2.5-flash). |
tokenCount | Int! | Sum of total_tokens over the window. |
Result
Generic boolean result returned by check queries (e.g. authn_check, is_following_goal).
| Field | Type | Description |
|---|---|---|
success | Boolean! | True if the checked condition is satisfied. |
ResumeIntegrationConnectionPayload
Autogenerated return type of ResumeIntegrationConnection.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
integrationConnection | IntegrationConnection (↗) | — |
RevertLastGoalEventPayload
Autogenerated return type of RevertLastGoalEvent.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
goal | Goal (↗) | — |
ReviewContentFlagPayload
Autogenerated return type of ReviewContentFlag.
| Field | Type | Description |
|---|---|---|
contentFlag | ContentFlag (↗) | — |
errors | [String!] | — |
ReviewContentReportPayload
Autogenerated return type of ReviewContentReport.
| Field | Type | Description |
|---|---|---|
contentReport | ContentReport (↗) | — |
errors | [String!] | — |
RevokeAllyInvitePayload
Autogenerated return type of RevokeAllyInvite.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
invite | AllyInvite (↗) | — |
RevokeCheckInTokenPayload
Autogenerated return type of RevokeCheckInToken.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
result | Result (↗) | — |
RevokeTeamInvitePayload
Autogenerated return type of RevokeTeamInvite.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
teamInvite | TeamInvite (↗) | — |
SeasonalEvent
A platform-wide, admin-curated seasonal event.
| Field | Type | Description |
|---|---|---|
badgeIcon | String! | Emoji or icon string for the completion badge. |
badgeName | String! | Name of the badge awarded to event completers. |
createdAtTime | String! | Unix timestamp (string) when the event was created. |
currentUserParticipant | SeasonalEventParticipant (↗) | The current user's participation row, or nil. |
description | String | Optional description of the event. |
endDate | ISO8601Date! (↗) | Date when the event ends (inclusive). |
isActive | Boolean! | Whether this event is currently enabled by an admin. |
isParticipating | Boolean! | Whether the current user is an active participant. |
name | String! | Display name of the event. |
participantCount | Int! | Total number of active participants in the event. |
publicId | ID! | URL-safe public identifier for this event. |
slug | String! | URL-safe, unique identifier for this event. |
startDate | ISO8601Date! (↗) | Date when the event begins. |
status | String! | Date-derived status: "upcoming", "active", or "completed". |
targetGoalCount | Int! | Number of qualifying goal events required to complete the event. |
updatedAtTime | String! | Unix timestamp (string) when the event was last updated. |
SeasonalEventParticipant
A single user participation record within a seasonal event, tracking progress toward completion.
| Field | Type | Description |
|---|---|---|
completed | Boolean! | Whether the participant has met the completion threshold. |
completedAt | ISO8601DateTime (↗) | When the target was crossed. Nil if not yet complete. |
progressCount | Int! | Number of qualifying goal events logged so far. |
progressPercent | Float! | Progress toward completion as a percentage (0–100), clamped. |
publicId | ID! | URL-safe public identifier for this participation record. |
seasonalEvent | SeasonalEvent (↗) | The event this participation belongs to. |
user | User (↗) | The participating user. |
userPublicId | String | Public ID of the participating user (safe for membership checks). |
SeedIntegrationActivityDebugPayload
Autogenerated return type of SeedIntegrationActivityDebug.
| Field | Type | Description |
|---|---|---|
decision | String | — |
errors | [String!]! | — |
integrationActivity | IntegrationActivity (↗) | — |
SendAllyRequestPayload
Autogenerated return type of SendAllyRequest.
| Field | Type | Description |
|---|---|---|
alreadyRequested | Boolean! | — |
errors | [String!]! | — |
userAlly | UserAlly (↗) | — |
SendEncouragementPayload
Autogenerated return type of SendEncouragement.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
success | Boolean! | — |
SendPartnerNudgePayload
Autogenerated return type of SendPartnerNudge.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
success | Boolean! | — |
SendPartnerRequestPayload
Autogenerated return type of SendPartnerRequest.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
userAlly | UserAlly (↗) | — |
SetColorThemePayload
Autogenerated return type of SetColorTheme.
| Field | Type | Description |
|---|---|---|
colorTheme | String | — |
errors | [String!]! | — |
SetCommunityEditorialSlotPayload
Autogenerated return type of SetCommunityEditorialSlot.
| Field | Type | Description |
|---|---|---|
community | Community (↗) | — |
errors | [String!] | — |
SetCommunityFeaturedPayload
Autogenerated return type of SetCommunityFeatured.
| Field | Type | Description |
|---|---|---|
community | Community (↗) | — |
errors | [String!] | — |
SetCriticalPathActiveThemePayload
Autogenerated return type of SetCriticalPathActiveTheme.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
status | StimXpStatus (↗) | — |
SetCriticalPathReminderPreferencesPayload
Autogenerated return type of SetCriticalPathReminderPreferences.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
preferences | CriticalPathReminderPreferences (↗) | — |
SetDefaultSubCommunityPayload
Autogenerated return type of SetDefaultSubCommunity.
| Field | Type | Description |
|---|---|---|
community | Community (↗) | — |
errors | [String!]! | — |
SetGoalPartnerSharingPayload
Autogenerated return type of SetGoalPartnerSharing.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
goal | Goal (↗) | — |
SetGoalVisibilityPayload
Autogenerated return type of SetGoalVisibility.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
goal | Goal (↗) | — |
SetLeaderboardVisibilityPayload
Autogenerated return type of SetLeaderboardVisibility.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
optedOut | Boolean | — |
SetSeasonalEventActivePayload
Autogenerated return type of SetSeasonalEventActive.
| Field | Type | Description |
|---|---|---|
errors | [String!] | — |
seasonalEvent | SeasonalEvent (↗) | — |
SetTeamNotificationPreferencesPayload
Autogenerated return type of SetTeamNotificationPreferences.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
preferences | TeamNotificationPreferences (↗) | — |
SetWeeklyDigestPreferencesPayload
Autogenerated return type of SetWeeklyDigestPreferences.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
preferences | WeeklyDigestPreferences (↗) | — |
ShareableMoment
—
| Field | Type | Description |
|---|---|---|
badgeIconUrl | String | — |
badgeName | String | — |
earnedOn | ISO8601DateTime (↗) | The date the moment happened — earned date for a badge, completion date for a goal, today for a streak. Null for milestone. |
goalTitle | String | — |
kind | String! | One of: badge, goal_completion, milestone, streak. |
milestoneIndex | Int | — |
milestoneTitle | String | — |
milestoneTotal | Int | — |
shareCode | String! | v4.56 Phase 5 (REF-01) — a code reserved for this preview, minted fresh per query. Unpersisted until recordShare is called with it; an abandoned preview simply never persists its code, so no ShareEvent row exists for it (SHARE-09). |
streakDays | Int | — |
username | String | The caller's own username, for building the shareable /u/:username link (REF-09). Null when the caller has no username — the client falls back to the app root. |
ShareEvent
—
| Field | Type | Description |
|---|---|---|
channel | String | — |
code | String! | — |
id | ID! | — |
kind | String! | — |
sharedAt | ISO8601DateTime! (↗) | — |
subjectPublicId | String! | — |
StartTeamBillingPortalPayload
Autogenerated return type of StartTeamBillingPortal.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
portalUrl | String | — |
StartTeamCheckoutPayload
Autogenerated return type of StartTeamCheckout.
| Field | Type | Description |
|---|---|---|
checkoutUrl | String | — |
errors | [String!]! | — |
StimXpStatus
The authenticated user's Stim XP and theme status.
| Field | Type | Description |
|---|---|---|
activeTheme | String! | Active theme key; defaults to 'default' when unset. |
currentStimStreak | Int! | Current consecutive-day streak; 0 if streak is stale. |
longestStimStreak | Int! | All-time longest streak (used for theme unlock thresholds). |
themesCatalog | [CriticalPathTheme!]! (↗) | Full catalog of available themes. |
totalStimXp | Int! | Lifetime total Stim XP earned. |
unlockedThemes | [String!]! | Keys of themes the user has unlocked. |
StoreDeviceTokenPayload
Autogenerated return type of StoreDeviceToken.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
result | Result (↗) | — |
StoreFeatureTourStatePayload
Autogenerated return type of StoreFeatureTourState.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
featureTours | JSON (↗) | — |
success | Boolean! | — |
StoreOnboardingStatePayload
Autogenerated return type of StoreOnboardingState.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
user | User (↗) | The current user, with the refreshed onboardingStatus field. |
StoreUserDetailsPayload
Autogenerated return type of StoreUserDetails.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
result | Result (↗) | — |
StreakRepairOffer
Streak Repair offer shown to active users within 24–48h of a streak break.
| Field | Type | Description |
|---|---|---|
eligible | Boolean! | Whether the user has an eligible streak repair right now. |
goalName | String | Name of the target habit goal. Null when ineligible. |
goalPublicId | ID | public_id of the habit goal eligible for repair. Null when ineligible. |
insuranceClaimsRemaining | Int | Streak insurance claims remaining in the current calendar month. |
insuranceEligible | Boolean! | Whether the user has an eligible Supporter streak insurance claim right now. |
insuranceEligibleUntil | String | ISO 8601 timestamp when the insurance window closes. |
insuranceGoalName | String | Name of the insurance target habit goal. Null when ineligible. |
insuranceGoalPublicId | ID | public_id of the habit goal eligible for insurance. Null when ineligible. |
insurancePeriodResetsAt | String | ISO 8601 timestamp when the monthly insurance allowance resets. |
insurancePreBreakHabitStreak | Int | Pre-break streak snapshot for the insurance target. |
preBreakHabitStreak | Int | Pre-break streak snapshot — the headline number to show users. |
repairEligibleUntil | String | ISO 8601 timestamp when the repair window closes. |
repairXpCost | Int | XP cost to repair this streak (100 + 5 × streak, capped at 500). |
userIsSupporter | Boolean! | Whether the user has an active Supporter subscription. |
SubmitEnneagramAssessmentPayload
Autogenerated return type of SubmitEnneagramAssessment.
| Field | Type | Description |
|---|---|---|
assessment | EnneagramAssessment (↗) | — |
errors | [String!]! | — |
SubmitTeamPulsePayload
Autogenerated return type of SubmitTeamPulse.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
record | TeamPulseConfirmation (↗) | — |
Subscription
Real-time subscriptions delivered over WebSocket (ActionCable at WS /cable).
| Field | Type | Description |
|---|---|---|
achievementUnlocked | UserAction (↗) | Streams newly awarded badges for a user in real time. |
aiRequestUpdate | AiRequest (↗) | Streams status/result updates for a single async AiRequest in real time. |
feedUpdate | FeedUpdatePayload (↗) | Streams a feed invalidation ping for a user in real time. |
notificationUpdate | UserNotification (↗) | Streams new notifications for a user in real time. |
achievementUnlocked arguments:
| Name | Type | Required | Description |
|---|---|---|---|
userId | ID! | Yes | public_id of the user to subscribe to achievement unlocks for. |
aiRequestUpdate arguments:
| Name | Type | Required | Description |
|---|---|---|---|
requestId | ID! | Yes | public_id of the AiRequest to subscribe to. |
feedUpdate arguments:
| Name | Type | Required | Description |
|---|---|---|---|
userId | ID! | Yes | public_id of the user to subscribe to feed updates for. |
notificationUpdate arguments:
| Name | Type | Required | Description |
|---|---|---|---|
userId | ID! | Yes | public_id of the user to subscribe to notifications for. |
SuggestedCommunity
A community recommended to a user based on their goals, interests, and ally network.
| Field | Type | Description |
|---|---|---|
activeMembers | Int! | Count of members who posted or commented in the past 7 days. |
category | String! | Category label for the community (e.g. "Fitness", "Learning"). |
coverImage | String | URL of the community banner/cover image. |
description | String | Human-readable description of the community purpose. |
isRecommended | Boolean! | Always true for suggested communities — indicates this is a curated recommendation. |
matchScore | Int! | Relevance score (0–100) indicating how well this community matches the user. |
members | [DiscoveryMember!]! (↗) | A sample of up to 5 members, useful for showing mutual connections. |
mutualAllies | Int! | Number of the current user allies who are also members of this community. |
name | String! | Display name of the community. |
publicId | ID! | URL-safe public identifier for this community. |
reason | CommunityReason (↗) | The single disclosable reason this community is recommended, or null if none applies. Always null when discovery_ranking_v2 is disabled. |
SuggestedGoal
A Coach-suggested goal from the goal-discovery quiz: title, category, kind, target date, rationale, and milestones.
| Field | Type | Description |
|---|---|---|
categoryId | ID | Resolved GoalCategory id, or null if the suggested category was unknown. |
categoryName | String | — |
kindId | ID | Resolved GoalType id, or null if the suggested kind was unknown. |
kindName | String | — |
milestones | [String!]! | — |
rationale | String | One sentence on why this goal fits the quiz answers. |
targetDate | String | Suggested ISO8601 target date, or null for habits/ongoing goals. |
title | String | — |
SuggestGoalsPayload
Autogenerated return type of SuggestGoals.
| Field | Type | Description |
|---|---|---|
aiRequest | AiRequest (↗) | Present when async_ai_delivery_enabled routes this request through Ai::DispatchAiRequestJob instead of resolving suggestions inline (v4.60 Phase 5). Subscribe to aiRequestUpdate(requestId: id) or poll aiRequest(id:) for the result. |
errors | [String!]! | — |
suggestions | [SuggestedGoal!] (↗) | — |
SupporterStats
Supporter revenue and tier-count aggregation for admin analytics
| Field | Type | Description |
|---|---|---|
activeSupportersLifetime | Int! | — |
activeSupportersMonthly | Int! | — |
activeSupportersTotal | Int! | — |
activeSupportersYearly | Int! | — |
currency | String! | — |
mrrCents | Int! | Monthly Recurring Revenue in cents (monthly + yearly/12) |
SyncUserPayload
Autogenerated return type of SyncUser.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
firstSignIn | Boolean! | — |
user | User (↗) | — |
SystemHealth
Admin self-health probe data. Admin only.
| Field | Type | Description |
|---|---|---|
agentRunnerReachable | Boolean! | — |
currentAdminPublicId | String! | — |
currentAdminRoleList | [String!]! | — |
databaseReachable | Boolean! | — |
deployRevision | String | — |
deployTimestamp | String | — |
litellmReachable | Boolean! | — |
redisReachable | Boolean! | — |
sidekiqReachable | Boolean! | — |
Team
A paid, private, multi-community workspace (Teams V1).
| Field | Type | Description |
|---|---|---|
billingOwner | User! (↗) | The user who owns billing for this team. |
coachName | String! | The team's billing owner first name, shown as "Coached by" (OBJ-1830). |
memberCount | Int! | Total number of memberships on this team (OBJ-1830). |
memberships | [TeamMembership!]! (↗) | All current members of this team. |
name | String! | Display name of the team. |
publicId | ID! | URL-safe public identifier for this team. |
slug | String! | URL-safe slug for the team. |
subscription | TeamSubscription (↗) | The team billing subscription, if provisioned. |
TeamFeedItem
A row in TeamHomeView's Today feed. Always empty in Phase 3 (Orion A1 — no activity feed model yet).
| Field | Type | Description |
|---|---|---|
actorName | String! | — |
actorPhotoUrl | String | — |
id | ID! | — |
kind | String! | — |
message | String | — |
occurredAt | ISO8601DateTime! (↗) | — |
points | Int | — |
TeamHome
Aggregate read backing TeamHomeView (N13).
| Field | Type | Description |
|---|---|---|
activeRoomId | ID | The public_id of the viewer's active sub-community. |
billingState | String | trial_ending, past_due, grace_readonly, or null when the subscription needs no banner (active/canceled). |
collectiveGoal | CollectiveGoal (↗) | The team-wide collective goal, if any. Null when teams_collective_goals is off or none exists yet. |
collectiveGoalPrivacyContractAcknowledged | Boolean! | Whether the viewer has acknowledged TeamPrivacyContractView (N18) server-side (UserAction), never localStorage. |
feed | [TeamFeedItem!]! (↗) | Always empty in Phase 3 — see TeamFeedItemType's description. |
isFreshMember | Boolean! | True when the viewer has no team activity yet (drives the empty state). |
role | String! | The viewer's TeamMembership role on this team. |
rooms | [Community!]! (↗) | The team's non-archived sub-communities (room strip / switcher). |
team | Team! (↗) | The team. |
trialDaysLeft | Int | Days left in trial, clamped to >= 0. Null outside trialing. |
TeamInvite
A link (and optionally email-targeted) invite to join a Team.
| Field | Type | Description |
|---|---|---|
code | String! | URL-safe invite code — embed in the join link. |
email | String | Invitee email, or null for a link-only invite. |
expiresAt | ISO8601DateTime! (↗) | When this invite expires (14 days from creation). |
id | ID! | Public identifier for this invite record. |
maxUses | Int | Maximum number of times this invite may be accepted. |
status | String! | Current status: pending, accepted, revoked, or expired. |
teamRole | String! | Role the invitee will hold once accepted: admin or member. |
usedCount | Int! | Number of times this invite has been accepted. |
TeamInvitePreview
Public preview of a team invite — safe for an unauthenticated visitor before they sign up or accept. Never reveals whether an unavailable invite was revoked, expired, or exhausted.
| Field | Type | Description |
|---|---|---|
inviterName | String | The inviter's first name. Present only when status is valid. |
memberCount | Int | Current team member count. Present only when status is valid. |
status | String! | "valid", "unavailable" (expired, revoked, or exhausted — indistinguishable by design), or "not_found". |
teamName | String | The inviting team's name. Present only when status is valid. |
TeamLeaderboard
Aggregate read backing TeamLeaderboardView (N19).
| Field | Type | Description |
|---|---|---|
entries | [TeamLeaderboardEntry!]! (↗) | Ranked, opted-in entries for the requested scope. |
period | String! | weekly, monthly, or all_time. |
rooms | [Community!]! (↗) | The team's non-archived sub-communities, for the scope picker (OBJ-1826). |
team | Team! (↗) | The team this leaderboard belongs to. |
yourMembershipOptedOut | Boolean! | Whether the requesting member has opted out of the leaderboard themselves. |
TeamLeaderboardEntry
A single denormalized row on a team leaderboard bucket.
| Field | Type | Description |
|---|---|---|
isYou | Boolean! | Whether this row belongs to the requesting user. |
points | Int! | Total points accrued in this bucket. |
rank | Int! | Position within the current bucket (1 = highest points). |
trend | String! | up, down, or flat vs. the immediately preceding bucket. |
user | User! (↗) | The team member this entry belongs to. |
TeamLeaderboardOptOutStat
Per-team leaderboard opt-out raw count (PRD anti-metric monitoring). Admin-only.
| Field | Type | Description |
|---|---|---|
memberCount | Int! | Total memberships on this team. |
optedOutCount | Int! | Raw count of members opted out of the leaderboard. |
teamName | String! | The team name. |
TeamMemberActivity
Read-only team-scoped activity summary for one member (N7b "View activity"). Owner/admin only — see Resolvers::TeamQueries#team_member_activity.
| Field | Type | Description |
|---|---|---|
collectiveGoalContributions | Int! | Count of events contributed across the team's collective goals. |
lastActiveDays | Int | Days since the member was last active, day granularity. Null when no activity has been recorded yet. |
lastActiveLabel | String! | Humanized last-active label: "Active today" / "Active yesterday" / "Active Nd ago" / "Inactive Nd" / "Not recorded yet", day granularity only. |
optedOut | Boolean! | Whether the member has opted out of the team leaderboard — render the opt-out copy instead of points/check-ins. |
periodStats | [TeamMemberActivityPeriodStat!]! (↗) | Team points earned and check-ins, one row per period (weekly, monthly, all_time). |
subCommunityNames | [String!]! | Names of the sub-communities this member belongs to. |
TeamMemberActivityPeriodStat
Points and check-ins for one leaderboard period bucket, within Team Member Activity (OBJ-1823).
| Field | Type | Description |
|---|---|---|
checkins | Int | Check-ins counted toward the team in this bucket. Null when the member has opted out. |
period | String! | weekly, monthly, or all_time. |
points | Int | Team points earned in this bucket. Null when the member has opted out. |
TeamMembership
A user's seat on a Team.
| Field | Type | Description |
|---|---|---|
joinedAt | ISO8601DateTime! (↗) | When this member joined the team. |
publicId | ID! | URL-safe public identifier for this membership. |
role | String! | owner, admin, member, or external_coach. |
user | User! (↗) | The member. |
TeamMemberSummary
A member row in Team Settings → Members (N7b).
| Field | Type | Description |
|---|---|---|
activityLabel | String! | Humanized last-active label: "Active today" / "Active yesterday" / "Active Nd ago" / "Inactive Nd" / "Not recorded yet". |
firstName | String! | The member's first name. |
isInactive | Boolean! | True when no activity in the trailing 14 days. |
joinedLabel | String! | Humanized "joined N ago" label. |
lastName | String | The member's last name. |
photoUrl | String | The member's avatar URL, or nil (falls back to initials). |
publicId | ID! | The member's public identifier (their User public_id). |
role | String! | Display role: owner, admin, member, external_coach, lead, or coach. "lead" and "coach" are display-only labels layered over the underlying TeamMembership role — see PromoteTeamMember for the persisted role values. |
roomIds | [ID!]! | Community public_ids this member belongs to. Empty array if none. |
teamMembershipId | ID! | This member's TeamMembership public_id — the id promote/remove mutations take. |
TeamNotificationPreferences
Team notification preferences for the authenticated user.
| Field | Type | Description |
|---|---|---|
enabled | Boolean! | Whether the user receives in-app and push notifications from their teams. |
TeamPendingInvite
A pending invite row in the Members (N7b) or Invites (N7d) tab.
| Field | Type | Description |
|---|---|---|
code | String! | The invite code (used to build the join link for Copy). |
email | String | Invitee email, or null for a link-only invite. |
expiresAt | ISO8601DateTime! (↗) | When this invite expires. |
id | ID! | Public identifier for this invite. |
sentLabel | String! | Humanized duration since sent (e.g. "2 days") — no trailing "ago"; TeamMembersTab.vue/TeamInvitesTab.vue append "ago" themselves ("Sent {sentLabel} ago"). |
status | String! | pending, accepted, revoked, or expired. |
TeamPulseConfirmation
Confirmation that a team pulse survey response was recorded.
| Field | Type | Description |
|---|---|---|
period | String! | The quarter period this response was recorded for (e.g. "2026-Q3"). |
TeamSettings
Aggregate read backing Team Settings (N7): Members, Sub-Communities, and Invites tabs.
| Field | Type | Description |
|---|---|---|
maxSubCommunities | Int! | Sub-community cap for this team (N7c header count). |
members | [TeamMemberSummary!]! (↗) | Every current team member. |
pendingInvites | [TeamPendingInvite!]! (↗) | Invites still awaiting acceptance. |
role | String! | The viewer's TeamMembership role on this team. |
seatLimit | Int | The team's subscription seat count, or nil when unprovisioned. |
seatsUsed | Int! | Current member count. |
subCommunities | [Community!]! (↗) | Every sub-community for this team, including archived ones (N7c renders archived rooms in a read-only 30-day window). |
team | Team! (↗) | The team. |
TeamSubscription
A Team billing subscription — plan, seats, and lifecycle status.
| Field | Type | Description |
|---|---|---|
currentPeriodEnd | ISO8601DateTime (↗) | End of the current billing period. |
plan | Plan! (↗) | The Teams plan this subscription is on. |
publicId | ID! | URL-safe public identifier for this subscription. |
seatCount | Int! | Number of seats currently provisioned. |
status | String! | Lifecycle status: trialing, active, past_due, grace, or canceled. |
trialEndsAt | ISO8601DateTime (↗) | When the free trial ends, if trialing. |
TeamSwitcherEntry
One row of the viewer's myTeams list (OBJ-1821) — the team switcher never fetches a membership's user.
| Field | Type | Description |
|---|---|---|
role | String! | owner, admin, member, or external_coach. |
team | Team! (↗) | The team this membership belongs to. |
ToggleFeedbackVotePayload
Autogenerated return type of ToggleFeedbackVote.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
feedbackPost | FeedbackPost (↗) | — |
voted | Boolean | — |
ToggleFollowGoalPayload
Autogenerated return type of ToggleFollowGoal.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
result | Result (↗) | — |
ToggleGoalEventEncouragementPayload
Autogenerated return type of ToggleGoalEventEncouragement.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
goalEventEncouragement | GoalEventEncouragement (↗) | — |
ToggleGoalEventReactionPayload
Autogenerated return type of ToggleGoalEventReaction.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
goalEventReaction | GoalEventReaction (↗) | — |
TourFunnel
Aggregated tour-completion funnel counts for a single tour id. Admin only. Returns aggregates only — no user identifiers.
| Field | Type | Description |
|---|---|---|
completed | Int! | Users who completed this tour (completed_at present). |
completionRate | Float | completed / started. Null when started is zero. |
dismissed | Int! | Users who skipped/dismissed this tour without completing. |
started | Int! | Lower-bound proxy: users with a persisted completed_at or dismissed=true entry for this tour. feature_tours never records a raw start event — true start volume lives in PostHog (tour_started). |
tourId | String! | Tour identifier, matching ionic_frontend TOUR_REGISTRY tourId (e.g. "dashboard-first-run"). |
TransferTeamBillingOwnershipPayload
Autogenerated return type of TransferTeamBillingOwnership.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
team | Team (↗) | — |
TrendingCommunity
A community currently trending based on member growth and activity metrics.
| Field | Type | Description |
|---|---|---|
activeMembers | Int! | Count of members who posted or commented in the past 7 days. |
category | String! | Category label for the community (e.g. "Fitness", "Learning"). |
coverImage | String | URL of the community banner/cover image. |
description | String | Human-readable description of the community purpose. |
growthRate | Float! | Percentage growth in membership over the past 7 days. |
isTrending | Boolean! | Always true for trending communities — indicates current trending status. |
name | String! | Display name of the community. |
publicId | ID! | URL-safe public identifier for this community. |
reason | CommunityReason (↗) | The single disclosable reason this community is trending, or null if none applies. Always null when discovery_ranking_v2 is disabled. |
totalGoals | Int! | Total number of goals shared in this community. |
totalMembers | Int! | Total member count. |
TriggerAiRunPayload
Autogenerated return type of TriggerAiRun.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
run | AiRun (↗) | — |
UnarchiveSubCommunityPayload
Autogenerated return type of UnarchiveSubCommunity.
| Field | Type | Description |
|---|---|---|
community | Community (↗) | — |
errors | [String!]! | — |
UnblockAllyPayload
Autogenerated return type of UnblockAlly.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
success | Boolean! | — |
UnfollowCommunityPayload
Autogenerated return type of UnfollowCommunity.
| Field | Type | Description |
|---|---|---|
result | Result (↗) | — |
UnifiedFeed
Paginated unified activity feed.
| Field | Type | Description |
|---|---|---|
hasMore | Boolean! | Whether there are more items beyond this page. |
items | [UnifiedFeedItem!]! (↗) | Feed items for the current page. |
totalCount | Int! | Total number of feed items across all sources. |
UnifiedFeedItem
A single item in the unified activity feed.
| Field | Type | Description |
|---|---|---|
action | String! | Action verb (e.g. "checked in on", "posted in"). |
actorId | String | public_id of the acting user. |
actorName | String | Display name of the user who performed the action. |
actorPhoto | String | Photo URL of the acting user. |
badgeKey | String | Badge action key (e.g. complete_first_goal) when feed_type=notification and action=badge. |
communityId | String | Community public_id if applicable. |
communityName | String | Community name if applicable. |
content | String | Body text or excerpt of the feed item. |
feedType | String! | Source type: ally_activity, community_post, notification, or own_activity. |
id | String! | Unique identifier for this feed item (prefixed by source type). |
targetId | String | public_id of the target entity. |
targetName | String | Name of the goal or community acted upon. |
targetType | String | Entity type: goal or community. |
timestamp | String! | Unix timestamp as a string. |
UpdateAiEmployeePayload
Autogenerated return type of UpdateAiEmployee.
| Field | Type | Description |
|---|---|---|
employee | AiEmployee (↗) | — |
errors | [String!]! | — |
UpdateCoachingPreferencesPayload
Autogenerated return type of UpdateCoachingPreferences.
| Field | Type | Description |
|---|---|---|
coachingPreferences | CoachingPreferences (↗) | — |
errors | [String!]! | — |
UpdateCoachModelPayload
Autogenerated return type of UpdateCoachModel.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
setting | CoachModelSetting (↗) | — |
UpdateCoachWarmupContextPayload
Autogenerated return type of UpdateCoachWarmupContext.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
userDetail | UserDetail (↗) | — |
UpdateDashboardPreferencesPayload
Autogenerated return type of UpdateDashboardPreferences.
| Field | Type | Description |
|---|---|---|
dashboardPreferences | DashboardPreferences (↗) | — |
errors | [String!]! | — |
UpdateDemoCommunityPayload
Autogenerated return type of UpdateDemoCommunity.
| Field | Type | Description |
|---|---|---|
community | Community (↗) | — |
errors | [String!]! | — |
UpdateDemoGoalPayload
Autogenerated return type of UpdateDemoGoal.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
goal | Goal (↗) | — |
UpdateDemoUserPayload
Autogenerated return type of UpdateDemoUser.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
user | User (↗) | — |
UpdateFeedbackPostStatusPayload
Autogenerated return type of UpdateFeedbackPostStatus.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
feedbackPost | FeedbackPost (↗) | — |
UpdateFeedbackPostTagsPayload
Autogenerated return type of UpdateFeedbackPostTags.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
feedbackPost | FeedbackPost (↗) | — |
UpdateFeedbackTagPayload
Autogenerated return type of UpdateFeedbackTag.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
feedbackTag | FeedbackTag (↗) | — |
UpdateGoalEventPayload
Autogenerated return type of UpdateGoalEvent.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
goalEvent | GoalEvent (↗) | — |
UpdateGoalMotivationSnapshotPayload
Autogenerated return type of UpdateGoalMotivationSnapshot.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
goalMotivationProfile | GoalMotivationProfile (↗) | — |
UpdateGoalPayload
Autogenerated return type of UpdateGoal.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
goal | Goal (↗) | — |
UpdatePrivacySettingsPayload
Autogenerated return type of UpdatePrivacySettings.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
user | User (↗) | — |
UpdateSeasonalEventPayload
Autogenerated return type of UpdateSeasonalEvent.
| Field | Type | Description |
|---|---|---|
errors | [String!] | — |
seasonalEvent | SeasonalEvent (↗) | — |
UpdateShowcasedAchievementsPayload
Autogenerated return type of UpdateShowcasedAchievements.
| Field | Type | Description |
|---|---|---|
errors | [String!] | — |
success | Boolean! | — |
UpdateSubCommunityPayload
Autogenerated return type of UpdateSubCommunity.
| Field | Type | Description |
|---|---|---|
community | Community (↗) | — |
errors | [String!]! | — |
teamReadOnly | Boolean! | True only for the grace-period read-only failure — the frontend renders its own "team is read-only" copy for this. |
UpdateUserPayload
Autogenerated return type of UpdateUser.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
user | User (↗) | — |
UpdateUserPhotoPayload
Autogenerated return type of UpdateUserPhoto.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
userPhoto | UserPhoto (↗) | — |
UpdateUserRolesPayload
Autogenerated return type of UpdateUserRoles.
| Field | Type | Description |
|---|---|---|
errors | [String!] | — |
user | User (↗) | — |
User
A registered Objectuve user with gamification progress, goals, and social connections.
| Field | Type | Description |
|---|---|---|
achievementStats | AchievementStats (↗) | Computed rank, XP, and badge stats for the Achievements page hero. |
actions | [UserAction!] (↗) | Gamification action log used to compute badges and achievements, newest first. Bounded by limit — use unlockedAchievementKeys for a complete badge-unlock check independent of this limit. |
admin | Boolean! | Whether the user has admin privileges. |
adminRoles | [String!]! | List of admin RBAC roles enabled for this user. |
coachingPreferences | CoachingPreferences! (↗) | AI Coach persona and communication preferences. |
colorTheme | String! | Supporter color theme slug synced across devices. Defaults to "default". |
completedCommunityChallenges | [ChallengeParticipant!]! (↗) | Challenge participations where the user has met the completion threshold. |
completedSeasonalEvents | [SeasonalEventParticipant!]! (↗) | Seasonal event participations where the user has met the completion threshold. |
createdAtTime | String | Unix timestamp (string) when the account was created. |
currentInsights | [InsightPack!]! (↗) | Daily AI coaching insight cards for the five core app pages. Returns cached packs or an empty array when the cache is cold. Never raises AI_DISABLED — callers should render fallback copy on empty array. |
dashboardPreferences | DashboardPreferences! (↗) | Dashboard hierarchy view preferences (v4.15). |
daysSinceLastActive | Int | Days since last recorded activity. Null for users who have never been active. |
demo | Boolean! | Whether this user is a demo-tagged record (Phase 30). |
details | UserDetail (↗) | Extended profile metadata stored as JSON (e.g. showcased achievements). |
email | String! | Primary email address for the account. |
emailVerified | Boolean! | Whether the user has confirmed their email address. |
featureTourStatus | JSON! (↗) | Feature-tour completion/dismissal state, keyed by tour id (e.g. "dashboard-first-run"). Empty hash if no tour has started. |
feedItems | [UserFeedItem!] (↗) | Personal activity feed items for the user's home timeline, newest first. |
firstName | String | User's given name. |
goItAlone | Boolean! | Whether the user has opted out of ally/community/coach-social prompts. Defaults to false. |
goalMotivationProfile | GoalMotivationProfile (↗) | Goal Motivation Snapshot answers. Null until first answer is saved. |
goals | [Goal!]! (↗) | All goals owned by this user. |
graceDays | [String!]! | ISO date strings (within last 30 days) where soft-grace forgave a single-day streak gap. Forgiven days are skipped — not counted toward the streak number. |
hasAlly | Boolean! | True if the user has at least one accepted ally (either direction). |
hasCreatedFromTemplate | Boolean! | True if the user has at least one goal created from a template. |
hasDigestEnabled | Boolean! | Whether the user has weekly digest emails enabled (nil defaults to true). |
isSupporter | Boolean! | Whether the user has an active Supporter subscription. |
lastDigestSentAt | String | ISO 8601 timestamp of the last digest sent, or null if never sent. |
lastName | String | User's family name. |
latestEnneagramAssessment | EnneagramAssessment (↗) | Most recent completed Enneagram assessment for this user, or null if none. |
level | Int! | Current gamification level derived from XP. |
longestStreak | Int! | All-time longest streak of consecutive active days. |
moodGoalInsight | InsightPack (↗) | Reflective correlation between mood logs and goal check-ins. Null unless a correlation exists AND mood_goal_insights_enabled is on for this user (fail-closed). |
nextLevelThreshold | Int! | XP required to reach the next level. |
nextOnTheShelfBadge | NextBadge (↗) | The locked badge closest to being unlocked, or null if all badges are earned. |
notifications | [UserNotification!] (↗) | In-app notifications for this user, newest first. |
onboardingStatus | OnboardingStatus (↗) | v1.8 onboarding completion + resume state. Null until completed or backfilled. |
paceSuggestion | PaceSuggestion (↗) | Timeline-adjustment suggestion when a goal is consistently ahead of or behind pace. Null unless a suggestion exists AND goal_auto_adjust_enabled is on (fail-closed). |
photo | UserPhoto (↗) | Profile photo for the user. |
privateMode | Boolean! | Whether the user is hidden from username search. Defaults to false. |
progressToNextLevel | Float! | Fraction (0.0–1.0) representing progress toward the next level. |
publicId | ID! | URL-safe public identifier. Use this for all lookups — internal integer IDs are never exposed. |
recentlyUnlockedBadges | [RecentlyUnlockedBadge!]! (↗) | Badges unlocked within the specified window, newest first. |
requiredCheckinsCompleteToday | Boolean! | True when the user has logged every habit check-in expected today (or has no habits expected today). |
showcasedAchievements | [String!] | Achievement identifiers the user has chosen to display on their profile. |
signInDates | [String!] | List of ISO date strings on which the user has signed in. |
signupAgeDays | Int! | Whole days since the user account was created (signup age). |
stats | UserStats (↗) | Aggregated goal and achievement statistics for the user. |
streak | Int! | Current number of consecutive days the user has logged activity. |
streakRepairOffer | StreakRepairOffer (↗) | Streak Repair eligibility and offer payload for the active-user repair window. |
supporterTier | String | Active supporter tier: monthly, yearly, lifetime, or null. |
supporterUntil | ISO8601DateTime (↗) | When the current supporter period ends (null for lifetime). |
timeToFirstGoalSeconds | Int | Seconds from account creation to first (non-deleted) goal. Admin-only — returns null for non-admin viewers. |
todaysMood | String | Most recent mood log from today, or null if not logged. |
unlockedAchievementKeys | [String!]! | Distinct set of gamification action keys this user has ever unlocked, independent of the actions field limit. Use this for badge-unlock checks instead of scanning actions. |
updatedAtTime | String | Unix timestamp (string) when the account was last updated. |
username | String | Unique handle chosen by the user (e.g. "jane.doe"). |
welcomeBackOffer | WelcomeBackOffer (↗) | Streak Mercy eligibility and offer payload. Null until user is synced. |
xp | Int! | Total experience points earned through goals, events, and engagement. |
actions arguments:
| Name | Type | Required | Description |
|---|---|---|---|
limit | Int | No | Maximum number of actions to return (default 50, clamped to 200). |
feedItems arguments:
| Name | Type | Required | Description |
|---|---|---|---|
limit | Int | No | Maximum number of feed items to return (default 50, clamped to 200). |
notifications arguments:
| Name | Type | Required | Description |
|---|---|---|---|
limit | Int | No | Maximum number of notifications to return (default 50, clamped to 200). |
recentlyUnlockedBadges arguments:
| Name | Type | Required | Description |
|---|---|---|---|
limit | Int | No | Maximum number of badges to return. |
sinceDays | Int | No | How many days back to look for recently unlocked badges. |
UserAction
A gamification action record tracking user behaviour for badges and achievements.
| Field | Type | Description |
|---|---|---|
acknowledged | Boolean! | Whether the user has been shown/dismissed the reward for this action. |
action | String! | Action identifier (e.g. "goal_created", "streak_7", "encouragement_given"). |
communityName | String | For community-scoped badges, the name of the community the badge was earned in. |
createdAtTime | String | Unix timestamp (string) when this action was recorded. |
id | ID! | Public identifier for this action record. |
UserActivity
A single activity item in a user activity timeline within a community context.
| Field | Type | Description |
|---|---|---|
communityId | ID | public_id of the community this activity is associated with, if any. |
communityName | String | Name of the community this activity is associated with, if any. |
content | String! | Human-readable description of the activity. |
id | ID! | Public identifier for this activity item. |
timestamp | String! | Unix timestamp (string) when this activity occurred. |
type | String! | Activity type (e.g. "goal_event", "community_post", "milestone_completed"). |
UserAlly
A friend/ally connection — another user in the current user allies network.
| Field | Type | Description |
|---|---|---|
accountabilityPartner | Boolean! | Whether this ally is the current accountability partner. |
accountabilityPartnerSince | ISO8601DateTime (↗) | When the partnership was established. |
createdAtTime | String | Request creation time as unix epoch seconds (string). |
firstName | String | The ally user's given name. |
id | ID! | Public identifier for this ally relationship record. |
lastName | String | The ally user's family name. |
mutualCount | Int! | Number of mutual allies shared between the current user and this ally. |
mutualStreakCount | Int! | Current mutual check-in streak count. |
partnerStatus | String! | Partnership state: "none", "pending", or "active". |
photo | UserPhoto (↗) | The ally user's profile photo. |
publicId | String! | URL-safe public identifier of the ally user. |
status | String | Raw ally relationship status: "pending", "accepted", or "blocked". |
user | PendingAllyUser (↗) | The requesting user for a pending ally request. |
username | String | The ally user's unique handle. |
UserConnection
The connection type for User.
| Field | Type | Description |
|---|---|---|
edges | [UserEdge] (↗) | A list of edges. |
nodes | [User] (↗) | A list of nodes. |
pageInfo | PageInfo! (↗) | Information to aid in pagination. |
UserDetail
Extended profile metadata for a user, stored as a JSON blob.
| Field | Type | Description |
|---|---|---|
dashboardMigratedFromFull | Boolean! | Whether this user was backfilled from the legacy "full" dashboard mode to Detailed (v4.15). |
dashboardMigrationNoteDismissed | Boolean! | Whether the dashboard hierarchy migration note has been dismissed (v4.15). |
dashboardRelocationHintAchieveDismissed | Boolean! | Whether the ShowcasedAchievements → Achieve relocation hint has been dismissed (v4.15). |
dashboardRelocationHintCommunityDismissed | Boolean! | Whether the SocialSection → Community relocation hint has been dismissed (v4.15). |
data | String! | JSON string containing arbitrary profile metadata (e.g. showcasedAchievements, onboarding state). |
enneagramCardDismissed | Boolean! | Whether the user has permanently dismissed the Enneagram dashboard prompt card. |
id | ID! | Public identifier for this detail record. |
UserEdge
An edge in a connection.
| Field | Type | Description |
|---|---|---|
cursor | String! | A cursor for use in pagination. |
node | User (↗) | The item at the end of the edge. |
UserFeedItem
A single item in the user personal activity feed (home timeline).
| Field | Type | Description |
|---|---|---|
content | String! | Human-readable text describing the feed event. |
createdAtTime | String | Unix timestamp (string) when this feed item was created. |
detailsJson | String! | JSON string with additional event metadata (e.g. related goal ID, user ID). |
id | ID! | Public identifier for this feed item. |
kind | String! | Feed item type (e.g. "goal_event", "encouragement_received", "milestone_completed"). |
UserNotification
An in-app notification delivered to a user.
| Field | Type | Description |
|---|---|---|
acknowledged | Boolean! | Whether the user has dismissed/read this notification. |
content | String! | Human-readable notification message. |
createdAtTime | String | Unix timestamp (string) when this notification was created. |
detailsJson | String! | JSON string with additional metadata (e.g. source user ID, goal ID). |
id | ID! | Public identifier for this notification. |
kind | String! | Notification category (e.g. "encouragement", "milestone_completed", "community_post"). |
UserPhoto
A profile photo associated with a user.
| Field | Type | Description |
|---|---|---|
id | ID! | Public identifier for this photo record. |
imageUrl | String | URL of the profile photo image. |
UserSearchResult
A user returned from the user-facing searchUsers query, with per-result ally relationship status.
| Field | Type | Description |
|---|---|---|
achievementStats | AchievementStats (↗) | Computed rank, XP, and badge stats for the Achievements page hero. |
actions | [UserAction!] (↗) | Gamification action log used to compute badges and achievements, newest first. Bounded by limit — use unlockedAchievementKeys for a complete badge-unlock check independent of this limit. |
admin | Boolean! | Whether the user has admin privileges. |
adminRoles | [String!]! | List of admin RBAC roles enabled for this user. |
allyStatus | AllyStatusEnum! (↗) | Relationship status between the authenticated user and this search result. |
coachingPreferences | CoachingPreferences! (↗) | AI Coach persona and communication preferences. |
colorTheme | String! | Supporter color theme slug synced across devices. Defaults to "default". |
completedCommunityChallenges | [ChallengeParticipant!]! (↗) | Challenge participations where the user has met the completion threshold. |
completedSeasonalEvents | [SeasonalEventParticipant!]! (↗) | Seasonal event participations where the user has met the completion threshold. |
createdAtTime | String | Unix timestamp (string) when the account was created. |
currentInsights | [InsightPack!]! (↗) | Daily AI coaching insight cards for the five core app pages. Returns cached packs or an empty array when the cache is cold. Never raises AI_DISABLED — callers should render fallback copy on empty array. |
dashboardPreferences | DashboardPreferences! (↗) | Dashboard hierarchy view preferences (v4.15). |
daysSinceLastActive | Int | Days since last recorded activity. Null for users who have never been active. |
demo | Boolean! | Whether this user is a demo-tagged record (Phase 30). |
details | UserDetail (↗) | Extended profile metadata stored as JSON (e.g. showcased achievements). |
email | String! | Primary email address for the account. |
emailVerified | Boolean! | Whether the user has confirmed their email address. |
featureTourStatus | JSON! (↗) | Feature-tour completion/dismissal state, keyed by tour id (e.g. "dashboard-first-run"). Empty hash if no tour has started. |
feedItems | [UserFeedItem!] (↗) | Personal activity feed items for the user's home timeline, newest first. |
firstName | String | User's given name. |
goItAlone | Boolean! | Whether the user has opted out of ally/community/coach-social prompts. Defaults to false. |
goalMotivationProfile | GoalMotivationProfile (↗) | Goal Motivation Snapshot answers. Null until first answer is saved. |
goals | [Goal!]! (↗) | All goals owned by this user. |
graceDays | [String!]! | ISO date strings (within last 30 days) where soft-grace forgave a single-day streak gap. Forgiven days are skipped — not counted toward the streak number. |
hasAlly | Boolean! | True if the user has at least one accepted ally (either direction). |
hasCreatedFromTemplate | Boolean! | True if the user has at least one goal created from a template. |
hasDigestEnabled | Boolean! | Whether the user has weekly digest emails enabled (nil defaults to true). |
isSupporter | Boolean! | Whether the user has an active Supporter subscription. |
lastDigestSentAt | String | ISO 8601 timestamp of the last digest sent, or null if never sent. |
lastName | String | User's family name. |
latestEnneagramAssessment | EnneagramAssessment (↗) | Most recent completed Enneagram assessment for this user, or null if none. |
level | Int! | Current gamification level derived from XP. |
longestStreak | Int! | All-time longest streak of consecutive active days. |
moodGoalInsight | InsightPack (↗) | Reflective correlation between mood logs and goal check-ins. Null unless a correlation exists AND mood_goal_insights_enabled is on for this user (fail-closed). |
nextLevelThreshold | Int! | XP required to reach the next level. |
nextOnTheShelfBadge | NextBadge (↗) | The locked badge closest to being unlocked, or null if all badges are earned. |
notifications | [UserNotification!] (↗) | In-app notifications for this user, newest first. |
onboardingStatus | OnboardingStatus (↗) | v1.8 onboarding completion + resume state. Null until completed or backfilled. |
paceSuggestion | PaceSuggestion (↗) | Timeline-adjustment suggestion when a goal is consistently ahead of or behind pace. Null unless a suggestion exists AND goal_auto_adjust_enabled is on (fail-closed). |
photo | UserPhoto (↗) | Profile photo for the user. |
privateMode | Boolean! | Whether the user is hidden from username search. Defaults to false. |
progressToNextLevel | Float! | Fraction (0.0–1.0) representing progress toward the next level. |
publicId | ID! | URL-safe public identifier. Use this for all lookups — internal integer IDs are never exposed. |
recentlyUnlockedBadges | [RecentlyUnlockedBadge!]! (↗) | Badges unlocked within the specified window, newest first. |
requiredCheckinsCompleteToday | Boolean! | True when the user has logged every habit check-in expected today (or has no habits expected today). |
showcasedAchievements | [String!] | Achievement identifiers the user has chosen to display on their profile. |
signInDates | [String!] | List of ISO date strings on which the user has signed in. |
signupAgeDays | Int! | Whole days since the user account was created (signup age). |
stats | UserStats (↗) | Aggregated goal and achievement statistics for the user. |
streak | Int! | Current number of consecutive days the user has logged activity. |
streakRepairOffer | StreakRepairOffer (↗) | Streak Repair eligibility and offer payload for the active-user repair window. |
supporterTier | String | Active supporter tier: monthly, yearly, lifetime, or null. |
supporterUntil | ISO8601DateTime (↗) | When the current supporter period ends (null for lifetime). |
timeToFirstGoalSeconds | Int | Seconds from account creation to first (non-deleted) goal. Admin-only — returns null for non-admin viewers. |
todaysMood | String | Most recent mood log from today, or null if not logged. |
unlockedAchievementKeys | [String!]! | Distinct set of gamification action keys this user has ever unlocked, independent of the actions field limit. Use this for badge-unlock checks instead of scanning actions. |
updatedAtTime | String | Unix timestamp (string) when the account was last updated. |
username | String | Unique handle chosen by the user (e.g. "jane.doe"). |
welcomeBackOffer | WelcomeBackOffer (↗) | Streak Mercy eligibility and offer payload. Null until user is synced. |
xp | Int! | Total experience points earned through goals, events, and engagement. |
actions arguments:
| Name | Type | Required | Description |
|---|---|---|---|
limit | Int | No | Maximum number of actions to return (default 50, clamped to 200). |
feedItems arguments:
| Name | Type | Required | Description |
|---|---|---|---|
limit | Int | No | Maximum number of feed items to return (default 50, clamped to 200). |
notifications arguments:
| Name | Type | Required | Description |
|---|---|---|---|
limit | Int | No | Maximum number of notifications to return (default 50, clamped to 200). |
recentlyUnlockedBadges arguments:
| Name | Type | Required | Description |
|---|---|---|---|
limit | Int | No | Maximum number of badges to return. |
sinceDays | Int | No | How many days back to look for recently unlocked badges. |
UserSearchResultConnection
The connection type for UserSearchResult.
| Field | Type | Description |
|---|---|---|
edges | [UserSearchResultEdge] (↗) | A list of edges. |
nodes | [UserSearchResult] (↗) | A list of nodes. |
pageInfo | PageInfo! (↗) | Information to aid in pagination. |
UserSearchResultEdge
An edge in a connection.
| Field | Type | Description |
|---|---|---|
cursor | String! | A cursor for use in pagination. |
node | UserSearchResult (↗) | The item at the end of the edge. |
UserStats
Aggregated goal and achievement statistics for a user.
| Field | Type | Description |
|---|---|---|
categoriesUsed | [String!]! | List of goal category names the user has set goals in. |
completedGoals | Int! | Number of goals the user has marked as completed. |
encouragementsGiven | Int! | Number of encouragements the user has sent to other users. |
goalsCreatedCount | Int! | Count of goals created (may differ from total_goals based on scope). |
milestonesCompleted | Int! | Number of milestones the user has completed. |
milestonesCreated | Int! | Number of milestone sub-goals the user has created. |
totalGoals | Int! | Total number of goals created by the user (including completed and deleted). |
typesUsed | [String!]! | List of goal type names the user has used. |
UseStreakFreezePayload
Autogenerated return type of UseStreakFreeze.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
goal | Goal (↗) | — |
VerifyMagicCodePayload
Autogenerated return type of VerifyMagicCode.
| Field | Type | Description |
|---|---|---|
errors | [String!]! | — |
token | String | — |
user | User (↗) | — |
WeeklyDigestPreferences
Weekly digest email preferences for the authenticated user.
| Field | Type | Description |
|---|---|---|
deliveryDay | String! | Day to deliver the digest: 'sun', 'sat', or 'mon'. Defaults to 'sun'. |
enabled | Boolean! | Whether the user has opted into the weekly digest. |
WelcomeBackOffer
Streak Mercy offer shown to users returning after 5+ days away.
| Field | Type | Description |
|---|---|---|
coachCopy | String | AI Coach message for the interstitial. Null when ineligible. |
daysSinceLastActive | Int | Days since the user last recorded activity. |
eligible | Boolean! | Whether the user qualifies for a Streak Mercy offer right now. |
targetGoalName | String | Name of the target habit goal. Null when ineligible. |
targetGoalPublicId | ID | public_id of the habit goal eligible for Streak Mercy. Null when ineligible. |
targetHabitStreak | Int | Pre-break habit streak snapshot (captured before zeroing). Headline number in the Welcome Back interstitial. Null when ineligible. |
WordCloud
A word and its frequency count, used for admin word cloud analytics.
| Field | Type | Description |
|---|---|---|
name | String! | The word or token extracted from the data. |
value | Int! | Frequency count — how many times this word appears in the dataset. |
Last updated: 2026-09-19 (auto-generated from schema.graphql)