Головна API документація Як додати співробітника через API?

Як додати співробітника через API?

Востаннє оновлено Jun 21, 2026

POST /v1/employees створює співробітника. Обов'язкові поля body: email, name, surname, gender і active. Для доступу потрібен scope employees.write.

Endpoint

Параметр Значення
Method POST
Path /api/v1/employees
Base URL https://smartway.pro
Auth Bearer token
Required scope employees.write

Призначення

Endpoint використовується для створення нового співробітника в межах компанії з Bearer token.

Значення active керує не тільки бізнес-прапорцем, а й створенням або відсутністю пов'язаного користувача на сервері авторизації.

Передумови

Клієнт має передати валідний Bearer token.

Token має містити company context.

Token має містити scope employees.write.

idCompany не передається у body або query string.

У поточній реалізації Idempotency-Key не використовується.

Запит

Body parameters

Поле Тип Обов'язкове Опис
email string так Email співробітника.
name string так Ім'я співробітника. Це джерело даних для формування fullName під час створення.
surname string так Прізвище співробітника. Це джерело даних для формування fullName під час створення.
gender string так Допустимі лише значення Male або Female.
active boolean так Допустимі лише JSON-boolean значення true або false. true створює або синхронізує доступ до приватного кабінету через сервер авторизації; false створює співробітника без такого доступу.
manager boolean ні Ознака ролі керівника підрозділу. Допустимі лише JSON-boolean значення true або false; true створює або синхронізує доступ з ролями співробітника і керівника підрозділу, навіть якщо active=false.
department string ні Основний департамент. Якщо не передати, зберігається null.
departments string[] ні Набір департаментів. Якщо не передати, колекція лишається порожньою.
jobTitle string ні Основна посада. Якщо не передати, зберігається null.
jobTitles string[] ні Набір посад. Якщо не передати, колекція лишається порожньою.
phone string ні Телефон. Якщо не передати, зберігається null.
notes string ні Примітки. Якщо не передати, зберігається null.

curl приклад

Створити співробітника з primary-полями і масивами

curl -X POST 'https://smartway.pro/api/v1/employees' \
  -H 'Authorization: Bearer <access_token>' \
  -H 'Accept: application/json' \
  -H 'Content-Type: application/json' \
  --data-binary @- <<'JSON'
{
  "email": "employee@example.com",
  "name": "Іван",
  "surname": "Петренко",
  "gender": "Female",
  "active": false,
  "manager": false,
  "department": "Управління",
  "departments": ["КЛ"],
  "jobTitle": "Менеджер",
  "jobTitles": ["Координатор"],
  "phone": "+380000000000",
  "notes": "Новий співробітник public API"
}
JSON

Створити співробітника тільки з масивами departments/jobTitles

curl -X POST 'https://smartway.pro/api/v1/employees' \
  -H 'Authorization: Bearer <access_token>' \
  -H 'Accept: application/json' \
  -H 'Content-Type: application/json' \
  --data-binary @- <<'JSON'
{
  "email": "employee@example.com",
  "name": "Іван",
  "surname": "Петренко",
  "gender": "Male",
  "active": true,
  "manager": true,
  "departments": ["Управління", "КЛ"],
  "jobTitles": ["Менеджер", "Координатор"],
  "phone": "+380000000000",
  "notes": "Новий співробітник public API"
}
JSON

Відповідь

Успішна відповідь: 201 Created. Повертає створений Employee.

{
  "employeeId": 4432,
  "candidateId": 10748,
  "email": "employee@example.com",
  "fullName": "Іван Петренко",
  "name": "Іван",
  "surname": "Петренко",
  "gender": "Female",
  "department": "Управління",
  "departments": [
    "КЛ",
    "Управління"
  ],
  "jobTitle": "Менеджер",
  "jobTitles": [
    "Координатор",
    "Менеджер"
  ],
  "phone": "+380000000000",
  "active": false,
  "manager": false
}

Поля відповіді

Employee

Поле Тип Опис
employeeId int64 ID співробітника.
candidateId int64 ID пов'язаного кандидата.
email string Email співробітника.
fullName string Повне ім'я, яке сервер формує з name + surname.
name string Ім'я.
surname string Прізвище.
gender string Стать.
department string Основний департамент.
departments string[] Набір департаментів.
jobTitle string Основна посада.
jobTitles string[] Набір посад.
phone string Телефон.
active boolean Ознака активності.
manager boolean Ознака ролі керівника підрозділу. true означає, що співробітник має цю роль.

Бізнес-логіка

API визначає companyId тільки з Bearer token.

