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