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

AR_[NEW] (GraphQl) Search Device registry Jobs_UA

Мета

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

Ключові положення

  1. Це квері метод graphQl використовуюється тільки в адміністративній панелі.

  2. Тільки автентифіковані та авторизовані співробітників NHS з відповідними скоупами можуть здійсними пошук джоб по реєстру девасів.

  3. Квері повертає перелік джобів реєстру девайсів профільтровані по пошуковим параметрам.

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

"Reads and enables pagination through a set of `DeviceRegistryJob`." deviceRegistryJobs( "A condition to be used in determining which values should be returned by the collection." filter: DeviceRegistryJobFilter "The method to use when ordering collection items." orderBy: DeviceRegistryJobOrderBy "Read all values in the set after (below) this cursor." after: String "Read all values in the set before (above) this cursor." before: String "Only read the first _n_ values of the set." first: Int "Only read the last _n_ values of the set." last: Int ): DeviceRegistryJobConnection!
""" Filter for Device registry job. """ input DeviceRegistryJobFilter { "Device registry job status filters." status: JobStatus } """ List of fields to sort both asc and desc side `DeviceRegistryJob`. """ enum DeviceRegistryJobOrderBy { "Sort Device registry job by started at in ascending order" STARTED_AT_ASC "Sort Device registry job by started at in descending order" STARTED_AT_DESC } """ A connection to a list of `DeviceRegistryJob` values. """ type DeviceRegistryJobConnection { "Information to aid in pagination." pageInfo: PageInfo! "A list of nodes." nodes: [DeviceRegistryJob] "A list of edges." edges: [DeviceRegistryJobEdge] } """ Reads and enables pagination through a set of `DeviceRegistryJob`. """ type DeviceRegistryJobEdge { "The item at the end of the edge." node: DeviceRegistryJob! "A cursor for use in pagination." cursor: String! } """ An object for DeviceRegistryJob. """ type DeviceRegistryJob implements Node { "The ID of an object" id: ID! "Primary key identifier from the database" databaseId: UUID! "Job name." name: String "Device registry Job status." status: JobStatus! "Job execution strategy." strategy: JobStrategy! "Date and time when the job starts." startedAt: DateTime! "Date and time when the job ends." endedAt: DateTime "Tasks within this job." tasks( "A condition to be used in determining which values should be returned by the collection." filter: TaskFilter "The method to use when ordering collection items." orderBy: TaskOrderBy "Read all values in the set after (below) this cursor." after: String "Read all values in the set before (above) this cursor." before: String "Only read the first _n_ values of the set." first: Int "Only read the last _n_ values of the set." last: Int ): TaskConnection! "Type of register originating device registry data. The value should be present in the `REGISTER_TYPE` dictionary." registerType: String! "Device registry job reason description." reasonDescription: String! }

Авторизація

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

    • в разі помилки - повернути 401 (“Invalid access token”) в разі неуспішних валідацій

  • Перевірити, що токен дійсний

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

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

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

Перевірити юридичну особу

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

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

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

  • Перевірти тип клієнта (type = NHS)

    • в разі помилки - повернути 403 ('You don't have permission to access this resource')

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

  1. Отримати перелік всіх джоб по реєстру медвиробів з таблиці джоб JABBA DB, профільтровані по:

    1. типи джобів реєстру медвиробів (jabba.jobs.type):

      1. upload_device_definitions_registry

    2. вказані додаткові пошукові параметри

      1. статус. Знайти по jobs.status

  2. Застосувати додаткове сортування

    1. за-замовчуванням відсортувати записи по полю inserted_at в спадаючому порядку

  3. Відобразии відповідь у відповідності до специфікації

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