API визначає hrEmail з Bearer token. hrEmail дорівнює email користувача з роллю HRADMIN, який створив або ротував активний API key компанії.

Якщо активний API key буде ротований іншим HRADMIN, наступні create-операції автоматично почнуть використовувати його hrEmail.

Повторний однаковий POST не створює дубль, якщо вже існує employee з таким самим email; API повертає 409 Conflict.

gender приймає тільки Male або Female.

active приймає тільки JSON-boolean true або false.

active = true створює або синхронізує пов'язаний користувацький акаунт на сервері авторизації і відкриває доступ до приватного кабінету.

active = false створює співробітника без доступу до приватного кабінету, тобто без користувацького акаунта на сервері авторизації.

manager = true створює або синхронізує доступ з ролями співробітника і керівника підрозділу. Якщо одночасно передати active = false, manager-доступ має пріоритет і співробітник буде створений як активний користувач кабінету.

manager = false або відсутнє поле manager не призначає роль керівника підрозділу.

manager повертається в Employee response; після створення цю роль можна змінити через PATCH /v1/employees/{employeeId}.

fullName у відповіді формується сервером з name + surname.

Якщо передано тільки departments або jobTitles, перший елемент масиву стає primary-значенням у department або jobTitle.

Якщо передано і одиничне поле, і масив, одиничне поле має пріоритет як primary, а масив доповнюється унікальними значеннями.

Якщо department, jobTitle, phone або notes не передані, у відповідних одиничних полях зберігається null.

Якщо departments або jobTitles не передані, відповідні колекції залишаються порожніми.

У відповіді departments і jobTitles повертаються у стабільно відсортованому вигляді.

Edge cases

Сценарій Поведінка API
Відсутнє required поле API повертає 400 Bad Request.
gender має значення не Male і не Female API повертає 400 Bad Request з поясненням.
active передано рядком або числом API повертає 400 Bad Request, бо active має бути JSON-boolean.
manager передано рядком або числом API повертає 400 Bad Request, бо manager має бути JSON-boolean.
active=false і manager=true Manager-доступ має пріоритет; співробітник створюється активним.
email уже існує API повертає 409 Conflict.
Передано тільки departments Перший елемент масиву стає department.
Передано department і departments department лишається primary, а departments доповнюється унікальними значеннями.
Не передано department або jobTitle У відповідному одиничному полі зберігається null.
Не передано departments або jobTitles Відповідна колекція лишається порожньою.

Помилки

Error responses

HTTP status Коли виникає
400 Bad Request Відсутній хоча б один required-параметр email, name, surname, gender або active.
400 Bad Request gender не дорівнює Male або Female.
400 Bad Request active не є JSON-boolean значенням true або false.
400 Bad Request manager не є JSON-boolean значенням true або false.
401 Unauthorized Bearer token відсутній або невалідний.
403 Forbidden Недостатньо прав або token без company context.
409 Conflict Employee з таким email уже існує.
500 Internal Server Error Неочікувана помилка API.
503 Service Unavailable Збій внутрішньої серверної інтеграції.

Використання

Створення активного співробітника з доступом до приватного кабінету: active = true.

Створення співробітника без доступу до приватного кабінету: active = false.

Створення співробітника з роллю керівника підрозділу: manager = true.

Синхронізація співробітників із зовнішньої HR-системи.

Типові помилки

Typical integration mistakes

Типова помилка Як правильно
Передавати active як рядок "true" або "false" Передавайте true або false як JSON-boolean.
Передавати manager як рядок "true" або "false" Передавайте true або false як JSON-boolean.
Передавати gender у значенні, відмінному від Male/Female Використовуйте тільки Male або Female.
Передавати idCompany або hrEmail Не передавайте ці значення; API визначає їх із Bearer token.
Очікувати idempotency через Idempotency-Key У поточній реалізації Idempotency-Key не використовується.
Передавати fullName замість name і surname Передавайте name і surname; fullName формує сервер.

FAQ

Які поля обов'язкові для створення співробітника?

email, name, surname, gender і active.

Що робить active = true?

Сервер створює або синхронізує пов'язаний користувацький акаунт на сервері авторизації і відкриває доступ до приватного кабінету.

Що робить active = false?

Співробітник створюється без доступу до приватного кабінету, тобто без користувацького акаунта на сервері авторизації.

Що робить manager = true?

Сервер створює або синхронізує доступ з ролями співробітника і керівника підрозділу. Якщо одночасно передати active = false, співробітник усе одно буде створений як активний користувач кабінету.

Що буде, якщо email уже існує?

API поверне 409 Conflict.

Чи потрібно передавати hrEmail?

Ні. API визначає hrEmail з Bearer token.