Endpoint GET /api/v1/tests/reports/filter возвращает сохранённый фильтр отчётов по тестированию для userKey, который берётся из subject Bearer token. Для company API key этот userKey имеет формат company-api-key:{companyId} и остаётся стабильным после ротации ключа. Для доступа нужен Bearer token со scope tests.read.
Какой endpoint используется?
Используется GET /api/v1/tests/reports/filter. Endpoint возвращает текущий сохранённый фильтр отчётов по тестированию для user context из Bearer token.
| Параметр | Значение |
|---|---|
| Method | GET |
| Endpoint | /api/v1/tests/reports/filter |
| Base URL | [https://smartway.pro](https://smartway.pro) |
| Auth | Bearer token |
Для чего используется этот API endpoint?
Endpoint используется для просмотра текущего фильтра, который применяется к поиску и экспорту отчётов по тестированию. Его используют перед POST /api/v1/tests/reports/search или POST /api/v1/tests/reports/export, чтобы понять, какие ограничения будут применены.
Какие предварительные условия нужны перед выполнением запроса?
| Предусловие | Описание | Обязательно |
|---|---|---|
access_token |
Bearer token | Да |
tests.read |
Scope для чтения сохранённого фильтра | Да |
Какие параметры нужно передать в запросе?
Headers
| Header | Тип | Обязательно | Описание |
|---|---|---|---|
Authorization |
string | Да | Bearer token в формате Bearer <access_token> |
Accept |
string | Да | application/json |
Path parameters
Path parameters отсутствуют.
Query parameters
Query parameters отсутствуют.
Request body
Request body не используется.
curl-пример
curl -X GET 'https://smartway.pro/api/v1/tests/reports/filter' \
-H 'Authorization: Bearer <access_token>' \
-H 'Accept: application/json'
Какой ответ возвращает API?
Успешный запрос возвращает 200 OK и объект PublicTestReportFilterResponse с параметрами сохранённого фильтра.
{
"active": true,
"startDate": "2026-03-01",
"endDate": "2026-03-10",
"groupByName": true,
"testIds": [5, 200001],
"departments": ["Sales"],
"jobTitles": ["Manager"]
}
Что означают поля в ответе API?
| Поле | Тип | Описание |
|---|---|---|
active |
boolean | Фильтр по признаку активности отчёта |
startDate |
string | Начало диапазона дат |
endDate |
string | Конец диапазона дат |
groupByName |
boolean | Группировка нескольких попыток прохождения теста |
testIds |
array | Набор ID тестов для фильтра |
departments |
array | Набор департаментов для фильтра |
jobTitles |
array | Набор должностей для фильтра |
Что происходит под капотом?
-
Фильтр привязан к
userKey, который берётся из subject Bearer token. -
Для company API key
userKeyимеет форматcompany-api-key:{companyId}. -
userKeyстабилен после ротации ключа. -
Внешний клиент не передаёт
idUser. -
Для доступа нужен scope
tests.read.
Какие edge cases нужно учитывать?
| Сценарий | Поведение API | Что сделать интегратору |
|---|---|---|
| Ротация company API key | userKey остаётся стабильным в формате company-api-key:{companyId} |
Не создавать отдельную привязку к active key id |
idUser в запросе |
Внешний клиент не передаёт idUser |
Не добавлять idUser в query string или body |
| Активный сохранённый фильтр | Фильтр применяется к поиску и экспорту | Проверять фильтр перед получением отчётов |
Какие ошибки может вернуть API?
| HTTP status | Описание |
|---|---|
401 Unauthorized |
Отсутствует или невалидный Bearer token |
403 Forbidden |
Недостаточно прав |
500 Internal Server Error |
Неожиданная ошибка |
503 Service Unavailable |
Сбой сервиса |
Как использовать результат в следующих API-запросах?
Используйте полученный фильтр, чтобы понять, какие ограничения будут применены к POST /api/v1/tests/reports/search и POST /api/v1/tests/reports/export.
Пример поиска отчётов после проверки фильтра:
curl -X POST 'https://smartway.pro/api/v1/tests/reports/search' \
-H 'Authorization: Bearer <access_token>' \
-H 'Accept: application/json'
Каких ошибок интегратору стоит избегать?
-
Передавать
idUserв запросе. -
Ожидать, что фильтр привязан к конкретному active key id.
-
Запускать поиск или экспорт без проверки текущего фильтра.
-
Вызывать endpoint без scope
tests.read.
FAQ
К чему привязан сохранённый фильтр?
Фильтр привязан к userKey, который берётся из subject Bearer token.
Какой формат userKey у company API key?
Для company API key userKey имеет формат company-api-key:{companyId}.
Нужно ли передавать idUser?
Нет. Внешний клиент не передаёт idUser.
Изменится ли фильтр после ротации ключа?
Для company API key userKey стабилен после ротации ключа.
Какой scope нужен?
Для доступа нужен scope tests.read.