Контракт REST API¶
API использует JSON и JWT Bearer-токены.
Авторизация¶
POST /api/auth/login¶
Этот endpoint нужен для получения JWT-токена. Сначала клиент отправляет учётные данные, а затем использует полученный токен в заголовке Authorization при обращении к защищённым методам API.
Запрос:
Ответ:
События активности¶
POST /api/events¶
Доступ: Admin, Operator.
Метод создаёт новую запись журнала активности. Тело запроса содержит только данные события, а пользователь определяется сервером по JWT-токену.
{
"type": "PageView",
"source": "web-client",
"description": "Пользователь открыл раздел отчётов",
"severity": "Info"
}
Ответ 201 Created:
{
"id": 42,
"userId": 1,
"userName": "admin",
"type": "PageView",
"source": "web-client",
"description": "Пользователь открыл раздел отчётов",
"severity": "Info",
"createdAt": "2026-05-04T10:30:00Z"
}
GET /api/events¶
Доступ: Admin, Analyst, Operator.
Метод возвращает список событий и поддерживает фильтрацию. Он нужен для просмотра журнала, проверки созданных записей и дальнейшей ручной диагностики данных.
Параметры:
| Параметр | Тип | Назначение |
|---|---|---|
userId |
int? |
фильтр по пользователю |
type |
string? |
фильтр по типу события |
severity |
string? |
фильтр по уровню важности |
from |
DateTime? |
начало периода |
to |
DateTime? |
конец периода |
page |
int |
номер страницы |
pageSize |
int |
размер страницы |
Пример:
DELETE /api/events/{id}¶
Доступ: Admin.
Удаляет событие по идентификатору.
Аналитика¶
GET /api/analytics/summary¶
Доступ: Admin, Analyst.
Этот endpoint возвращает не отдельные события, а агрегированную картину за период: сколько записей накоплено, сколько пользователей участвовало и какие типы событий встречаются чаще всего.
{
"totalEvents": 1500,
"uniqueUsers": 35,
"errors": 18,
"topEventTypes": [
{ "type": "PageView", "count": 940 },
{ "type": "Login", "count": 250 }
]
}
GET /api/reports/events.csv¶
Доступ: Admin, Analyst.
Метод нужен для выгрузки данных за пределы API. Вместо JSON он возвращает CSV-файл, который можно открыть в табличном редакторе или приложить к отчёту по практике.
Возвращает CSV-файл: