Skip to content

@kaiord/core


@kaiord/core / validateRoundTrip

Function: validateRoundTrip() ​

validateRoundTrip(binaryReader, binaryWriter, toleranceChecker, logger): object

Defined in: packages/core/src/application/round-trip/validate-round-trip.ts:36

Validates round-trip conversion between a binary format and KRD.

Format-agnostic in mechanism: it depends only on the injected BinaryReader/BinaryWriter ports, so it validates any binary adapter (FIT today). It exposes validateBinaryRoundTrip (binary → KRD → binary) and validateKrdRoundTrip (KRD → binary → KRD), each returning the tolerance violations found. Default tolerances: time ±1 s, power ±1 W or ±1% FTP, heart rate ±1 bpm, cadence ±1 rpm.

Parameters ​

binaryReader ​

BinaryReader

binary-format reader implementation

binaryWriter ​

BinaryWriter

binary-format writer implementation

toleranceChecker ​

ToleranceChecker

tolerance checker with configured thresholds

logger ​

Logger

logger for operation tracking

Returns ​

validateBinaryRoundTrip ​

validateBinaryRoundTrip: (params) => Promise<object[]>

Parameters ​

params ​
originalBinary ​

Uint8Array

Returns ​

Promise<object[]>

validateFitToKrdToFit ​

validateFitToKrdToFit: (params) => Promise<object[]>

Parameters ​

params ​
originalFit ​

Uint8Array

Returns ​

Promise<object[]>

Deprecated ​

Use validateBinaryRoundTrip; the reader/writer are format-agnostic binary ports, not FIT-specific.

validateKrdRoundTrip ​

validateKrdRoundTrip: (params) => Promise<object[]>

Parameters ​

params ​
originalKrd ​

{ events?: object[]; extensions?: {[key: string]: unknown; course?: unknown; course_points?: unknown; fit?: unknown; health?: {[key: string]: unknown; bodyComposition?: { basalMetabolicRateKcal?: ... | ...; bmi?: ... | ...; bodyFatPercent?: ... | ...; bodyWaterPercent?: ... | ...; boneMassKilograms?: ... | ...; externalId?: ... | ...; kaiordRecordId?: ... | ...; kind: "bodyComposition"; leanMassKilograms?: ... | ...; measuredAt: string; sourceBridgeId?: ... | ...; version: string; visceralFatRating?: ... | ...; }; daily?: { activeCalories: number; date: string; externalId?: ... | ...; floorsClimbed?: ... | ...; intensityMinutes: { moderate: ...; vigorous: ...; }; kaiordRecordId?: ... | ...; kind: "daily"; restingCalories: number; sourceBridgeId?: ... | ...; steps: number; version: string; }; hrv?: { externalId?: ... | ...; kaiordRecordId?: ... | ...; kind: "hrv"; measuredAt: string; measurementWindow: ... | ...; rMSSD: number; score?: ... | ...; sourceBridgeId?: ... | ...; version: string; }; sleep?: { endTime: string; externalId?: ... | ...; kaiordRecordId?: ... | ...; kind: "sleep"; restingHeartRate?: ... | ...; score?: ... | ...; sourceBridgeId?: ... | ...; stages: ...[]; startTime: string; totalDurationSeconds?: ... | ...; version: string; }; stress?: { averageLevel: number; endTime: string; externalId?: ... | ...; kaiordRecordId?: ... | ...; kind: "stress"; peakLevel: number; sourceBridgeId?: ... | ...; startTime: string; version: string; }; weight?: { externalId?: ... | ...; kaiordRecordId?: ... | ...; kind: "weight"; measuredAt: string; sourceBridgeId?: ... | ...; version: string; weightKilograms: number; }; }; structured_workout?: unknown; }; laps?: object[]; metadata: { created: string; manufacturer?: string; product?: string; serialNumber?: string; sport?: string; subSport?: string; }; records?: object[]; sessions?: object[]; type: "structured_workout" | "recorded_activity" | "course" | "sleep_record" | "weight_measurement" | "hrv_summary" | "daily_wellness" | "body_composition" | "stress_episode"; version: string; }

