Архітектура інтеграції кадрового процесу
Загальна схема взаємодії систем

1. Загальна схема роботи кадрового процесу
WhiteDoc дозволяє автоматизувати кадрові процеси, такі як:
-
заяви на відпустку
-
заяви на відрядження
-
погодження кадрових документів
-
формування наказів.
Типовий процес виглядає так:
-
Співробітник створює кадрову заяву у WhiteDoc.
-
Дані можуть:
-
вводитись вручну
-
підставлятись із профілю або довідника.
-
-
Співробітник підписує документ КЕП / ЕЦП.
-
Документ переходить у workflow погодження.
-
Після підписання WhiteDoc надсилає callback у систему клієнта.
-
Система клієнта отримує UUID конверту.
-
Через API система отримує XML документу.
-
HR / ERP система:
-
обробляє дані
-
перевіряє ліміти
-
формує наказ.
-
-
Наказ завантажується назад у WhiteDoc.
-
Співробітник підписує наказ.
-
Процес завершується.
2. Початок роботи з API
2.1 Створення технічного користувача
Для інтеграції рекомендується створити окремого користувача, який буде використовуватись тільки для API інтеграції.
Це дозволяє:
-
ізолювати інтеграційні доступи
-
контролювати права
-
безпечно керувати токенами.
2.2 Створення API токена
Token створюється у профілі користувача.
Посилання:
https://edo.whitedoc.ua/profile?activeTab=application-tokens
Токен використовується для авторизації усіх API запитів.
Header авторизації:
Authorization: Bearer API_TOKEN
3. Створення користувача (співробітника)
3.1 Самостійна реєстрація користувача
Співробітник може самостійно зареєструватися у системі WhiteDoc через форму реєстрації.
У цьому випадку користувач:
-
відкриває сторінку реєстрації
-
вводить email та інші необхідні дані
-
підтверджує реєстрацію.
Після реєстрації користувач може:
-
входити у систему
-
підписувати документи
-
брати участь у workflow.
Цей підхід часто використовується у випадках, коли організація не має інтеграції з HR системою.
3.2 Імпорт користувачів через адміністративну панель
Адміністратор системи може масово створити користувачів, імпортувавши файл зі списком співробітників.
Зазвичай використовується файл формату:
CSV / XLSX
3.3 Створення користувача через API
Найбільш поширений варіант при інтеграції — автоматична синхронізація користувачів з HR / ERP системи.
У цьому випадку HR система виступає master-системою, а WhiteDoc отримує дані співробітників через API.
Це дозволяє:
-
автоматично створювати нових співробітників
-
оновлювати дані
-
уникнути ручного введення.
Swagger endpoint:
https://api.whitedoc.ua/swagger-ui/index.html#/account-controller/createCorporateUser
Headers
| Header | Опис |
|---|---|
| Authorization | Bearer API_TOKEN |
| Mailbox | UUID mailbox |
| Content-Type | application/json |
Body
{
"email": "user@example.com",
"firstName": "string",
"lastName": "string",
"createMailbox": true,
"phone": "stringst",
"fields": {
"additionalProp1": "string",
"additionalProp2": "string",
"additionalProp3": "string"
}
}
CURL приклад
curl -X POST "https://api.whitedoc.ua/user-controller/createUser" \
-H "Authorization: Bearer API_TOKEN" \
-H "Mailbox: MAILBOX_UUID" \
-H "Content-Type: application/json" \
-d '{
"email": "user@example.com",
"firstName": "string",
"lastName": "string",
"createMailbox": true,
"phone": "stringst",
"fields": {
"additionalProp1": "string",
"additionalProp2": "string",
"additionalProp3": "string"
}
}'
Обов’язкові поля
|
|
|
|
firstName |
Ім'я |
|
lastName |
Прізвище |
|
phone |
Номер телефону |
Додаткові поля (fields)
|
mfo |
МФО банку |
|
tin |
ІПН (РНОКПП) |
|
iban |
IBAN |
|
type |
Тип |
|
other |
Інше |
|
edrpou |
ЄДРПОУ |
|
website |
Веб-сайт |
|
bankName |
Банк |
|
birthday |
Дата народження |
|
business |
Бізнес |
|
fullName |
Повне ім'я (ПІБ) |
|
hireDate |
Дата прийняття на роботу |
|
position |
Посада |
|
hrMailbox |
Скринька HR |
|
companyTin |
ІПН Компанії |
|
department |
Підрозділ |
|
hrFullName |
ПІБ HR |
|
idOrNumber |
ID / номер |
|
patronymic |
По батькові |
|
companyEmail |
Email компанії |
|
companyPhone |
Телефон компанії |
|
contractDate |
Дата договору |
|
companyAddress |
Адрес компанії |
|
contractNumber |
Номер договору |
|
managerMailbox |
Скринька керуючого |
|
companyFullName |
Повна назва компанії |
|
directorMailbox |
Скринька керівника |
|
managerFullName |
ПІБ керуючого |
|
managerPosition |
Посада керуючого |
|
vacationBalance |
Залишок днів відпустки |
|
companyShortName |
Коротка назва компанії |
|
directorFullName |
ПІБ керівника |
|
residenceAddress |
Адреса проживання |
|
registrationAddress |
Адреса реєстрації |
4. Налаштування callback
Callback дозволяє WhiteDoc повідомляти вашу систему про зміну статусу документа.
Наприклад:
-
документ підписаний
-
документ завершений
-
документ на погодженні.
Swagger endpoint:
https://api.whitedoc.ua/swagger-ui/index.html#/envelope-callback-controller/createCallback
Headers
| Header | Опис |
|---|---|
| Authorization | Bearer API_TOKEN |
| Mailbox | UUID поштової скриньки |
CURL приклад
curl -X POST "https://api.whitedoc.ua/envelope-callback-controller/createCallback" \
-H "Authorization: Bearer API_TOKEN" \
-H "Mailbox: MAILBOX_UUID" \
-H "Content-Type: application/json" \
-d '{
"filter": {
"status": ["COMPLETED"],
"scope": ["inbox"]
},
"url": "https://client-system/api/callback",
"retries": 3,
"timeout": 5000,
"successCode": 200,
"login": "string",
"password": "string",
}'
Коли статус документа змінюється, WhiteDoc викликає endpoint вашої системи.
5. Отримання XML конверту
Після отримання callback система повинна отримати XML документ, а також дані про envelope. В шаблоні WhiteDoc можуть бути декілька документів.
Swagger endpoint:
https://api.whitedoc.ua/swagger-ui/index.html#/envelope-controller/getEnvelopeByUuid
Headers
| Header | Опис |
|---|---|
| Authorization | Bearer API_TOKEN |
| Mailbox | UUID поштової скриньки |
CURL приклад
curl -X GET \
"https://api.whitedoc.ua/envelope-controller/getEnvelopeByUuid/{uuid}" \
-H "Authorization: Bearer API_TOKEN" \
-H "Mailbox: MAILBOX_UUID"
6. Парсинг XML
Отриманий XML містить:
-
поля документа
-
метадані
-
статуси.
Система повинна:
-
розпарсити XML
-
отримати поля
-
передати їх у HR систему.
Приклад структури:
<envelope templateUuid=\"d7b4fdf4-7194-4de6-86ef-d2598a64bfb1\" templateVersion=\"09541def-b4c7-42e7-aa83-31f439b358cb\">
<info>
<message/>
<forwarding delegation=\"true\" sharing=\"true\"/>
</info>
<flow>
<roles>
<role id=\"64d77aca-f3b9-498d-93c8-830de40d4a5d\" mailboxUuid=\"d4b20877-3ad3-4420-9605-c1809a97fa46\"/>
<role id=\"8d73bb83-a9b2-4f9d-9a6a-f789cde3fb62\"/>
<role id=\"3bd7811d-5789-4d17-9761-cd4b81a47277\"/>
<role id=\"5da19ab0-6760-4a86-97e7-ebc49548735c\"/>
</roles>
</flow>
<documents>
<document id=\"a280fcfd-54de-4c91-94a1-183f29a1d20a\">
<field name=\"Найменування організації\"/>
<field name=\"ПІБ директора\"/>
<field name=\"Посада працівника\">Software Engineer</field>
<field name=\"Підрозділ працівника\">Відділ розробки</field>
<field name=\"ПІБ працівника\">Іваненко Іван Іванович</field>
<field name=\"ПІБ працівника (Н.в.)\">Іваненко Іван Іванович</field>
<field name=\"Кількість днів відпустки\">10</field>
<field name=\"Дата початку відпустки\">2026-03-09</field>
<field name=\"Дата заяви\"/>
<field name=\"QR штрихкод 3\"/>
</document>
</documents>
</envelope>
7. Бізнес перевірка
Зазвичай цей етап відбувається під час погодження документа, коли він знаходиться на відповідному кроці workflow.
Для користувача цей процес виглядає наступним чином:
-
Користувач створює та підписує документ.
-
Документ переходить у статус “На погодженні”.
-
Користувач у системі бачить, що документ знаходиться на етапі погодження.
-
У цей момент інтегрована система клієнта отримує дані документа через API.
-
Система виконує необхідні бізнес-перевірки.
До таких перевірок можуть належати:
-
перевірка залишку відпустки
-
перевірка лімітів
-
перевірка доступності співробітника
-
перевірка коректності дат
-
інші внутрішні правила компанії.
Після завершення перевірки система клієнта приймає рішення:
-
погодити документ — якщо всі перевірки пройдені успішно
-
скасувати документ — якщо перевірка не пройдена.
Якщо документ погоджується, WhiteDoc переводить його на наступний етап workflow.
У випадку кадрових процесів це може бути:
-
етап формування наказу
-
підпис керівника
-
фінальне завершення процесу.
8. Додавання коментаря
Система може додати коментар до документа та повідомити користувача про результат бізнес перевірок. Коментарі супроводжуться сповіщеннями на email користувача.
Swagger endpoint:
https://api.whitedoc.ua/swagger-ui/index.html#/envelope-controller/getEnvelopeComments
Headers
| Header | Опис |
|---|---|
| Authorization | Bearer API_TOKEN |
| Mailbox | UUID поштової скриньки |
| id | Envelope UUID |
CURL приклад
curl -X POST "https://api.whitedoc.ua/envelope-controller/createEnvelopeComment" \
-H "Authorization: Bearer API_TOKEN" \
-H "Mailbox: MAILBOX_UUID" \
-H "Content-Type: application/json" \
-d '{
"documentId": "string",
"text": "string",
"accessType": "mailbox"
}'
9. Погодження документа
Система погоджує документ і переводить на наступний етап в процесі
Swagger endpoint:
https://api.whitedoc.ua/swagger-ui/index.html#/envelope-controller/approve
Headers
| Header | Опис |
|---|---|
| Authorization | Bearer API_TOKEN |
| Mailbox | UUID поштової скриньки |
CURL приклад
curl -X POST "https://api.whitedoc.ua/envelope-controller/envelopeApproval" \
-H "Authorization: Bearer API_TOKEN" \
-H "Mailbox: MAILBOX_UUID" \
-H "Content-Type: application/json" \
-d '{
"uuids": ["uuid"]
}'
10. Скасування документа
Swagger endpoint:
https://api.whitedoc.ua/swagger-ui/index.html#/envelope-controller/cancelEnvelopes
Headers
| Header | Опис |
|---|---|
| Authorization | Bearer API_TOKEN |
| Mailbox | UUID поштової скриньки |
CURL приклад
curl -X POST "https://api.whitedoc.ua/envelope-controller/cancelEnvelopes" \
-H "Authorization: Bearer API_TOKEN" \
-H "Mailbox: MAILBOX_UUID" \
-H "Content-Type: application/json" \
-d '{
"uuids": ["uuid"],
"comment": "Rejected"
}'
11. Повернення сформованого наказу у WhiteDoc
Після обробки заяви HR система клієнта може сформувати наказ або інший службовий документ (наприклад: наказ про відпустку). Дані XML дозволяють отримати всі необхідні дані для формування наступних документів.
Щоб додати цей документ до процесу у WhiteDoc, необхідно виконати два кроки:
-
Завантажити файл наказу на сервер WhiteDoc
-
Додати UUID вкладення у XML конверту
Після цього документ стає частиною конверту і може бути відправлений на підпис співробітнику.
11.1. Завантаження файлу на сервер WhiteDoc
На цьому етапі система клієнта завантажує файл (наприклад PDF наказу) у файлове сховище WhiteDoc.
У відповідь API повертає UUID вкладення, який буде використаний у наступному кроці.
Swagger endpoint:
https://api.whitedoc.ua/swagger-ui/index.html#/envelope-controller/createAttachment
Headers
| Header | Опис |
|---|---|
| Authorization | Bearer API_TOKEN |
| Mailbox | UUID mailbox |
Формат запиту
Файл передається як multipart/form-data.
CURL приклад
curl -X POST "https://api.whitedoc.ua/attachment-controller/upload" \
-H "Authorization: Bearer API_TOKEN" \
-H "Mailbox: MAILBOX_UUID" \
-F "file=@order.pdf"
Приклад відповіді
{
"uuid": "4a3d1f1a-1a6e-4f5a-9d3c-91b20a8d0e3d",
"name": "order.pdf",
"size": 248392
}
Результат
Система клієнта отримує:
attachment_uuid
Цей UUID використовується для додавання файлу до XML конверту.
11.2. Додавання UUID вкладення у XML конверту
Після завантаження файлу необхідно додати вкладення до конверту.
Це робиться шляхом додавання UUID attachment у XML структуру документа.
Після цього файл стає частиною конверту.
<document id=\"8194259e-5021-425e-9016-38b7e40975d2\">
<field name=\"dc8494f1-9360-4cb7-bd32-d67b831e08d7\" attachmentUuid=\"4a3d1f1a-1a6e-4f5a-9d3c-91b20a8d0e3d\">order.pdf</field>
</document>
Що відбувається після додавання attachment
Після того як attachment доданий у XML:
-
документ стає частиною конверту
-
його можна включити у workflow
-
WhiteDoc відправляє документ на підпис співробітнику.
12. Отримання ZIP архіву
Можна отримати всі файли конверту, а також підписів.
Swagger endpoint:
https://api.whitedoc.ua/swagger-ui/index.html#/envelope-controller/getEnvelopeZip
Headers
| Header | Опис |
|---|---|
| Authorization | Bearer API_TOKEN |
| Mailbox | UUID mailbox |
CURL приклад
curl -X GET \
"https://api.whitedoc.ua/envelope-controller/getEnvelopeZip/{uuid}" \
-H "Authorization: Bearer API_TOKEN" \
-H "Mailbox: MAILBOX_UUID" \
--output envelope.zip
12. Рекомендації
Retry стратегія
При інтеграції рекомендується повторювати запити у випадку помилок.
| Код | Дія |
|---|---|
| 409 | retry |
| 500 | retry |
| timeout | retry |
Idempotency
Callback може приходити кілька разів.
Тому рекомендується перевіряти:
envelope_uuid
щоб уникнути повторної обробки.
Logging
Рекомендується логувати:
-
callback received
-
xml downloaded
-
xml parsed
-
order generated
-
attachment uploaded