# Read API: точки, выбор слоя, свёртка по сетке **Приоритет:** высокий Сейчас данные достаются только `sqlite3` на хосте. Все три сценария — агент-медик, трекер тренировок, фитнес-игра — упираются в отсутствие чтения. Формы запроса ровно две, и это один запрос с необязательным параметром: `?from&to` — все значения за период (вес, лекарства, симптомы), `?from&to&bucket` — с разбивкой (шаги, энергия). Решение по размеру ответа (вариант «б»): разбивка не задана и ответ не влезает — сервер сам берёт сетку погрубее и **называет её в ответе**; разбивка задана явно и не влезает — ошибка со списком доступных сеток, а не тихая подмена. Различие существенно: иначе агент, попросивший минутную сетку, получит суточные суммы. **Отдача тренировок и записей входит сюда же.** Разбор и хранение сущностей с собственным `id` сделаны (change `2026-08-02-trenirovki-i-zapisi`), а эндпоинтов нет: тренировка с маршрутом и записи `stateOfMind` лежат в витрине и наружу не отдаются. Вводить их раньше конверта ответа значило бы задать контракт мимоходом, поэтому `GET /workouts`, `GET /workouts/{id}` и `GET /records/{kind}` закрываются этой задачей — вместе с формой конверта и правилом размера ответа. Второй сценарий паспорта (трекер) до тех пор не закрыт. Готово, когда «шаги за неделю по дням» и «вес за год» отвечаются одним запросом каждый, тренировка отдаётся одним пакетом вместе с маршрутом, а в ответе всегда видно `layer`, `bucket` и `aggregation`. Связано: `docs/architecture.md` → «Read API», план → шаг «Read API».