@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?
optionalevents?:object[]
extensions?
optionalextensions?:object
Index Signature
[key: string]: unknown
extensions.course?
optionalcourse?:unknown
extensions.course_points?
optionalcourse_points?:unknown
extensions.fit?
optionalfit?:unknown
extensions.health?
optionalhealth?:object
Index Signature
[key: string]: unknown
extensions.health.bodyComposition?
optionalbodyComposition?:object
extensions.health.bodyComposition.bmi?
optionalbmi?:number
extensions.health.bodyComposition.bodyFatPercent?
optionalbodyFatPercent?:number
extensions.health.bodyComposition.bodyWaterPercent?
optionalbodyWaterPercent?:number
extensions.health.bodyComposition.boneMassKilograms?
optionalboneMassKilograms?:number
extensions.health.bodyComposition.externalId?
optionalexternalId?:string
extensions.health.bodyComposition.kaiordRecordId?
optionalkaiordRecordId?:string
extensions.health.bodyComposition.kind
kind:
"bodyComposition"
extensions.health.bodyComposition.leanMassKilograms?
optionalleanMassKilograms?:number
extensions.health.bodyComposition.measuredAt
measuredAt:
string
extensions.health.bodyComposition.sourceBridgeId?
optionalsourceBridgeId?:string
extensions.health.bodyComposition.version
version:
string=healthVersionSchema
extensions.health.daily?
optionaldaily?:object
extensions.health.daily.activeCalories
activeCalories:
number
extensions.health.daily.date
date:
string
extensions.health.daily.externalId?
optionalexternalId?:string
extensions.health.daily.floorsClimbed?
optionalfloorsClimbed?: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?
optionalkaiordRecordId?:string
extensions.health.daily.kind
kind:
"daily"
extensions.health.daily.restingCalories
restingCalories:
number
extensions.health.daily.sourceBridgeId?
optionalsourceBridgeId?:string
extensions.health.daily.steps
steps:
number
extensions.health.daily.version
version:
string=healthVersionSchema
extensions.health.hrv?
optionalhrv?:object
extensions.health.hrv.externalId?
optionalexternalId?:string
extensions.health.hrv.kaiordRecordId?
optionalkaiordRecordId?: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?
optionalscore?:number
extensions.health.hrv.sourceBridgeId?
optionalsourceBridgeId?:string
extensions.health.hrv.version
version:
string=healthVersionSchema
extensions.health.sleep?
optionalsleep?:object
extensions.health.sleep.endTime
endTime:
string
extensions.health.sleep.externalId?
optionalexternalId?:string
extensions.health.sleep.kaiordRecordId?
optionalkaiordRecordId?:string
extensions.health.sleep.kind
kind:
"sleep"
extensions.health.sleep.restingHeartRate?
optionalrestingHeartRate?:number
extensions.health.sleep.score?
optionalscore?:number
extensions.health.sleep.sourceBridgeId?
optionalsourceBridgeId?:string
extensions.health.sleep.stages
stages:
object[]
extensions.health.sleep.startTime
startTime:
string
extensions.health.sleep.totalDurationSeconds
totalDurationSeconds:
number
extensions.health.sleep.version
version:
string=healthVersionSchema
extensions.health.stress?
optionalstress?:object
extensions.health.stress.averageLevel
averageLevel:
number
extensions.health.stress.endTime
endTime:
string
extensions.health.stress.externalId?
optionalexternalId?:string
extensions.health.stress.kaiordRecordId?
optionalkaiordRecordId?:string
extensions.health.stress.kind
kind:
"stress"
extensions.health.stress.peakLevel
peakLevel:
number
extensions.health.stress.sourceBridgeId?
optionalsourceBridgeId?:string
extensions.health.stress.startTime
startTime:
string
extensions.health.stress.version
version:
string=healthVersionSchema
extensions.health.weight?
optionalweight?:object
extensions.health.weight.externalId?
optionalexternalId?:string
extensions.health.weight.kaiordRecordId?
optionalkaiordRecordId?:string
extensions.health.weight.kind
kind:
"weight"
extensions.health.weight.measuredAt
measuredAt:
string
extensions.health.weight.sourceBridgeId?
optionalsourceBridgeId?:string
extensions.health.weight.version
version:
string=healthVersionSchema
extensions.health.weight.weightKilograms
weightKilograms:
number
extensions.structured_workout?
optionalstructured_workout?:unknown
laps?
optionallaps?:object[]
metadata
metadata:
object=krdMetadataSchema
metadata.created
created:
string
metadata.manufacturer?
optionalmanufacturer?:string
metadata.product?
optionalproduct?:string
metadata.serialNumber?
optionalserialNumber?:string
metadata.sport?
optionalsport?: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?
optionalsubSport?:string
records?
optionalrecords?:object[]
sessions?
optionalsessions?: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