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

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

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

Краткий ответ

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.