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

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 Next »

Мета

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

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

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

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

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

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

 index.graphql
  "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!
 deviceRegistryJobs.graphql
"""
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. Відобразии відповідь у відповідності до специфікації

  • No labels