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 |
| Auth | Bearer token |
| Content-Type | application/json |
Для чого використовується цей API endpoint?
Endpoint використовується для керування фільтром, який застосовується до пошуку та експорту звітів з тестування. Його використовують перед отриманням списку звітів або перед формуванням Excel-експорту.
Які передумови потрібні перед виконанням запиту?
| Передумова | Опис | Обов’язково |
|---|---|---|
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.