originalKrd.events? ​

object[] = ...

originalKrd.extensions? ​

{[key: string]: unknown; course?: unknown; course_points?: unknown; fit?: unknown; health?: {[key: string]: unknown; bodyComposition?: { basalMetabolicRateKcal?: ... | ...; bmi?: ... | ...; bodyFatPercent?: ... | ...; bodyWaterPercent?: ... | ...; boneMassKilograms?: ... | ...; externalId?: ... | ...; kaiordRecordId?: ... | ...; kind: "bodyComposition"; leanMassKilograms?: ... | ...; measuredAt: string; sourceBridgeId?: ... | ...; version: string; visceralFatRating?: ... | ...; }; daily?: { activeCalories: number; date: string; externalId?: ... | ...; floorsClimbed?: ... | ...; intensityMinutes: { moderate: ...; vigorous: ...; }; kaiordRecordId?: ... | ...; kind: "daily"; restingCalories: number; sourceBridgeId?: ... | ...; steps: number; version: string; }; hrv?: { externalId?: ... | ...; kaiordRecordId?: ... | ...; kind: "hrv"; measuredAt: string; measurementWindow: ... | ...; rMSSD: number; score?: ... | ...; sourceBridgeId?: ... | ...; version: string; }; sleep?: { endTime: string; externalId?: ... | ...; kaiordRecordId?: ... | ...; kind: "sleep"; restingHeartRate?: ... | ...; score?: ... | ...; sourceBridgeId?: ... | ...; stages: ...[]; startTime: string; totalDurationSeconds?: ... | ...; version: string; }; stress?: { averageLevel: number; endTime: string; externalId?: ... | ...; kaiordRecordId?: ... | ...; kind: "stress"; peakLevel: number; sourceBridgeId?: ... | ...; startTime: string; version: string; }; weight?: { externalId?: ... | ...; kaiordRecordId?: ... | ...; kind: "weight"; measuredAt: string; sourceBridgeId?: ... | ...; version: string; weightKilograms: number; }; }; structured_workout?: unknown; } = ...

originalKrd.extensions.course? ​

unknown = ...

originalKrd.extensions.course_points? ​

unknown = ...

originalKrd.extensions.fit? ​

unknown = ...

originalKrd.extensions.health? ​

{[key: string]: unknown; bodyComposition?: { basalMetabolicRateKcal?: ... | ...; bmi?: ... | ...; bodyFatPercent?: ... | ...; bodyWaterPercent?: ... | ...; boneMassKilograms?: ... | ...; externalId?: ... | ...; kaiordRecordId?: ... | ...; kind: "bodyComposition"; leanMassKilograms?: ... | ...; measuredAt: string; sourceBridgeId?: ... | ...; version: string; visceralFatRating?: ... | ...; }; daily?: { activeCalories: number; date: string; externalId?: ... | ...; floorsClimbed?: ... | ...; intensityMinutes: { moderate: ...; vigorous: ...; }; kaiordRecordId?: ... | ...; kind: "daily"; restingCalories: number; sourceBridgeId?: ... | ...; steps: number; version: string; }; hrv?: { externalId?: ... | ...; kaiordRecordId?: ... | ...; kind: "hrv"; measuredAt: string; measurementWindow: ... | ...; rMSSD: number; score?: ... | ...; sourceBridgeId?: ... | ...; version: string; }; sleep?: { endTime: string; externalId?: ... | ...; kaiordRecordId?: ... | ...; kind: "sleep"; restingHeartRate?: ... | ...; score?: ... | ...; sourceBridgeId?: ... | ...; stages: ...[]; startTime: string; totalDurationSeconds?: ... | ...; version: string; }; stress?: { averageLevel: number; endTime: string; externalId?: ... | ...; kaiordRecordId?: ... | ...; kind: "stress"; peakLevel: number; sourceBridgeId?: ... | ...; startTime: string; version: string; }; weight?: { externalId?: ... | ...; kaiordRecordId?: ... | ...; kind: "weight"; measuredAt: string; sourceBridgeId?: ... | ...; version: string; weightKilograms: number; }; } = ...

originalKrd.extensions.health.bodyComposition? ​

{ basalMetabolicRateKcal?: ... | ...; bmi?: ... | ...; bodyFatPercent?: ... | ...; bodyWaterPercent?: ... | ...; boneMassKilograms?: ... | ...; externalId?: ... | ...; kaiordRecordId?: ... | ...; kind: "bodyComposition"; leanMassKilograms?: ... | ...; measuredAt: string; sourceBridgeId?: ... | ...; version: string; visceralFatRating?: ... | ...; } = ...

originalKrd.extensions.health.bodyComposition.basalMetabolicRateKcal? ​

... | ... = ...

originalKrd.extensions.health.bodyComposition.bmi? ​

... | ... = ...

originalKrd.extensions.health.bodyComposition.bodyFatPercent? ​

... | ... = ...

originalKrd.extensions.health.bodyComposition.bodyWaterPercent? ​

... | ... = ...

originalKrd.extensions.health.bodyComposition.boneMassKilograms? ​

... | ... = ...

originalKrd.extensions.health.bodyComposition.externalId? ​

... | ... = ...

originalKrd.extensions.health.bodyComposition.kaiordRecordId? ​

... | ... = ...

originalKrd.extensions.health.bodyComposition.kind ​

"bodyComposition" = ...

originalKrd.extensions.health.bodyComposition.leanMassKilograms? ​

... | ... = ...

originalKrd.extensions.health.bodyComposition.measuredAt ​

string = ...

originalKrd.extensions.health.bodyComposition.sourceBridgeId? ​

... | ... = ...

originalKrd.extensions.health.bodyComposition.version ​

string = healthVersionSchema

originalKrd.extensions.health.bodyComposition.visceralFatRating? ​

... | ... = ...

originalKrd.extensions.health.daily? ​

{ activeCalories: number; date: string; externalId?: ... | ...; floorsClimbed?: ... | ...; intensityMinutes: { moderate: ...; vigorous: ...; }; kaiordRecordId?: ... | ...; kind: "daily"; restingCalories: number; sourceBridgeId?: ... | ...; steps: number; version: string; } = ...

originalKrd.extensions.health.daily.activeCalories ​

number = ...

originalKrd.extensions.health.daily.date ​

string = ...

originalKrd.extensions.health.daily.externalId? ​

... | ... = ...

originalKrd.extensions.health.daily.floorsClimbed? ​

... | ... = ...

originalKrd.extensions.health.daily.intensityMinutes ​

{ moderate: ...; vigorous: ...; } = ...

originalKrd.extensions.health.daily.intensityMinutes.moderate ​

... = ...

originalKrd.extensions.health.daily.intensityMinutes.vigorous ​

... = ...

originalKrd.extensions.health.daily.kaiordRecordId? ​

... | ... = ...

originalKrd.extensions.health.daily.kind ​

"daily" = ...

originalKrd.extensions.health.daily.restingCalories ​

number = ...

originalKrd.extensions.health.daily.sourceBridgeId? ​

... | ... = ...

originalKrd.extensions.health.daily.steps ​

number = ...

originalKrd.extensions.health.daily.version ​

string = healthVersionSchema

originalKrd.extensions.health.hrv? ​

{ externalId?: ... | ...; kaiordRecordId?: ... | ...; kind: "hrv"; measuredAt: string; measurementWindow: ... | ...; rMSSD: number; score?: ... | ...; sourceBridgeId?: ... | ...; version: string; } = ...

originalKrd.extensions.health.hrv.externalId? ​

... | ... = ...

originalKrd.extensions.health.hrv.kaiordRecordId? ​

... | ... = ...

originalKrd.extensions.health.hrv.kind ​

"hrv" = ...

