Створити чернетку ключа для співробітника POST /api/external/company/employee/pkey/generate/draft
REQUEST
|
URL |
|
|
Метод запиту |
|
|
URL запиту |
/api/external/company/ |
|
URL параметри |
companyCode (обов’язково) - код Компанії; employeeIpn (обов’язково) - ІПН/РНОКПП співробітника; store (обов’язково) - може приймати одне зі значень:
|
|
Authorization |
|
|
Auth type |
API key |
|
Key / Value |
x-system-id - токен, отриманий при підключенні |
|
Headers |
|
|
Content-Type |
multipart/form-data |
|
REQUEST |
|
|
REQUEST Body |
info (обов’язково) JSON attr - параметри CA user і ключа; requests (обов’язково, тільки для
Всі персональні дані ідентифікації беруться з підпису/сертифіката у file |
info:
{
"pkName": "Ключ Іваненко",
"pkType": "UA",
"pkStoreType": "HSM",
"pkPassword": "base64 RSA-encrypted password",
"pkIsStamp": false,
"emplTitle": "Менеджер",
"emplOrgUnit": "Відділ продажів",
"caPassPhrase": "base64 RSA-encrypted pass phrase",
"certType": "SIGN_AND_ENCRYPT",
"certValidity": "TWO"
}
Опис полів info:
| Поле | Тип | Обовʼязкове | Опис |
|---|---|---|---|
pkName |
string | так | Назва ключа. |
pkType |
enum | так | UA або ECDSA. |
pkStoreType |
enum | так | HSM або FILE. |
pkPassword |
string | для store=cloud |
Base64 від RSA-encrypted bytes пароля ключа. Шифрувати актуальним public key з /api/external/key. |
pkIsStamp |
boolean | так | true — печатка, false — особистий ключ співробітника. |
emplTitle |
string/null | ні | Посада для CA user. |
emplOrgUnit |
string/null | ні | Підрозділ для CA user. |
caPassPhrase |
string | так | Base64 від RSA-encrypted bytes секретної фрази CA user. Шифрувати актуальним public key з /api/external/key. |
certType |
enum | так | SIGN_ONLY або SIGN_AND_ENCRYPT. |
certValidity |
enum | так | ONE або TWO. |
requests для store=file:
{
"ecdsa": "base64 PKCS #10 request",
"signature": "base64 PKCS #10 request",
"encryption": "base64 PKCS #10 request"
}
Опис полів requests :
| Поле | Тип | Коли потрібне | Опис |
|---|---|---|---|
ecdsa |
string | pkType=ECDSA |
Base64 PKCS #10 request для ECDSA сертифіката. |
signature |
string | pkType=UA |
Base64 PKCS #10 request для сертифіката підпису. |
encryption |
string | pkType=UA і certType=SIGN_AND_ENCRYPT |
Base64 PKCS #10 request для сертифіката шифрування. |
RESPONSE
В тілі відповіді передається статус 200.
JSON приклад відповіді:
{
"pKey": {
"id": 1001,
"name": "Ключ Іваненко",
"uuid": "019ec000-0000-7000-8000-000000000001",
"status": "COMPANY_GENERATED",
"storeType": "HSM",
"keyType": "UA",
"stamp": false
},
"forms": [
{
"type": "PK_FORM",
"pdf": "JVBERi0x...",
"hash": "HASH_OF_PDF"
}
]
}
Для співробітника з роллю ADMIN у відповіді додатково буде PK_APPENDIX.
Опис полів відповіді:
| Поле | Тип | Опис |
|---|---|---|
pKey |
object | Обʼєкт ESSPrivateKey, поля описані в розділі 2.3. Використовуйте pKey.uuid у методах 9.2 і 9.3. |
forms |
object[] | PDF-документи, які потрібно підписати співробітником. |
forms[].type |
enum | Тип форми. |
forms[].pdf |
string | PDF content у base64. |
forms[].hash |
string/null | Hash PDF для контролю цілісності. |
CURL
- для
store=cloud:
curl -X POST 'https://host/api/external/company/employee/pkey/generate/draft?...' -H 'x-system-id: 019eb581-307b-7562-8a1f-20227511e898' -F 'info={
"pkName":"Ключ Іваненко",
"pkType":"UA",
"pkStoreType":"HSM",
"pkPassword":"BASE64_RSA_ENCRYPTED_PASSWORD",
"pkIsStamp":false,
"emplTitle":"Менеджер",
"emplOrgUnit":"Відділ продажів",
"caPassPhrase":"BASE64_RSA_ENCRYPTED_CA_PASSPHRASE",
"certType":"SIGN_AND_ENCRYPT",
"certValidity":"TWO"
}'
- для
store=file:
curl -X POST 'https://host/api/external/company/employee/pkey/generate/draft?...' -H 'x-system-id: 019eb581-307b-7562-8a1f-20227511e898' -F 'info={
"pkName":"Ключ Іваненко",
"pkType":"UA",
"pkStoreType":"FILE",
"pkIsStamp":false,
"emplTitle":"Менеджер",
"emplOrgUnit":"Відділ продажів",
"caPassPhrase":"BASE64_RSA_ENCRYPTED_CA_PASSPHRASE",
"certType":"SIGN_AND_ENCRYPT",
"certValidity":"TWO"
}' -F 'requests={
"signature":"BASE64_P10_SIGNATURE",
"encryption":"BASE64_P10_ENCRYPTION"
}'
Помилки
| HTTP | type |
Опис |
|---|---|---|
| 400 | invalid_store |
store не cloud і не file. |
| 400 | employee_not_found |
Співробітник не знайдений. |
| 400 | employee_not_active |
Співробітник не активний або не ідентифікований. |
| 400 | company_not_found |
Не знайдено company для співробітника. |
| 400 | decrypt_error |
Неможливо розшифрувати caPassPhrase або pkPassword. |
| 400 | employee_identification_not_found |
Не знайдено підпис ідентифікації співробітника. |
| 400 | request_not_found |
Для store=file не переданий потрібний p10-запит. |
| 400 | pk_requests_not_found |
Після створення ключа не знайдені p10-запити. |
| 403 | company_access_denied |
Немає доступу до company. |
| 403 | company_wrong_status |
Компанія не ACTIVE. |