Перейти к содержанию

Контракт REST API

API использует JSON и JWT Bearer-токены.

Авторизация

POST /api/auth/login

Этот endpoint нужен для получения JWT-токена. Сначала клиент отправляет учётные данные, а затем использует полученный токен в заголовке Authorization при обращении к защищённым методам API.

Запрос:

{
  "userName": "admin",
  "password": "Admin123!"
}

Ответ:

{
  "token": "eyJhbGciOiJIUzI1NiIs...",
  "userName": "admin",
  "role": "Admin"
}

События активности

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 размер страницы

Пример:

GET /api/events?type=Login&severity=Info&page=1&pageSize=20
Authorization: Bearer <token>

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-файл:

Id,UserName,Type,Source,Severity,CreatedAt,Description
1,admin,Login,api,Info,2026-05-04T10:00:00Z,Successful login