originalKrd.extensions.health.hrv.measuredAt ​

string = ...

originalKrd.extensions.health.hrv.measurementWindow ​

... | ... = ...

originalKrd.extensions.health.hrv.rMSSD ​

number = ...

originalKrd.extensions.health.hrv.score? ​

... | ... = ...

originalKrd.extensions.health.hrv.sourceBridgeId? ​

... | ... = ...

originalKrd.extensions.health.hrv.version ​

string = healthVersionSchema

originalKrd.extensions.health.sleep? ​

{ endTime: string; externalId?: ... | ...; kaiordRecordId?: ... | ...; kind: "sleep"; restingHeartRate?: ... | ...; score?: ... | ...; sourceBridgeId?: ... | ...; stages: ...[]; startTime: string; totalDurationSeconds?: ... | ...; version: string; } = ...

originalKrd.extensions.health.sleep.endTime ​

string = ...

originalKrd.extensions.health.sleep.externalId? ​

... | ... = ...

originalKrd.extensions.health.sleep.kaiordRecordId? ​

... | ... = ...

originalKrd.extensions.health.sleep.kind ​

"sleep" = ...

originalKrd.extensions.health.sleep.restingHeartRate? ​

... | ... = ...

originalKrd.extensions.health.sleep.score? ​

... | ... = ...

originalKrd.extensions.health.sleep.sourceBridgeId? ​

... | ... = ...

originalKrd.extensions.health.sleep.stages ​

...[] = ...

originalKrd.extensions.health.sleep.startTime ​

string = ...

originalKrd.extensions.health.sleep.totalDurationSeconds? ​

... | ... = ...

originalKrd.extensions.health.sleep.version ​

string = healthVersionSchema

originalKrd.extensions.health.stress? ​

{ averageLevel: number; endTime: string; externalId?: ... | ...; kaiordRecordId?: ... | ...; kind: "stress"; peakLevel: number; sourceBridgeId?: ... | ...; startTime: string; version: string; } = ...

originalKrd.extensions.health.stress.averageLevel ​

number = ...

originalKrd.extensions.health.stress.endTime ​

string = ...

originalKrd.extensions.health.stress.externalId? ​

... | ... = ...

originalKrd.extensions.health.stress.kaiordRecordId? ​

... | ... = ...

originalKrd.extensions.health.stress.kind ​

"stress" = ...

originalKrd.extensions.health.stress.peakLevel ​

number = ...

originalKrd.extensions.health.stress.sourceBridgeId? ​

... | ... = ...

originalKrd.extensions.health.stress.startTime ​

string = ...

originalKrd.extensions.health.stress.version ​

string = healthVersionSchema

originalKrd.extensions.health.weight? ​

{ externalId?: ... | ...; kaiordRecordId?: ... | ...; kind: "weight"; measuredAt: string; sourceBridgeId?: ... | ...; version: string; weightKilograms: number; } = ...

originalKrd.extensions.health.weight.externalId? ​

... | ... = ...

originalKrd.extensions.health.weight.kaiordRecordId? ​

... | ... = ...

originalKrd.extensions.health.weight.kind ​

"weight" = ...

originalKrd.extensions.health.weight.measuredAt ​

string = ...

originalKrd.extensions.health.weight.sourceBridgeId? ​

... | ... = ...

originalKrd.extensions.health.weight.version ​

string = healthVersionSchema

originalKrd.extensions.health.weight.weightKilograms ​

number = ...

originalKrd.extensions.structured_workout? ​

unknown = ...

originalKrd.laps? ​

object[] = ...

originalKrd.metadata ​

{ created: string; manufacturer?: string; product?: string; serialNumber?: string; sport?: string; subSport?: string; } = krdMetadataSchema

originalKrd.metadata.created ​

string = ...

originalKrd.metadata.manufacturer? ​

string = ...

originalKrd.metadata.product? ​

string = ...

originalKrd.metadata.serialNumber? ​

string = ...

originalKrd.metadata.sport? ​

string = ...

See

