API чтения

Все эндпоинты чтения находятся под /api/v1 и требуют Bearer-токена со скоупом read.


История сущности

GET /api/v1/collections/{collection}/entities/{entityId}/history

Возвращает постраничный список событий для сущности (по умолчанию новейшие первые).

Параметры запроса

Параметр Тип По умолчанию Описание
from RFC3339 События, полученные с этого момента
to RFC3339 События до этого момента
author_id string Фильтр по автору
op string Фильтр по операции: create, update, delete
path string Фильтр по пути поля
limit integer 100 Размер страницы (1–1000)
cursor string Токен пагинации из предыдущего ответа
order string desc asc или desc
format string native Формат диффа: native или json-patch (RFC 6902)

Ответ (200):

{
  "entity_id": "deal-1",
  "next_cursor": "eyJ2IjoxMH0=",
  "events": [
    {
      "version": 4,
      "op": "update",
      "ts_received": "2026-06-02T09:00:01Z",
      "author_id": "user-42",
      "integrity": {
        "hash":      "sha256:9f86d0...",
        "prev_hash": "sha256:2c2640..."
      },
      "changes": [
        {"path": "amount", "op": "change", "old": 50000, "new": 75000}
      ]
    }
  ]
}

Поле integrity присутствует только когда включён плагин hash_chain.


Текущее состояние

GET /api/v1/collections/{collection}/entities/{entityId}/state
{
  "entity_id": "deal-1",
  "version": 4,
  "ts": "2026-06-02T09:00:01Z",
  "deleted": false,
  "state": {
    "title": "ООО Ромашка",
    "amount": 75000,
    "stage": "qualified"
  }
}

Возвращает 404 если сущность никогда не записывалась или была purge-удалена.


Point-in-time состояние

GET /api/v1/collections/{collection}/entities/{entityId}/state?version=3
GET /api/v1/collections/{collection}/entities/{entityId}/state?ts=2026-05-01T00:00:00Z

Восстанавливает состояние сущности на конкретную версию или момент времени. Letopis использует ближайший слепок + хвостовую перезагрузку.


Верификация хэш-цепи

GET /api/v1/collections/{collection}/entities/{entityId}/verify

Проверяет SHA-256 хэш-цепь для сущности. Возвращает первое расхождение или {"ok": true} при целостности цепи.


Список сущностей

GET /api/v1/collections/{collection}/entities

Постраничный список ID сущностей в коллекции. Параметры: limit, cursor, order_by (entity_id или ts), order.


Бизнес-потоки

GET /api/v1/flows/{flowId}

Возвращает полный причинно-следственный DAG бизнес-потока: все активности и связи caused_by.

{
  "flow_id": "flow-deal-onboarding",
  "activities": [
    {
      "activity_id": "act-111",
      "collection": "crm.deals",
      "entity_id": "deal-1",
      "version": 2,
      "step": "qualification",
      "caused_by": []
    }
  ]
}