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

Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Current »

Ціль

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

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

  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 у відповідній таблиці (дивитися /wiki/spaces/FORBIDDEN/pages/2087190529)

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

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

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

  • No labels