Краткий ответ
Endpoint POST /api/v1/tests/reports/search возвращает список отчётов по тестированию с применением текущего сохранённого фильтра. Все поля request body необязательны; без body API использует page = 0, size = 50, view = all. Для доступа нужен Bearer token со scope tests.read, а lang может управлять языком локализованных ресурсов тестирования.
Какой endpoint используется?
Используется POST /api/v1/tests/reports/search. Endpoint возвращает страницу отчётов по тестированию в рамках компании с учётом текущего сохранённого фильтра.
| Параметр | Значение |
|---|---|
| Method | POST |
| Endpoint | /api/v1/tests/reports/search |
| Base URL | [https://smartway.pro](https://smartway.pro) |
| Auth | Bearer token |
| Content-Type | application/json |
Для чего используется этот API endpoint?
Endpoint используется для получения отчётов по тестированию компании с пагинацией, режимом представления и поиском по ФИО. Его применяют HR-интеграции, backend-сервисы и технические администраторы для построения списков отчётов и перехода к PDF-отчётам.
Какие предварительные условия нужны перед выполнением запроса?
-
Нужен Bearer token с company context.
-
Token должен содержать scope
tests.read. -
Перед получением нужных данных нужно учитывать текущий сохранённый фильтр или сбросить его.
| Предусловие | Описание | Обязательно |
|---|---|---|
access_token |
Bearer token с company context | Да |
tests.read |
Scope для чтения отчётов по тестированию | Да |
| Сохранённый фильтр | Фильтр из GET/PUT /api/v1/tests/reports/filter применяется дополнительно |
Нет |
Какие параметры нужно передать в запросе?
Headers
| Header | Тип | Обязательно | Описание |
|---|---|---|---|
Authorization |
string | Да | Bearer token в формате Bearer <access_token> |
Accept |
string | Да | application/json |
Content-Type |
string | Да, если передаётся body | application/json |
Path parameters
Path parameters отсутствуют.
Query parameters
| Параметр | Тип | Обязательно | Описание |
|---|---|---|---|
lang |
string | Нет | Язык локализованных ресурсов тестирования; default en, доступные языки uk, ru, en |
Request body
| Параметр | Тип | Обязательно | Описание |
|---|---|---|---|
page |
int32 | Нет | Номер страницы; default 0; параметр 0-based |
size |
int32 | Нет | Размер страницы; default 50, максимум 200 |
view |
string | Нет | Режим выборки; допустимы только all, candidate, employee |
query |
string | Нет | Поиск по ФИО |
curl-пример
Пример вызова без body:
curl -X POST 'https://smartway.pro/api/v1/tests/reports/search' \
-H 'Authorization: Bearer <access_token>' \
-H 'Accept: application/json'
Пример вызова с параметрами:
curl -X POST 'https://smartway.pro/api/v1/tests/reports/search?lang=ru' \
-H 'Authorization: Bearer <access_token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"page": 0,
"size": 20,
"view": "all",
"query": "Иван"
}'
Какой ответ возвращает API?
Успешный запрос возвращает 200 OK и объект PublicTestReportListResponse со списком отчётов и метаданными пагинации.
{
"data": [
{
"uniqueId": "abc12345",
"candidateId": 1001,
"name": "Иван Петренко",
"dateSend": "2026-03-10",
"dateReceipt": "2026-03-12",
"active": true,
"testNames": "Conflict Test, Adaptive Sales",
"department": "Sales",
"jobTitle": "Manager"
}
],
"meta": {
"page": 0,
"size": 20,
"totalElements": 1,
"totalPages": 1,
"hasNext": false
}
}
Что означают поля в ответе API?
| Поле | Тип | Описание |
|---|---|---|
data[].uniqueId |
string | Уникальный идентификатор отчёта по тестированию |
data[].candidateId |
integer | ID кандидата |
data[].name |
string | ФИО кандидата или сотрудника |
data[].dateSend |
string | Дата отправки тестирования |
data[].dateReceipt |
string | Дата получения результата |
data[].active |
boolean | Признак активности отчёта |
data[].testNames |
string | Названия тестов в отчёте |
data[].department |
string | Департамент |
data[].jobTitle |
string | Должность |
meta.page |
integer | Номер текущей страницы |
meta.size |
integer | Размер страницы |
meta.totalElements |
integer | Общее количество элементов |
meta.totalPages |
integer | Общее количество страниц |
meta.hasNext |
boolean | Признак наличия следующей страницы |
Что происходит под капотом?
-
Tenant-видимость отчётов определяется server-side по
companyIdв Bearer token как company-level / HRADMIN-equivalent scope. -
Отчётность не ограничивается кандидатами, приглашёнными через текущий API key или HR-владельца ключа.
-
API возвращает все отчёты по тестированию компании, доступные HRADMIN-уровню.
-
Дополнительно применяется текущий сохранённый фильтр из
GET/PUT /api/v1/tests/reports/filter:active,startDate,endDate,testIds,departments,jobTitles. -
langнеобязателен; если его не передать, API используетen. -
Для доступа нужен scope
tests.read.
Какие edge cases нужно учитывать?
| Сценарий | Поведение API | Что сделать интегратору |
|---|---|---|
| Запрос без body | API использует page = 0, size = 50, view = all |
Не передавать body, если нужны значения по умолчанию |
| Нумерация страниц | page является 0-based |
Передавать page = 0 для первой страницы |
Невалидный view |
API возвращает 400 Bad Request |
Использовать только all, candidate, employee |
| Сохранённый фильтр активен | Фильтр применяется дополнительно | Перед поиском настроить или сбросить фильтр |
lang не передан |
API использует en |
Передать lang, если нужен другой язык |
Какие ошибки может вернуть API?
| HTTP status | Описание |
|---|---|
400 Bad Request |
Невалидный view или другие невалидные параметры поиска |
401 Unauthorized |
Отсутствует или невалидный Bearer token |
403 Forbidden |
Недостаточно прав |
500 Internal Server Error |
Неожиданная ошибка |
503 Service Unavailable |
Сбой внутренней интеграции |
Как использовать результат в следующих API-запросах?
Используйте meta.page, meta.size, meta.totalPages и meta.hasNext для пагинации. Значение uniqueId из списка используется для получения PDF-отчёта.
Пример следующего запроса для получения PDF-отчёта:
curl -X GET 'https://smartway.pro/api/v1/tests/reports/pdf?uniqueId=abc12345&lang=ru' \
-H 'Authorization: Bearer <access_token>' \
-H 'Accept: application/pdf' \
--output test-report-abc12345.pdf
Каких ошибок интегратору стоит избегать?
-
Считать
page = 1первой страницей. -
Не учитывать активный сохранённый фильтр перед поиском.
-
Передавать
view, отличный отall,candidate,employee. -
Ожидать, что API вернёт только отчёты кандидатов, приглашённых через текущий API key.
FAQ
Обязательно ли передавать request body?
Нет. Если вызвать endpoint без body, API использует page = 0, size = 50, view = all.
С какой страницы начинается пагинация?
Параметр page является 0-based: page = 0 — первая страница, page = 1 — вторая.
Какие значения поддерживает view?
Допустимы только all, candidate, employee.
Применяется ли сохранённый фильтр?
Да. Дополнительно применяется фильтр из GET/PUT /api/v1/tests/reports/filter.
Какой scope нужен?
Для доступа нужен scope tests.read.