Finance OS / API

Pagination

Все endpoints, возвращающие коллекции (списки транзакций, заявок, сообщений и т. п.), используют единый формат пагинации по принципу Laravel paginate().

Query-параметры

Name Type Required Description
page integer optional Номер страницы, начиная с 1.
Default: 1
per_page integer optional Сколько элементов на странице. Максимум — 100. Передача большего значения вернёт 422.
Default: 20
sort string optional Поле сортировки. Префикс - для DESC: sort=-created_at. Поддерживаемые поля указаны в каждом endpoint отдельно.
filter[*] mixed optional Фильтрация. Синтаксис: filter[status]=pending, filter[date_from]=2026-05-01. Поддерживаемые ключи — в каждом endpoint.

Формат ответа

{
  "data": [
    { "id": "...", ... },
    { "id": "...", ... }
  ],
  "links": {
    "first": "https://fin-os.io/api/transactions?page=1",
    "last":  "https://fin-os.io/api/transactions?page=42",
    "prev":  null,
    "next":  "https://fin-os.io/api/transactions?page=2"
  },
  "meta": {
    "current_page": 1,
    "from": 1,
    "to": 20,
    "per_page": 20,
    "total": 837,
    "last_page": 42,
    "path": "https://fin-os.io/api/transactions"
  }
}

meta

Name Type Required Description
current_page integer optional Текущая страница.
last_page integer optional Общее число страниц.
per_page integer optional Размер страницы (эхо параметра запроса).
total integer optional Общее число элементов в коллекции (с учётом фильтров).
from integer optional Номер первого элемента на странице (для UI «1–20 из 837»).
to integer optional Номер последнего элемента на странице.

Cursor-пагинация (планируется в v1.1)

Для high-throughput списков (история сделок, лог событий) page-based быстро деградирует — большой OFFSET сканирует много строк. В v1.1 появится альтернативный режим:

GET /api/transactions?cursor=eyJpZCI6MTAwMCwiX3BvaW50c1RvTmV4dEl0ZW1zIjp0cnVlfQ&per_page=50

Ответ будет содержать meta.next_cursor вместо page — токен указывает на «куда читать дальше». Преимущество: O(log N) вместо O(N) на больших списках.

Полный обход коллекции

Не качайте всё одной страницей
per_page=10000 вернёт 422. Если нужно выгрузить всю историю — итерируйте по страницам или используйте POST /api/tax-reports/generate для генерации полного PDF/Excel-отчёта.