sportSchema for known sport values. Accepts custom strings for forward compatibility.

Optional at the metadata level because health-metric KRD types (sleep, weight, HRV, daily wellness, body composition, stress) have no associated sport. A conditional refinement on krdSchema still requires sport for the three legacy workout/activity/course types so v1.x consumers see no change for those.

originalKrd.metadata.subSport? ​

string = ...

originalKrd.records? ​

object[] = ...

originalKrd.sessions? ​

object[] = ...

originalKrd.type ​

"structured_workout" | "recorded_activity" | "course" | "sleep_record" | "weight_measurement" | "hrv_summary" | "daily_wellness" | "body_composition" | "stress_episode" = fileTypeSchema

originalKrd.version ​

string = ...

Returns ​

Promise<object[]>

validateKrdToFitToKrd ​

validateKrdToFitToKrd: (params) => Promise<object[]>

Parameters ​

params ​
originalKrd ​

{ events?: object[]; extensions?: {[key: string]: unknown; course?: unknown; course_points?: unknown; fit?: unknown; health?: {[key: string]: unknown; bodyComposition?: { basalMetabolicRateKcal?: ... | ...; bmi?: ... | ...; bodyFatPercent?: ... | ...; bodyWaterPercent?: ... | ...; boneMassKilograms?: ... | ...; externalId?: ... | ...; kaiordRecordId?: ... | ...; kind: "bodyComposition"; leanMassKilograms?: ... | ...; measuredAt: string; sourceBridgeId?: ... | ...; version: string; visceralFatRating?: ... | ...; }; daily?: { activeCalories: number; date: string; externalId?: ... | ...; floorsClimbed?: ... | ...; intensityMinutes: { moderate: ...; vigorous: ...; }; kaiordRecordId?: ... | ...; kind: "daily"; restingCalories: number; sourceBridgeId?: ... | ...; steps: number; version: string; }; hrv?: { externalId?: ... | ...; kaiordRecordId?: ... | ...; kind: "hrv"; measuredAt: string; measurementWindow: ... | ...; rMSSD: number; score?: ... | ...; sourceBridgeId?: ... | ...; version: string; }; sleep?: { endTime: string; externalId?: ... | ...; kaiordRecordId?: ... | ...; kind: "sleep"; restingHeartRate?: ... | ...; score?: ... | ...; sourceBridgeId?: ... | ...; stages: ...[]; startTime: string; totalDurationSeconds?: ... | ...; version: string; }; stress?: { averageLevel: number; endTime: string; externalId?: ... | ...; kaiordRecordId?: ... | ...; kind: "stress"; peakLevel: number; sourceBridgeId?: ... | ...; startTime: string; version: string; }; weight?: { externalId?: ... | ...; kaiordRecordId?: ... | ...; kind: "weight"; measuredAt: string; sourceBridgeId?: ... | ...; version: string; weightKilograms: number; }; }; structured_workout?: unknown; }; laps?: object[]; metadata: { created: string; manufacturer?: string; product?: string; serialNumber?: string; sport?: string; subSport?: string; }; records?: object[]; sessions?: object[]; type: "structured_workout" | "recorded_activity" | "course" | "sleep_record" | "weight_measurement" | "hrv_summary" | "daily_wellness" | "body_composition" | "stress_episode"; version: string; }

originalKrd.events? ​

object[] = ...

originalKrd.extensions? ​

