Звільнення співробітника (Employee Offboarding)
Звільнення співробітника — це задача, яка автоматизує процес припинення трудових відносин з працівником, включаючи формування та підписання необхідних документів, валідацію підстави та оновлення статусу співробітника на fired.
Налаштування шаблону задачі "Звільнення" доступне лише через веб-інтерфейс Вчасно.Кадри. Публічний API дозволяє лише створювати та керувати задачами на основі вже налаштованих шаблонів.
Особливості задачі "Звільнення"
- Прив’язка до співробітника в статусі
working — задачу можна створити лише для діючого працівника.
- Вказівка підстави звільнення — необов’язкове поле
offboarding_basis із переліку офіційних підстав.
- Дата звільнення — необов’язкове поле
offboarding_date у форматі YYYY-MM-DD.
- Автоматичне оновлення статусу — після завершення задачі співробітник автоматично отримує статус
fired.
Статуси задачі
| Статус |
Опис |
new |
Задача створена, але документи ще не відправлені на підписання |
in_progress |
Документи відправлені на підписання, процес в процесі виконання |
completed |
Всі документи підписані, задача завершена, співробітник звільнений |
canceled |
Задача скасована |
Статуси маршруту задачі (Task Route)
| Статус |
Опис |
new |
Маршрут створений, але неактивний |
in_progress |
Маршрут активний, документи в процесі підписання |
completed |
Маршрут завершений, всі підписи зібрано |
canceled |
Маршрут скасований |
Статуси документів
| Статус |
Опис |
new |
Документ створений, але не відправлений |
in_progress |
Документ відправлений на підписання |
completed |
Документ підписаний усіма підписантами |
canceled |
Документ скасований |
Статуси підписантів
| Статус |
Опис |
new |
Підписант доданий, але документ ще не відправлено |
completed |
Підписант підписав документ |
declined |
Підписант відхилив документ |
Аутентифікація
Для всіх ендпоінтів необхідно передавати заголовок:
X-Vchasno-Public-Token: <token>
Ендпоінти Public API
1. Створення задачі звільнення
- Метод:
POST
- Шлях:
/api/public/v1/employee-offboarding
- Статус:
201 Created
Запит
{
"initiator_id": "00000000-0000-0000-0000-000000000000",
"external_id": "external-id-123",
"manager_id": "11111111-1111-1111-1111-111111111111",
"offboarding_basis": "by_own_will",
"offboarding_date": "2025-12-01"
}
Відповідь
{
"id": "22222222-2222-2222-2222-222222222222",
"initiator_id": "00000000-0000-0000-0000-000000000000",
"manager_id": "11111111-1111-1111-1111-111111111111",
"status": "new",
"description": null,
"cancellation_reason": null,
"cancelled_by": null,
"cancelled_by_employee_id": null,
"cancelled_by_user_id": null,
"cancellation_date": null,
"external_id": "external-id-123",
"offboarding_basis": "by_own_will",
"offboarding_date": "2025-12-01",
"name": null,
"date_created": "2025-11-16T10:00:00Z",
"date_updated": "2025-11-16T10:00:00Z"
}
Помилки
| Код |
Помилка |
| 403 |
PublicApiCompanyAccessError |
| 400 |
InvalidTaskRouteIdError, InvalidTaskStatusError, InvalidManagerError, PlainBadRequestError |
2. Отримання списку задач звільнення
- Метод:
GET
- Шлях:
/api/public/v1/employee-offboarding
- Статус:
200 OK
Підтримувані фільтри (TaskFilterParams)
| Параметр |
Тип |
Опис |
status__in |
array[TaskStatus] |
Фільтр за статусом задачі (new, in_progress, completed, canceled) |
initiator__in |
array[UUID] |
Фільтр за ID працівників-ініціаторів |
manager__in |
array[UUID] |
Фільтр за ID менеджерів задачі |
external_id__in |
array[string] |
Фільтр за зовнішніми ID задачі |
task_template__in |
array[UUID] |
Фільтр за ID шаблонів задач |
task_template_type__in |
array[TaskTemplateType] |
Фільтр за типом шаблону |
start_date |
date |
Нижня межа періоду створення задачі |
end_date |
date |
Верхня межа періоду створення задачі |
is_approved |
boolean |
true — задачу успішно погоджено; false — погодження скасовано |
is_approval_needed |
boolean |
true — є незавершене погодження; false — погодження не потрібне або завершене |
search |
string |
Повнотекстовий пошук |
page, size |
int |
Пагінація |
Помилки
| Код |
Помилка |
| 403 |
PublicApiCompanyAccessError |
3. Отримання задачі звільнення
- Метод:
GET
- Шлях:
/api/public/v1/employee-offboarding/{task_id}
- Статус:
200 OK
Помилки
| Код |
Помилка |
| 403 |
PublicApiCompanyAccessError |
| 404 |
NotFoundError |
4. Часткове оновлення задачі звільнення
- Метод:
PATCH
- Шлях:
/api/public/v1/employee-offboarding/{task_id}
- Статус:
200 OK
Запит
{
"status": "canceled",
"cancellation_reason": "Причина скасування",
"manager_id": "11111111-1111-1111-1111-111111111111",
"name": "Завдання зі звільнення"
}
Відповідь
{
"id": "22222222-2222-2222-2222-222222222222",
"initiator_id": "00000000-0000-0000-0000-000000000000",
"manager_id": "11111111-1111-1111-1111-111111111111",
"status": "canceled",
"description": null,
"cancellation_reason": "Причина скасування",
"cancelled_by": "manager",
"cancelled_by_employee_id": "11111111-1111-1111-1111-111111111111",
"cancelled_by_user_id": "33333333-3333-3333-3333-333333333333",
"cancellation_date": "2025-11-17T12:00:00Z",
"external_id": "external-id-123",
"offboarding_basis": "by_own_will",
"offboarding_date": "2025-12-01",
"name": "Завдання зі звільнення",
"date_created": "2025-11-16T10:00:00Z",
"date_updated": "2025-11-17T12:00:00Z"
}
Помилки
| Код |
Помилка |
| 403 |
PublicApiCompanyAccessError |
| 404 |
NotFoundError |
| 400 |
InvalidTaskRouteStatusError, InvalidTaskStatusError, InvalidManagerError, PlainBadRequestError |
5. Робота з документами
5.1. Створення документа
- Метод:
POST
- Шлях:
/api/public/v1/employee-offboarding/{task_id}/document
- Статус:
201 Created
Помилки
| Код |
Помилка |
| 403 |
PublicApiCompanyAccessError |
| 404 |
NotFoundError |
| 400 |
InvalidTaskRouteStatusError |
5.2. Список документів
- Метод:
GET
- Шлях:
/api/public/v1/employee-offboarding/{task_id}/document
- Статус:
200 OK
Помилки
| Код |
Помилка |
| 403 |
PublicApiCompanyAccessError |
| 404 |
NotFoundError |
5.3. Оновлення документа
- Метод:
PATCH
- Шлях:
/api/public/v1/employee-offboarding/{task_id}/document/{document_id}
- Статус:
200 OK
Помилки
| Код |
Помилка |
| 403 |
PublicApiCompanyAccessError |
| 404 |
NotFoundError |
5.4. Видалення документа
- Метод:
DELETE
- Шлях:
/api/public/v1/employee-offboarding/{task_id}/document/{document_id}
- Статус:
204 No Content
Помилки
| Код |
Помилка |
| 403 |
PublicApiCompanyAccessError |
| 404 |
NotFoundError |
6. Завантаження та завантаження файлів
6.1. Завантаження файлу документа
- Метод:
POST
- Шлях:
/api/public/v1/employee-offboarding/{task_id}/document/{document_id}/upload
- Статус:
200 OK
Помилки
| Код |
Помилка |
| 403 |
PublicApiCompanyAccessError |
| 404 |
NotFoundError |
6.2. Завантаження підписаного документа
- Метод:
GET
- Шлях:
/api/public/v1/employee-offboarding/{task_id}/document/{document_id}/download
- Статус:
200 OK
Помилки
| Код |
Помилка |
| 403 |
PublicApiCompanyAccessError |
| 404 |
NotFoundError |
7. Підписанти документів
7.1. Список підписантів
Помилки
| Код |
Помилка |
| 403 |
PublicApiCompanyAccessError |
| 404 |
NotFoundError |
7.2. Додати підписанта
Помилки
| Код |
Помилка |
| 403 |
PublicApiCompanyAccessError |
| 404 |
NotFoundError |
7.3. Видалити підписанта
Помилки
| Код |
Помилка |
| 403 |
PublicApiCompanyAccessError |
| 404 |
NotFoundError |
7.4. Нагадування підписанту
Помилки
| Код |
Помилка |
| 403 |
PublicApiCompanyAccessError |
| 404 |
NotFoundError |
8. Відправка всіх документів на підписання
Помилки
| Код |
Помилка |
| 403 |
PublicApiCompanyAccessError |
| 404 |
NotFoundError |
| 400 |
InvalidTaskRouteIdError, InvalidTaskStatusError, InvalidTaskRouteStatusError, InvalidManagerError |
Додаткові операції
9. Робота з шаблоном задачі
9.1. Отримати шаблон задачі звільнення
- Метод:
GET
- Шлях:
/api/public/v1/employee-offboarding/template
- Статус:
200 OK
Помилки
| Код |
Помилка |
| 403 |
PublicApiCompanyAccessError |
| 404 |
NotFoundError |
9.2. Оновити шаблон задачі звільнення
- Метод:
PATCH
- Шлях:
/api/public/v1/employee-offboarding/template/{version_identifier}
- Статус:
200 OK
Помилки
| Код |
Помилка |
| 403 |
PublicApiCompanyAccessError |
| 404 |
NotFoundError |
| 400 |
TaskAccessError |
10. Скасування задачі
Окремий ендпоінт для скасування задачі звільнення із зазначенням причини.
- Метод:
POST
- Шлях:
/api/public/v1/employee-offboarding/{task_id}/cancel
- Статус:
200 OK
Помилки
| Код |
Помилка |
| 403 |
PublicApiCompanyAccessError |
| 404 |
NotFoundError |
11. Маршрути задачі
Отримати список маршрутів задачі з інформацією про виконавців та статуси.
- Метод:
GET
- Шлях:
/api/public/v1/employee-offboarding/{task_id}/route
- Статус:
200 OK
Помилки
| Код |
Помилка |
| 403 |
PublicApiCompanyAccessError |
| 404 |
NotFoundError |
12. Погодження та погоджувачі
12.1. Список маршрутів погодження
- Метод:
GET
- Шлях:
/api/public/v1/employee-offboarding/{task_id}/approval
- Статус:
200 OK
Помилки
| Код |
Помилка |
| 403 |
PublicApiCompanyAccessError |
| 404 |
NotFoundError |
12.2. Перевизначити погоджувачів маршруту
Видаляє наявних погоджувачів маршруту погодження та додає нових.
- Метод:
POST
- Шлях:
/api/public/v1/employee-offboarding/{task_id}/approval/{approval_id}/approvers
- Статус:
200 OK
Помилки
| Код |
Помилка |
| 403 |
PublicApiCompanyAccessError |
| 404 |
NotFoundError |
13. Вкладення задачі
Отримати список додатків (вкладень) задачі.
- Метод:
GET
- Шлях:
/api/public/v1/employee-offboarding/{task_id}/attachment
- Статус:
200 OK
Помилки
| Код |
Помилка |
| 403 |
PublicApiCompanyAccessError |
| 404 |
NotFoundError |
Очікувана послідовність дій для задачі "Звільнення"
-
Створити задачу звільнення
-
Отримати задачу та маршрути
-
Отримати документи
-
За потреби створити або відредагувати документи
-
Завантажити файли документів
-
Керувати підписантами
-
Відправити документи на підписання
-
При потребі надіслати нагадування
-
Завантажити підписані документи
Дозволені формати файлів для завантаження
- PNG, JPEG, JPG, SVG
- PDF
- XLS, XLSX, CSV
- DOC, DOCX
- TXT, XML
Поля для створення задачі "Звільнення"
| Поле |
Тип |
Опис |
Обов'язкове |
initiator_id |
UUID |
ID працівника, для якого створюється задача (повинен бути в статусі working) |
Так |
external_id |
string |
Зовнішній ідентифікатор задачі для інтеграції |
Ні |
manager_id |
UUID |
ID менеджера задачі |
Ні |
offboarding_basis |
OffboardingBasisType |
Підстава звільнення |
Ні |
offboarding_date |
date (YYYY-MM-DD) |
Дата звільнення |
Ні |
skip_application |
bool |
Пропустити генерацію заяви про звільнення (за замовчуванням false) |
Ні |
skip_order |
bool |
Пропустити генерацію наказу про звільнення (за замовчуванням false) |
Ні |
skip_employee_form |
bool |
Пропустити генерацію анкети співробітника (за замовчуванням false) |
Ні |
skip_offboarding_checklist |
bool |
Пропустити генерацію чек-листа звільнення (за замовчуванням false) |
Ні |
Перелік підстав звільнення
| Значення |
Опис та стаття законодавства |
by_own_will |
за власним бажанням, ст. 38 КЗпП України |
mutual_agreement |
за угодою сторін, п. 1 ст. 36 КЗпП України |
contract_term_end |
у зв’язку із закінченням строку трудового договору, п. 2 ст. 36 КЗпП України |
staff_reduction |
у зв’язку зі скороченням чисельності (штату), п. 1 ч. 1 ст. 40 КЗпП України |
health_position_mismatch |
у зв’язку з невідповідністю працівника займаній посаді за станом здоров’я, п. 2 ч. 1 ст. 40 КЗпП України |
previous_employee_reinstatement |
у зв’язку з відновленням на роботі працівника, п. 6 ч. 1 ст. 40 КЗпП України |
absenteeism |
за прогул без поважних причин, п. 4 ч. 1 ст. 40 КЗпП України |
intoxication_at_work |
у зв’язку з появою на роботі в нетверезому стані, п. 7 ч. 1 ст. 40 КЗпП України |
gross_misconduct_by_manager |
за одноразове грубе порушення трудових обов’язків керівником, ст. 41 КЗпП України |
immoral_act_incompatible |
за вчинення аморального проступку, ст. 41 КЗпП України |
refusal_to_transfer |
у зв’язку з відмовою від переведення на іншу роботу, п. 6 ст. 36 КЗпП України |
transfer_to_another_company |
у зв’язку з переведенням на інше підприємство, п. 5 ст. 36 КЗпП України |
production_and_labor_organization_changes |
у зв’язку зі змінами в організації виробництва і праці, п. 1 ч. 1 ст. 40 КЗпП України |
employee_death |
у зв’язку зі смертю працівника, п. 8 ст. 36 КЗпП України |
employer_death_individual |
у зв’язку зі смертю роботодавця — фізичної особи, п. 8-1 ст. 36 КЗпП України |
contract_termination |
у зв’язку з розірванням контракту, п. 3 ст. 36 КЗпП України |
refusal_due_to_change_in_essential_work_conditions |
у зв’язку з відмовою продовжувати роботу через зміну істотних умов праці, п. 6 ст. 36 КЗпП України |
attestation_commission_decision |
на підставі рішення атестаційної комісії, п. 11 ст. 36 КЗпП України |
conscription_military_service |
у зв’язку з призовом на військову службу, п. 3 ст. 36 КЗпП України |
temporary_work_completion |
у зв’язку із завершенням тимчасових робіт, п. 2 ст. 23 КЗпП України |
Поля в відповіді при отриманні задачі
| Поле |
Тип |
Опис |
id |
UUID |
ID задачі |
initiator_id |
UUID |
ID ініціатора задачі |
manager_id |
UUID | null |
ID менеджера задачі |
status |
TaskStatus |
Статус задачі: new, in_progress, completed, canceled |
description |
string | null |
Опис задачі |
cancellation_reason |
string | null |
Причина скасування задачі |
cancelled_by |
TaskCancelledByType | null |
Хто скасував задачу: initiator, manager, api, document_decline |
cancelled_by_employee_id |
UUID | null |
ID співробітника, який скасував задачу |
cancelled_by_user_id |
UUID | null |
ID користувача, який скасував задачу |
cancellation_date |
datetime | null |
Дата скасування задачі |
external_id |
string | null |
Зовнішній ID задачі |
offboarding_basis |
OffboardingBasisType | null |
Підстава звільнення |
offboarding_date |
date | null |
Дата звільнення |
name |
string | null |
Назва задачі |
date_created |
datetime |
Дата створення задачі |
date_updated |
datetime |
Дата останнього оновлення задачі |
Відправка документів на підписання
Структура SendEmployeeOffboardingDocumentsSerializer
{
"documents_to_send": [
{
"document_id": "00000000-0000-0000-0000-000000000000",
"offboarding_application_document_info": {
"company_leader_position_name": "Головний бухгалтер",
"company_name": "ТОВ «Приклад»",
"company_leader_full_name": "Іваненко Іван Іванович",
"position_name": "Аналітик",
"full_name": "Петренко Петро Петрович",
"offboarding_body_text": "Дякуємо за роботу",
"application_date_created": "2025-11-16"
},
"offboarding_order_document_info": {
"company_name": "ТОВ «Приклад»",
"company_edrpou": "12345678",
"order_date_created": "2025-11-16",
"order_number": "-",
"company_number": "1",
"full_name": "Петренко Петро Петрович",
"group_name": "Аналітики",
"position_name": "Аналітик",
"offboarding_reason": "за власним бажанням",
"offboarding_basis": "by_own_will",
"offboarding_date": "2025-12-01",
"severance": true,
"severance_hrn": 10000,
"severance_kop": 0,
"company_leader_full_name": "Іваненко Іван Іванович",
"order_date_signed": "2025-11-20"
},
"offboarding_checklist_document_info": {
"company_name": "ТОВ «Приклад»",
"company_edrpou": "12345678",
"full_name": "Петренко Петро Петрович",
"position_name": "Аналітик",
"group_name": "Аналітики",
"offboarding_date": "2025-12-01",
"rows": [
{ "name": "Здати пропуск", "employee_id": "00000000-0000-0000-0000-000000000001" },
{ "name": "Повернути комп’ютер", "employee_id": "00000000-0000-0000-0000-000000000002" }
]
},
"tags": ["hr", "offboarding"],
"new_tags": ["priority-high"]
}
]
}