Головна 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=uk' \
  -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=uk' \
  -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.