Skip to content

@kaiord/core


@kaiord/core / validateKrd

Function: validateKrd() ​

validateKrd(krd): object

Defined in: packages/core/src/domain/validation/validate-krd.ts:13

Validates unknown data against the KRD schema.

Parameters ​

krd ​

unknown

Data to validate

Returns ​

object

Validated and parsed KRD object (via Zod's result.data)

events? ​

optional events?: object[]

extensions? ​

optional extensions?: object

Index Signature ​

[key: string]: unknown

extensions.course? ​

optional course?: unknown

extensions.course_points? ​

optional course_points?: unknown

extensions.fit? ​

optional fit?: unknown

extensions.health? ​

optional health?: object

Index Signature ​

[key: string]: unknown

extensions.health.bodyComposition? ​

optional bodyComposition?: object

extensions.health.bodyComposition.basalMetabolicRateKcal? ​

optional basalMetabolicRateKcal?: number

extensions.health.bodyComposition.bmi? ​

optional bmi?: number

extensions.health.bodyComposition.bodyFatPercent? ​

optional bodyFatPercent?: number

extensions.health.bodyComposition.bodyWaterPercent? ​

optional bodyWaterPercent?: number

extensions.health.bodyComposition.boneMassKilograms? ​

optional boneMassKilograms?: number

extensions.health.bodyComposition.externalId? ​

optional externalId?: string

extensions.health.bodyComposition.kaiordRecordId? ​

optional kaiordRecordId?: string

extensions.health.bodyComposition.kind ​

kind: "bodyComposition"

extensions.health.bodyComposition.leanMassKilograms? ​

optional leanMassKilograms?: number

extensions.health.bodyComposition.measuredAt ​

measuredAt: string

extensions.health.bodyComposition.sourceBridgeId? ​

optional sourceBridgeId?: string

extensions.health.bodyComposition.version ​

version: string = healthVersionSchema

extensions.health.bodyComposition.visceralFatRating? ​

optional visceralFatRating?: number

extensions.health.daily? ​

optional daily?: object

extensions.health.daily.activeCalories ​

activeCalories: number

extensions.health.daily.date ​

date: string

extensions.health.daily.externalId? ​

optional externalId?: string

extensions.health.daily.floorsClimbed? ​

optional floorsClimbed?: number

extensions.health.daily.intensityMinutes ​

intensityMinutes: object

extensions.health.daily.intensityMinutes.moderate ​

moderate: number

extensions.health.daily.intensityMinutes.vigorous ​

vigorous: number

extensions.health.daily.kaiordRecordId? ​

optional kaiordRecordId?: string

extensions.health.daily.kind ​

kind: "daily"

extensions.health.daily.restingCalories ​

restingCalories: number

extensions.health.daily.sourceBridgeId? ​

optional sourceBridgeId?: string

extensions.health.daily.steps ​

steps: number

extensions.health.daily.version ​

version: string = healthVersionSchema

extensions.health.hrv? ​

optional hrv?: object

extensions.health.hrv.externalId? ​

optional externalId?: string

extensions.health.hrv.kaiordRecordId? ​

optional kaiordRecordId?: string

extensions.health.hrv.kind ​

kind: "hrv"

extensions.health.hrv.measuredAt ​

measuredAt: string

extensions.health.hrv.measurementWindow ​

measurementWindow: "overnight" | "spot"

extensions.health.hrv.rMSSD ​

rMSSD: number

extensions.health.hrv.score? ​

optional score?: number

extensions.health.hrv.sourceBridgeId? ​

optional sourceBridgeId?: string

extensions.health.hrv.version ​

version: string = healthVersionSchema

extensions.health.sleep? ​

optional sleep?: object

extensions.health.sleep.endTime ​

endTime: string

extensions.health.sleep.externalId? ​

optional externalId?: string

extensions.health.sleep.kaiordRecordId? ​

optional kaiordRecordId?: string

extensions.health.sleep.kind ​

kind: "sleep"

extensions.health.sleep.restingHeartRate? ​

optional restingHeartRate?: number

extensions.health.sleep.score? ​

optional score?: number

extensions.health.sleep.sourceBridgeId? ​

optional sourceBridgeId?: string

extensions.health.sleep.stages ​

stages: object[]

extensions.health.sleep.startTime ​

startTime: string

extensions.health.sleep.totalDurationSeconds? ​

optional totalDurationSeconds?: number

extensions.health.sleep.version ​

version: string = healthVersionSchema

extensions.health.stress? ​

optional stress?: object

extensions.health.stress.averageLevel ​

averageLevel: number

extensions.health.stress.endTime ​

endTime: string

extensions.health.stress.externalId? ​

optional externalId?: string

extensions.health.stress.kaiordRecordId? ​

optional kaiordRecordId?: string

extensions.health.stress.kind ​

kind: "stress"

extensions.health.stress.peakLevel ​

peakLevel: number

extensions.health.stress.sourceBridgeId? ​

optional sourceBridgeId?: string

extensions.health.stress.startTime ​

startTime: string

extensions.health.stress.version ​

version: string = healthVersionSchema

extensions.health.weight? ​

optional weight?: object

extensions.health.weight.externalId? ​

optional externalId?: string

extensions.health.weight.kaiordRecordId? ​

optional kaiordRecordId?: string

extensions.health.weight.kind ​

kind: "weight"

extensions.health.weight.measuredAt ​

measuredAt: string

extensions.health.weight.sourceBridgeId? ​

optional sourceBridgeId?: string

extensions.health.weight.version ​

version: string = healthVersionSchema

extensions.health.weight.weightKilograms ​

weightKilograms: number

extensions.structured_workout? ​

optional structured_workout?: unknown

laps? ​

optional laps?: object[]

metadata ​

metadata: object = krdMetadataSchema

metadata.created ​

created: string

metadata.manufacturer? ​

optional manufacturer?: string

metadata.product? ​

optional product?: string

metadata.serialNumber? ​

optional serialNumber?: string

metadata.sport? ​

optional 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.

metadata.subSport? ​

optional subSport?: string

records? ​

optional records?: object[]

sessions? ​

optional sessions?: object[]

type ​

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

version ​

version: string

Throws ​

When validation fails