Skip to content

@kaiord/core


@kaiord/core / activitySchema

Variable: activitySchema

const activitySchema: ZodObject<{ kind: ZodLiteral<"activity">; krd: ZodOptional<ZodObject<{ events: ZodOptional<ZodArray<ZodObject<{ data: ZodOptional<ZodNumber>; eventGroup: ZodOptional<ZodNumber>; eventType: ZodEnum<{ event_activity_start: ...; event_lap: ...; event_marker: ...; event_pause: ...; event_resume: ...; event_session_start: ...; event_start: ...; event_stop: ...; event_timer: ...; event_workout_step_change: ...; }>; message: ZodOptional<ZodString>; timestamp: ZodISODateTime; }, $strip>>>; extensions: ZodOptional<ZodObject<{ course: ZodOptional<ZodUnknown>; course_points: ZodOptional<ZodUnknown>; fit: ZodOptional<ZodUnknown>; health: ZodOptional<ZodObject<{ bodyComposition: ...; daily: ...; hrv: ...; sleep: ...; stress: ...; weight: ...; }, $catchall<...>>>; structured_workout: ZodOptional<ZodUnknown>; }, $catchall<ZodUnknown>>>; laps: ZodOptional<ZodArray<ZodObject<{ avgCadence: ZodOptional<ZodNumber>; avgHeartRate: ZodOptional<ZodNumber>; avgPower: ZodOptional<ZodNumber>; avgSpeed: ZodOptional<ZodNumber>; maxCadence: ZodOptional<ZodNumber>; maxHeartRate: ZodOptional<ZodNumber>; maxPower: ZodOptional<ZodNumber>; maxSpeed: ZodOptional<ZodNumber>; normalizedPower: ZodOptional<ZodNumber>; numLengths: ZodOptional<ZodNumber>; sport: ZodOptional<ZodEnum<...>>; startTime: ZodISODateTime; subSport: ZodOptional<ZodEnum<...>>; swimStroke: ZodOptional<ZodEnum<...>>; totalAscent: ZodOptional<ZodNumber>; totalCalories: ZodOptional<ZodNumber>; totalDescent: ZodOptional<ZodNumber>; totalDistance: ZodOptional<ZodNumber>; totalElapsedTime: ZodNumber; totalTimerTime: ZodOptional<ZodNumber>; trigger: ZodOptional<ZodEnum<...>>; workoutStepIndex: ZodOptional<ZodNumber>; }, $strip>>>; metadata: ZodObject<{ created: ZodISODateTime; manufacturer: ZodOptional<ZodString>; product: ZodOptional<ZodString>; serialNumber: ZodOptional<ZodString>; sport: ZodOptional<ZodString>; subSport: ZodOptional<ZodString>; }, $strip>; records: ZodOptional<ZodArray<ZodObject<{ altitude: ZodOptional<ZodNumber>; cadence: ZodOptional<ZodNumber>; distance: ZodOptional<ZodNumber>; heartRate: ZodOptional<ZodNumber>; position: ZodOptional<ZodObject<..., ...>>; power: ZodOptional<ZodNumber>; speed: ZodOptional<ZodNumber>; stanceTime: ZodOptional<ZodNumber>; stepLength: ZodOptional<ZodNumber>; temperature: ZodOptional<ZodNumber>; timestamp: ZodISODateTime; verticalOscillation: ZodOptional<ZodNumber>; }, $strip>>>; sessions: ZodOptional<ZodArray<ZodObject<{ avgCadence: ZodOptional<ZodNumber>; avgHeartRate: ZodOptional<ZodNumber>; avgPower: ZodOptional<ZodNumber>; avgSpeed: ZodOptional<ZodNumber>; intensityFactor: ZodOptional<ZodNumber>; maxCadence: ZodOptional<ZodNumber>; maxHeartRate: ZodOptional<ZodNumber>; maxPower: ZodOptional<ZodNumber>; maxSpeed: ZodOptional<ZodNumber>; normalizedPower: ZodOptional<ZodNumber>; sport: ZodString; startTime: ZodISODateTime; subSport: ZodOptional<ZodString>; totalAscent: ZodOptional<ZodNumber>; totalCalories: ZodOptional<ZodNumber>; totalDescent: ZodOptional<ZodNumber>; totalDistance: ZodOptional<ZodNumber>; totalElapsedTime: ZodNumber; totalTimerTime: ZodOptional<ZodNumber>; trainingStressScore: ZodOptional<ZodNumber>; }, $strip>>>; type: ZodEnum<{ body_composition: "body_composition"; course: "course"; daily_wellness: "daily_wellness"; hrv_summary: "hrv_summary"; recorded_activity: "recorded_activity"; sleep_record: "sleep_record"; stress_episode: "stress_episode"; structured_workout: "structured_workout"; weight_measurement: "weight_measurement"; }>; version: ZodString; }, $strip>>; summary: ZodObject<{ avg_heart_rate: ZodOptional<ZodNumber>; avg_power: ZodOptional<ZodNumber>; date: ZodISODate; distance_meters: ZodOptional<ZodNumber>; duration_seconds: ZodOptional<ZodNumber>; source: ZodString; source_id: ZodString; sport: ZodString; start_time: ZodOptional<ZodISODateTime>; sub_sport: ZodOptional<ZodString>; total_calories: ZodOptional<ZodNumber>; }, $strip>; }, $strip>

Defined in: packages/core/src/domain/schemas/activity.ts:43

Zod schema for an activity — a first-class executed session (the executed side of a SessionMatch). Shape mirrors the health records' { summary, krd? } split: a mandatory summary for list/match reads plus the optional full KRD payload attached when the source provides recorded detail (records/laps/sessions).