Главная API Как обновить или очистить фильтр отчётов по тестированию через API

Как обновить или очистить фильтр отчётов по тестированию через API

Обновлено Apr 28, 2026

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.