Змінити статус ключа POST /api/external/company/pkey/status
Метод змінює статус ключа компанії/співробітника та одразу формує, підписує і зберігає PDF-підтвердження зміни статусу.
Клієнт не підписує PDF самостійно, а передає UUID ключа адміністратора/суперадміністратора та зашифрований пароль до нього. Після чого API:
- формує PDF-форми зміни статусу;
- підписує їх ключем адміністратора/суперадміністратора;
- зберігає підписані PDF як підтвердження зміни статусу;
- змінює статус ключа у системі;
- передає зміну статусу до центру сертифікації;
- повертає масив підписаних PDF.
REQUEST
|
URL |
|
|
Метод запиту |
POST |
|
URL запиту |
/api/external/company/pkey/status |
|
URL параметри |
companyCode (обов’язково) - код Компанії; |
|
Authorization |
|
|
Auth type |
API key |
|
Key / Value |
x-system-id - токен, отриманий при підключенні |
|
Headers |
|
|
Content-Type |
application/json |
|
REQUEST |
|
|
JSON Body |
JSON приклад запиту:
|
Опис полів запиту:
| Поле | Тип | Обовʼязкове | Опис |
|---|---|---|---|
keyUuid |
string UUID | так | UUID ключа, статус якого треба змінити. |
action |
enum | так |
Дія:
|
adminKeyUuid |
string UUID | так | UUID ключа адміністратора/суперадміністратора цієї компанії. |
adminKeyPassword |
string | так | Base64 від RSA-encrypted bytes пароля ключа адміністратора/суперадміністратора. Шифрувати public key з /api/external/key; див. розділ 1.4. |
reason |
string | так | Причина зміни статусу. Мінімум 4 символи після trim. Потрапляє у PDF і в історію статусів. |
API перевіряє, чи дозволена дія для поточного статусу ключа. Наприклад, hold дозволений тільки для ACTIVATED, а unhold — для ключа у статусі HOLD.
RESPONSE
В тілі відповіді передаються статус 200 та масив рядків. Кожен рядок — підписаний PDF у base64.
JSON приклад відповіді:
[
"BASE64_SIGNED_STATUS_CHANGE_PDF"
]
Якщо для ключа є дочірні файлові ключі, які мають змінювати статус каскадно, у відповіді буде кілька елементів: основний ключ + дочірні ключі.
CURL
curl -X POST 'https://host/api/external/company/pkey/status?...' \
-H 'x-system-id: 019eb581-307b-7562-8a1f-20227511e898' \
-H 'Content-Type: application/json' \
-d '{
"keyUuid": "019ec000-0000-7000-8000-000000000001",
"action": "hold",
"adminKeyUuid": "019ec000-0000-7000-8000-000000000099",
"adminKeyPassword": "BASE64_RSA_ENCRYPTED_ADMIN_KEY_PASSWORD",
"reason": "Компрометація ключа"
}'
Помилки
| HTTP | type |
Додаткові поля | Опис |
|---|---|---|---|
| 400 | decrypt_error |
field=adminKeyPassword |
Не вдалося розшифрувати пароль ключа адміністратора/суперадміністратора. |
| 400 | pkey_not_found |
— | Ключ keyUuid не знайдений або не належить company. |
| 400 | employee_not_found |
— | Власник ключа не знайдений як співробітник company. |
| 400 | admin_pkey_not_found |
— | Ключ адміністратора/суперадміністратора не знайдений або не належить company. |
| 400 | admin_required |
— | Власник adminKeyUuid не має ролі ADMIN/SUPER_ADMIN. |
| 400 | invalid_password |
— | Пароль ключа адміністратора/суперадміністратора неправильний. |
| 400 | invalid_reason |
— | reason порожній або коротший за 4 символи після trim. |
| 400 | unsupported_action |
— | У action передано не hold, unhold або revoke. |
| 400 | pkey_wrong_status |
— | Перехід статусу не дозволений для поточного стану ключа. |
| 403 | company_access_denied |
— | Немає доступу до company. |
| 403 | company_wrong_status |
status |
Компанія не ACTIVE. |