Skip to main content
Device-derived readings: heart rate, sleep, activity, glucose, and vitals. Submit these via POST /v1/logs/batch or the Python SDK; see How logs work for submission fields and the difference between lifecycle-tracked and point-in-time log types.

Heart rate data

Type: heart_rate_data · Source: Python SDK / REST, App SDK (coming soon) · Extensible Reserved for heart rate or HRV from a device or integration: resting_bpm, avg/min/max_bpm, avg_hrv_sdnn_ms, period, device_provider. Payload
resting_bpm
number
Resting heart rate in beats per minute.
avg_bpm
number
Average heart rate in bpm over the measurement period.
min_bpm
number
Minimum heart rate in bpm over the measurement period.
max_bpm
number
Maximum heart rate in bpm over the measurement period.
avg_hrv_sdnn_ms
number
Heart rate variability (SDNN) in milliseconds.
irregular_events_count
integer
Count of irregular rhythm events detected by the device.
period
object
device_provider
string
Device or integration provider.. Example: garmin, fitbit, apple_health
extensions
object
Open key/value bag for client/source-specific fields that lack a typed slot; merged into the entry’s extensions (leaf-level, last-writer-wins by event timestamp).
Example
import olira
from olira import OliraLogType

olira.log(
    log_type=OliraLogType.HEART_RATE_DATA,
    patient_id="your-patient-id",
    payload={},
)
Related types: Use vitals_measurement for vital signs from exam or flowsheet. Not intended for single spot HR in a vitals set (vitals_measurement with heart_rate_bpm). Always include period to anchor the measurement window; include device_provider when multiple simultaneous sources are possible.

Sleep data

Type: sleep_data · Source: Python SDK / REST, App SDK (coming soon) · Extensible Reserved for one sleep session from a device or integration. Each event represents a single session; include period (full sleep window, UTC start to end) and device_provider: total_sleep_minutes, stages, period, device_provider. Payload
total_sleep_minutes
number
Total sleep duration in minutes.
deep_sleep_minutes
number
Duration in deep/slow-wave sleep stage (minutes).
rem_sleep_minutes
number
Duration in REM sleep stage (minutes).
light_sleep_minutes
number
Duration in light sleep stage (minutes).
awake_minutes
number
Wake after sleep onset (WASO) in minutes.
period
object
device_provider
string
Device or integration provider.. Example: garmin, fitbit, apple_health
extensions
object
Open key/value bag for client/source-specific fields that lack a typed slot; merged into the entry’s extensions (leaf-level, last-writer-wins by event timestamp).
Example
import olira
from olira import OliraLogType

olira.log(
    log_type=OliraLogType.SLEEP_DATA,
    patient_id="your-patient-id",
    payload={},
)
Related types: Use activity_data for activity or steps, vitals_measurement for vitals.

Activity data

Type: activity_data · Source: Python SDK / REST, App SDK (coming soon), signal_feature_pipeline · Extensible Reserved for activity measurements from wearables, device integrations, or the signal feature pipeline. Each event covers one measurement period (a daily summary or a single detected walking bout); always set period to define the window: steps, walks, active_minutes, sedentary_minutes, calories, floors_climbed, exercise_sessions, period, device_provider, local_date. Payload
steps
integer
Step count within the measurement period.
walks
integer
Number of discrete walking bouts.
walking_minutes
number
Total minutes spent walking.
time_at_home_percent
number
Percentage of time spent at home location (0–100).. Minimum: 0. Maximum: 100
distance_travelled
object
Distance with explicit unit. Server normalises to metres.
active_minutes
integer
Minutes of moderate-to-vigorous activity.
sedentary_minutes
integer
Sedentary minutes within the measurement period.
calories_total
number
Total calories burned.
calories_active
number
Active calories burned.
floors_climbed
integer
Number of floors climbed.
exercise_sessions
object[]
period
object
device_provider
string
Device or integration provider.. Example: garmin, fitbit, apple_health
local_date
string
ISO 8601 date (YYYY-MM-DD) in the patient’s local timezone, derived from utc_offset_seconds. Preferred anchor for per-day grouping when period spans midnight in UTC.
utc_offset_seconds
integer
UTC offset of the sensor at the time of the measurement, in seconds (e.g. -18000 for UTC-5).
extensions
object
Open key/value bag for client/source-specific fields that lack a typed slot; merged into the entry’s extensions (leaf-level, last-writer-wins by event timestamp).
Example
import olira
from olira import OliraLogType

