Objectuve API Reference
Objectuve API
The Objectuve API is a single GraphQL endpoint with real-time WebSocket subscriptions.
GraphQL endpoint: POST /graphql
WebSocket: WS /cable
Authentication
Objectuve uses Clerk for authentication. Clerk issues RS256 JWTs verified via JWKS on the backend.
Include the Clerk session token in every authenticated request using the SessionToken header:
SessionToken: <clerk-jwt-token>
Obtain a token via Clerk.session.getToken() on the client.
Important: The header name is
SessionToken(PascalCase). It is notAuthorizationorBearer.
On first sign-in, call the syncUser mutation to create or sync the local user record. This returns firstSignIn: true for new users who need onboarding.
Key Features
- User Management — Sync Clerk profiles, manage usernames, photos, and showcased achievements
- Goal Tracking — Create goals with milestones, log progress events, track streaks and XP
- Habit Check-ins — One-tap daily check-ins with streak tracking and freeze tokens
- Communities — Create and join interest groups, share goals, post updates, view feeds
- Mood Logging — Daily check-ins (amazing / happy / calm / meh / tired / low) with optional goal linkage
- Coach Features — Generate milestones, refine descriptions, request advice, and receive personalized insights
- Gamification — XP, levels, ranks (Novice Explorer → Legendary Hero), badges (Common / Rare / Epic / Legendary)
- Real-time — Subscribe to live notification and action updates via WebSocket (ActionCable)
ID Convention
All record IDs exposed by this API are public_id values — URL-safe base64 tokens. Internal integer IDs are never returned. Use public_id values for all lookups and references.
Related Resources
- Design System — Brand, tokens, and component patterns
- Documentation — Architecture, feature guides, and operations
- Storybook — Interactive component playground
API Endpoints
# Production:
https://api.objectuve.com/graphql
# Staging:
https://staging.api.objectuve.com/graphql
# Local Development:
http://localhost:3000/graphql
Version
1.0.0
Queries
adminStats
Description
Returns platform-wide statistics for the admin dashboard. Admin only.
Response
Returns an AdminStats
Arguments
| Name | Description |
|---|---|
daysBack - Int
|
Number of days to look back for time-series metrics. Defaults to 90. Default = 90 |
Example
Query
query adminStats($daysBack: Int) {
adminStats(daysBack: $daysBack) {
completedGoals
goalCategories {
...CategoryStatsFragment
}
goalsLast7Days
growthData {
...GrowthDataPointFragment
}
publicGoals
recentActivity {
...ActivityItemFragment
}
totalEncouragements
totalEvents
totalGoals
totalMilestones
totalUpdates
totalUsers
usersLast30Days
usersLast7Days
}
}
Variables
{"daysBack": 90}
Response
{
"data": {
"adminStats": {
"completedGoals": 987,
"goalCategories": [CategoryStats],
"goalsLast7Days": 987,
"growthData": [GrowthDataPoint],
"publicGoals": 123,
"recentActivity": [ActivityItem],
"totalEncouragements": 987,
"totalEvents": 987,
"totalGoals": 123,
"totalMilestones": 987,
"totalUpdates": 123,
"totalUsers": 987,
"usersLast30Days": 123,
"usersLast7Days": 123
}
}
}
allyActivityFeed
Description
Returns recent progress events from the current user's accepted allies.
Response
Returns [AllyActivity!]
Example
Query
query allyActivityFeed(
$limit: Int,
$userId: ID!
) {
allyActivityFeed(
limit: $limit,
userId: $userId
) {
action
allyId
allyName
allyPhoto
communityId
communityName
id
target
timestamp
}
}
Variables
{"limit": 123, "userId": "4"}
Response
{
"data": {
"allyActivityFeed": [
{
"action": "xyz789",
"allyId": 4,
"allyName": "abc123",
"allyPhoto": "abc123",
"communityId": "4",
"communityName": "abc123",
"id": 4,
"target": "abc123",
"timestamp": "xyz789"
}
]
}
}
authzCheck
Description
Checks whether the current user has a specific permission (e.g. admin).
Response
Returns a Result
Example
Query
query authzCheck(
$concern: String!,
$id: ID!
) {
authzCheck(
concern: $concern,
id: $id
) {
success
}
}
Variables
{
"concern": "abc123",
"id": "4"
}
Response
{"data": {"authzCheck": {"success": true}}}
badgeStats
Description
Returns the unlock percentage for each badge across all users. Cached for 1 hour.
Response
Returns [BadgeStat!]
Example
Query
query badgeStats {
badgeStats {
badgeKey
percentage
}
}
Response
{
"data": {
"badgeStats": [
{
"badgeKey": "xyz789",
"percentage": 123.45
}
]
}
}
communities
Description
Lists communities, optionally filtered by user membership or goal category.
Response
Returns [Community!]
Example
Query
query communities(
$goalCategoryIds: [ID!],
$userId: ID
) {
communities(
goalCategoryIds: $goalCategoryIds,
userId: $userId
) {
activeMembers
badges {
...CommunityBadgesFragment
}
category
coverImage
createdAt
createdAtTime
description
feedItems {
...CommunityFeedItemFragment
}
goalCategory {
...GoalCategoryFragment
}
goals {
...GoalFragment
}
growthRate
guidelines
healthScore
imageUrl
isFeatured
isVerified
members {
...CommunityMemberFragment
}
name
privacy
private
publicId
totalGoals
updatedAtTime
}
}
Variables
{
"goalCategoryIds": ["4"],
"userId": "4"
}
Response
{
"data": {
"communities": [
{
"activeMembers": 987,
"badges": CommunityBadges,
"category": "xyz789",
"coverImage": "abc123",
"createdAt": ISO8601DateTime,
"createdAtTime": "xyz789",
"description": "xyz789",
"feedItems": [CommunityFeedItem],
"goalCategory": GoalCategory,
"goals": [Goal],
"growthRate": 987.65,
"guidelines": "abc123",
"healthScore": 987,
"imageUrl": "abc123",
"isFeatured": true,
"isVerified": false,
"members": [CommunityMember],
"name": "xyz789",
"privacy": "xyz789",
"private": true,
"publicId": "4",
"totalGoals": 123,
"updatedAtTime": "xyz789"
}
]
}
}
community
Description
Fetches a community by its public_id.
Response
Returns a Community
Arguments
| Name | Description |
|---|---|
id - ID!
|
public_id of the community to retrieve. |
Example
Query
query community($id: ID!) {
community(id: $id) {
activeMembers
badges {
...CommunityBadgesFragment
}
category
coverImage
createdAt
createdAtTime
description
feedItems {
...CommunityFeedItemFragment
}
goalCategory {
...GoalCategoryFragment
}
goals {
...GoalFragment
}
growthRate
guidelines
healthScore
imageUrl
isFeatured
isVerified
members {
...CommunityMemberFragment
}
name
privacy
private
publicId
totalGoals
updatedAtTime
}
}
Variables
{"id": "4"}
Response
{
"data": {
"community": {
"activeMembers": 987,
"badges": CommunityBadges,
"category": "abc123",
"coverImage": "abc123",
"createdAt": ISO8601DateTime,
"createdAtTime": "xyz789",
"description": "abc123",
"feedItems": [CommunityFeedItem],
"goalCategory": GoalCategory,
"goals": [Goal],
"growthRate": 987.65,
"guidelines": "xyz789",
"healthScore": 987,
"imageUrl": "abc123",
"isFeatured": false,
"isVerified": true,
"members": [CommunityMember],
"name": "abc123",
"privacy": "xyz789",
"private": false,
"publicId": "4",
"totalGoals": 123,
"updatedAtTime": "xyz789"
}
}
}
communityBadges
Description
Returns the achievement badges earned by a community.
Response
Returns a CommunityBadges
Arguments
| Name | Description |
|---|---|
communityId - ID!
|
public_id of the community. |
Example
Query
query communityBadges($communityId: ID!) {
communityBadges(communityId: $communityId) {
allyMagnet
club1k
earlySupporter
featured
perfectMonth
streak100
topActive
topContributor
verified
wins500
}
}
Variables
{"communityId": 4}
Response
{
"data": {
"communityBadges": {
"allyMagnet": true,
"club1k": true,
"earlySupporter": true,
"featured": true,
"perfectMonth": false,
"streak100": false,
"topActive": false,
"topContributor": true,
"verified": true,
"wins500": true
}
}
}
communityFeed
Description
Returns the paginated post feed for a community, ordered by most recent.
Response
Returns [CommunityPost!]
Example
Query
query communityFeed(
$communityId: ID!,
$limit: Int,
$offset: Int
) {
communityFeed(
communityId: $communityId,
limit: $limit,
offset: $offset
) {
comments {
...PostCommentFragment
}
communityId
content
goalId
goalName
id
likes
timestamp
type
userId
userName
userPhoto
}
}
Variables
{
"communityId": "4",
"limit": 987,
"offset": 123
}
Response
{
"data": {
"communityFeed": [
{
"comments": [PostComment],
"communityId": 4,
"content": "xyz789",
"goalId": "4",
"goalName": "xyz789",
"id": "4",
"likes": 123,
"timestamp": "xyz789",
"type": "xyz789",
"userId": 4,
"userName": "abc123",
"userPhoto": "xyz789"
}
]
}
}
communityGoals
Description
Returns all goals shared into a community.
Example
Query
query communityGoals($communityId: ID!) {
communityGoals(communityId: $communityId) {
allEvents {
...GoalEventFragment
}
category {
...GoalCategoryFragment
}
checkedInToday
comments {
...GoalEventCommentFragment
}
completed
completedAtTime
completionRate
content
createdAtTime
currentAmount
daysToUpdate
dueToday
encouragements {
...GoalEventEncouragementFragment
}
events {
...GoalEventFragment
}
habitCompletions {
...HabitCompletionFragment
}
habitStreak
imageUrl
kind {
...GoalTypeFragment
}
lastCheckedInDate
longestHabitStreak
milestones {
...GoalFragment
}
name
parentGoalId
private
publicId
recurrenceDays
recurrenceInterval
recurrenceType
streakFreezesAvailable
streakFreezesUsed
targetAmount
targetDateTime
unit
updatedAtTime
user {
...UserFragment
}
}
}
Variables
{"communityId": 4}
Response
{
"data": {
"communityGoals": [
{
"allEvents": [GoalEvent],
"category": GoalCategory,
"checkedInToday": false,
"comments": [GoalEventComment],
"completed": true,
"completedAtTime": "xyz789",
"completionRate": 123.45,
"content": "abc123",
"createdAtTime": "xyz789",
"currentAmount": 123.45,
"daysToUpdate": 123,
"dueToday": false,
"encouragements": [GoalEventEncouragement],
"events": [GoalEvent],
"habitCompletions": [HabitCompletion],
"habitStreak": 123,
"imageUrl": "abc123",
"kind": GoalType,
"lastCheckedInDate": "abc123",
"longestHabitStreak": 123,
"milestones": [Goal],
"name": "abc123",
"parentGoalId": "xyz789",
"private": true,
"publicId": "4",
"recurrenceDays": ["xyz789"],
"recurrenceInterval": 123,
"recurrenceType": "abc123",
"streakFreezesAvailable": 123,
"streakFreezesUsed": 123,
"targetAmount": 987.65,
"targetDateTime": "xyz789",
"unit": "xyz789",
"updatedAtTime": "abc123",
"user": User
}
]
}
}
communityInsights
Description
Returns community engagement insights and recommendations for a user.
Response
Returns a CommunityInsights
Arguments
| Name | Description |
|---|---|
userId - ID!
|
public_id of the user to generate insights for. |
Example
Query
query communityInsights($userId: ID!) {
communityInsights(userId: $userId) {
achievementsUnlocked
communitiesJoined
postsThisWeek
suggestedCommunities {
...SuggestedCommunityFragment
}
totalEngagement
trendingCommunities {
...TrendingCommunityFragment
}
upcomingEvents {
...CommunityEventFragment
}
yourActivity {
...UserActivityFragment
}
}
}
Variables
{"userId": 4}
Response
{
"data": {
"communityInsights": {
"achievementsUnlocked": 987,
"communitiesJoined": 123,
"postsThisWeek": 123,
"suggestedCommunities": [SuggestedCommunity],
"totalEngagement": 987,
"trendingCommunities": [TrendingCommunity],
"upcomingEvents": [CommunityEvent],
"yourActivity": [UserActivity]
}
}
}
communityMemberCheck
Description
Checks whether a given user is a member of a community.
Response
Returns a Result
Example
Query
query communityMemberCheck(
$cid: ID!,
$id: ID
) {
communityMemberCheck(
cid: $cid,
id: $id
) {
success
}
}
Variables
{
"cid": "4",
"id": "4"
}
Response
{"data": {"communityMemberCheck": {"success": true}}}
communityMembers
Description
Returns all members of a community.
Response
Returns [CommunityMember!]
Arguments
| Name | Description |
|---|---|
communityId - ID!
|
public_id of the community. |
Example
Query
query communityMembers($communityId: ID!) {
communityMembers(communityId: $communityId) {
createdAtTime
goalsCompleted
helpfulCount
id
joinedDate
points
postsCount
rank
role
updatedAtTime
user {
...UserFragment
}
}
}
Variables
{"communityId": "4"}
Response
{
"data": {
"communityMembers": [
{
"createdAtTime": "abc123",
"goalsCompleted": 123,
"helpfulCount": 123,
"id": "4",
"joinedDate": "abc123",
"points": 987,
"postsCount": 123,
"rank": 123,
"role": "xyz789",
"updatedAtTime": "abc123",
"user": User
}
]
}
}
communitySuggestions
Description
Returns communities suggested for a user based on their goals and interests.
Response
Returns [CommunitySuggestion!]
Arguments
| Name | Description |
|---|---|
userId - ID
|
public_id of the user to generate suggestions for. Defaults to the current user. |
Example
Query
query communitySuggestions($userId: ID) {
communitySuggestions(userId: $userId) {
content
goalCategory {
...GoalCategoryFragment
}
goalKind {
...GoalTypeFragment
}
id
}
}
Variables
{"userId": 4}
Response
{
"data": {
"communitySuggestions": [
{
"content": "abc123",
"goalCategory": GoalCategory,
"goalKind": GoalType,
"id": 4
}
]
}
}
goal
Description
Fetches a private goal owned by the authenticated user.
Example
Query
query goal($id: ID!) {
goal(id: $id) {
allEvents {
...GoalEventFragment
}
category {
...GoalCategoryFragment
}
checkedInToday
comments {
...GoalEventCommentFragment
}
completed
completedAtTime
completionRate
content
createdAtTime
currentAmount
daysToUpdate
dueToday
encouragements {
...GoalEventEncouragementFragment
}
events {
...GoalEventFragment
}
habitCompletions {
...HabitCompletionFragment
}
habitStreak
imageUrl
kind {
...GoalTypeFragment
}
lastCheckedInDate
longestHabitStreak
milestones {
...GoalFragment
}
name
parentGoalId
private
publicId
recurrenceDays
recurrenceInterval
recurrenceType
streakFreezesAvailable
streakFreezesUsed
targetAmount
targetDateTime
unit
updatedAtTime
user {
...UserFragment
}
}
}
Variables
{"id": 4}
Response
{
"data": {
"goal": {
"allEvents": [GoalEvent],
"category": GoalCategory,
"checkedInToday": false,
"comments": [GoalEventComment],
"completed": false,
"completedAtTime": "xyz789",
"completionRate": 123.45,
"content": "xyz789",
"createdAtTime": "xyz789",
"currentAmount": 987.65,
"daysToUpdate": 987,
"dueToday": true,
"encouragements": [GoalEventEncouragement],
"events": [GoalEvent],
"habitCompletions": [HabitCompletion],
"habitStreak": 987,
"imageUrl": "xyz789",
"kind": GoalType,
"lastCheckedInDate": "abc123",
"longestHabitStreak": 123,
"milestones": [Goal],
"name": "xyz789",
"parentGoalId": "xyz789",
"private": true,
"publicId": 4,
"recurrenceDays": ["abc123"],
"recurrenceInterval": 987,
"recurrenceType": "abc123",
"streakFreezesAvailable": 987,
"streakFreezesUsed": 987,
"targetAmount": 987.65,
"targetDateTime": "xyz789",
"unit": "abc123",
"updatedAtTime": "xyz789",
"user": User
}
}
}
goalCategories
Description
Returns all available goal categories (fitness, learning, personal, etc.).
Response
Returns [GoalCategory!]
Example
Query
query goalCategories {
goalCategories {
id
name
}
}
Response
{
"data": {
"goalCategories": [
{"id": 4, "name": "abc123"}
]
}
}
goalEvent
Description
Fetches a single goal progress event by public_id.
Response
Returns a GoalEvent
Arguments
| Name | Description |
|---|---|
id - ID!
|
public_id of the goal event to retrieve. |
Example
Query
query goalEvent($id: ID!) {
goalEvent(id: $id) {
comments {
...GoalEventCommentFragment
}
content
createdAtTime
encouragements {
...GoalEventEncouragementFragment
}
goal {
...GoalFragment
}
id
media {
...GoalMediaFragment
}
milestoneName
mood
publicId
}
}
Variables
{"id": 4}
Response
{
"data": {
"goalEvent": {
"comments": [GoalEventComment],
"content": "xyz789",
"createdAtTime": "abc123",
"encouragements": [GoalEventEncouragement],
"goal": Goal,
"id": 4,
"media": GoalMedia,
"milestoneName": "abc123",
"mood": "abc123",
"publicId": 4
}
}
}
goalKinds
Description
Returns all available goal types/kinds (habit, milestone, quantity, etc.).
Response
Returns [GoalType!]
Example
Query
query goalKinds {
goalKinds {
description
displayNumber
id
name
}
}
Response
{
"data": {
"goalKinds": [
{
"description": "xyz789",
"displayNumber": 123,
"id": 4,
"name": "xyz789"
}
]
}
}
goalProgressData
Description
Returns progress visualization data for a goal.
Response
Returns a GoalProgressData
Example
Query
query goalProgressData(
$id: ID!,
$lookbackDays: Int,
$period: String
) {
goalProgressData(
id: $id,
lookbackDays: $lookbackDays,
period: $period
) {
averagePerWeek
dataPoints {
...ProgressDataPointFragment
}
pace
streakData {
...ProgressDataPointFragment
}
totalEvents
}
}
Variables
{
"id": 4,
"lookbackDays": 123,
"period": "abc123"
}
Response
{
"data": {
"goalProgressData": {
"averagePerWeek": 987.65,
"dataPoints": [ProgressDataPoint],
"pace": "xyz789",
"streakData": [ProgressDataPoint],
"totalEvents": 987
}
}
}
goals
Description
Lists top-level goals (no parent) for the authenticated user or a specified user (admin only).
Response
Returns [Goal!]
Arguments
| Name | Description |
|---|---|
userId - ID
|
public_id of the user whose goals to retrieve. Omit to use the current user. |
Example
Query
query goals($userId: ID) {
goals(userId: $userId) {
allEvents {
...GoalEventFragment
}
category {
...GoalCategoryFragment
}
checkedInToday
comments {
...GoalEventCommentFragment
}
completed
completedAtTime
completionRate
content
createdAtTime
currentAmount
daysToUpdate
dueToday
encouragements {
...GoalEventEncouragementFragment
}
events {
...GoalEventFragment
}
habitCompletions {
...HabitCompletionFragment
}
habitStreak
imageUrl
kind {
...GoalTypeFragment
}
lastCheckedInDate
longestHabitStreak
milestones {
...GoalFragment
}
name
parentGoalId
private
publicId
recurrenceDays
recurrenceInterval
recurrenceType
streakFreezesAvailable
streakFreezesUsed
targetAmount
targetDateTime
unit
updatedAtTime
user {
...UserFragment
}
}
}
Variables
{"userId": "4"}
Response
{
"data": {
"goals": [
{
"allEvents": [GoalEvent],
"category": GoalCategory,
"checkedInToday": true,
"comments": [GoalEventComment],
"completed": false,
"completedAtTime": "abc123",
"completionRate": 123.45,
"content": "xyz789",
"createdAtTime": "xyz789",
"currentAmount": 987.65,
"daysToUpdate": 123,
"dueToday": true,
"encouragements": [GoalEventEncouragement],
"events": [GoalEvent],
"habitCompletions": [HabitCompletion],
"habitStreak": 123,
"imageUrl": "xyz789",
"kind": GoalType,
"lastCheckedInDate": "abc123",
"longestHabitStreak": 123,
"milestones": [Goal],
"name": "abc123",
"parentGoalId": "xyz789",
"private": false,
"publicId": 4,
"recurrenceDays": ["abc123"],
"recurrenceInterval": 123,
"recurrenceType": "abc123",
"streakFreezesAvailable": 123,
"streakFreezesUsed": 987,
"targetAmount": 987.65,
"targetDateTime": "abc123",
"unit": "xyz789",
"updatedAtTime": "abc123",
"user": User
}
]
}
}
isFollowingGoal
Description
Checks whether the authenticated user is currently following a goal.
publicGoal
Description
Fetches a publicly visible goal by public_id. Returns an error if the goal is private.
Example
Query
query publicGoal($id: ID!) {
publicGoal(id: $id) {
allEvents {
...GoalEventFragment
}
category {
...GoalCategoryFragment
}
checkedInToday
comments {
...GoalEventCommentFragment
}
completed
completedAtTime
completionRate
content
createdAtTime
currentAmount
daysToUpdate
dueToday
encouragements {
...GoalEventEncouragementFragment
}
events {
...GoalEventFragment
}
habitCompletions {
...HabitCompletionFragment
}
habitStreak
imageUrl
kind {
...GoalTypeFragment
}
lastCheckedInDate
longestHabitStreak
milestones {
...GoalFragment
}
name
parentGoalId
private
publicId
recurrenceDays
recurrenceInterval
recurrenceType
streakFreezesAvailable
streakFreezesUsed
targetAmount
targetDateTime
unit
updatedAtTime
user {
...UserFragment
}
}
}
Variables
{"id": 4}
Response
{
"data": {
"publicGoal": {
"allEvents": [GoalEvent],
"category": GoalCategory,
"checkedInToday": false,
"comments": [GoalEventComment],
"completed": false,
"completedAtTime": "abc123",
"completionRate": 987.65,
"content": "abc123",
"createdAtTime": "abc123",
"currentAmount": 123.45,
"daysToUpdate": 987,
"dueToday": false,
"encouragements": [GoalEventEncouragement],
"events": [GoalEvent],
"habitCompletions": [HabitCompletion],
"habitStreak": 123,
"imageUrl": "abc123",
"kind": GoalType,
"lastCheckedInDate": "xyz789",
"longestHabitStreak": 987,
"milestones": [Goal],
"name": "abc123",
"parentGoalId": "xyz789",
"private": false,
"publicId": 4,
"recurrenceDays": ["xyz789"],
"recurrenceInterval": 123,
"recurrenceType": "abc123",
"streakFreezesAvailable": 123,
"streakFreezesUsed": 123,
"targetAmount": 123.45,
"targetDateTime": "abc123",
"unit": "xyz789",
"updatedAtTime": "xyz789",
"user": User
}
}
}
recommendedCommunities
Description
Returns communities recommended for a user based on their goal interests.
Response
Returns [SuggestedCommunity!]
Example
Query
query recommendedCommunities(
$limit: Int,
$userId: ID!
) {
recommendedCommunities(
limit: $limit,
userId: $userId
) {
activeMembers
category
coverImage
description
isRecommended
matchScore
members {
...UserFragment
}
mutualAllies
name
publicId
}
}
Variables
{"limit": 123, "userId": 4}
Response
{
"data": {
"recommendedCommunities": [
{
"activeMembers": 123,
"category": "abc123",
"coverImage": "xyz789",
"description": "xyz789",
"isRecommended": true,
"matchScore": 987,
"members": [User],
"mutualAllies": 987,
"name": "xyz789",
"publicId": "4"
}
]
}
}
trendingCommunities
Description
Returns communities with the highest recent growth or activity.
Response
Returns [TrendingCommunity!]
Arguments
| Name | Description |
|---|---|
limit - Int
|
Maximum number of trending communities to return. Defaults to 5. |
Example
Query
query trendingCommunities($limit: Int) {
trendingCommunities(limit: $limit) {
activeMembers
category
coverImage
description
growthRate
isTrending
name
publicId
totalGoals
totalMembers
}
}
Variables
{"limit": 123}
Response
{
"data": {
"trendingCommunities": [
{
"activeMembers": 987,
"category": "abc123",
"coverImage": "abc123",
"description": "abc123",
"growthRate": 987.65,
"isTrending": true,
"name": "xyz789",
"publicId": "4",
"totalGoals": 987,
"totalMembers": 987
}
]
}
}
user
Description
Fetches a user by public_id. Requires authentication; admins can fetch any user.
Example
Query
query user($id: ID!) {
user(id: $id) {
actions {
...UserActionFragment
}
admin
createdAtTime
details {
...UserDetailFragment
}
email
emailVerified
feedItems {
...UserFeedItemFragment
}
firstName
goals {
...GoalFragment
}
lastName
level
longestStreak
nextLevelThreshold
notifications {
...UserNotificationFragment
}
photo {
...UserPhotoFragment
}
progressToNextLevel
publicId
showcasedAchievements
signInDates
stats {
...UserStatsFragment
}
streak
updatedAtTime
username
xp
}
}
Variables
{"id": 4}
Response
{
"data": {
"user": {
"actions": [UserAction],
"admin": true,
"createdAtTime": "xyz789",
"details": UserDetail,
"email": "xyz789",
"emailVerified": true,
"feedItems": [UserFeedItem],
"firstName": "abc123",
"goals": [Goal],
"lastName": "xyz789",
"level": 123,
"longestStreak": 987,
"nextLevelThreshold": 123,
"notifications": [UserNotification],
"photo": UserPhoto,
"progressToNextLevel": 123.45,
"publicId": "4",
"showcasedAchievements": ["abc123"],
"signInDates": ["abc123"],
"stats": UserStats,
"streak": 987,
"updatedAtTime": "abc123",
"username": "abc123",
"xp": 123
}
}
}
userAllies
Description
Returns a user's accepted ally (friend) connections.
Response
Returns [UserAlly!]
Arguments
| Name | Description |
|---|---|
userId - ID!
|
public_id of the user whose allies to retrieve. |
Example
Query
query userAllies($userId: ID!) {
userAllies(userId: $userId) {
firstName
id
lastName
mutualCount
photo {
...UserPhotoFragment
}
publicId
username
}
}
Variables
{"userId": 4}
Response
{
"data": {
"userAllies": [
{
"firstName": "xyz789",
"id": 4,
"lastName": "xyz789",
"mutualCount": 123,
"photo": UserPhoto,
"publicId": "xyz789",
"username": "abc123"
}
]
}
}
users
Description
Returns all users. Admin only.
Response
Returns [User!]
Example
Query
query users {
users {
actions {
...UserActionFragment
}
admin
createdAtTime
details {
...UserDetailFragment
}
email
emailVerified
feedItems {
...UserFeedItemFragment
}
firstName
goals {
...GoalFragment
}
lastName
level
longestStreak
nextLevelThreshold
notifications {
...UserNotificationFragment
}
photo {
...UserPhotoFragment
}
progressToNextLevel
publicId
showcasedAchievements
signInDates
stats {
...UserStatsFragment
}
streak
updatedAtTime
username
xp
}
}
Response
{
"data": {
"users": [
{
"actions": [UserAction],
"admin": true,
"createdAtTime": "abc123",
"details": UserDetail,
"email": "abc123",
"emailVerified": false,
"feedItems": [UserFeedItem],
"firstName": "abc123",
"goals": [Goal],
"lastName": "abc123",
"level": 123,
"longestStreak": 123,
"nextLevelThreshold": 987,
"notifications": [UserNotification],
"photo": UserPhoto,
"progressToNextLevel": 987.65,
"publicId": 4,
"showcasedAchievements": ["abc123"],
"signInDates": ["xyz789"],
"stats": UserStats,
"streak": 123,
"updatedAtTime": "abc123",
"username": "xyz789",
"xp": 987
}
]
}
}
wordCloud
Description
Generates word frequency data from a model column for admin analytics.
Response
Returns [WordCloud!]
Example
Query
query wordCloud(
$column: String!,
$model: String!
) {
wordCloud(
column: $column,
model: $model
) {
name
value
}
}
Variables
{
"column": "abc123",
"model": "xyz789"
}
Response
{
"data": {
"wordCloud": [
{"name": "abc123", "value": 987}
]
}
}
Mutations
acknowledgeAction
Description
Marks a gamification action as acknowledged, clearing it from the user action queue.
Response
Returns an AcknowledgeActionPayload!
Arguments
| Name | Description |
|---|---|
id - ID!
|
The public ID of the user action to acknowledge. |
Example
Query
mutation acknowledgeAction($id: ID!) {
acknowledgeAction(id: $id) {
errors
result {
...ResultFragment
}
}
}
Variables
{"id": 4}
Response
{
"data": {
"acknowledgeAction": {
"errors": ["xyz789"],
"result": Result
}
}
}
acknowledgeNotification
Description
Marks a notification as acknowledged (read/dismissed) for the authenticated user.
Response
Returns an AcknowledgeNotificationPayload!
Arguments
| Name | Description |
|---|---|
id - ID!
|
The public ID of the notification to acknowledge. |
Example
Query
mutation acknowledgeNotification($id: ID!) {
acknowledgeNotification(id: $id) {
errors
result {
...ResultFragment
}
}
}
Variables
{"id": 4}
Response
{
"data": {
"acknowledgeNotification": {
"errors": ["xyz789"],
"result": Result
}
}
}
addCommunitySuggestion
Description
Submits a suggestion for a new community topic or interest area.
Response
Returns an AddCommunitySuggestionPayload!
Example
Query
mutation addCommunitySuggestion(
$content: String!,
$goalCategoryId: ID,
$goalTypeId: ID
) {
addCommunitySuggestion(
content: $content,
goalCategoryId: $goalCategoryId,
goalTypeId: $goalTypeId
) {
communitySuggestion {
...CommunitySuggestionFragment
}
errors
}
}
Variables
{
"content": "abc123",
"goalCategoryId": 4,
"goalTypeId": "4"
}
Response
{
"data": {
"addCommunitySuggestion": {
"communitySuggestion": CommunitySuggestion,
"errors": ["xyz789"]
}
}
}
addGoal
Description
Creates a new goal for the authenticated user.
Response
Returns an AddGoalPayload!
Arguments
| Name | Description |
|---|---|
content - String
|
Optional longer description or motivation note. |
daysToUpdate - Int
|
How frequently in days the user plans to log progress. |
goalCategoryId - ID
|
ID of the goal category (fitness, learning, etc.). Fetch options via goalCategories query. |
goalTypeId - ID
|
ID of the goal type (habit, milestone, quantity). Fetch options via goalKinds query. |
imageUrl - String
|
URL of a cover image for the goal. |
name - String!
|
Display name of the goal (e.g. "Run a 5K"). |
parentGoalId - ID
|
public_id of a parent goal to nest this under as a milestone. |
private - Boolean
|
When true, the goal is visible only to the owner. Defaults to false. |
recurrenceDays - [String!]
|
Days 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 for habits: daily, weekly, custom_days, or interval. |
targetDate - String
|
ISO date string for the target completion date (e.g. "2026-12-31"). |
userId - ID!
|
public_id of the user creating the goal. Must match the authenticated user. |
Example
Query
mutation addGoal(
$content: String,
$daysToUpdate: Int,
$goalCategoryId: ID,
$goalTypeId: ID,
$imageUrl: String,
$name: String!,
$parentGoalId: ID,
$private: Boolean,
$recurrenceDays: [String!],
$recurrenceInterval: Int,
$recurrenceType: String,
$targetDate: String,
$userId: ID!
) {
addGoal(
content: $content,
daysToUpdate: $daysToUpdate,
goalCategoryId: $goalCategoryId,
goalTypeId: $goalTypeId,
imageUrl: $imageUrl,
name: $name,
parentGoalId: $parentGoalId,
private: $private,
recurrenceDays: $recurrenceDays,
recurrenceInterval: $recurrenceInterval,
recurrenceType: $recurrenceType,
targetDate: $targetDate,
userId: $userId
) {
errors
goal {
...GoalFragment
}
}
}
Variables
{
"content": "abc123",
"daysToUpdate": 987,
"goalCategoryId": 4,
"goalTypeId": "4",
"imageUrl": "xyz789",
"name": "abc123",
"parentGoalId": "4",
"private": true,
"recurrenceDays": ["abc123"],
"recurrenceInterval": 123,
"recurrenceType": "abc123",
"targetDate": "xyz789",
"userId": 4
}
Response
{
"data": {
"addGoal": {
"errors": ["abc123"],
"goal": Goal
}
}
}
addGoalEvent
Description
Logs a progress event for a goal. Each event is immutable once created.
Response
Returns an AddGoalEventPayload!
Arguments
| Name | Description |
|---|---|
content - String!
|
The progress update text describing what was accomplished. |
goalId - ID!
|
public_id of the goal this progress event belongs to. |
imageUrl - String
|
Optional URL of an image to attach to the progress event. |
mood - String
|
Optional mood at the time of logging (e.g. amazing, happy, calm, meh, tired, low). |
Example
Query
mutation addGoalEvent(
$content: String!,
$goalId: ID!,
$imageUrl: String,
$mood: String
) {
addGoalEvent(
content: $content,
goalId: $goalId,
imageUrl: $imageUrl,
mood: $mood
) {
errors
goalEvent {
...GoalEventFragment
}
}
}
Variables
{
"content": "xyz789",
"goalId": 4,
"imageUrl": "xyz789",
"mood": "xyz789"
}
Response
{
"data": {
"addGoalEvent": {
"errors": ["abc123"],
"goalEvent": GoalEvent
}
}
}
addGoalEventComment
Description
Adds a comment to a goal progress event.
Response
Returns an AddGoalEventCommentPayload!
Example
Query
mutation addGoalEventComment(
$content: String,
$goalEventId: ID!
) {
addGoalEventComment(
content: $content,
goalEventId: $goalEventId
) {
errors
goalEventComment {
...GoalEventCommentFragment
}
}
}
Variables
{
"content": "abc123",
"goalEventId": "4"
}
Response
{
"data": {
"addGoalEventComment": {
"errors": ["xyz789"],
"goalEventComment": GoalEventComment
}
}
}
addGoalToCommunity
Description
Shares an existing goal into a community feed.
Response
Returns an AddGoalToCommunityPayload!
Example
Query
mutation addGoalToCommunity(
$communityId: ID!,
$goalId: ID!
) {
addGoalToCommunity(
communityId: $communityId,
goalId: $goalId
) {
communityGoal {
...CommunityGoalFragment
}
errors
}
}
Variables
{"communityId": "4", "goalId": 4}
Response
{
"data": {
"addGoalToCommunity": {
"communityGoal": CommunityGoal,
"errors": ["xyz789"]
}
}
}
addMoodLog
Description
Records a mood check-in for the authenticated user. Mood options: amazing, happy, calm, meh, tired, low.
Response
Returns an AddMoodLogPayload!
Arguments
| Name | Description |
|---|---|
goalId - ID
|
Optional public ID of a goal to associate with this mood check-in. |
mood - String!
|
The mood value for this check-in. Accepted values: amazing, happy, calm, meh, tired, low. |
note - String
|
An optional free-text note accompanying the mood entry (max 300 characters). |
Example
Query
mutation addMoodLog(
$goalId: ID,
$mood: String!,
$note: String
) {
addMoodLog(
goalId: $goalId,
mood: $mood,
note: $note
) {
errors
moodLog {
...MoodLogFragment
}
}
}
Variables
{
"goalId": "4",
"mood": "abc123",
"note": "xyz789"
}
Response
{
"data": {
"addMoodLog": {
"errors": ["abc123"],
"moodLog": MoodLog
}
}
}
checkInHabit
Description
Records a one-tap check-in for a habit goal.
Response
Returns a CheckInHabitPayload!
Arguments
| Name | Description |
|---|---|
goalId - ID!
|
public_id of the habit goal to check in. |
Example
Query
mutation checkInHabit($goalId: ID!) {
checkInHabit(goalId: $goalId) {
errors
goal {
...GoalFragment
}
goalEvent {
...GoalEventFragment
}
}
}
Variables
{"goalId": 4}
Response
{
"data": {
"checkInHabit": {
"errors": ["xyz789"],
"goal": Goal,
"goalEvent": GoalEvent
}
}
}
checkValidUsername
Description
Checks whether a username is available and meets formatting requirements.
Response
Returns a CheckValidUsernamePayload!
Arguments
| Name | Description |
|---|---|
username - String!
|
The username to check for availability and format validity. |
Example
Query
mutation checkValidUsername($username: String!) {
checkValidUsername(username: $username) {
errors
result {
...ResultFragment
}
}
}
Variables
{"username": "abc123"}
Response
{
"data": {
"checkValidUsername": {
"errors": ["abc123"],
"result": Result
}
}
}
createCommunity
Description
Creates a new community that users can join to share goals and support each other.
Response
Returns a CreateCommunityPayload!
Arguments
| Name | Description |
|---|---|
category - String!
|
The interest category that best represents this community (e.g. fitness, learning, wellness). |
coverImageUrl - String
|
Optional URL for the community cover or banner image. |
description - String!
|
A short description of the community purpose and focus. |
guidelines - String
|
Optional community rules or participation guidelines shown to members. |
name - String!
|
The display name of the community. |
privacy - String!
|
Visibility setting for the community. Accepted values: public or private. |
Example
Query
mutation createCommunity(
$category: String!,
$coverImageUrl: String,
$description: String!,
$guidelines: String,
$name: String!,
$privacy: String!
) {
createCommunity(
category: $category,
coverImageUrl: $coverImageUrl,
description: $description,
guidelines: $guidelines,
name: $name,
privacy: $privacy
) {
community {
...CommunityFragment
}
errors
}
}
Variables
{
"category": "abc123",
"coverImageUrl": "xyz789",
"description": "xyz789",
"guidelines": "abc123",
"name": "abc123",
"privacy": "abc123"
}
Response
{
"data": {
"createCommunity": {
"community": Community,
"errors": ["xyz789"]
}
}
}
createCommunityPost
Description
Creates a post in a community. Supports text updates and goal shares.
Response
Returns a CreateCommunityPostPayload!
Arguments
| Name | Description |
|---|---|
communityId - ID!
|
The public ID of the community in which to create the post. |
content - String!
|
The text body of the post. |
type - String!
|
The post type. Accepted values: update (text post) or goal_share (sharing a goal with the community). |
userId - ID!
|
The public ID of the user authoring the post. |
Example
Query
mutation createCommunityPost(
$communityId: ID!,
$content: String!,
$type: String!,
$userId: ID!
) {
createCommunityPost(
communityId: $communityId,
content: $content,
type: $type,
userId: $userId
) {
errors
post {
...CommunityPostFragment
}
}
}
Variables
{
"communityId": "4",
"content": "abc123",
"type": "xyz789",
"userId": "4"
}
Response
{
"data": {
"createCommunityPost": {
"errors": ["xyz789"],
"post": CommunityPost
}
}
}
deleteNotification
Description
Permanently deletes a notification record for the authenticated user.
Response
Returns a DeleteNotificationPayload!
Arguments
| Name | Description |
|---|---|
id - ID!
|
The public ID of the notification to delete. |
Example
Query
mutation deleteNotification($id: ID!) {
deleteNotification(id: $id) {
errors
result {
...ResultFragment
}
}
}
Variables
{"id": "4"}
Response
{
"data": {
"deleteNotification": {
"errors": ["abc123"],
"result": Result
}
}
}
followCommunity
Description
Follows a community to receive updates without becoming a full member.
Response
Returns a FollowCommunityPayload!
Example
Query
mutation followCommunity(
$communityId: ID!,
$userId: ID!
) {
followCommunity(
communityId: $communityId,
userId: $userId
) {
result {
...ResultFragment
}
}
}
Variables
{"communityId": 4, "userId": 4}
Response
{"data": {"followCommunity": {"result": Result}}}
generateMilestones
Description
Uses AI to generate a suggested list of milestone sub-goals for a given goal.
Response
Returns a GenerateMilestonesPayload!
Example
Query
mutation generateMilestones(
$goalContext: String,
$goalName: String!
) {
generateMilestones(
goalContext: $goalContext,
goalName: $goalName
) {
milestones
}
}
Variables
{
"goalContext": "abc123",
"goalName": "abc123"
}
Response
{
"data": {
"generateMilestones": {
"milestones": ["xyz789"]
}
}
}
getAdvice
Description
Uses AI to provide personalized advice and tips for making progress on a goal.
Response
Returns a GetAdvicePayload!
Arguments
| Name | Description |
|---|---|
userContext - String!
|
A description of the user current situation, goal, or challenge for which advice is requested. |
Example
Query
mutation getAdvice($userContext: String!) {
getAdvice(userContext: $userContext) {
advice
}
}
Variables
{"userContext": "xyz789"}
Response
{
"data": {
"getAdvice": {"advice": "abc123"}
}
}
getInsight
Description
Uses AI to generate insights about the user progress, patterns, and trends across their goals.
Response
Returns a GetInsightPayload!
Arguments
| Name | Description |
|---|---|
pageContext - String!
|
A string describing the current page or view the user is on, used to tailor the insight to what they are looking at (e.g. "goals dashboard", "mood log history"). |
Example
Query
mutation getInsight($pageContext: String!) {
getInsight(pageContext: $pageContext) {
ctaLabel
insightId
insightType
message
title
}
}
Variables
{"pageContext": "xyz789"}
Response
{
"data": {
"getInsight": {
"ctaLabel": "xyz789",
"insightId": "abc123",
"insightType": "abc123",
"message": "abc123",
"title": "xyz789"
}
}
}
joinCommunity
Description
Joins the authenticated user to an existing community.
Response
Returns a JoinCommunityPayload!
Example
Query
mutation joinCommunity(
$communityId: ID!,
$userId: ID!
) {
joinCommunity(
communityId: $communityId,
userId: $userId
) {
errors
result {
...ResultFragment
}
}
}
Variables
{"communityId": 4, "userId": 4}
Response
{
"data": {
"joinCommunity": {
"errors": ["abc123"],
"result": Result
}
}
}
leaveCommunity
Description
Removes the authenticated user from a community they are a member of.
Response
Returns a LeaveCommunityPayload!
Example
Query
mutation leaveCommunity(
$communityId: ID!,
$userId: ID!
) {
leaveCommunity(
communityId: $communityId,
userId: $userId
) {
result {
...ResultFragment
}
}
}
Variables
{"communityId": 4, "userId": 4}
Response
{"data": {"leaveCommunity": {"result": Result}}}
refineDescription
Description
Uses AI to refine or generate a compelling goal description.
Response
Returns a RefineDescriptionPayload!
Example
Query
mutation refineDescription(
$currentDescription: String,
$goalName: String!
) {
refineDescription(
currentDescription: $currentDescription,
goalName: $goalName
) {
description
}
}
Variables
{
"currentDescription": "xyz789",
"goalName": "xyz789"
}
Response
{
"data": {
"refineDescription": {
"description": "abc123"
}
}
}
storeDeviceToken
Description
Registers a device push notification token for the authenticated user (iOS/Android).
Response
Returns a StoreDeviceTokenPayload!
Example
Query
mutation storeDeviceToken(
$deviceToken: ID!,
$platform: String,
$userId: ID
) {
storeDeviceToken(
deviceToken: $deviceToken,
platform: $platform,
userId: $userId
) {
errors
result {
...ResultFragment
}
}
}
Variables
{
"deviceToken": "4",
"platform": "xyz789",
"userId": "4"
}
Response
{
"data": {
"storeDeviceToken": {
"errors": ["xyz789"],
"result": Result
}
}
}
storeUserDetails
Description
Stores or updates arbitrary metadata on the user details JSON blob (e.g. onboarding state, preferences).
Response
Returns a StoreUserDetailsPayload!
Example
Query
mutation storeUserDetails(
$appFeedback: String,
$appVersion: String
) {
storeUserDetails(
appFeedback: $appFeedback,
appVersion: $appVersion
) {
errors
result {
...ResultFragment
}
}
}
Variables
{
"appFeedback": "abc123",
"appVersion": "xyz789"
}
Response
{
"data": {
"storeUserDetails": {
"errors": ["xyz789"],
"result": Result
}
}
}
syncUser
Description
Syncs the authenticated Clerk user with the local database. Returns first_sign_in for onboarding detection.
Response
Returns a SyncUserPayload!
Example
Query
mutation syncUser {
syncUser {
errors
firstSignIn
user {
...UserFragment
}
}
}
Response
{
"data": {
"syncUser": {
"errors": ["xyz789"],
"firstSignIn": false,
"user": User
}
}
}
toggleFollowGoal
Description
Follows or unfollows a goal. Toggles the follow state for the authenticated user.
Response
Returns a ToggleFollowGoalPayload!
Arguments
| Name | Description |
|---|---|
goalId - ID!
|
public_id of the goal to follow or unfollow. |
Example
Query
mutation toggleFollowGoal($goalId: ID!) {
toggleFollowGoal(goalId: $goalId) {
errors
result {
...ResultFragment
}
}
}
Variables
{"goalId": "4"}
Response
{
"data": {
"toggleFollowGoal": {
"errors": ["abc123"],
"result": Result
}
}
}
toggleGoalEventEncouragement
Description
Toggles an encouragement (like/cheer) reaction on a goal event. Creates one if absent, removes it if present.
Response
Returns a ToggleGoalEventEncouragementPayload!
Arguments
| Name | Description |
|---|---|
goalEventId - ID!
|
public_id of the goal event to encourage or un-encourage. |
Example
Query
mutation toggleGoalEventEncouragement($goalEventId: ID!) {
toggleGoalEventEncouragement(goalEventId: $goalEventId) {
errors
goalEventEncouragement {
...GoalEventEncouragementFragment
}
}
}
Variables
{"goalEventId": "4"}
Response
{
"data": {
"toggleGoalEventEncouragement": {
"errors": ["xyz789"],
"goalEventEncouragement": GoalEventEncouragement
}
}
}
unfollowCommunity
Description
Unfollows a community the authenticated user is currently following.
Response
Returns an UnfollowCommunityPayload!
Example
Query
mutation unfollowCommunity(
$communityId: ID!,
$userId: ID!
) {
unfollowCommunity(
communityId: $communityId,
userId: $userId
) {
result {
...ResultFragment
}
}
}
Variables
{"communityId": "4", "userId": 4}
Response
{"data": {"unfollowCommunity": {"result": Result}}}
updateGoal
Description
Updates an existing goal owned by the authenticated user.
Response
Returns an UpdateGoalPayload!
Arguments
| Name | Description |
|---|---|
completed - Boolean
|
When true, marks the goal as completed. |
content - String
|
Updated description or motivation note. |
daysToUpdate - Int
|
Updated frequency in days that the user plans to log progress. |
deleted - Boolean
|
When true, soft-deletes the goal. |
goalCategoryId - ID
|
Updated goal category ID. Fetch options via goalCategories query. |
goalId - ID!
|
public_id of the goal to update. |
goalTypeId - ID
|
Updated goal type ID. Fetch options via goalKinds query. |
imageUrl - String
|
Updated URL of a cover image for the goal. |
name - String
|
Updated display name for the goal. |
private - Boolean
|
When true, the goal is visible only to the owner. |
recurrenceDays - [String!]
|
Updated days for weekly/custom_days recurrence. |
recurrenceInterval - Int
|
Updated number of days between check-ins for interval recurrence. |
recurrenceType - String
|
Updated recurrence pattern for habits: daily, weekly, custom_days, or interval. |
targetDate - String
|
Updated ISO date string for the target completion date (e.g. "2026-12-31"). |
userId - ID!
|
public_id of the goal owner. Must match the authenticated user. |
Example
Query
mutation updateGoal(
$completed: Boolean,
$content: String,
$daysToUpdate: Int,
$deleted: Boolean,
$goalCategoryId: ID,
$goalId: ID!,
$goalTypeId: ID,
$imageUrl: String,
$name: String,
$private: Boolean,
$recurrenceDays: [String!],
$recurrenceInterval: Int,
$recurrenceType: String,
$targetDate: String,
$userId: ID!
) {
updateGoal(
completed: $completed,
content: $content,
daysToUpdate: $daysToUpdate,
deleted: $deleted,
goalCategoryId: $goalCategoryId,
goalId: $goalId,
goalTypeId: $goalTypeId,
imageUrl: $imageUrl,
name: $name,
private: $private,
recurrenceDays: $recurrenceDays,
recurrenceInterval: $recurrenceInterval,
recurrenceType: $recurrenceType,
targetDate: $targetDate,
userId: $userId
) {
errors
goal {
...GoalFragment
}
}
}
Variables
{
"completed": false,
"content": "abc123",
"daysToUpdate": 123,
"deleted": true,
"goalCategoryId": "4",
"goalId": 4,
"goalTypeId": 4,
"imageUrl": "xyz789",
"name": "xyz789",
"private": true,
"recurrenceDays": ["xyz789"],
"recurrenceInterval": 987,
"recurrenceType": "xyz789",
"targetDate": "abc123",
"userId": "4"
}
Response
{
"data": {
"updateGoal": {
"errors": ["abc123"],
"goal": Goal
}
}
}
updateGoalEvent
Description
Updates the content or media of an existing goal progress event.
Response
Returns an UpdateGoalEventPayload!
Arguments
| Name | Description |
|---|---|
content - String
|
Updated progress update text. |
deleted - Boolean
|
When true, soft-deletes the goal event. |
goalEventId - ID!
|
public_id of the goal event to update. |
goalId - ID
|
public_id of the goal this event belongs to. |
imageUrl - String
|
Updated URL of an image attached to the progress event. |
Example
Query
mutation updateGoalEvent(
$content: String,
$deleted: Boolean,
$goalEventId: ID!,
$goalId: ID,
$imageUrl: String
) {
updateGoalEvent(
content: $content,
deleted: $deleted,
goalEventId: $goalEventId,
goalId: $goalId,
imageUrl: $imageUrl
) {
errors
goalEvent {
...GoalEventFragment
}
}
}
Variables
{
"content": "xyz789",
"deleted": true,
"goalEventId": 4,
"goalId": "4",
"imageUrl": "xyz789"
}
Response
{
"data": {
"updateGoalEvent": {
"errors": ["abc123"],
"goalEvent": GoalEvent
}
}
}
updateShowcasedAchievements
Description
Updates the list of achievement identifiers the user displays on their public profile.
Response
Returns an UpdateShowcasedAchievementsPayload!
Arguments
| Name | Description |
|---|---|
achievementKeys - [String!]!
|
Ordered list of achievement identifier keys to display on the public profile. |
userId - ID!
|
The public ID of the user whose showcased achievements are being updated. |
Example
Query
mutation updateShowcasedAchievements(
$achievementKeys: [String!]!,
$userId: ID!
) {
updateShowcasedAchievements(
achievementKeys: $achievementKeys,
userId: $userId
) {
errors
success
}
}
Variables
{"achievementKeys": ["abc123"], "userId": 4}
Response
{
"data": {
"updateShowcasedAchievements": {
"errors": ["abc123"],
"success": true
}
}
}
updateUser
Description
Updates profile information for the authenticated user.
Response
Returns an UpdateUserPayload!
Arguments
| Name | Description |
|---|---|
deleteUser - Boolean
|
When true, soft-deletes the user account. |
email - String
|
A new email address for the user account. |
firstName - String
|
The user first name. |
lastName - String
|
The user last name. |
password - String
|
A new password for the user account. |
passwordConfirmation - String
|
Confirmation of the new password. Must match the password argument. |
userId - ID
|
The public ID of the user to update. Defaults to the authenticated user. |
username - String
|
A new unique username for the user. |
Example
Query
mutation updateUser(
$deleteUser: Boolean,
$email: String,
$firstName: String,
$lastName: String,
$password: String,
$passwordConfirmation: String,
$userId: ID,
$username: String
) {
updateUser(
deleteUser: $deleteUser,
email: $email,
firstName: $firstName,
lastName: $lastName,
password: $password,
passwordConfirmation: $passwordConfirmation,
userId: $userId,
username: $username
) {
errors
user {
...UserFragment
}
}
}
Variables
{
"deleteUser": true,
"email": "xyz789",
"firstName": "xyz789",
"lastName": "abc123",
"password": "xyz789",
"passwordConfirmation": "xyz789",
"userId": 4,
"username": "xyz789"
}
Response
{
"data": {
"updateUser": {
"errors": ["xyz789"],
"user": User
}
}
}
updateUserPhoto
Description
Updates the profile photo for the authenticated user.
Response
Returns an UpdateUserPhotoPayload!
Example
Query
mutation updateUserPhoto(
$imageUrl: String,
$userId: ID
) {
updateUserPhoto(
imageUrl: $imageUrl,
userId: $userId
) {
errors
userPhoto {
...UserPhotoFragment
}
}
}
Variables
{"imageUrl": "abc123", "userId": 4}
Response
{
"data": {
"updateUserPhoto": {
"errors": ["abc123"],
"userPhoto": UserPhoto
}
}
}
useStreakFreeze
Description
Uses a streak freeze token to preserve a habit streak on a missed day.
Response
Returns a UseStreakFreezePayload!
Example
Query
mutation useStreakFreeze(
$goalId: ID!,
$missedDate: String!
) {
useStreakFreeze(
goalId: $goalId,
missedDate: $missedDate
) {
errors
goal {
...GoalFragment
}
}
}
Variables
{"goalId": 4, "missedDate": "abc123"}
Response
{
"data": {
"useStreakFreeze": {
"errors": ["abc123"],
"goal": Goal
}
}
}
Subscriptions
actionUpdate
Description
Streams gamification action updates for a user in real time.
Response
Returns a UserAction!
Arguments
| Name | Description |
|---|---|
userId - ID!
|
public_id of the user to subscribe to actions for. |
Example
Query
subscription actionUpdate($userId: ID!) {
actionUpdate(userId: $userId) {
acknowledged
action
createdAtTime
id
}
}
Variables
{"userId": 4}
Response
{
"data": {
"actionUpdate": {
"acknowledged": true,
"action": "xyz789",
"createdAtTime": "xyz789",
"id": 4
}
}
}
notificationUpdate
Description
Streams new notifications for a user in real time.
Response
Returns a UserNotification!
Arguments
| Name | Description |
|---|---|
userId - ID!
|
public_id of the user to subscribe to notifications for. |
Example
Query
subscription notificationUpdate($userId: ID!) {
notificationUpdate(userId: $userId) {
acknowledged
content
createdAtTime
detailsJson
id
kind
}
}
Variables
{"userId": "4"}
Response
{
"data": {
"notificationUpdate": {
"acknowledged": true,
"content": "xyz789",
"createdAtTime": "abc123",
"detailsJson": "xyz789",
"id": "4",
"kind": "xyz789"
}
}
}
Types
AcknowledgeActionPayload
Description
Autogenerated return type of AcknowledgeAction.
Fields
| Field Name | Description |
|---|---|
errors - [String!]!
|
|
result - Result
|
Example
{
"errors": ["xyz789"],
"result": Result
}
AcknowledgeNotificationPayload
Description
Autogenerated return type of AcknowledgeNotification.
Fields
| Field Name | Description |
|---|---|
errors - [String!]!
|
|
result - Result
|
Example
{
"errors": ["abc123"],
"result": Result
}
ActivityItem
AddCommunitySuggestionPayload
Description
Autogenerated return type of AddCommunitySuggestion.
Fields
| Field Name | Description |
|---|---|
communitySuggestion - CommunitySuggestion
|
|
errors - [String!]!
|
Example
{
"communitySuggestion": CommunitySuggestion,
"errors": ["xyz789"]
}
AddGoalEventCommentPayload
Description
Autogenerated return type of AddGoalEventComment.
Fields
| Field Name | Description |
|---|---|
errors - [String!]!
|
|
goalEventComment - GoalEventComment
|
Example
{
"errors": ["abc123"],
"goalEventComment": GoalEventComment
}
AddGoalEventPayload
Description
Autogenerated return type of AddGoalEvent.
Fields
| Field Name | Description |
|---|---|
errors - [String!]!
|
|
goalEvent - GoalEvent
|
Example
{
"errors": ["abc123"],
"goalEvent": GoalEvent
}
AddGoalPayload
Description
Autogenerated return type of AddGoal.
Fields
| Field Name | Description |
|---|---|
errors - [String!]!
|
|
goal - Goal
|
Example
{
"errors": ["abc123"],
"goal": Goal
}
AddGoalToCommunityPayload
Description
Autogenerated return type of AddGoalToCommunity.
Fields
| Field Name | Description |
|---|---|
communityGoal - CommunityGoal
|
|
errors - [String!]!
|
Example
{
"communityGoal": CommunityGoal,
"errors": ["abc123"]
}
AddMoodLogPayload
Description
Autogenerated return type of AddMoodLog.
Fields
| Field Name | Description |
|---|---|
errors - [String!]!
|
|
moodLog - MoodLog
|
Example
{
"errors": ["abc123"],
"moodLog": MoodLog
}
AdminStats
Description
Admin statistics for platform monitoring
Fields
| Field Name | Description |
|---|---|
completedGoals - Int!
|
|
goalCategories - [CategoryStats!]!
|
|
goalsLast7Days - Int!
|
|
growthData - [GrowthDataPoint!]!
|
|
publicGoals - Int!
|
|
recentActivity - [ActivityItem!]!
|
|
totalEncouragements - Int!
|
|
totalEvents - Int!
|
|
totalGoals - Int!
|
|
totalMilestones - Int!
|
|
totalUpdates - Int!
|
|
totalUsers - Int!
|
|
usersLast30Days - Int!
|
|
usersLast7Days - Int!
|
Example
{
"completedGoals": 987,
"goalCategories": [CategoryStats],
"goalsLast7Days": 987,
"growthData": [GrowthDataPoint],
"publicGoals": 123,
"recentActivity": [ActivityItem],
"totalEncouragements": 123,
"totalEvents": 987,
"totalGoals": 123,
"totalMilestones": 987,
"totalUpdates": 987,
"totalUsers": 123,
"usersLast30Days": 123,
"usersLast7Days": 987
}
AllyActivity
Description
A recent progress event from an accepted ally (friend), shown in the ally activity feed.
Fields
| Field Name | 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. |
id - ID!
|
Public identifier for this activity record. |
target - String!
|
Name of the goal the ally acted on. |
timestamp - String!
|
Unix timestamp (string) when the activity occurred. |
Example
{
"action": "abc123",
"allyId": "4",
"allyName": "abc123",
"allyPhoto": "xyz789",
"communityId": 4,
"communityName": "xyz789",
"id": 4,
"target": "abc123",
"timestamp": "xyz789"
}
BadgeStat
Boolean
Description
The Boolean scalar type represents true or false.
CategoryStats
CheckInHabitPayload
Description
Autogenerated return type of CheckInHabit.
Fields
| Field Name | Description |
|---|---|
errors - [String!]!
|
|
goal - Goal
|
|
goalEvent - GoalEvent
|
Example
{
"errors": ["abc123"],
"goal": Goal,
"goalEvent": GoalEvent
}
CheckValidUsernamePayload
Description
Autogenerated return type of CheckValidUsername.
Fields
| Field Name | Description |
|---|---|
errors - [String!]!
|
|
result - Result
|
Example
{
"errors": ["abc123"],
"result": Result
}
Community
Description
An interest-based group where users share goals and support each other.
Fields
| Field Name | Description |
|---|---|
activeMembers - Int!
|
Count of members who have been active in the past 30 days. |
badges - CommunityBadges!
|
Achievement badges earned by this community. |
category - String
|
General category label for the community (e.g. "fitness"). |
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. |
description - String
|
Human-readable description of the community purpose. |
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 30 days. |
guidelines - String
|
Community rules and posting guidelines. |
healthScore - Int!
|
Computed health score (0–100) reflecting community engagement. |
imageUrl - String
|
URL of the community avatar/icon image. |
isFeatured - Boolean!
|
Whether the community is featured on the discovery page. |
isVerified - Boolean!
|
Whether the community has been verified by Objectuve admins. |
members - [CommunityMember!]
|
All current members of this community. |
name - String!
|
Display name of the 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. |
totalGoals - Int!
|
Total number of goals shared in this community. |
updatedAtTime - String!
|
Unix timestamp (string) when the community was last updated. |
Example
{
"activeMembers": 987,
"badges": CommunityBadges,
"category": "abc123",
"coverImage": "abc123",
"createdAt": ISO8601DateTime,
"createdAtTime": "xyz789",
"description": "abc123",
"feedItems": [CommunityFeedItem],
"goalCategory": GoalCategory,
"goals": [Goal],
"growthRate": 123.45,
"guidelines": "xyz789",
"healthScore": 987,
"imageUrl": "abc123",
"isFeatured": false,
"isVerified": true,
"members": [CommunityMember],
"name": "abc123",
"privacy": "xyz789",
"private": true,
"publicId": "4",
"totalGoals": 987,
"updatedAtTime": "abc123"
}
CommunityBadges
Description
Achievement badges earned by a community, reflecting its milestones and reputation.
Fields
| Field Name | Description |
|---|---|
allyMagnet - Boolean!
|
Community has attracted a high number of ally connections between members. |
club1k - Boolean!
|
Community has reached 1,000 members. |
earlySupporter - Boolean!
|
Community was created during the early access period. |
featured - Boolean!
|
Community is currently featured on the discovery page. |
perfectMonth - Boolean!
|
All active members logged activity every day for a full month. |
streak100 - Boolean!
|
Community has collectively maintained a 100-day streak. |
topActive - Boolean!
|
Community ranks in the top tier for member activity. |
topContributor - Boolean!
|
Community has a high ratio of active contributors. |
verified - Boolean!
|
Community has been verified by Objectuve admins. |
wins500 - Boolean!
|
Members have collectively completed 500 goals. |
Example
{
"allyMagnet": true,
"club1k": true,
"earlySupporter": false,
"featured": false,
"perfectMonth": false,
"streak100": false,
"topActive": false,
"topContributor": true,
"verified": true,
"wins500": true
}
CommunityEvent
Description
A scheduled event or activity within a community.
Fields
| Field Name | 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. |
Example
{
"attendeeCount": 987,
"communityId": "4",
"communityName": "abc123",
"date": "abc123",
"description": "abc123",
"id": 4,
"title": "xyz789"
}
CommunityFeedItem
Description
A single item in a community activity feed (e.g. a goal update or milestone).
Fields
| Field Name | 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. |
Example
{
"content": "xyz789",
"createdAtTime": "abc123",
"id": 4,
"media": CommunityMedia,
"updatedAtTime": "xyz789"
}
CommunityGoal
Description
A goal that has been shared into a community, linking the goal to the community feed.
Fields
| Field Name | 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. |
Example
{
"community": Community,
"createdAtTime": "xyz789",
"goal": Goal,
"id": "4",
"updatedAtTime": "xyz789"
}
CommunityInsights
Description
Community engagement insights and recommendations for a specific user.
Fields
| Field Name | Description |
|---|---|
achievementsUnlocked - Int!
|
Number of community-related achievements unlocked by the user. |
communitiesJoined - Int!
|
Total number of communities the user has joined. |
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. |
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. |
Example
{
"achievementsUnlocked": 123,
"communitiesJoined": 987,
"postsThisWeek": 987,
"suggestedCommunities": [SuggestedCommunity],
"totalEngagement": 123,
"trendingCommunities": [TrendingCommunity],
"upcomingEvents": [CommunityEvent],
"yourActivity": [UserActivity]
}
CommunityMedia
Description
A media attachment (image) associated with a community feed item or post.
Example
{
"id": 4,
"imageUrl": "xyz789",
"name": "abc123"
}
CommunityMember
Description
A user membership record within a community, with engagement statistics.
Fields
| Field Name | 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. |
Example
{
"createdAtTime": "abc123",
"goalsCompleted": 987,
"helpfulCount": 987,
"id": 4,
"joinedDate": "abc123",
"points": 987,
"postsCount": 987,
"rank": 123,
"role": "xyz789",
"updatedAtTime": "xyz789",
"user": User
}
CommunityPost
Description
A discussion post or update made by a user within a community.
Fields
| Field Name | 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. |
Example
{
"comments": [PostComment],
"communityId": 4,
"content": "abc123",
"goalId": 4,
"goalName": "xyz789",
"id": 4,
"likes": 987,
"timestamp": "xyz789",
"type": "abc123",
"userId": "4",
"userName": "xyz789",
"userPhoto": "xyz789"
}
CommunitySuggestion
Description
A user-submitted suggestion for a new community topic or interest area.
Fields
| Field Name | 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. |
Example
{
"content": "xyz789",
"goalCategory": GoalCategory,
"goalKind": GoalType,
"id": "4"
}
CreateCommunityPayload
Description
Autogenerated return type of CreateCommunity.
Fields
| Field Name | Description |
|---|---|
community - Community
|
|
errors - [String!]!
|
Example
{
"community": Community,
"errors": ["xyz789"]
}
CreateCommunityPostPayload
Description
Autogenerated return type of CreateCommunityPost.
Fields
| Field Name | Description |
|---|---|
errors - [String!]!
|
|
post - CommunityPost
|
Example
{
"errors": ["xyz789"],
"post": CommunityPost
}
DeleteNotificationPayload
Description
Autogenerated return type of DeleteNotification.
Fields
| Field Name | Description |
|---|---|
errors - [String!]!
|
|
result - Result
|
Example
{
"errors": ["xyz789"],
"result": Result
}
Float
Description
The Float scalar type represents signed double-precision fractional values as specified by IEEE 754.
Example
987.65
FollowCommunityPayload
Description
Autogenerated return type of FollowCommunity.
Fields
| Field Name | Description |
|---|---|
result - Result
|
Example
{"result": Result}
GenerateMilestonesPayload
Description
Autogenerated return type of GenerateMilestones.
Fields
| Field Name | Description |
|---|---|
milestones - [String!]
|
Example
{"milestones": ["abc123"]}
GetAdvicePayload
Description
Autogenerated return type of GetAdvice.
Fields
| Field Name | Description |
|---|---|
advice - String
|
Example
{"advice": "xyz789"}
GetInsightPayload
Goal
Description
A user goal with progress events, milestones, and optional community sharing.
Fields
| Field Name | Description |
|---|---|
allEvents - [GoalEvent!]!
|
All progress events including soft-deleted ones. |
category - GoalCategory
|
The goal category (e.g. fitness, learning, personal). |
checkedInToday - Boolean!
|
Whether the user has checked in today. |
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. |
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). |
daysToUpdate - Int
|
How frequently (in days) the user intends to log progress events. |
dueToday - Boolean!
|
Whether this habit is due for a check-in today. |
encouragements - [GoalEventEncouragement!]!
|
Encouragement reactions left by other users on this goal. |
events - [GoalEvent!]!
|
Active (non-deleted) progress events logged for this goal. |
habitCompletions - [HabitCompletion!]!
|
Check-in records for this habit (last 30 days). |
habitStreak - Int!
|
Current consecutive check-in streak for this habit. |
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. |
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"). |
parentGoalId - String
|
public_id of the parent goal if this is a milestone/sub-goal. |
private - Boolean!
|
When true, the goal is visible only to its owner. |
publicId - ID!
|
URL-safe public identifier for this goal. |
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. |
streakFreezesAvailable - Int!
|
Number of streak freeze tokens earned and available. |
streakFreezesUsed - Int!
|
Number of streak freeze tokens consumed. |
targetAmount - Float
|
Target value for quantity-based goals (e.g. 5.0 km). |
targetDateTime - String
|
Unix timestamp (string) of the target completion date. |
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. |
Example
{
"allEvents": [GoalEvent],
"category": GoalCategory,
"checkedInToday": false,
"comments": [GoalEventComment],
"completed": true,
"completedAtTime": "xyz789",
"completionRate": 123.45,
"content": "xyz789",
"createdAtTime": "abc123",
"currentAmount": 123.45,
"daysToUpdate": 987,
"dueToday": false,
"encouragements": [GoalEventEncouragement],
"events": [GoalEvent],
"habitCompletions": [HabitCompletion],
"habitStreak": 123,
"imageUrl": "abc123",
"kind": GoalType,
"lastCheckedInDate": "abc123",
"longestHabitStreak": 987,
"milestones": [Goal],
"name": "abc123",
"parentGoalId": "xyz789",
"private": true,
"publicId": "4",
"recurrenceDays": ["xyz789"],
"recurrenceInterval": 123,
"recurrenceType": "xyz789",
"streakFreezesAvailable": 987,
"streakFreezesUsed": 123,
"targetAmount": 123.45,
"targetDateTime": "xyz789",
"unit": "xyz789",
"updatedAtTime": "abc123",
"user": User
}
GoalCategory
GoalEvent
Description
An immutable progress log entry for a goal. Records what the user did and when.
Fields
| Field Name | Description |
|---|---|
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. |
Example
{
"comments": [GoalEventComment],
"content": "xyz789",
"createdAtTime": "xyz789",
"encouragements": [GoalEventEncouragement],
"goal": Goal,
"id": "4",
"media": GoalMedia,
"milestoneName": "abc123",
"mood": "abc123",
"publicId": 4
}
GoalEventComment
Description
A comment left by a user on a goal progress event.
Fields
| Field Name | 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. |
Example
{
"content": "abc123",
"createdAtTime": "abc123",
"goal": Goal,
"id": "4",
"updatedAtTime": "abc123",
"user": User
}
GoalEventEncouragement
Description
An encouragement reaction (like/cheer) left on a goal progress event.
Fields
| Field Name | 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. |
Example
{
"comment": "abc123",
"createdAtTime": "xyz789",
"goal": Goal,
"id": "4",
"updatedAtTime": "abc123",
"user": User
}
GoalMedia
Description
A media attachment (image) associated with a goal progress event.
Example
{
"id": "4",
"imageUrl": "xyz789",
"name": "abc123"
}
GoalProgressData
Description
Progress visualization data for a goal.
Fields
| Field Name | 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. |
Example
{
"averagePerWeek": 123.45,
"dataPoints": [ProgressDataPoint],
"pace": "abc123",
"streakData": [ProgressDataPoint],
"totalEvents": 987
}
GoalType
Description
A goal kind/type that determines how progress is tracked (e.g. habit, milestone, quantity).
Example
{
"description": "xyz789",
"displayNumber": 987,
"id": 4,
"name": "xyz789"
}
GrowthDataPoint
HabitCompletion
Description
A single habit check-in record for a specific date.
Example
{
"completedDate": "abc123",
"createdAt": "xyz789",
"id": 4,
"streakFreezeUsed": false
}
ID
Description
The ID scalar type represents a unique identifier, often used to refetch an object or as key for a cache. The ID type appears in a JSON response as a String; however, it is not intended to be human-readable. When expected as an input type, any string (such as "4") or integer (such as 4) input value will be accepted as an ID.
Example
"4"
ISO8601DateTime
Description
An ISO 8601-encoded datetime
Example
ISO8601DateTime
Int
Description
The Int scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1.
Example
987
JoinCommunityPayload
Description
Autogenerated return type of JoinCommunity.
Fields
| Field Name | Description |
|---|---|
errors - [String!]!
|
|
result - Result
|
Example
{
"errors": ["xyz789"],
"result": Result
}
LeaveCommunityPayload
Description
Autogenerated return type of LeaveCommunity.
Fields
| Field Name | Description |
|---|---|
result - Result
|
Example
{"result": Result}
MoodLog
Description
A daily mood check-in recorded by a user, optionally linked to a goal.
Fields
| Field Name | 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. |
Example
{
"createdAtTime": "abc123",
"goal": Goal,
"mood": "abc123",
"note": "abc123",
"publicId": "4"
}
PostComment
Description
A comment left on a community post.
Fields
| Field Name | 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. |
Example
{
"content": "xyz789",
"id": "4",
"timestamp": "xyz789",
"userId": 4,
"userName": "xyz789"
}
ProgressDataPoint
Description
A single data point in a progress chart.
Example
{
"count": 123,
"date": "xyz789",
"label": "xyz789"
}
RefineDescriptionPayload
Description
Autogenerated return type of RefineDescription.
Fields
| Field Name | Description |
|---|---|
description - String
|
Example
{"description": "xyz789"}
Result
Description
Generic boolean result returned by check queries (e.g. authn_check, is_following_goal).
Fields
| Field Name | Description |
|---|---|
success - Boolean!
|
True if the checked condition is satisfied. |
Example
{"success": false}
StoreDeviceTokenPayload
Description
Autogenerated return type of StoreDeviceToken.
Fields
| Field Name | Description |
|---|---|
errors - [String!]!
|
|
result - Result
|
Example
{
"errors": ["abc123"],
"result": Result
}
StoreUserDetailsPayload
Description
Autogenerated return type of StoreUserDetails.
Fields
| Field Name | Description |
|---|---|
errors - [String!]!
|
|
result - Result
|
Example
{
"errors": ["xyz789"],
"result": Result
}
String
Description
The String scalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text.
Example
"abc123"
SuggestedCommunity
Description
A community recommended to a user based on their goals, interests, and ally network.
Fields
| Field Name | Description |
|---|---|
activeMembers - Int!
|
Count of members active in the past 30 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 - [User!]!
|
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. |
Example
{
"activeMembers": 123,
"category": "xyz789",
"coverImage": "xyz789",
"description": "xyz789",
"isRecommended": true,
"matchScore": 987,
"members": [User],
"mutualAllies": 987,
"name": "abc123",
"publicId": "4"
}
SyncUserPayload
Description
Autogenerated return type of SyncUser.
Fields
| Field Name | Description |
|---|---|
errors - [String!]!
|
|
firstSignIn - Boolean!
|
|
user - User
|
Example
{
"errors": ["xyz789"],
"firstSignIn": true,
"user": User
}
ToggleFollowGoalPayload
Description
Autogenerated return type of ToggleFollowGoal.
Fields
| Field Name | Description |
|---|---|
errors - [String!]!
|
|
result - Result
|
Example
{
"errors": ["abc123"],
"result": Result
}
ToggleGoalEventEncouragementPayload
Description
Autogenerated return type of ToggleGoalEventEncouragement.
Fields
| Field Name | Description |
|---|---|
errors - [String!]!
|
|
goalEventEncouragement - GoalEventEncouragement
|
Example
{
"errors": ["xyz789"],
"goalEventEncouragement": GoalEventEncouragement
}
TrendingCommunity
Description
A community currently trending based on member growth and activity metrics.
Fields
| Field Name | Description |
|---|---|
activeMembers - Int!
|
Count of members active in the past 30 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 30 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. |
totalGoals - Int!
|
Total number of goals shared in this community. |
totalMembers - Int!
|
Total member count. |
Example
{
"activeMembers": 987,
"category": "xyz789",
"coverImage": "xyz789",
"description": "abc123",
"growthRate": 987.65,
"isTrending": false,
"name": "abc123",
"publicId": "4",
"totalGoals": 987,
"totalMembers": 987
}
UnfollowCommunityPayload
Description
Autogenerated return type of UnfollowCommunity.
Fields
| Field Name | Description |
|---|---|
result - Result
|
Example
{"result": Result}
UpdateGoalEventPayload
Description
Autogenerated return type of UpdateGoalEvent.
Fields
| Field Name | Description |
|---|---|
errors - [String!]!
|
|
goalEvent - GoalEvent
|
Example
{
"errors": ["xyz789"],
"goalEvent": GoalEvent
}
UpdateGoalPayload
Description
Autogenerated return type of UpdateGoal.
Fields
| Field Name | Description |
|---|---|
errors - [String!]!
|
|
goal - Goal
|
Example
{
"errors": ["xyz789"],
"goal": Goal
}
UpdateShowcasedAchievementsPayload
UpdateUserPayload
Description
Autogenerated return type of UpdateUser.
Fields
| Field Name | Description |
|---|---|
errors - [String!]!
|
|
user - User
|
Example
{
"errors": ["xyz789"],
"user": User
}
UpdateUserPhotoPayload
Description
Autogenerated return type of UpdateUserPhoto.
Fields
| Field Name | Description |
|---|---|
errors - [String!]!
|
|
userPhoto - UserPhoto
|
Example
{
"errors": ["xyz789"],
"userPhoto": UserPhoto
}
UseStreakFreezePayload
Description
Autogenerated return type of UseStreakFreeze.
Fields
| Field Name | Description |
|---|---|
errors - [String!]!
|
|
goal - Goal
|
Example
{
"errors": ["abc123"],
"goal": Goal
}
User
Description
A registered Objectuve user with gamification progress, goals, and social connections.
Fields
| Field Name | Description |
|---|---|
actions - [UserAction!]
|
Gamification action log used to compute badges and achievements. |
admin - Boolean!
|
Whether the user has admin privileges. |
createdAtTime - String
|
Unix timestamp (string) when the account was created. |
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. |
feedItems - [UserFeedItem!]
|
Personal activity feed items for the user's home timeline. |
firstName - String
|
User's given name. |
goals - [Goal!]!
|
All goals owned by this user. |
lastName - String
|
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. |
notifications - [UserNotification!]
|
In-app notifications for this user, newest first. |
photo - UserPhoto
|
Profile photo for the user. |
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. |
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. |
stats - UserStats
|
Aggregated goal and achievement statistics for the user. |
streak - Int!
|
Current number of consecutive days the user has logged activity. |
updatedAtTime - String
|
Unix timestamp (string) when the account was last updated. |
username - String
|
Unique handle chosen by the user (e.g. "jane.doe"). |
xp - Int!
|
Total experience points earned through goals, events, and engagement. |
Example
{
"actions": [UserAction],
"admin": false,
"createdAtTime": "xyz789",
"details": UserDetail,
"email": "xyz789",
"emailVerified": true,
"feedItems": [UserFeedItem],
"firstName": "abc123",
"goals": [Goal],
"lastName": "xyz789",
"level": 123,
"longestStreak": 987,
"nextLevelThreshold": 123,
"notifications": [UserNotification],
"photo": UserPhoto,
"progressToNextLevel": 123.45,
"publicId": 4,
"showcasedAchievements": ["abc123"],
"signInDates": ["abc123"],
"stats": UserStats,
"streak": 987,
"updatedAtTime": "xyz789",
"username": "xyz789",
"xp": 987
}
UserAction
Description
A gamification action record tracking user behaviour for badges and achievements.
Fields
| Field Name | 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"). |
createdAtTime - String
|
Unix timestamp (string) when this action was recorded. |
id - ID!
|
Public identifier for this action record. |
Example
{
"acknowledged": true,
"action": "xyz789",
"createdAtTime": "abc123",
"id": "4"
}
UserActivity
Description
A single activity item in a user activity timeline within a community context.
Fields
| Field Name | 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"). |
Example
{
"communityId": "4",
"communityName": "abc123",
"content": "abc123",
"id": "4",
"timestamp": "abc123",
"type": "xyz789"
}
UserAlly
Description
A friend/ally connection — another user in the current user allies network.
Fields
| Field Name | Description |
|---|---|
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. |
photo - UserPhoto
|
The ally user's profile photo. |
publicId - String!
|
URL-safe public identifier of the ally user. |
username - String
|
The ally user's unique handle. |
Example
{
"firstName": "abc123",
"id": "4",
"lastName": "xyz789",
"mutualCount": 123,
"photo": UserPhoto,
"publicId": "xyz789",
"username": "abc123"
}
UserDetail
Description
Extended profile metadata for a user, stored as a JSON blob.
Example
{
"data": "xyz789",
"id": "4"
}
UserFeedItem
Description
A single item in the user personal activity feed (home timeline).
Fields
| Field Name | 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"). |
Example
{
"content": "abc123",
"createdAtTime": "abc123",
"detailsJson": "abc123",
"id": 4,
"kind": "xyz789"
}
UserNotification
Description
An in-app notification delivered to a user.
Fields
| Field Name | 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"). |
Example
{
"acknowledged": true,
"content": "xyz789",
"createdAtTime": "xyz789",
"detailsJson": "abc123",
"id": "4",
"kind": "abc123"
}
UserPhoto
UserStats
Description
Aggregated goal and achievement statistics for a user.
Fields
| Field Name | 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. |
Example
{
"categoriesUsed": ["xyz789"],
"completedGoals": 987,
"encouragementsGiven": 123,
"goalsCreatedCount": 987,
"milestonesCompleted": 987,
"milestonesCreated": 123,
"totalGoals": 987,
"typesUsed": ["xyz789"]
}