Skip to content

@kaiord/core


@kaiord/core / krdSchema

Variable: krdSchema

const krdSchema: ZodObject<{ events: ZodOptional<ZodArray<ZodObject<{ data: ZodOptional<ZodNumber>; eventGroup: ZodOptional<ZodNumber>; eventType: ZodEnum<{ event_activity_start: "event_activity_start"; event_lap: "event_lap"; event_marker: "event_marker"; event_pause: "event_pause"; event_resume: "event_resume"; event_session_start: "event_session_start"; event_start: "event_start"; event_stop: "event_stop"; event_timer: "event_timer"; event_workout_step_change: "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: ZodOptional<ZodObject<{ bmi: ...; bodyFatPercent: ...; bodyWaterPercent: ...; boneMassKilograms: ...; externalId: ...; kaiordRecordId: ...; kind: ...; leanMassKilograms: ...; measuredAt: ...; sourceBridgeId: ...; version: ...; }, $strip>>; daily: ZodOptional<ZodObject<{ activeCalories: ...; date: ...; externalId: ...; floorsClimbed: ...; intensityMinutes: ...; kaiordRecordId: ...; kind: ...; restingCalories: ...; sourceBridgeId: ...; steps: ...; version: ...; }, $strip>>; hrv: ZodOptional<ZodObject<{ externalId: ...; kaiordRecordId: ...; kind: ...; measuredAt: ...; measurementWindow: ...; rMSSD: ...; score: ...; sourceBridgeId: ...; version: ...; }, $strip>>; sleep: ZodOptional<ZodObject<{ endTime: ...; externalId: ...; kaiordRecordId: ...; kind: ...; restingHeartRate: ...; score: ...; sourceBridgeId: ...; stages: ...; startTime: ...; totalDurationSeconds: ...; version: ...; }, $strip>>; stress: ZodOptional<ZodObject<{ averageLevel: ...; endTime: ...; externalId: ...; kaiordRecordId: ...; kind: ...; peakLevel: ...; sourceBridgeId: ...; startTime: ...; version: ...; }, $strip>>; weight: ZodOptional<ZodObject<{ externalId: ...; kaiordRecordId: ...; kind: ...; measuredAt: ...; sourceBridgeId: ...; version: ...; weightKilograms: ...; }, $strip>>; }, $catchall<ZodUnknown>>>; 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<{ alpine_skiing: "alpine_skiing"; american_football: "american_football"; archery: "archery"; baseball: "baseball"; basketball: "basketball"; boating: "boating"; boxing: "boxing"; canoeing: "canoeing"; cricket: "cricket"; cross_country_skiing: "cross_country_skiing"; cycling: "cycling"; dance: "dance"; disc_golf: "disc_golf"; diving: "diving"; driving: "driving"; e_biking: "e_biking"; fishing: "fishing"; fitness_equipment: "fitness_equipment"; floor_climbing: "floor_climbing"; flying: "flying"; generic: "generic"; geocaching: "geocaching"; golf: "golf"; grinding: "grinding"; hang_gliding: "hang_gliding"; hiit: "hiit"; hiking: "hiking"; hockey: "hockey"; horseback_riding: "horseback_riding"; hunting: "hunting"; ice_skating: "ice_skating"; inline_skating: "inline_skating"; jump_rope: "jump_rope"; jumpmaster: "jumpmaster"; kayaking: "kayaking"; kitesurfing: "kitesurfing"; lacrosse: "lacrosse"; meditation: "meditation"; mixed_martial_arts: "mixed_martial_arts"; mobility: "mobility"; motor_sports: "motor_sports"; motorcycling: "motorcycling"; mountaineering: "mountaineering"; multisport: "multisport"; paddling: "paddling"; para_sport: "para_sport"; pool_apnea: "pool_apnea"; racket: "racket"; rafting: "rafting"; rock_climbing: "rock_climbing"; rowing: "rowing"; rugby: "rugby"; running: "running"; sailing: "sailing"; shooting: "shooting"; sky_diving: "sky_diving"; snorkeling: "snorkeling"; snowboarding: "snowboarding"; snowmobiling: "snowmobiling"; snowshoeing: "snowshoeing"; soccer: "soccer"; stand_up_paddleboarding: "stand_up_paddleboarding"; surfing: "surfing"; swimming: "swimming"; tactical: "tactical"; team_sport: "team_sport"; tennis: "tennis"; training: "training"; transition: "transition"; video_gaming: "video_gaming"; volleyball: "volleyball"; wakeboarding: "wakeboarding"; wakesurfing: "wakesurfing"; walking: "walking"; water_skiing: "water_skiing"; water_sport: "water_sport"; water_tubing: "water_tubing"; wheelchair_push_run: "wheelchair_push_run"; wheelchair_push_walk: "wheelchair_push_walk"; windsurfing: "windsurfing"; winter_sport: "winter_sport"; }>>; startTime: ZodISODateTime; subSport: ZodOptional<ZodEnum<{ all: "all"; apnea_diving: "apnea_diving"; apnea_hunting: "apnea_hunting"; atv: "atv"; backcountry: "backcountry"; bike_to_run_transition: "bike_to_run_transition"; bmx: "bmx"; cardio_training: "cardio_training"; casual_walking: "casual_walking"; challenge: "challenge"; commuting: "commuting"; cyclocross: "cyclocross"; downhill: "downhill"; e_bike_fitness: "e_bike_fitness"; e_bike_mountain: "e_bike_mountain"; elliptical: "elliptical"; exercise: "exercise"; flexibility_training: "flexibility_training"; gauge_diving: "gauge_diving"; generic: "generic"; gravel_cycling: "gravel_cycling"; hand_cycling: "hand_cycling"; indoor_cycling: "indoor_cycling"; indoor_rowing: "indoor_rowing"; indoor_running: "indoor_running"; indoor_skiing: "indoor_skiing"; indoor_walking: "indoor_walking"; lap_swimming: "lap_swimming"; map: "map"; match: "match"; mixed_surface: "mixed_surface"; motocross: "motocross"; mountain: "mountain"; multi_gas_diving: "multi_gas_diving"; navigate: "navigate"; obstacle: "obstacle"; open_water: "open_water"; pilates: "pilates"; rc_drone: "rc_drone"; recumbent: "recumbent"; resort: "resort"; road: "road"; run_to_bike_transition: "run_to_bike_transition"; single_gas_diving: "single_gas_diving"; skate_skiing: "skate_skiing"; speed_walking: "speed_walking"; spin: "spin"; stair_climbing: "stair_climbing"; street: "street"; strength_training: "strength_training"; swim_to_bike_transition: "swim_to_bike_transition"; track: "track"; track_cycling: "track_cycling"; track_me: "track_me"; trail: "trail"; treadmill: "treadmill"; virtual_activity: "virtual_activity"; warm_up: "warm_up"; whitewater: "whitewater"; wingsuit: "wingsuit"; yoga: "yoga"; }>>; swimStroke: ZodOptional<ZodEnum<{ backstroke: "backstroke"; breaststroke: "breaststroke"; butterfly: "butterfly"; drill: "drill"; freestyle: "freestyle"; im: "im"; mixed: "mixed"; }>>; totalAscent: ZodOptional<ZodNumber>; totalCalories: ZodOptional<ZodNumber>; totalDescent: ZodOptional<ZodNumber>; totalDistance: ZodOptional<ZodNumber>; totalElapsedTime: ZodNumber; totalTimerTime: ZodOptional<ZodNumber>; trigger: ZodOptional<ZodEnum<{ distance: "distance"; fitness_equipment: "fitness_equipment"; manual: "manual"; position: "position"; session_end: "session_end"; time: "time"; }>>; 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<{ lat: ZodNumber; lon: ZodNumber; }, $strip>>; 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>

Defined in: packages/core/src/domain/schemas/krd/index.ts:91

Zod schema for the complete KRD (Kaiord Representation Definition) format.

KRD is a JSON-based canonical format for structured workout, recorded activity, course, and (as of v2.0) health-domain data. The type field is the top-level discriminator and gates the conditional metadata.sport invariant:

  • For structured_workout, recorded_activity, coursemetadata.sport MUST be a non-empty string (preserved from v1.x).
  • For the six health types — metadata.sport MUST be absent or empty.

MIME type: application/vnd.kaiord+json

Example

typescript
import { krdSchema } from '@kaiord/core';

const krd = krdSchema.parse({
  version: '2.0',
  type: 'sleep_record',
  metadata: { created: '2026-05-22T07:00:00Z' },
  extensions: {
    health: {
      sleep: { ... }
    }
  }
});