olira.log(
    log_type=OliraLogType.ACTIVITY_DATA,
    patient_id="your-patient-id",
    payload={},
)
Related types: Use vitals_measurement for vital signs, sleep_data for sleep, heart_rate_data for heart rate.

CGM reading

Type: cgm_reading · Source: Python SDK / REST, App SDK (coming soon) · Extensible Reserved for a single CGM reading from a continuous glucose device: glucose_mg_dl + sensor_timestamp; trend_arrow, glucose_flag, device_provider optional. Payload
glucose_mg_dl
number
required
Blood glucose in mg/dL. To convert to mmol/L divide by 18.018.
trend_arrow
string
e.g. rising, falling, steady.. Example: rising, falling, stable
glucose_flag
string
Whether glucose is above, below, or within range.. One of: high, low, normal
sensor_timestamp
string
required
ISO 8601 UTC timestamp from the CGM sensor.
device_provider
string
Device or integration provider.. Example: dexcom, freestyle_libre, eversense
extensions
object
Open key/value bag for client/source-specific fields that lack a typed slot; merged into the entry’s extensions (leaf-level, last-writer-wins by event timestamp).
Example
import olira
from olira import OliraLogType

olira.log(
    log_type=OliraLogType.CGM_READING,
    patient_id="your-patient-id",
    payload={
        "glucose_mg_dl": 0,
        "sensor_timestamp": "..."
    },
)
Related types: Use lab_results for lab glucose or other lab results. Not intended for fingerstick or other non-CGM glucose (lab_results if from lab).

SpO2 reading

Type: spo2_reading · Source: Python SDK / REST, App SDK (coming soon) · Extensible Reserved for SpO2 from pulse oximeter or wearable: spo2_percent (+ pulse_bpm, measurement_context, sensor_timestamp, device_provider). Always include sensor_timestamp and device_provider. Payload
spo2_percent
number
required
Oxygen saturation percentage (0–100).. Minimum: 0. Maximum: 100
pulse_bpm
number
Simultaneous pulse rate in beats per minute.
measurement_context
string
Conditions under which SpO2 was measured.. One of: resting, during_sleep, activity
sensor_timestamp
string
ISO 8601 UTC datetime of the reading.
device_provider
string
Device or integration provider.. Example: withings, garmin, fitbit
extensions
object
Open key/value bag for client/source-specific fields that lack a typed slot; merged into the entry’s extensions (leaf-level, last-writer-wins by event timestamp).
Example
import olira
from olira import OliraLogType

olira.log(
    log_type=OliraLogType.SPO2_READING,
    patient_id="your-patient-id",
    payload={
        "spo2_percent": 0
    },
)
Related types: Use lab_results for lab results. Not intended for vitals from exam/flowsheet (vitals_measurement when SpO2 is part of a broader vitals set).

Weight measurement

Type: weight_measurement · Source: Python SDK / REST, App SDK (coming soon) · Extensible Reserved for weight from a connected scale device: weight_kg (+ body_fat_percent, bmi, sensor_timestamp, device_provider). Payload
weight_kg
number
required
Body weight in kilograms.
body_fat_percent
number
Body fat percentage (0–100).. Minimum: 0. Maximum: 100
bmi
number
Body mass index (calculated). Provide if returned by the device.
sensor_timestamp
string
ISO 8601 UTC datetime of the measurement.
device_provider
string
Device or integration provider.. Example: withings, omron, fitbit
extensions
object
Open key/value bag for client/source-specific fields that lack a typed slot; merged into the entry’s extensions (leaf-level, last-writer-wins by event timestamp).
Example
import olira
from olira import OliraLogType

olira.log(
    log_type=OliraLogType.WEIGHT_MEASUREMENT,
    patient_id="your-patient-id",
    payload={
        "weight_kg": 0
    },
)
Related types: Use vitals_measurement for weight from vitals/flowsheet, lab_results for lab or other.