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

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

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

PATCH /v1/employees/{employeeId} оновлює тільки передані поля. Body має містити хоча б одне поле. Для доступу потрібен scope employees.write.

Endpoint

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

Призначення

Endpoint використовується для часткового оновлення співробітника в межах поточного tenant-а.

Поле fullName у PATCH-контракт не входить; для зміни ПІБ використовуються name і surname.

Передумови

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

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

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

employeeId має належати співробітнику в межах поточного tenant-а.

PATCH-body має містити хоча б одне поле.

idCompany і hrEmail не передаються зовнішнім клієнтом.

Запит

Path parameters

Параметр Тип Обов'язковий Опис
employeeId int64 так ID співробітника.

Body parameters

Поле Тип Обов'язкове Опис
email string ні Оновити email.
name string ні Оновити ім'я співробітника. Якщо поле передано, воно має містити непорожній текст.
surname string ні Оновити прізвище співробітника. Якщо поле передано, воно має містити непорожній текст.
gender string ні Оновити стать.
department string ні Оновити primary-департамент.
departments string[] ні Замінити повний набір департаментів.
jobTitle string ні Оновити primary-посаду.
jobTitles string[] ні Замінити повний набір посад.
phone string ні Оновити телефон.
active boolean ні Оновити ознаку активності.
manager boolean ні Оновити роль керівника підрозділу. Допустимі лише JSON-boolean значення true або false; true примусово залишає співробітника активним, false знімає тільки роль керівника підрозділу, якщо active не передано як false.

curl приклад

Оновити ПІБ, primary-поля, масиви, active і manager

curl -X PATCH 'https://smartway.pro/api/v1/employees/4432' \
  -H 'Authorization: Bearer <access_token>' \
  -H 'Accept: application/json' \
  -H 'Content-Type: application/json' \
  --data-binary @- <<'JSON'
{
  "name": "Оновлене Ім'я",
  "surname": "Прізвище",
  "department": "Управління",
  "departments": ["КЛ", "Логістика"],
  "jobTitle": "Старший менеджер",
  "jobTitles": ["Координатор", "Аналітик"],
  "active": true,
  "manager": true
}
JSON

Відповідь

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

{
  "employeeId": 4432,
  "candidateId": 10748,
  "email": "employee@example.com",
  "fullName": "Оновлене Ім'я Прізвище",
  "name": "Оновлене Ім'я",
  "surname": "Прізвище",
  "gender": "not_specified",
  "department": "Управління",
  "departments": [
    "КЛ",
    "Логістика",
    "Управління"
  ],
  "jobTitle": "Старший менеджер",
  "jobTitles": [
    "Аналітик",
    "Координатор",
    "Старший менеджер"
  ],
  "phone": "+380000000000",
  "active": true,
  "manager": true
}

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

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, наступні patch-операції автоматично почнуть використовувати його hrEmail.

PATCH змінює тільки ті поля, які передані в body.

fullName не передається в PATCH-body. Сервер формує fullName з актуальних name + surname.

name і surname можна передавати разом або окремо. Якщо поле передано, воно має містити непорожній текст.

Текстові поля підтримують UTF-8.

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

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

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

Якщо новий email уже належить іншому employee, API повертає 409 Conflict.

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

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

Якщо PATCH одночасно змінює active і email, сервер синхронізує саме акаунт, який уже був пов'язаний із цим employee, а не довільного користувача за новим email.

manager = true додає роль керівника підрозділу і гарантує активний доступ до кабінету; якщо одночасно передати active = false, manager-доступ має пріоритет і employee лишається активним користувачем кабінету.

manager = false знімає тільки роль керівника підрозділу, якщо active не передано як false; доступ до кабінету лишається активним.

Якщо одночасно передати active = false і manager = false, сервер відкликає доступ до кабінету і видаляє пов'язаний користувацький акаунт на сервері авторизації.

Edge cases

Сценарій Поведінка API
PATCH-body порожній API повертає 400 Bad Request.
name або surname передані порожніми API повертає 400 Bad Request.
fullName передано в PATCH-body Поле не входить у PATCH-контракт; використовуйте name і surname.
Новий email уже належить іншому employee API повертає 409 Conflict.
Передано тільки departments або jobTitles Перший елемент масиву стає primary-значенням.
Передано одиничне поле і масив Одиничне поле лишається primary, масив у відповіді повертається відсортованим.
active змінюється з false на true Сервер створює або синхронізує пов'язаний користувацький акаунт на сервері авторизації.
active змінюється з true на false Сервер видаляє пов'язаний користувацький акаунт на сервері авторизації.
active і email змінюються одночасно Синхронізується акаунт, уже пов'язаний із цим employee.
manager передано рядком або числом API повертає 400 Bad Request, бо manager має бути JSON-boolean.
manager=true і active=false Manager-доступ має пріоритет; employee лишається активним користувачем кабінету.
manager=false без active=false Знімається тільки роль керівника підрозділу, доступ до кабінету лишається активним.

Помилки

Error responses

HTTP status Коли виникає
400 Bad Request Порожній PATCH-body або невалідні значення, зокрема порожні name / surname.
400 Bad Request manager не є JSON-boolean значенням true або false.
401 Unauthorized Bearer token відсутній або невалідний.
403 Forbidden Недостатньо прав або token без company context.
404 Not Found Співробітника не знайдено в межах поточного tenant-а.
409 Conflict Новий email уже зайнятий іншим employee або не може бути безпечно використаний для синхронізації доступу на сервері авторизації.
500 Internal Server Error Неочікувана помилка API.
503 Service Unavailable Збій внутрішньої серверної інтеграції.

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

Оновити контактні дані співробітника.

Змінити департамент або посаду.

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

Відкликати доступ до приватного кабінету через active = false.

Надати або зняти роль керівника підрозділу через manager.

Оновити email з перевіркою конфлікту.

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

Typical integration mistakes

Типова помилка Як правильно
Надсилати порожній PATCH-body Передайте хоча б одне поле для зміни.
Передавати fullName Передавайте name і surname.
Передавати порожні name або surname Якщо поле передане, воно має містити непорожній текст.
Очікувати, що зміна active лише змінює прапорець active також керує синхронізацією пов'язаного користувацького акаунта на сервері авторизації.
Передавати manager як рядок "true" або "false" Передавайте true або false як JSON-boolean.
Передавати idCompany або hrEmail Не передавайте ці значення; API визначає їх із Bearer token.

FAQ

Чи можна передати тільки одне поле в PATCH?

Так. Body має містити хоча б одне поле.

Чи можна змінити fullName напряму?

Ні. fullName не входить у PATCH-контракт. Використовуйте name і surname.

Що буде, якщо новий email уже зайнятий?

API поверне 409 Conflict.

Що відбувається при active = false?

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

Що відбувається, якщо одночасно змінити active і email?

Сервер синхронізує акаунт, який уже пов'язаний із цим employee.

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

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

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

Сервер знімає тільки роль керівника підрозділу, якщо active не передано як false.