GuidesОтчёты и снапшоты

Построить отчёт и зафиксировать снапшот

Собрать живой отчёт (account statement), зафиксировать иммутабельный снапшот с хешем и выгрузить его в JSON/CSV.

Отчёты бывают двух видов: живые (меняются вместе с данными) и снапшоты (зафиксированы с хешем, воспроизводимы). Для выписок и сверок вы фиксируете снапшот, а потом выгружаете его. Про неизменяемость и балансы на дату — в Журнале.

Шаг 1. Постройте живой отчёт

GET /api/v1/vaults/{code}/reports/account_statement строит выписку за период. Обязательны from и to; есть timezone, userId (admin: сузить до пользователя) и breakdownBy=owner.

curl "[BASE_URL]/api/v1/vaults/acme-otc/reports/account_statement?from=2026-03-01&to=2026-03-31&timezone=UTC" \
  -H "Authorization: Bearer $V3_TOKEN"

Живой отчёт отражает текущее состояние данных. Рядом есть другие: GET .../reports/approval_activity и POST .../reports/query-operations (плоский реестр операций по фильтрам).

Шаг 2. Зафиксируйте снапшот

POST /api/v1/vaults/{code}/report-snapshots формирует отчёт, фиксирует dataCutoff и сохраняет результат вместе с манифестом операций и canonical sha256.

curl -X POST "[BASE_URL]/api/v1/vaults/acme-otc/report-snapshots" \
  -H "Authorization: Bearer $V3_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "reportType": "account_statement",
    "from": "2026-03-01",
    "to": "2026-03-31",
    "timezone": "UTC"
  }'

Снапшот иммутабелен: повторный просмотр даёт те же цифры, даже если с тех пор поменялись операции, курс или имена (ретро-матч, переименования). Слишком большой результат (>~900KB) вернёт REPORT_PERIOD_TOO_LARGE — сузьте фильтры. Точную схему тела сверьте со Справочником API.

Шаг 3. Найдите и прочитайте снапшоты

  • GET /api/v1/vaults/{code}/report-snapshots — список (фильтры reportType, limit).
  • GET /api/v1/vaults/{code}/report-snapshots/{id} — один снапшот.
  • DELETE /api/v1/vaults/{code}/report-snapshots/{id} — удалить.

Шаг 4. Выгрузите снапшот

Экспорт строится из снапшота, а не из живого запроса — поэтому выгрузка совпадает с зафиксированными цифрами:

curl -X POST "[BASE_URL]/api/v1/vaults/acme-otc/report-snapshots/SNAPSHOT_ID/exports" \
  -H "Authorization: Bearer $V3_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "format": "csv" }'

Сейчас поддерживаются форматы json и csv (плоский реестр операций). xlsx и pdf пока зарезервированы — возвращают REPORT_UNSUPPORTED_FORMAT до отдельной итерации.

Что дальше