{[key: string]: unknown; course?: unknown; course_points?: unknown; fit?: unknown; health?: {[key: string]: unknown; bodyComposition?: { basalMetabolicRateKcal?: ... | ...; bmi?: ... | ...; bodyFatPercent?: ... | ...; bodyWaterPercent?: ... | ...; boneMassKilograms?: ... | ...; externalId?: ... | ...; kaiordRecordId?: ... | ...; kind: "bodyComposition"; leanMassKilograms?: ... | ...; measuredAt: string; sourceBridgeId?: ... | ...; version: string; visceralFatRating?: ... | ...; }; daily?: { activeCalories: number; date: string; externalId?: ... | ...; floorsClimbed?: ... | ...; intensityMinutes: { moderate: ...; vigorous: ...; }; kaiordRecordId?: ... | ...; kind: "daily"; restingCalories: number; sourceBridgeId?: ... | ...; steps: number; version: string; }; hrv?: { externalId?: ... | ...; kaiordRecordId?: ... | ...; kind: "hrv"; measuredAt: string; measurementWindow: ... | ...; rMSSD: number; score?: ... | ...; sourceBridgeId?: ... | ...; version: string; }; sleep?: { endTime: string; externalId?: ... | ...; kaiordRecordId?: ... | ...; kind: "sleep"; restingHeartRate?: ... | ...; score?: ... | ...; sourceBridgeId?: ... | ...; stages: ...[]; startTime: string; totalDurationSeconds?: ... | ...; version: string; }; stress?: { averageLevel: number; endTime: string; externalId?: ... | ...; kaiordRecordId?: ... | ...; kind: "stress"; peakLevel: number; sourceBridgeId?: ... | ...; startTime: string; version: string; }; weight?: { externalId?: ... | ...; kaiordRecordId?: ... | ...; kind: "weight"; measuredAt: string; sourceBridgeId?: ... | ...; version: string; weightKilograms: number; }; }; structured_workout?: unknown; } = ...

originalKrd.extensions.course? ​

unknown = ...

originalKrd.extensions.course_points? ​

unknown = ...

originalKrd.extensions.fit? ​

unknown = ...

originalKrd.extensions.health? ​

{[key: string]: unknown; bodyComposition?: { basalMetabolicRateKcal?: ... | ...; bmi?: ... | ...; bodyFatPercent?: ... | ...; bodyWaterPercent?: ... | ...; boneMassKilograms?: ... | ...; externalId?: ... | ...; kaiordRecordId?: ... | ...; kind: "bodyComposition"; leanMassKilograms?: ... | ...; measuredAt: string; sourceBridgeId?: ... | ...; version: string; visceralFatRating?: ... | ...; }; daily?: { activeCalories: number; date: string; externalId?: ... | ...; floorsClimbed?: ... | ...; intensityMinutes: { moderate: ...; vigorous: ...; }; kaiordRecordId?: ... | ...; kind: "daily"; restingCalories: number; sourceBridgeId?: ... | ...; steps: number; version: string; }; hrv?: { externalId?: ... | ...; kaiordRecordId?: ... | ...; kind: "hrv"; measuredAt: string; measurementWindow: ... | ...; rMSSD: number; score?: ... | ...; sourceBridgeId?: ... | ...; version: string; }; sleep?: { endTime: string; externalId?: ... | ...; kaiordRecordId?: ... | ...; kind: "sleep"; restingHeartRate?: ... | ...; score?: ... | ...; sourceBridgeId?: ... | ...; stages: ...[]; startTime: string; totalDurationSeconds?: ... | ...; version: string; }; stress?: { averageLevel: number; endTime: string; externalId?: ... | ...; kaiordRecordId?: ... | ...; kind: "stress"; peakLevel: number; sourceBridgeId?: ... | ...; startTime: string; version: string; }; weight?: { externalId?: ... | ...; kaiordRecordId?: ... | ...; kind: "weight"; measuredAt: string; sourceBridgeId?: ... | ...; version: string; weightKilograms: number; }; } = ...

originalKrd.extensions.health.bodyComposition? ​

{ basalMetabolicRateKcal?: ... | ...; bmi?: ... | ...; bodyFatPercent?: ... | ...; bodyWaterPercent?: ... | ...; boneMassKilograms?: ... | ...; externalId?: ... | ...; kaiordRecordId?: ... | ...; kind: "bodyComposition"; leanMassKilograms?: ... | ...; measuredAt: string; sourceBridgeId?: ... | ...; version: string; visceralFatRating?: ... | ...; } = ...

originalKrd.extensions.health.bodyComposition.basalMetabolicRateKcal? ​

