---
url: /docs/api/core/variables/bodyCompositionSchema.md
---
[**@kaiord/core**](../README.md)

***

[@kaiord/core](../README.md) / bodyCompositionSchema

# Variable: bodyCompositionSchema

> `const` **bodyCompositionSchema**: `ZodObject`<{ `basalMetabolicRateKcal`: `ZodOptional`<`ZodNumber`>; `bmi`: `ZodOptional`<`ZodNumber`>; `bodyFatPercent`: `ZodOptional`<`ZodNumber`>; `bodyWaterPercent`: `ZodOptional`<`ZodNumber`>; `boneMassKilograms`: `ZodOptional`<`ZodNumber`>; `externalId`: `ZodOptional`<`ZodString`>; `kaiordRecordId`: `ZodOptional`<`ZodString`>; `kind`: `ZodLiteral`<`"bodyComposition"`>; `leanMassKilograms`: `ZodOptional`<`ZodNumber`>; `measuredAt`: `ZodISODateTime`; `sourceBridgeId`: `ZodOptional`<`ZodString`>; `version`: `ZodString`; `visceralFatRating`: `ZodOptional`<`ZodNumber`>; }, `$strip`>

Defined in: [packages/core/src/domain/schemas/health/body-composition.ts:14](https://github.com/pablo-albaladejo/kaiord/blob/3eacbe62ef72342d970523967cc5155b5935bb85/packages/core/src/domain/schemas/health/body-composition.ts#L14)

Zod schema for `extensions.health.bodyComposition` — a body-composition
snapshot captured at a point in time.

Each metric field is optional because devices vary in what they report
(a basic scale may emit only `bodyFatPercent`, a Garmin Index scale
emits the full set). A refinement requires that at least one metric
field be present so empty payloads are rejected.
