Endpoint POST /api/v1/tests/invitations/candidates створює HR-запрошення кандидату на тестування. У body потрібно передати ім’я, прізвище, email, gender і список testIds; sendCopyToHr є необов’язковим. Параметр lang керує мовою листа-запрошення і мовою посилання на проходження тесту.
Який endpoint використовується?
Використовується POST /api/v1/tests/invitations/candidates. Endpoint створює запрошення кандидату на проходження одного або кількох тестів.
| Параметр | Значення |
|---|---|
| Method | POST |
| Endpoint | /api/v1/tests/invitations/candidates |
| Base URL | https://smartway.pro |
| Auth | Bearer token |
| Content-Type | application/json |
Для чого використовується цей API endpoint?
Endpoint використовується для надсилання HR-запрошення кандидату на тестування. Його застосовують у рекрутингових інтеграціях, коли зовнішня система передає кандидата та список тестів для проходження.
Які передумови потрібні перед виконанням запиту?
-
Потрібен Bearer token з company context.
-
Token має містити scope
tests.write. -
Потрібен хоча б один активний
testId, доступний поточній компанії.
| Передумова | Опис | Обов’язково |
|---|---|---|
access_token |
Bearer token з company context | Так |
tests.write |
Scope для створення запрошення | Так |
testIds |
Список ID активних тестів | Так |
Які параметри потрібно передати в запиті?
Headers
| Header | Тип | Обов’язково | Опис |
|---|---|---|---|
Authorization |
string | Так | Bearer token у форматі Bearer <access_token> |
Accept |
string | Так | application/json |
Content-Type |
string | Так | application/json |
Path parameters
Path parameters відсутні.
Query parameters
| Параметр | Тип | Обов’язково | Опис |
|---|---|---|---|
lang |
string | Ні | Мова запрошення. Підтримуються uk, ru, en. Якщо параметр відсутній або передано інше значення, сервер використовує en. |
Request body
| Параметр | Тип | Обов’язково | Опис |
|---|---|---|---|
name |
string | Так | Ім’я кандидата |
surname |
string | Так | Прізвище кандидата |
email |
string | Так | Email кандидата |
gender |
string | Так | Допустимі лише значення Male або Female |
testIds |
int64[] | Так | Список ID тестів; має містити хоча б один елемент |
sendCopyToHr |
boolean | Ні | Якщо true, сервер додатково надсилає копію запрошення на HR email із токена |
curl приклад
curl -X POST 'https://smartway.pro/api/v1/tests/invitations/candidates?lang=uk' \
-H 'Authorization: Bearer <access_token>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"name": "Іван",
"surname": "Петренко",
"email": "candidate@company.test",
"gender": "Male",
"testIds": [5, 200001],
"sendCopyToHr": true
}'
Яку відповідь повертає API?
Успішний запит повертає 202 Accepted.
Що відбувається під капотом?
-
idCompanyне передається у body або query string: його буде взято з Bearer token. -
hrEmailне передається зовнішнім клієнтом: його буде взято з Bearer token. -
langприймає лишеuk,ru,en; якщо параметр не передано або значення не підтримується, запрошення надсилається англійською (en). -
genderприймає лишеMaleабоFemale. -
testIdsмає містити хоча б один елемент. -
Перед створенням запрошення сервер перевіряє кожен
testId: тест має існувати та бути активним. -
Якщо в запиті є кілька невалідних
testIds, API повертає одну400 Bad Requestз переліком усіх проблемних елементів. -
Для доступу потрібен scope
tests.write.
Які edge cases потрібно врахувати?
| Сценарій | Поведінка API | Що зробити інтегратору |
|---|---|---|
lang відсутній або не підтримується |
Сервер використовує en |
Передавати uk, ru або en, якщо потрібна конкретна мова |
gender не Male або Female |
API повертає 400 Bad Request |
Передавати лише Male або Female |
testIds порожній |
API повертає 400 Bad Request |
Передавати хоча б один testId |
Один або кілька testIds не існують чи неактивні |
API повертає одну 400 Bad Request з переліком усіх проблемних testId |
Попередньо перевіряти testIds через каталог або деталі тесту |
Які помилки може повернути API?
| HTTP status | Опис |
|---|---|
400 Bad Request |
Відсутній required-параметр, gender не дорівнює Male / Female, або хоча б один testId не існує чи неактивний |
401 Unauthorized |
Відсутній або невалідний Bearer token |
403 Forbidden |
Недостатньо прав |
500 Internal Server Error |
Неочікувана помилка |
503 Service Unavailable |
Збій сервісу |
Приклад error response:
{
"type": "https://smartway.pro/problems/public-api",
"title": "Bad Request",
"status": 400,
"detail": "Candidate invitation contains invalid testIds: testId 2 does not exist; testId 3 is inactive.",
"instance": "/api/v1/tests/invitations/candidates"
}
Як використовувати результат у наступних API-запитах?
Перед створенням запрошення отримайте доступні testId через каталог тестів. Отримані testIds передавайте в body запиту у масиві testIds.
Приклад отримання каталогу тестів перед створенням запрошення:
curl -X GET 'https://smartway.pro/api/v1/tests' \
-H 'Authorization: Bearer <access_token>' \
-H 'Accept: application/json'
Яких помилок інтегратору варто уникати?
-
Передавати
idCompanyабоhrEmailу body. -
Передавати
genderу значеннях, відмінних відMaleабоFemale. -
Передавати порожній
testIds. -
Використовувати неактивні або неіснуючі
testIds. -
Очікувати помилку для непідтримуваного
lang, хоча API використовуєen.
FAQ
Який status повертається при успішному створенні запрошення?
API повертає 202 Accepted.
Чи потрібно передавати idCompany?
Ні. idCompany буде взято з Bearer token.
Звідки береться HR email?
hrEmail буде взято з Bearer token; зовнішній клієнт його не передає.
Які значення підтримує gender?
Допустимі лише Male або Female.
Що буде, якщо кілька testIds невалідні?
API поверне одну 400 Bad Request з переліком усіх проблемних елементів.