... | ... = ...

originalKrd.extensions.health.bodyComposition.bmi? ​

... | ... = ...

originalKrd.extensions.health.bodyComposition.bodyFatPercent? ​

... | ... = ...

originalKrd.extensions.health.bodyComposition.bodyWaterPercent? ​

... | ... = ...

originalKrd.extensions.health.bodyComposition.boneMassKilograms? ​

... | ... = ...

originalKrd.extensions.health.bodyComposition.externalId? ​

... | ... = ...

originalKrd.extensions.health.bodyComposition.kaiordRecordId? ​

... | ... = ...

originalKrd.extensions.health.bodyComposition.kind ​

"bodyComposition" = ...

originalKrd.extensions.health.bodyComposition.leanMassKilograms? ​

... | ... = ...

originalKrd.extensions.health.bodyComposition.measuredAt ​

string = ...

originalKrd.extensions.health.bodyComposition.sourceBridgeId? ​

... | ... = ...

originalKrd.extensions.health.bodyComposition.version ​

string = healthVersionSchema

originalKrd.extensions.health.bodyComposition.visceralFatRating? ​

... | ... = ...

originalKrd.extensions.health.daily? ​

{ activeCalories: number; date: string; externalId?: ... | ...; floorsClimbed?: ... | ...; intensityMinutes: { moderate: ...; vigorous: ...; }; kaiordRecordId?: ... | ...; kind: "daily"; restingCalories: number; sourceBridgeId?: ... | ...; steps: number; version: string; } = ...

originalKrd.extensions.health.daily.activeCalories ​

number = ...

originalKrd.extensions.health.daily.date ​

string = ...

originalKrd.extensions.health.daily.externalId? ​

... | ... = ...

originalKrd.extensions.health.daily.floorsClimbed? ​

... | ... = ...

originalKrd.extensions.health.daily.intensityMinutes ​

{ moderate: ...; vigorous: ...; } = ...

originalKrd.extensions.health.daily.intensityMinutes.moderate ​

... = ...

originalKrd.extensions.health.daily.intensityMinutes.vigorous ​

... = ...

originalKrd.extensions.health.daily.kaiordRecordId? ​

... | ... = ...

originalKrd.extensions.health.daily.kind ​

"daily" = ...

originalKrd.extensions.health.daily.restingCalories ​

number = ...

originalKrd.extensions.health.daily.sourceBridgeId? ​

... | ... = ...

originalKrd.extensions.health.daily.steps ​

number = ...

originalKrd.extensions.health.daily.version ​

string = healthVersionSchema

originalKrd.extensions.health.hrv? ​

{ externalId?: ... | ...; kaiordRecordId?: ... | ...; kind: "hrv"; measuredAt: string; measurementWindow: ... | ...; rMSSD: number; score?: ... | ...; sourceBridgeId?: ... | ...; version: string; } = ...

originalKrd.extensions.health.hrv.externalId? ​

... | ... = ...

originalKrd.extensions.health.hrv.kaiordRecordId? ​

... | ... = ...

originalKrd.extensions.health.hrv.kind ​

"hrv" = ...

originalKrd.extensions.health.hrv.measuredAt ​

string = ...

originalKrd.extensions.health.hrv.measurementWindow ​

... | ... = ...

originalKrd.extensions.health.hrv.rMSSD ​

number = ...

originalKrd.extensions.health.hrv.score? ​

... | ... = ...

originalKrd.extensions.health.hrv.sourceBridgeId? ​

... | ... = ...

originalKrd.extensions.health.hrv.version ​

string = healthVersionSchema

originalKrd.extensions.health.sleep? ​

{ endTime: string; externalId?: ... | ...; kaiordRecordId?: ... | ...; kind: "sleep"; restingHeartRate?: ... | ...; score?: ... | ...; sourceBridgeId?: ... | ...; stages: ...[]; startTime: string; totalDurationSeconds?: ... | ...; version: string; } = ...

