Skip to content

DoCurious API Reference / types / TrackRecord

Interface: TrackRecord ​

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

A Track Record documenting a user's completion of a challenge.

Remarks ​

Track Records are the primary proof-of-completion artifact. They consist of one or more TrackRecordEntry items (text, photos, videos). Once submitted, a 72-hour SLA timer starts for reviewer verification. If the SLA is missed, the TR is automatically escalated. Users have a maximum of 3 verification attempts before the TR is locked as unverified.

Example ​

ts
const tr: TrackRecord = {
  id: 'tr-001',
  createdAt: '2025-10-05T14:30:00Z',
  updatedAt: '2025-10-06T09:00:00Z',
  userChallengeId: 'uc-101',
  userId: 'usr-042',
  challengeId: 'ch-042',
  status: 'submitted',
  storageUsedBytes: 4_200_000,
  sharingScope: 'communities',
  submittedAt: '2025-10-06T09:00:00Z',
  verificationAttempts: 1,
  escalated: false,
}

Extends ​

Properties ​

challenge? ​

optional challenge: Challenge

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


challengeId ​

challengeId: string

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


coverImageEntryId? ​

optional coverImageEntryId: string

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

Entry ID of the image the user selected as the TR cover


coverImageUrl? ​

optional coverImageUrl: string

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


createdAt ​

createdAt: string

Defined in: types/common.types.ts:154

ISO 8601 datetime when the entity was created

Inherited from ​

BaseEntity.createdAt


entries? ​

optional entries: TrackRecordEntry[]

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


escalated ​

escalated: boolean

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

Whether this TR was auto-escalated due to a missed SLA deadline


escalatedAt? ​

optional escalatedAt: string

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


id ​

id: string

Defined in: types/common.types.ts:167

Inherited from ​

BaseEntity.id


rejectionNote? ​

optional rejectionNote: string

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

Free-text note from the reviewer explaining the rejection


rejectionReasonId? ​

optional rejectionReasonId: string

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

Reference to the RejectionReasonTemplate used when rejecting


reviewerId? ​

optional reviewerId: string

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


reviewerRole? ​

optional reviewerRole: "teacher" | "staff" | "vendor"

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

Role of the person who reviewed this TR


sharingScope ​

sharingScope: "public" | "private" | "communities" | "individuals"

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

Who can view this Track Record


slaDeadline? ​

optional slaDeadline: string

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

ISO datetime 72 hours after submission -- the verification SLA deadline


status ​

status: TrackRecordStatus

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


storageUsedBytes ​

storageUsedBytes: number

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

Total bytes of media stored for this TR


submittedAt? ​

optional submittedAt: string

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


submittedForReviewAt? ​

optional submittedForReviewAt: string

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

ISO datetime when the TR was submitted for staff/vendor review


updatedAt ​

updatedAt: string

Defined in: types/common.types.ts:156

ISO 8601 datetime when the entity was last modified

Inherited from ​

BaseEntity.updatedAt


userChallenge? ​

optional userChallenge: UserChallenge

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


userChallengeId ​

userChallengeId: string

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


userId ​

userId: string

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


verificationAttempts ​

verificationAttempts: number

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

Number of review cycles attempted (max 3 before lockout)


verifiedAt? ​

optional verifiedAt: string

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

DoCurious Platform Documentation