Sub-daily samples for a single metric
Polymorphic by `metric` path segment. Currently supported slugs: `heart_rate`, `hrv`, `steps`, `calories` — additional metrics (`glucose`, `blood_pressure`, `respiratory_rate`, ECG voltage, body-temperature delta) are wired in follow-up tickets as the underlying UDP point-reads land. Unsupported slugs return `404`. `granularity` requests server-side aggregation (`raw`, `five_minute`, `fifteen_minute`, `one_hour`). Sample shape varies by metric: blood pressure has `systolic`/`diastolic`, ECG voltage has `lead`, body-temperature delta has `sensor_location`; everything else uses `value` + `unit`.
Authorization
MemberBearer Member-scoped JWT minted by POST /v1/auth/token. Required on every /v1/users/{user_id}/... route; the token's sub claim must match the path user_id.
In: header
Path Parameters
uuidQuery Parameters
date-timedate-time"raw""raw" | "five_minute" | "fifteen_minute" | "one_hour"1001 <= value <= 100000 <= valueHeader Parameters
Response Body
application/json
application/json
curl -X GET "https://loading/v1/users/497f6eca-6276-4993-bfeb-53cbbbba6f08/metrics/string/timeseries?start_time=2019-08-24T14%3A15%3A22Z&end_time=2019-08-24T14%3A15%3A22Z"{
"data": [
{
"start": "2019-08-24T14:15:22Z",
"end": "2019-08-24T14:15:22Z",
"unit": "string"
}
]
}{
"detail": [
{
"loc": [
"string"
],
"msg": "string",
"type": "string"
}
]
}Ingest device-recorded workout sessions
Up to 500 items per request. `sport.slug` must be a canonical slug from `/v1/activity-types`; unknown slugs return `422 validation_error`. Same idempotency semantics as the other ingest endpoints.
Ingest sub-daily samples for a single metric
Up to 1000 items per request. `unit` must match the canonical unit for the metric (`bpm` for heart rate, `mg/dL` or `mmol/L` for glucose, `ms` for HRV, `mmHg` for blood pressure, `%` for blood oxygen, etc.); mismatches return `422 validation_error`. Same idempotency / provider-stamp / `is_backfill` semantics as the daily ingest endpoints.