Skip to content

Data types, fields, and units

HealthBridge uses unified IDs across the editor, HealthKit, and Health Connect. The registry contains both public API types and permission-only entries.

HealthDataSample contains Id, DataTypeId, UTC Unix-millisecond start/end times, Source, generic Values, and computed date/duration helpers.

It has no single Value property. Cast to a typed subclass or call GetValue<T>(key).

Type Primary fields and units
StepsSample Count
SleepSample Stages and total duration in milliseconds/TimeSpan
WeightSample WeightKg
CaloriesSample EnergyKcal
DistanceSample DistanceMeters, computed kilometers
HydrationSample VolumeLiters, computed milliliters
NutritionSample Meal details and optional nutrient grams/kilocalories
HeartRateSample Unix-millisecond timestamp and beats per minute
BloodPressureSample Systolic/diastolic millimeters of mercury
PowerSample Timestamped watts
SpeedSample Timestamped meters/second
CyclingCadenceSample Timestamped revolutions/minute
MenstruationFlowSample Platform category value
CervicalMucusSample Platform category values

WorkoutData reads use CaloriesBurned, kilometer summary Distance, optional Steps, and TimeInHrZones.

WorkoutWriteSample writes use CaloriesBurnedKcal, meter-based DistanceMeters, optional Steps, and raw HeartRateSamples. Duration is derived from StartTime and EndTime.

HealthDataTypeRegistry.AllTypes, GetById, GetByCategory, GetPublicApiStatus, and platform metadata describe the SDK catalog. They do not guarantee the current device can perform an operation.

Use HealthBridgeService.GetDataTypeCapabilities() to enumerate the active platform and GetDataTypeCapability(id) for a selected type. Enable a read or write only when CanRead or CanWrite is true. Use Availability and Reason to explain read-only, unavailable, deprecated, and permission-only rows.

HealthDataTypeInfo.GetFields(platform) is the source of truth for generic schemas: field keys, required values, units, allowed ranges, and legal category choices. Some concepts exist only on one platform or require specialized flows. Show the capability reason rather than inventing parity or a generic payload.

Short gameplay IDs such as calories and distance can map to registry rows such as active_calories_burned and distance_walking_running. Configure permissions from registry metadata, not string guessing.