Skip to content

Wellness

The wellness table stores daily health metrics from wearable devices or manual entry. Each row represents one day from one source.

ColumnTypeUnitDescription
idUUIDRow identifier
user_idUUIDOwner
datedateCalendar date (YYYY-MM-DD)
sourcetextData source (see below)
rhr_bpmrealbpmResting heart rate
hrv_rmssdrealmsHRV — root mean square of successive differences
sleep_hoursrealhoursTotal sleep duration
readinessreal0–100Readiness / recovery score (source-specific scale)
created_attimestamptzWhen the record was created

All metric columns are nullable — a row may have only some metrics filled in depending on what the device reported.

SourceDescription
ouraOura Ring (via Oura API)
garminGarmin Connect (via Garmin Health API)
whoopWHOOP strap
manualEntered manually in FitRepo

Each (user_id, date, source) combination is unique. If a source reports updated data for the same day, FitRepo upserts the row.

hrv_rmssd is the standard overnight HRV metric used by most wearables. RMSSD (root mean square of successive RR-interval differences) is a time-domain measure — higher values generally indicate better parasympathetic activity and recovery.

Different devices measure HRV differently (sampling window, filter algorithms). For trend analysis, stick to a single source to avoid cross-device noise.

The readiness field maps to the device’s own readiness/recovery score:

  • Oura: Readiness Score (0–100)
  • Garmin: Body Battery (0–100)
  • WHOOP: Recovery Score (0–100)

These are not directly comparable across sources.

Use the get_wellness tool to fetch wellness data:

get_wellness(from: "2025-01-01", to: "2025-03-31", source: "oura")

The source filter is optional — omit it to get all sources for a date range.