ЕСОЗ - публічна документація

Deactivate Item in the Forbidden group_UA

Ціль

Даний веб-сервіс дозволяє деактивувати елементи заборонених груп.

Ключові моменти

  1. Даний сервіс на graphQl, який використовується лише з панелі адміністрування.

  2. Тільки авторизований та уповноважений працівник національної служби охорони здоров’я з відповідною областю може здійснювати пошук у заборонених групах.

  3. Елементи слід деактивувати з накладанням цифрового підпису.

  4. Один або кілька елементів можна деактивувати одночасно.

  5. Тільки активні елементи можуть бути деактивовані.

Специфікація

""" Input for `deactivateForbiddenGroupItems` mutation. User must have a scope **forbidden_group:write** """ input DeactivateForbiddenGroupItemsInput { "Forbidden group identifier." forbiddenGroupId: ID! "List with IDs of `ForbiddenGroupService` objects. Each object should be active and belong to the `forbiddenGroupId`" forbiddenGroupServiceIds: [ID!] "List with IDs of `ForbiddenGroupCode` objects. Each object should be active and belong to the `forbiddenGroupId`" forbiddenGroupCodeIds: [ID!] } """ Return type for `DeactivateForbiddenGroupItems` mutation. """ type DeactivateForbiddenGroupItemsPayload { "Updaed `ForbiddenGroup`." forbiddenGroup: ForbiddenGroup }

Авторизація

  • Перевірити валідність токену доступу

    • у випадку помилки - повернути 401 (“Invalid access token”) in case of validation fails

  • Перевірити, чи термін дії токену не минув

    • у випадку помилки - повернути 401 (“Invalid access token”)

  • Перевірити скоупи користувача на можливість виконання даної дії (scope = 'forbidden_group:write')

    • повернути 403 (“Your scope does not allow to access this resource. Missing allowances: forbidden_group:write”) в разі невалідних скоупів

Перевірити юридичну організацію

  • Отримати client_id з токену.

  • Перевірити скоупи користувача на можливість виконання даної дії (scope = 'forbidden_group:write')

    • у випадку помилки - повернути 403 (“Your scope does not allow to access this resource. Missing allowances: forbidden_group:write”)

  • Перевірити статус юридичної особи (status = ACTIVE)

    • у випадку помилки - повернути 409 ('client_id refers to legal entity that is not active')

Перевірити цифровий підпис

  • Перевірити, що запит підписано

    • у випадку помилки - повернути 422 (“document must be signed by 1 signer but contains 0 signatures”)

  • Перевірити, що цифровий підпис дійсний

  • Перевірити чи належить цифровий пілпис користувачу

    • Перевірити, що ЕДРПОУ з цифрового підпису та party.tax_id відповідають один одному

      • у випадку помилки - повернути 409 (“Signer DRFO doesn't match with requester tax_id“)

Перевірити запит

  1. Перевірити6 що вказано хоча б одне поле з масива: forbidden_group_service_ids, forbidden_group_code_ids

  • у випадку помилки - повернути 422 ('One of the required property should be present: forbidden_group_service_ids, forbidden_group_code_ids')

2. Для кожного id в масиві forbidden_group_service_ids або forbidden_group_code_ids:

  • Перевірити, що він унікальний в запиті

    • у випадку помилки - повернути 422 ('Item Id <id> is duplicated in the request')

  • Перевірити чи він існує та чи активний:

    • у випадку помилки - повернути 404 ('not found')

3. Перевірити, що вказано deactivation_reason

  • у випадку помилки - повернути 422 ('required property deactivation_reason was not present')

Сервісна логіка

  1. Зберегти підписаний контент до медіа-сховища

  2. Для кожного id в масиві forbidden_group_service_ids або forbidden_group_code_ids:

    1. встановити is_active = false у відповідній таблиці (дивитися https://e-health-ua.atlassian.net/wiki/spaces/FORBIDDEN/pages/2087190529)

    2. встановити deactivation_reason = $.deactivation_reason

    3. встановити updated_at, updated_by

  3. Очистити кеш

ЕСОЗ - публічна документація