Skip to main content

Змінити статус ключа POST /api/external/company/pkey/status

Метод змінює статус ключа компанії/співробітника та одразу формує, підписує і зберігає PDF-підтвердження зміни статусу.

Клієнт не підписує PDF самостійно, а передає UUID ключа адміністратора/суперадміністратора та зашифрований пароль до нього. Після чого API:

  1. формує PDF-форми зміни статусу;
  2. підписує їх ключем адміністратора/суперадміністратора;
  3. зберігає підписані PDF як підтвердження зміни статусу;
  4. змінює статус ключа у системі;
  5. передає зміну статусу до центру сертифікації;
  6. повертає масив підписаних 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": "019ec000-0000-7000-8000-000000000001",
  "action": "hold",
  "adminKeyUuid": "019ec000-0000-7000-8000-000000000099",
  "adminKeyPassword": "BASE64_RSA_ENCRYPTED_ADMIN_KEY_PASSWORD",
  "reason": "Компрометація ключа"
}

 

Опис полів запиту:

Поле Тип Обовʼязкове Опис
keyUuid string UUID так UUID ключа, статус якого треба змінити.
action enum так

Дія: 

  • hold - призупинити активний ключ.
  • unhold - відновити ключ зі статусу HOLD.
  • revoke - скасувати/відкликати ключ.
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 передано не holdunhold або revoke.
400 pkey_wrong_status Перехід статусу не дозволений для поточного стану ключа.
403 company_access_denied Немає доступу до company.
403 company_wrong_status status Компанія не ACTIVE.