Skip to content

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?

optional abandonedAt: string

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


challenge?

optional challenge: Challenge

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


challengeId

challengeId: string

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


communityAssignmentId?

optional communityAssignmentId: string

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

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


communityId?

optional communityId: string

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


communityName?

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

BaseEntity.createdAt


dcMultiplier?

optional dcMultiplier: number

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

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:549

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:541

Maximum allowed verification attempts before status locks to 'unverified'


seekingPartners?

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

optional startedAt: string

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


status

status: UserChallengeStatus

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


submittedAt?

optional submittedAt: string

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


trackRecord?

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

BaseEntity.updatedAt


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?

optional verifiedAt: string

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

DoCurious Platform Documentation