Перейти до змісту

Звільнення співробітника (Employee Offboarding)

Звільнення співробітника — це задача, яка автоматизує процес припинення трудових відносин з працівником, включаючи формування та підписання необхідних документів, валідацію підстави та оновлення статусу співробітника на fired.

Налаштування шаблону задачі "Звільнення" доступне лише через веб-інтерфейс Вчасно.Кадри. Публічний API дозволяє лише створювати та керувати задачами на основі вже налаштованих шаблонів.

Особливості задачі "Звільнення"

  1. Прив’язка до співробітника в статусі working — задачу можна створити лише для діючого працівника.
  2. Вказівка підстави звільнення — необов’язкове поле offboarding_basis із переліку офіційних підстав.
  3. Дата звільнення — необов’язкове поле offboarding_date у форматі YYYY-MM-DD.
  4. Автоматичне оновлення статусу — після завершення задачі співробітник автоматично отримує статус 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

Очікувана послідовність дій для задачі "Звільнення"

  1. Створити задачу звільнення

  2. Отримати задачу та маршрути

  3. Отримати документи

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

  5. Завантажити файли документів

  6. Керувати підписантами

  7. Відправити документи на підписання

  8. При потребі надіслати нагадування

  9. Завантажити підписані документи

Дозволені формати файлів для завантаження

  • 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"]
    }
  ]
}