Appearance
DoCurious API Reference / types / UserChallenge
Interface: UserChallenge
Defined in: types/challenge.types.ts:524
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:548
challenge?
optionalchallenge:Challenge
Defined in: types/challenge.types.ts:560
challengeId
challengeId:
string
Defined in: types/challenge.types.ts:526
communityAssignmentId?
optionalcommunityAssignmentId:string
Defined in: types/challenge.types.ts:533
Reference to the community assignment (when source is 'class_assignment')
communityId?
optionalcommunityId:string
Defined in: types/challenge.types.ts:534
communityName?
optionalcommunityName:string
Defined in: types/challenge.types.ts:535
completionNumber
completionNumber:
number
Defined in: types/challenge.types.ts:538
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:554
Dealer's Choice XP multiplier (1.5x comfort zone, 1.75x rarely tried, 2x uncharted)
giftId?
optionalgiftId:string
Defined in: types/challenge.types.ts:551
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:543
Maximum allowed verification attempts before status locks to 'unverified'
seekingPartners?
optionalseekingPartners:boolean
Defined in: types/challenge.types.ts:557
Whether this user is actively looking for partners to do the challenge with
source
source:
UserChallengeSource
Defined in: types/challenge.types.ts:530
How the user started this challenge
startedAt?
optionalstartedAt:string
Defined in: types/challenge.types.ts:545
status
status:
UserChallengeStatus
Defined in: types/challenge.types.ts:527
submittedAt?
optionalsubmittedAt:string
Defined in: types/challenge.types.ts:546
trackRecord?
optionaltrackRecord:TrackRecord
Defined in: types/challenge.types.ts:561
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:525
verificationAttempts
verificationAttempts:
number
Defined in: types/challenge.types.ts:541
Number of Track Record submissions attempted so far
verifiedAt?
optionalverifiedAt:string
Defined in: types/challenge.types.ts:547