Skip to content

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?

optional abandonedAt: string

Defined in: types/challenge.types.ts:548


challenge?

optional challenge: Challenge

Defined in: types/challenge.types.ts:560


challengeId

challengeId: string

Defined in: types/challenge.types.ts:526


communityAssignmentId?

optional communityAssignmentId: string

Defined in: types/challenge.types.ts:533

Reference to the community assignment (when source is 'class_assignment')


communityId?

optional communityId: string

Defined in: types/challenge.types.ts:534


communityName?

optional communityName: 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

BaseEntity.createdAt


dcMultiplier?

optional dcMultiplier: number

Defined in: types/challenge.types.ts:554

Dealer's Choice XP multiplier (1.5x comfort zone, 1.75x rarely tried, 2x uncharted)


giftId?

optional giftId: 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

BaseEntity.id


maxAttempts

maxAttempts: number

Defined in: types/challenge.types.ts:543

Maximum allowed verification attempts before status locks to 'unverified'


seekingPartners?

optional seekingPartners: 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?

optional startedAt: string

Defined in: types/challenge.types.ts:545


status

status: UserChallengeStatus

Defined in: types/challenge.types.ts:527


submittedAt?

optional submittedAt: string

Defined in: types/challenge.types.ts:546


trackRecord?

optional trackRecord: 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

BaseEntity.updatedAt


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?

optional verifiedAt: string

Defined in: types/challenge.types.ts:547

DoCurious Platform Documentation