Appearance
DoCurious API Reference / types / UserChallenge
Interface: UserChallenge
Defined in: types/challenge.types.ts:522
Join table tracking a user's progress through a specific challenge.
Remarks
A user can complete the same challenge multiple times (tracked by completionNumber). Verification is limited to maxAttempts (default 3). Dealer's Choice challenges carry an XP dcMultiplier based on how far outside the user's comfort zone they are.
Example
ts
const uc: UserChallenge = {
id: 'uc-101',
createdAt: '2025-10-01T09:00:00Z',
updatedAt: '2025-10-05T14:30:00Z',
userId: 'usr-042',
challengeId: 'ch-042',
status: 'in_progress',
source: 'self',
completionNumber: 1,
verificationAttempts: 0,
maxAttempts: 3,
startedAt: '2025-10-01T09:00:00Z',
}Extends
Properties
abandonedAt?
optionalabandonedAt:string
Defined in: types/challenge.types.ts:546
challenge?
optionalchallenge:Challenge
Defined in: types/challenge.types.ts:558
challengeId
challengeId:
string
Defined in: types/challenge.types.ts:524
communityAssignmentId?
optionalcommunityAssignmentId:string
Defined in: types/challenge.types.ts:531
Reference to the community assignment (when source is 'class_assignment')
communityId?
optionalcommunityId:string
Defined in: types/challenge.types.ts:532
communityName?
optionalcommunityName:string
Defined in: types/challenge.types.ts:533
completionNumber
completionNumber:
number
Defined in: types/challenge.types.ts:536
Which completion this is (1 for first attempt, 2+ for repeats)
createdAt
createdAt:
string
Defined in: types/common.types.ts:154
ISO 8601 datetime when the entity was created
Inherited from
dcMultiplier?
optionaldcMultiplier:number
Defined in: types/challenge.types.ts:552
Dealer's Choice XP multiplier (1.5x comfort zone, 1.75x rarely tried, 2x uncharted)
giftId?
optionalgiftId:string
Defined in: types/challenge.types.ts:549
Gift UUID when source is 'gift'
id
id:
string
Defined in: types/common.types.ts:167
Inherited from
maxAttempts
maxAttempts:
number
Defined in: types/challenge.types.ts:541
Maximum allowed verification attempts before status locks to 'unverified'
seekingPartners?
optionalseekingPartners:boolean
Defined in: types/challenge.types.ts:555
Whether this user is actively looking for partners to do the challenge with
source
source:
UserChallengeSource
Defined in: types/challenge.types.ts:528
How the user started this challenge
startedAt?
optionalstartedAt:string
Defined in: types/challenge.types.ts:543
status
status:
UserChallengeStatus
Defined in: types/challenge.types.ts:525
submittedAt?
optionalsubmittedAt:string
Defined in: types/challenge.types.ts:544
trackRecord?
optionaltrackRecord:TrackRecord
Defined in: types/challenge.types.ts:559
updatedAt
updatedAt:
string
Defined in: types/common.types.ts:156
ISO 8601 datetime when the entity was last modified
Inherited from
userId
userId:
string
Defined in: types/challenge.types.ts:523
verificationAttempts
verificationAttempts:
number
Defined in: types/challenge.types.ts:539
Number of Track Record submissions attempted so far
verifiedAt?
optionalverifiedAt:string
Defined in: types/challenge.types.ts:545