originalKrd.extensions.health.sleep.endTime ​

string = ...

originalKrd.extensions.health.sleep.externalId? ​

... | ... = ...

originalKrd.extensions.health.sleep.kaiordRecordId? ​

... | ... = ...

originalKrd.extensions.health.sleep.kind ​

"sleep" = ...

originalKrd.extensions.health.sleep.restingHeartRate? ​

... | ... = ...

originalKrd.extensions.health.sleep.score? ​

... | ... = ...

originalKrd.extensions.health.sleep.sourceBridgeId? ​

... | ... = ...

originalKrd.extensions.health.sleep.stages ​

...[] = ...

originalKrd.extensions.health.sleep.startTime ​

string = ...

originalKrd.extensions.health.sleep.totalDurationSeconds? ​

... | ... = ...

originalKrd.extensions.health.sleep.version ​

string = healthVersionSchema

originalKrd.extensions.health.stress? ​

{ averageLevel: number; endTime: string; externalId?: ... | ...; kaiordRecordId?: ... | ...; kind: "stress"; peakLevel: number; sourceBridgeId?: ... | ...; startTime: string; version: string; } = ...

originalKrd.extensions.health.stress.averageLevel ​

number = ...

originalKrd.extensions.health.stress.endTime ​

string = ...

originalKrd.extensions.health.stress.externalId? ​

... | ... = ...

originalKrd.extensions.health.stress.kaiordRecordId? ​

... | ... = ...

originalKrd.extensions.health.stress.kind ​

"stress" = ...

originalKrd.extensions.health.stress.peakLevel ​

number = ...

originalKrd.extensions.health.stress.sourceBridgeId? ​

... | ... = ...

originalKrd.extensions.health.stress.startTime ​

string = ...

originalKrd.extensions.health.stress.version ​

string = healthVersionSchema

originalKrd.extensions.health.weight? ​

{ externalId?: ... | ...; kaiordRecordId?: ... | ...; kind: "weight"; measuredAt: string; sourceBridgeId?: ... | ...; version: string; weightKilograms: number; } = ...

originalKrd.extensions.health.weight.externalId? ​

... | ... = ...

originalKrd.extensions.health.weight.kaiordRecordId? ​

... | ... = ...

originalKrd.extensions.health.weight.kind ​

"weight" = ...

originalKrd.extensions.health.weight.measuredAt ​

string = ...

originalKrd.extensions.health.weight.sourceBridgeId? ​

... | ... = ...

originalKrd.extensions.health.weight.version ​

string = healthVersionSchema

originalKrd.extensions.health.weight.weightKilograms ​

number = ...

originalKrd.extensions.structured_workout? ​

unknown = ...

originalKrd.laps? ​

object[] = ...

originalKrd.metadata ​

{ created: string; manufacturer?: string; product?: string; serialNumber?: string; sport?: string; subSport?: string; } = krdMetadataSchema

originalKrd.metadata.created ​

string = ...

originalKrd.metadata.manufacturer? ​

string = ...

originalKrd.metadata.product? ​

string = ...

originalKrd.metadata.serialNumber? ​

string = ...

originalKrd.metadata.sport? ​

string = ...

See

sportSchema for known sport values. Accepts custom strings for forward compatibility.

Optional at the metadata level because health-metric KRD types (sleep, weight, HRV, daily wellness, body composition, stress) have no associated sport. A conditional refinement on krdSchema still requires sport for the three legacy workout/activity/course types so v1.x consumers see no change for those.

originalKrd.metadata.subSport? ​

string = ...

originalKrd.records? ​

object[] = ...

originalKrd.sessions? ​

object[] = ...

originalKrd.type ​

"structured_workout" | "recorded_activity" | "course" | "sleep_record" | "weight_measurement" | "hrv_summary" | "daily_wellness" | "body_composition" | "stress_episode" = fileTypeSchema

originalKrd.version ​

string = ...

Returns ​

Promise<object[]>

Deprecated ​

Use validateKrdRoundTrip.