Запросы API модуля управления уязвимостями

В данном разделе представлено описание функционала выполнения запросов и мутаций для взаимодействия с данными модуля управления уязвимостями через GraphQL API и примеры его использования.

В запросы к API необходимо включать HTTP-заголовок x-tenant-id, указывающий идентификатор тенанта.

Доступные операции:

  • авторизация и получение токена.

  • получение списка пространств.

  • получение списка тенантов.

  • получение списка сканеров.

  • получение задачи сканирования, списка задач сканирования, истории запусков задачи сканирования.

  • создание, редактирование, удаление, запуск, отмена запущенной задачи сканирования.

  • приостановка и возобновление задачи сканироввния.

  • получение профиля, списка профилей и списка стандартов.

  • создание, редактирование, удаление профиля.

  • получение объекта сущности, списка объектов сущности и связей объекта с другими объектами, создание, удаление и редактирование объекта сущности.

  • создание и удаление связи объекта.

  • получение учетной записи и ее проверка на устройстве.

  • получение списка агентов и групп агентов.

Авторизация и получение токена

Позволяет осуществлять авторизацию и получение токена через мутацию login.

URL: {{url}}/api/evo/core/bff/graphql

Таблица 1. Параметры мутации login
Параметр Тип данных Обязателен Описание

input →

Объект

Да

 — 

→ password

Строка

Да

Пароль

→ username

Строка

Да

Логин

В ответ на мутацию возвращаются следующие данные:

  • accessToken: Access токен. Передается в запросах как параметр авторизации типа bearer token.

  • passwordExpiredAt: Дата истечения пароля учетной записи.

  • refreshToken: Refresh токен. Передается при истечении срока действия access токена.

Пример 1. Пример мутации login
mutation Login ($input: LoginRequest!) {
    login (input: $input) {
        accessToken
        passwordExpiredAt
        refreshToken
    }
}
Пример 2. Пример использования переменных
{
    "input": {
        "password": "admin",
        "username": "admin"
    }
}

Список пространств

Позволяет получить список пространств в системе через запрос listSpaces.

URL: {{url}}/api/evo/vm/bff/graphql

В ответ на запрос возвращаются следующие данные:

  • spaces: Параметры пространства

    Пример 3. Структура данных
    spaces {
                createdAt
                createdBy
                deletedAt
                deletedBy
                description
                host
                id
                name
                port
                updatedAt
                updatedBy
            }
Пример 4. Пример запроса listSpaces
query ListSpaces {
    listSpaces {
        spaces {
            createdAt
            createdBy
            deletedAt
            deletedBy
            description
            host
            id
            name
            port
            updatedAt
            updatedBy
        }
    }
}

Список тенантов

Позволяет получить список тенантов в системе через запрос listTenants.

URL: {{url}}/api/evo/core/bff/graphql

Таблица 2. Параметры запроса listTenants
Параметр Тип данных Обязателен Описание

input →

Объект

Нет

 — 

→ filter →

Объект

Нет

 — 

→ → query

Строка

Нет

 — 

→ → statuses

Массив [Строка]

Нет

Статус тенанта:

  • DISABLED — Неактивен

  • ENABLED — Активен

→ orderBy

Строка

Нет

Порядок сортировки. Пример:

name DESC

pageRequest →

Объект

Нет

 — 

→ → countTotal

Булево

Нет

Подсчет количества объектов на странице

→ → limit

Целое число

Нет

Ограничение на количество возвращаемых результатов

→ → offset

Целое число

Нет

Смещение

В ответ на запрос возвращаются следующие данные:

  • tenants

  • createdBy: UUID пользователя, который создал тенант.

  • id: UUID тенанта.

  • name: Название тенанта.

  • parentId: UUID родительского тенанта.

  • description: Описание тенанта.

  • recordDatetime: Время создания, удаления, обновления тенанта.

    recordDatetime {
          createdAt
          deletedAt
          updatedAt
    }
  • status: Статус тенанта (DISABLED, ENABLED).

  • updatedBy: UUID пользователя, который редактировал тенант.

  • creator: Информация о пользователе, который создал тенант.

    creator {
         fullname
         id
         username
    }
  • updater: Информация о пользователе, который редактировал тенант.

    updater {
         fullname
         id
         username
    }
Пример 5. Пример запроса listTenants
query listTenants ($input: ListTenantsRequest) {
    listTenants (input: $input) {
        tenants {
            createdBy
            id
            name
            parentId
            status
            updatedBy
            description
            recordDatetime {
                createdAt
                deletedAt
                updatedAt
            }
            creator {
                fullname
                username
                id
            }
            updater {
                fullname
                id
                username
            }
        }
    }
}
Пример 6. Пример использования переменных
{
    "input": {
        "orderBy": "name asc",
        "filter": null
    }
}
Пример 7. Пример ответа
{
    "data": {
        "listTenants": {
            "tenants": [
                {
                    "createdBy": "4a84e42f-59d3-4736-9e55-41fc0e730dd2",
                    "id": "ea2e5b16-800a-4e1c-80b3-eb4aefefd4bb",
                    "name": "1",
                    "parentId": "00000000-0000-0000-0000-000000000000",
                    "status": "ENABLED",
                    "updatedBy": null,
                    "description": "",
                    "recordDatetime": {
                        "createdAt": "2024-12-28T08:33:03.249Z",
                        "deletedAt": null,
                        "updatedAt": "2024-12-28T08:33:03.249Z"
                    },
                    "creator": {
                        "fullname": null,
                        "username": "admin",
                        "id": "4a84e42f-59d3-4736-9e55-41fc0e730dd2"
                    },
                    "updater": null
                },
                {
                    "createdBy": "4a84e42f-59d3-4736-9e55-41fc0e730dd2",
                    "id": "38c03a96-d40b-4bfa-bdda-89c6938bedaa",
                    "name": "2",
                    "parentId": "00000000-0000-0000-0000-000000000000",
                    "status": "ENABLED",
                    "updatedBy": null,
                    "description": "",
                    "recordDatetime": {
                        "createdAt": "2024-12-28T08:33:06.382Z",
                        "deletedAt": null,
                        "updatedAt": "2024-12-28T08:33:06.382Z"
                    },
                    "creator": {
                        "fullname": null,
                        "username": "admin",
                        "id": "4a84e42f-59d3-4736-9e55-41fc0e730dd2"
                    },
                    "updater": null
                }
            }
        }
    }
}

Список сканеров

Позволяет получить список сканеров через запрос listScanners.

URL: {{url}}/api/evo/vm/bff/graphql

Таблица 3. Параметры запроса listScanners
Параметр Тип данных Обязателен Описание

input →

Объект

Нет

 — 

→ filter →

Объект

Нет

Параметры фильтра

→ → name

Строка

Нет

Название задачи

→ → query

Строка

Нет

Сквозной поиск по полям:

  • name;

  • description.

→ pagination →

Объект

Нет

Параметры пагинации

→ → limit

Целое число

Нет

Ограничение на количество возвращаемых результатов

→ → offset

Целое число

Нет

Смещение

→ sorting →

Объект

Нет

Параметры сортировки

→ → order

Строка

Нет

Порядок

→ → orderBy

Строка

Нет

Поле сортировки

В ответ на запрос возвращаются следующие данные:

  • scanners: Параметры сканера

    Пример 8. Структура данных
    scanners {
                cpu
                createdAt
                createdBy
                deletedAt
                deletedBy
                description
                id
                isActive
                name
                ram
                spaceId
                spaceName
                type
                updatedAt
                updatedBy
                agentConfiguration {
                    name
                    ram
                    workersCount
                }
         }
Пример 9. Пример запроса listScanners
query ListScanners ($input: ListScannersRequest!) {
    listScanners(input: $input) {
        scanners {
            cpu
            createdAt
            createdBy
            deletedAt
            deletedBy
            description
            id
            isActive
            name
            ram
            spaceId
            spaceName
            updatedAt
            updatedBy
            agentConfiguration {
                name
                ram
                workersCount
            }
        }
    }
}
Пример 10. Пример использования переменных
{
    "input": {
        "filter": {}
    }
}
Пример 11. Пример ответа
{
    "data": {
        "listScanners": {
            "scanners": [
                {
                    "cpu": 1,
                    "createdAt": "2024-12-18T14:08:09.332Z",
                    "createdBy": "00000000-0000-0000-0000-000000000000",
                    "deletedAt": null,
                    "deletedBy": "admin",
                    "description": "",
                    "id": "workload-2",
                    "isActive": false,
                    "name": "workload-2",
                    "ram": 1,
                    "spaceId": "space-1",
                    "spaceName": "space-1",
                    "updatedAt": "2024-12-18T14:08:09.332Z",
                    "updatedBy": "00000000-0000-0000-0000-000000000000",
                    "agentConfiguration": [
                        {
                            "name": "vm-discovery-scan-agent",
                            "ram": 1,
                            "workersCount": 1
                        },
                        {
                            "name": "vm-discovery-agent",
                            "ram": 1,
                            "workersCount": 1
                        },
                        {
                            "name": "vm-pentest-agent",
                            "ram": 1,
                            "workersCount": 1
                        },
                        {
                            "name": "vm-data-collection-agent",
                            "ram": 1,
                            "workersCount": 1
                        }
                    ]
                }
            ]
        }
    }
}

Получение задачи сканирования

Позволяет получить задачу сканирования через запрос getTask.

URL: {{url}}/api/evo/vm/bff/graphql

Таблица 4. Параметры запроса getTask
Параметр Тип данных Обязателен Описание

id

Строка

Да

UUID задачи сканирования

tenantId

Строка

Нет

UUID тенанта

В ответ на запрос возвращаются следующие данные:

  • accountIds: UUID учетных записей для сканирования.

  • agentScanGroups: Массив со списком UUID агентов

    Тип сканирования: Агентское.

  • bruteforceServiceList → services: Массив со списком сервисов для подбора паролей

    Тип профиля: Тестирование на проникновение.

  • createdAt: Дата создания задачи.

  • dateFinish: Дата и время окончания срока действия задачи (в формате Unix).

  • dateNextLaunch: Дата следующего запуска.

  • dateNextPaused: Дата следующей приостановки.

  • dateOffset: Сдвиг UTC (если указывается срок действия задачи).

  • dateStart: Дата и время начала срока действия задачи (в формате Unix).

  • description: Описание задачи.

  • id: UUID задачи сканирования.

  • loggingMode: Уровень журналирования:

    • LOGGING_MODE_DEBUG – расширенный.

    • LOGGING_MODE_INFO – информационный.

  • name: Название задачи сканирования.

  • pausedDuration: Длительность приостановки (в секундах).

  • pausedOffsetStart: Время начала приостановки (в секундах).

  • pausedUnit: Дни месяца/недели, в которые нужно приостанавливать сканирование, в формате чисел.

    Пример 12. Структура данных
    "pausedUnit": "1,2" // понедельник, вторник
  • profileId: UUID профиля.

  • repeatInterval: Повторять запуск задачи каждый месяц/неделю/день.

  • repeatUnit: Дни месяца/недели, в которые нужно запускать задачу.

    Пример 13. Структура данных
    "repeatUnit": "3,11,19,20"
  • scanMode: Тип сканирования:

    • SCAN_MODE_AGENT — Агентское сканирование.

    • SCAN_MODE_AGENTLESS — Безагентское сканирование.

  • spaceId: ID пространства.

  • targets: IP целей сканирования.

  • targetsExcludes: IP исключений сканирования.

  • taskPaused: Приостановка сканирования.

  • taskRunner: Режим запуска:

    • TASK_RUNNER_DAY — ежедневно.

    • TASK_RUNNER_MANUAL — вручную.

    • TASK_RUNNER_MONTH — ежемесячно.

    • TASK_RUNNER_ONCE — однократно.

    • TASK_RUNNER_WEEK — еженедельно.

  • taskStatus: Статус задачи:

    • TASK_STATUS_CANCELED — отменено.

    • TASK_STATUS_FINISHED — выполнено.

    • TASK_STATUS_INIT — не выполнялось.

    • TASK_STATUS_INTERRUPTED — ошибка.

    • TASK_STATUS_PAUSED — приостановлено.

    • TASK_STATUS_PROCESSING — выполняется.

  • timeStart: Время запуска задачи по расписанию (в формате Unix).

  • tenantId: UUID тенанта.

  • workloadId: ID сканера.

Пример 14. Пример запроса getTask
query getTask ($id: String!) {
    getTask (id: $id) {
        id
        accountIds
        agentScanGroups
        bruteforceServiceList {
            services
        }
        createdAt
        dateFinish
        dateNextLaunch
        dateNextPaused
        dateOffset
        dateStart
        description
        id
        loggingMode
        name
        pausedDuration
        pausedInterval
        pausedOffsetStart
        pausedUnit
        profileId
        repeatInterval
        repeatUnit
        scanMode
        spaceId
        targets
        targetsExcludes
        taskPaused
        taskRunner
        taskStatus
        tenantId
        timeStart
        workloadId
    }
}
Пример 15. Пример использования переменных
{
  "id": "028924cd-19cd-43f2-8bb8-75697d269920"
}

Получение списка задач

Запрос findTasks позволяет получить список задач сканирования.

URL: {{url}}/api/evo/core/bff/graphql

Таблица 5. Параметры запроса findTasks
Параметр Тип данных Обязателен Описание

filter →

Объект

Нет

Параметры фильтра

→ name

Строка

Нет

Название задачи

→ query

Строка

Нет

Сквозной поиск по полям:

  • name;

  • description.

→ status

Строка

Нет

Статус задачи:

  • TASK_STATUS_CANCELED — отменено

  • TASK_STATUS_FINISHED — выполнено

  • TASK_STATUS_INIT — не выполнялось

  • TASK_STATUS_INTERRUPTED — ошибка

  • TASK_STATUS_PAUSED — приостановлено

  • TASK_STATUS_PROCESSING — выполняется

→ profile

Строка

Нет

Тип профиля:

  • TYPE_OF_PROFILE_BASIC — Базовое сканирование

  • TYPE_OF_PROFILE_COMPLIANCE — Проверка соответствия

  • TYPE_OF_PROFILE_DISCOVERY — Обнаружение

  • TYPE_OF_PROFILE_PENTEST — Тестирование на проникновение

  • TYPE_OF_PROFILE_VULNER — Базовое сканирование

→ scanMode

Строка

Нет

Тип сканирования:

  • SCAN_MODE_AGENT — Агентское сканирование

  • SCAN_MODE_AGENTLESS — Безагентское сканирование

→ spaceId

Строка

Нет

ID пространства

→ workloadId

Строка

Нет

ID сканера

→ tenantId

Строка

Нет

UUID тенанта

pagination →

Объект

Нет

Параметры пагинации

→ limit

Целое число

Нет

Ограничение на количество возвращаемых результатов

→ offset

Целое число

Нет

Смещение

sorting →

Объект

Нет

Параметры сортировки

→ order

Строка

Нет

Порядок

→ orderBy

Строка

Нет

Поле сортировки

В ответ на запрос возвращаются следующие данные:

  • tasks: Параметры задачи сканирования.

    Пример 16. Структура данных
    tasks {
        id
        accountIds
        agentScanGroups
        bruteforceServiceList {
            services
        }
        createdAt
        dateFinish
        dateNextLaunch
        dateNextPaused
        dateOffset
        dateStart
        description
        id
        loggingMode
        name
        pausedDuration
        pausedInterval
        pausedOffsetStart
        pausedUnit
        profileId
        repeatInterval
        repeatUnit
        scanMode
        spaceId
        targets
        targetsExcludes
        taskPaused
        taskRunner
        taskStatus
        tenantId
        timeStart
        workloadId
    }
  • pageInfo: Параметры страницы.

    Пример 17. Структура данных
    pageInfo {
        totalCount
        pagination {
            limit
            offset
        }
    }
Пример 18. Пример запроса findTasks
query findTasks ($filter: TasksFilter, $pagination: PaginationInput, $sorting: TasksSorting) {
    findTasks (filter: $filter, pagination: $pagination, sorting: $sorting){
        tasks {
            id
           accountIds
            agentScanGroups
            bruteforceServiceList {
                services
            }
            createdAt
            dateFinish
            dateNextLaunch
            dateNextPaused
            dateOffset
            dateStart
            description
            id
            loggingMode
            name
            pausedDuration
            pausedInterval
            pausedOffsetStart
            pausedUnit
            profileId
            repeatInterval
            repeatUnit
            scanMode
            spaceId
            targets
            targetsExcludes
            taskPaused
            taskRunner
            taskStatus
            tenantId
            timeStart
            workloadId
                }
            }
}
Пример 19. Пример использования переменных
{
    "filter":
    {
        "name": "задача"
    }
}

Получение истории запусков задачи сканирования

Запрос FindTaskHistory позволяет получить историю запусков задачи сканирования.

URL: {{url}}/api/evo/core/bff/graphql

Таблица 6. Параметры запроса FindTaskHistory
Параметр Тип данных Обязателен Описание

filter →

Объект

Нет

Фильтр по статусу сканирования

→ status

Строка

Нет

Статус сканирования

taskId

Строка

Да

UUID задачи

В ответ на запрос возвращаются следующие данные:

  • scans: Параметры запуска сканирования.

    Пример 20. Структура данных
    scans {
        discovered
        finished
        finishedAt
        id
        interrupted
        onlyDiscoveredHost
        scanDuration
        scanSuccess
        startedAt
        status
        targets
    }
  • taskId: UUID задачи.

Пример 21. Пример запроса FindTaskHistory
query FindTaskHistory {
    findTaskHistory(taskId: "8fb5ad26-4e54-432c-a320-0b869b5e59a9") {
        taskId
        scans {
            discovered
            finished
            finishedAt
            id
            interrupted
            onlyDiscoveredHost
            scanDuration
            scanSuccess
            startedAt
            status
            targets
        }
    }
}
Пример 22. Пример использования переменных
{
  "taskId": "df846bc0-bded-42bd-9988-112dd5b9055f"
}

Создание задачи сканирования

Позволяет создать задачу сканирования через мутацию createTask.

URL: {{url}}/api/evo/core/bff/graphql

Таблица 7. Параметры мутации createTask
Параметр Тип данных Обязателен Описание

input →

Объект

Да

 — 

→ accountIds

Строка

Да, если выбран тип сканирования Безагентское

UUID учетных записей. Если их несколько, указываются через запятую:

Пример:

"accountIds": "172b427e-ac88-4af0-847f-c30ef0cf609d,74e74f4a-4d06-4cad-8ec9-0f8410f5c578,842e047c-524d-4e20-9b02-e9cf3f0898d8"

→ agentScanGroups

Массив [Строка]

Да, если выбран тип сканирования Агентское

Массив со списком UUID агентов

Пример:

"agentScanGroups": [
"bceabf60-5f56-471e-9c12-5285ff8f6b42",
"603f3ba5-e2cc-4fe5-8ba3-8006d15785a2",
"c2038992-3c28-458d-aa4c-037b54eccc54"
]

Тип сканирования: Агентское

→ bruteforceServiceList → services

Массив [Строка]

Да, если выбран тип профиля Тестирование на проникновение

Массив со списком сервисов для подбора паролей

Пример:

"services": ["TYPE_OF_BRUTEFORCE_SERVICE_FTP", "TYPE_OF_BRUTEFORCE_SERVICE_FTPS"]

Тип профиля: Тестирование на проникновение

→ dateFinish

Целое число

Нет

Дата и время окончания срока действия задачи (в формате Unix)

→ dateOffset

Целое число

Да, если заполняется срок действия задачи

Сдвиг UTC (если указывается срок действия задачи)

→ dateStart

Целое число

Нет

Дата и время начала срока действия задачи (в формате Unix)

→ description

Строка

Да

Описание задачи сканирования

→ loggingMode

Строка

Да

Уровень журналирования:

  • LOGGING_MODE_DEBUG — расширенный

  • LOGGING_MODE_INFO — информационный

→ name

Строка

Да

Название задачи сканирования

→ pausedDuration

Целое число

Да, если используется приостановка

Длительность приостановки (в секундах)

→ pausedOffsetStart

Целое число

Да, если используется приостановка

Время начала приостановки (в секундах)

→ pausedUnit

Строка

Да, если используется приостановка

Дни месяца/недели, в которые нужно приостанавливать сканирование в формате чисел

Пример:

"pausedUnit": "1,2" // понедельник, вторник

→ profileId

Строка

Да

UUID профиля

→ repeatInterval

Целое число

Да, если задан ежемесячный, еженедельный или ежедневный запуск

Повторять запуск задачи каждый __ месяц/неделю/день

→ repeatUnit

Строка

Да, если задан ежемесячный или еженедельный запуск

Дни месяца/недели, в которые нужно запускать задачу

Пример:

"repeatUnit": "3,11,19,20"

→ scanMode

Строка

Да

Тип сканирования:

  • SCAN_MODE_AGENT — Агентское сканирование

  • SCAN_MODE_AGENTLESS — Безагентское сканирование

→ spaceId

Строка

Да

ID пространства

→ tenantId

Строка

Да

UUID тенанта

→ targets

Строка

Да

IP целей сканирования

→ targetsExcludes

Строка

Да

IP исключений сканирования

→ taskPaused

Строка

Да

Значение в соответствии со значением переменной taskRunner

→ taskRunner

Строка

Да

Режим запуска:

  • TASK_RUNNER_DAY — ежедневно

  • TASK_RUNNER_MANUAL — вручную

  • TASK_RUNNER_MONTH — ежемесячно

  • TASK_RUNNER_ONCE — однократно

  • TASK_RUNNER_WEEK — еженедельно

Приостановка невозможна при режиме запуска вручную.

→ timeStart

Целое число

Нет

Время запуска задачи по расписанию (в формате Unix)

→ workloadId

Строка

Да

ID сканера

В ответ на мутацию возвращаются следующие данные:

  • error: Текст ошибки запроса.

  • success: Статус запроса.

  • task: Параметры задачи.

    Пример 23. Структура данных
    task {
        id
        accountIds
        agentScanGroups
        bruteforceServiceList {
            services
        }
        createdAt
        dateFinish
        dateNextLaunch
        dateNextPaused
        dateOffset
        dateStart
        description
        id
        loggingMode
        name
        pausedDuration
        pausedInterval
        pausedOffsetStart
        pausedUnit
        profileId
        repeatInterval
        repeatUnit
        scanMode
        spaceId
        targets
        targetsExcludes
        taskPaused
        taskRunner
        taskStatus
        tenantId
        timeStart
        workloadId
    }
Пример 24. Пример мутации createTask
mutation createTask ($input: CreateTaskInput!) {
    createTask (input: $input) {
        error
        success
        task {
            id
        }
        tenantId
    }
}
Пример 25. Пример использования переменных
{
  "input": {
    "accountIds": "7ef2452e-167a-45d3-9957-815e7365f6df",
    "agentScanGroups": [],
    "bruteforceServiceList": {
      "services": []
    },
    "dateFinish": 0,
    "dateOffset": 0,
    "dateStart": 0,
    "description": "",
    "loggingMode": "LOGGING_MODE_INFO",
    "name": "задача api 16",
    "organizationId": "",
    "pausedDuration": 0,
    "pausedInterval": 0,
    "pausedOffsetStart": 0,
    "pausedUnit": "",
    "profileId": "458f4e3a-0308-4280-bd1b-6f8182bad54c",
    "repeatInterval": 0,
    "repeatUnit": "",
    "spaceId": "space-0",
    "scanMode": "SCAN_MODE_AGENTLESS",
    "targets": "10.99.101.50",
    "targetsExcludes": "",
    "taskPaused": "TASK_RUNNER_MANUAL",
    "taskRunner": "TASK_RUNNER_MANUAL",
    "taskStatus": "TASK_STATUS_INIT",
    "tenantId": "f88b30ff-7862-489a-a6dd-c82c23e5ea21",
    "timeStart": 0,
    "workloadId": "workload-2"
  }
}
Пример 26. Пример ответа
{
    "data": {
        "createTask": {
            "error": null,
            "success": true,
            "task": {
                "id": "ed615552-ad0d-460c-86e5-68c7096fda86"
            }
            "tenantId": "f88b30ff-7862-489a-a6dd-c82c23e5ea21"
        }
    }
}

Редактирование задачи сканирования

Позволяет редактировать задачу сканирования через мутацию updateTask.

URL: {{url}}/api/evo/core/bff/graphql

Таблица 8. Параметры мутации updateTask
Параметр Тип данных Обязателен Описание

update →

Объект

Да

Параметры задачи

→ accountIds

Строка

Да

UUID учетных записей. Если их несколько, указываются через запятую:

Пример:

"accountIds": "172b427e-ac88-4af0-847f-c30ef0cf609d,74e74f4a-4d06-4cad-8ec9-0f8410f5c578,842e047c-524d-4e20-9b02-e9cf3f0898d8"

→ agentScanGroups

Массив [Строка]

Да

Массив со списком UUID агентов

Пример:

"agentScanGroups": [
"bceabf60-5f56-471e-9c12-5285ff8f6b42",
"603f3ba5-e2cc-4fe5-8ba3-8006d15785a2",
"c2038992-3c28-458d-aa4c-037b54eccc54"
]

Тип сканирования: Агентское

→ bruteforceServiceList → services

Массив [Строка]

Нет

Массив со списком сервисов для подбора паролей

Пример:

"services": ["TYPE_OF_BRUTEFORCE_SERVICE_FTP", "TYPE_OF_BRUTEFORCE_SERVICE_FTPS"]

Тип профиля: Тестирование на проникновение

→ dateFinish

Целое число

Нет

Дата и время окончания срока действия задачи (в формате Unix)

→ dateOffset

Целое число

Нет

Сдвиг UTC (если указывается срок действия задачи)

→ dateStart

Целое число

Нет

Дата и время начала срока действия задачи (в формате Unix)

→ description

Строка

Нет

Описание задачи сканирования

→ id

Строка

Да

UUID задачи

→ loggingMode

Строка

Да

Уровень журналирования:

  • LOGGING_MODE_DEBUG — расширенный

  • LOGGING_MODE_INFO — информационный

→ name

Строка

Нет

Название задачи сканирования

→ pausedDuration

Целое число

Нет

Длительность приостановки (в секундах)

→ pausedOffsetStart

Целое число

Нет

Время начала приостановки (в секундах)

→ pausedUnit

Строка

Нет

Дни месяца/недели, в которые нужно приостанавливать сканирование в формате чисел

Пример:

"pausedUnit": "1,2" // понедельник, вторник

→ profileId

Строка

Да

UUID профиля

→ repeatInterval

Целое число

Нет

Повторять запуск задачи каждый __ месяц/неделю/день

→ repeatUnit

Строка

Нет

Дни месяца/недели, в которые нужно запускать задачу

Пример:

"repeatUnit": "3,11,19,20"

→ scanMode

Строка

Да

Тип сканирования:

  • SCAN_MODE_AGENT — Агентское сканирование

  • SCAN_MODE_AGENTLESS — Безагентское сканирование

→ spaceId

Строка

Да

ID пространства

→ targets

Строка

Да

IP целей сканирования

→ targetsExcludes

Строка

Да

IP исключений сканирования

→ taskPaused

Строка

Да

Значение в соответствии со значением переменной taskRunner

→ taskRunner

Строка

Да

Режим запуска:

  • TASK_RUNNER_DAY — ежедневно

  • TASK_RUNNER_MANUAL — вручную

  • TASK_RUNNER_MONTH — ежемесячно

  • TASK_RUNNER_ONCE — однократно

  • TASK_RUNNER_WEEK — еженедельно

Приостановка невозможна при режиме запуска вручную.

→ taskStatus

Строка

Нет

 — 

→ timeStart

Целое число

Нет

Время запуска задачи по расписанию (в формате Unix)

→ workloadId

Строка

Да

ID сканера

В ответ на мутацию возвращаются следующие данные:

  • error: Текст ошибки запроса.

  • success: Статус запроса.

  • task: Параметры задачи.

    Пример 27. Структура данных
    task {
        id
        accountIds
        agentScanGroups
        bruteforceServiceList {
            services
        }
        createdAt
        dateFinish
        dateNextLaunch
        dateNextPaused
        dateOffset
        dateStart
        description
        id
        loggingMode
        name
        pausedDuration
        pausedInterval
        pausedOffsetStart
        pausedUnit
        profileId
        repeatInterval
        repeatUnit
        scanMode
        spaceId
        targets
        targetsExcludes
        taskPaused
        taskRunner
        taskStatus
        timeStart
        workloadId
    }

Удаление задачи сканирования

Позволяет удалить задачу сканирования через мутацию deleteTask.

URL: {{url}}/api/evo/core/bff/graphql

Таблица 9. Параметры мутации deleteTask
Параметр Тип данных Обязателен Описание

delete →

Объект

Да

 — 

→ id

Строка

Да

UUID профиля

В ответ на мутацию возвращаются следующие данные:

  • error: Текст ошибки запроса.

  • success: Статус запроса.

  • task: Параметры задачи.

    Пример 28. Структура данных
    task {
        id
    }
Пример 29. Пример мутации deleteTask
mutation deleteTask ($delete: DeleteTaskInput!) {
    deleteTask (delete: $delete) {
        error
        success
    }
}
Пример 30. Пример использования переменных
{
  "delete": {
    "id": "df846bc0-bded-42bd-9988-112dd5b9055f"
  }
}

Запуск задачи сканирования

Позволяет осуществлять запуск задачи сканирования через мутацию runTask.

URL: {{url}}/api/evo/core/bff/graphql

Таблица 10. Параметры мутации runTask
Параметр Тип данных Обязателен Описание

run →

Объект

Да

 — 

→ id

Строка

Да

UUID задачи

В ответ на мутацию возвращаются следующие данные:

  • error: Текст ошибки запроса.

  • success: Статус запроса.

  • task: UUID задачи.

    Пример 31. Структура данных
    tasks {
        id
    }
Пример 32. Пример мутации runTask
mutation runTask ($run: RunTaskInput!) {
    runTask (run: $run) {
        error
        success
    }
}
Пример 33. Пример использования переменных
{
  "run": {
    "id": "df846bc0-bded-42bd-9988-112dd5b9055f"
  }
}

Отмена задачи сканирования

Позволяет отменить запущенную задачу сканирования через мутацию cancelTask.

URL: {{url}}/api/evo/core/bff/graphql

Таблица 11. Параметры мутации cancelTask
Параметр Тип данных Обязателен Описание

cancel →

Объект

Да

Параметры задачи

→ id

Строка

Да

UUID задачи

В ответ на мутацию возвращаются следующие данные:

  • error: Текст ошибки запроса.

  • success: Статус запроса.

  • task: Параметры задачи.

    Пример 34. Структура данных
    task {
        id
    }
Пример 35. Пример мутации cancelTask
mutation cancelTask ($cancel: CancelTaskInput!) {
    cancelTask (cancel: $cancel) {
        error
        success
        task {
            id
        }
    }
}
Пример 36. Пример использования переменных
{
  "cancel": {
    "id": "df846bc0-bded-42bd-9988-112dd5b9055f"
  }
}

Приостановка задачи сканирования

Позволяет приостановить задачу сканирования через мутацию pauseTask.

URL: {{url}}/api/evo/core/bff/graphql

Таблица 12. Параметры мутации pauseTask
Параметр Тип данных Обязателен Описание

pause →

Объект

Да

 — 

→ id

Строка

Да

UUID задачи

В ответ на мутацию возвращаются следующие данные:

  • error: Текст ошибки запроса.

  • success: Статус запроса.

  • task: UUID задачи.

    Пример 37. Структура данных
    task {
        id
    }
Пример 38. Пример мутации pauseTask
mutation pauseTask ($pause: PauseTaskInput!) {
    pauseTask (pause: $pause) {
        error
        success
    }
}
Пример 39. Пример использования переменных
{
  "pause": {
    "id": "ad755637-63d1-4834-97e3-b963257af96f"
  }
}

Возобновление задачи

Позволяет возобновить задачу через мутацию resumeTask.

URL: {{url}}/api/evo/core/bff/graphql

Таблица 13. Параметры мутации resumeTask
Параметр Тип данных Обязателен Описание

resume →

Объект

Да

 — 

→ id

Строка

Да

UUID задачи

В ответ на мутацию возвращаются следующие данные:

  • error: Текст ошибки запроса.

  • success: Статус запроса.

  • task: UUID задачи.

    Пример 40. Структура данных
    task {
        id
    }
Пример 41. Пример мутации resumeTask
mutation resumeTask ($resume: ResumeTaskInput!) {
    resumeTask (resume: $resume) {
        error
        success
    }
}
Пример 42. Пример использования переменных
{
  "resume": {
    "id": ""
  }
}

Получение профиля

Позволяет получить профиль через запрос getProfile.

URL: {{url}}/api/evo/vm/bff/graphql

Таблица 14. Параметры запроса getProfile
Параметр Тип данных Обязателен Описание

id

Строка

Да

UUID профиля

В ответ на запрос возвращаются следующие данные:

  • profiles: Параметры профиля.

  • bruteforceSettings: Параметры сервиса подбора паролей.

  • emptyPassword: Проверять пустые пароли.

  • endAfterFirstMatch: Завершать проверку узла после совпадения.

  • loginAsPassword: Проверять логин в качестве пароля.

  • threadCount: Количество одновременно обрабатываемых логинов.

  • services: Параметры сервисов.

    Пример 43. Структура данных
    services {
            loginFile: String
            loginFileHash: String
            loginFileId: String
            name: String
            passwordFile: String
            passwordFileHash: String
            passwordFileId: String
            metadata {
                key: String
                value: String
            }
    }
  • description: Описание профиля.

  • importSettings: Параметры импорта.

    Пример 44. Структура данных
    importSettings {
        defineOs: Boolean
        defineVersionService: Boolean
        importOpenPort: Boolean
        importSecurityOptions: Boolean
        importSoft: Boolean
        importUsers: Boolean
        importWindowsUpdates: Boolean
    }
  • name: Название профиля.

  • id: UUID профиля.

  • nmapSettings: Параметры обнаружения.

  • authSsh: Порт авторизации SSH

    Тип профиля: Проверка стандартов.

  • connectionTimeout: Таймаут соединения (в минутах).

    Тип профиля: Проверка стандартов, Тестирование на проникновение.

  • dnsNameResolver: Разрешение имен DNS

    Тип профиля: Проверка стандартов, Тестирование на проникновение.

  • extendSettings: Пользовательский режим работы.

    Тип профиля: Тестирование на проникновение.

  • icmp: ICMP пингование (обнаружение хостов).

    Тип профиля: Проверка стандартов, Тестирование на проникновение.

  • nmapString: Параметры командной строки (если выбран Пользовательский режим работы).

    Тип профиля: Тестирование на проникновение.

  • scanTcp: Сканирование портов TCP.

    Тип профиля: Проверка стандартов, Тестирование на проникновение.

  • scanUdp: Сканирование портов UDP.

    Тип профиля: Проверка стандартов, Тестирование на проникновение.

  • tcpSyn: Порты для TCP SYN пингования (обнаружение хостов).

    Тип профиля: Проверка стандартов, Тестирование на проникновение.

  • timeTemplate: Шаблон настроек времени:

    • NMAP_TIME_TEMPLATE_T0 – Очень медленный (Т0)

    • NMAP_TIME_TEMPLATE_T1 – Медленный (Т1)

    • NMAP_TIME_TEMPLATE_T2 – Умеренный (Т2)

    • NMAP_TIME_TEMPLATE_T3 – Стандартный (Т3)

    • NMAP_TIME_TEMPLATE_T4 – Быстрый (Т4)

    • NMAP_TIME_TEMPLATE_T5 – Очень быстрый (Т5)

      Тип профиля: Проверка стандартов, Тестирование на проникновение.

  • udp: Порты для UDP пингования (обнаружение хостов).

    Тип профиля: Проверка стандартов, Тестирование на проникновение.

  • nseSettings: Параметры безопасных и небезопасных проверок.

  • categories: Использовать:

    • safe – безопасные проверки.

    • unsafe – небезопасные проверки.

      Тип профиля: Тестирование на проникновение.

  • pentestSettings: Параметры тестирования на проникновение.

  • extendSettings: Пользовательские настройки.

  • mode: Тип сканирования портов:

    • PENTEST_MODE_DEFAULT – Базовый

    • PENTEST_MODE_CUSTOM – Пользовательский список

    • PENTEST_MODE_FULL – Все порты

    • PENTEST_MODE_TOP25 – Топ 25

    • PENTEST_MODE_TOP100 – Топ 100

  • tcpPorts: Порты для TCP пингования.

  • udpPorts: Порты для UDP пингования.

  • complianceSettings: Параметры проверок соответствия.

  • benchmarks: Массив со списком стандартов.

  • pentestSettings: Параметры тестирования на проникновение.

    Тип профиля: Проверка стандартов.

  • typeOfProfile: Тип профиля:

    • TYPE_OF_PROFILE_BASIC – Базовое сканирование

    • TYPE_OF_PROFILE_COMPLIANCE – Проверка соответствия

    • TYPE_OF_PROFILE_DISCOVERY – Обнаружение

    • TYPE_OF_PROFILE_PENTEST – Тестирование на проникновение

    • TYPE_OF_PROFILE_VULNER – Базовое сканирование

  • scanMode: Режим сканирования:

    • SCAN_MODE_AGENTLESS – Безагентское сканирование

    • SCAN_MODE_AGENT – Агентское сканирование

  • tenantId: UUID тенанта.

Пример 45. Пример запроса getProfile
query getProfile ($id: String!) {
    getProfile (id: $id) {
        description
        discoveryType
        id
        name
        typeOfProfile
    }
}
Пример 46. Пример использования переменных
{
  "id": ""
}

Получение списка профилей

Запрос findProfiles позволяет получить список профилей.

URL: {{url}}/api/evo/core/bff/graphql

Таблица 15. Параметры запроса findProfiles
Параметр Тип данных Обязателен Описание

filter →

Объект

Нет

Параметры фильтра

→ name

Строка

Нет

Название задачи

→ query

Строка

Нет

Сквозной поиск по полям:

  • name;

  • description.

→ scanMode

Строка

Нет

Тип сканирования:

  • SCAN_MODE_AGENT — Агентское сканирование

  • SCAN_MODE_AGENTLESS — Безагентское сканирование

→ typeOfProfile

Строка

Нет

Тип профиля:

  • TYPE_OF_PROFILE_BASIC — Базовое сканирование

  • TYPE_OF_PROFILE_COMPLIANCE — Проверка соответствия

  • TYPE_OF_PROFILE_DISCOVERY — Обнаружение

  • TYPE_OF_PROFILE_PENTEST — Тестирование на проникновение

  • TYPE_OF_PROFILE_VULNER — Базовое сканирование

pagination →

Объект

Нет

Параметры пагинации

→ limit

Целое число

Нет

Ограничение на количество возвращаемых результатов

→ offset

Целое число

Нет

Смещение

sorting →

Объект

Нет

Параметры сортировки

→ order

Строка

Нет

Порядок

→ orderBy

Строка

Нет

Поле сортировки:

  • PROFILE_ORDER_BY_DESCRIPTION — Описание профиля

  • PROFILE_ORDER_BY_NAME — Название профиля

  • PROFILE_ORDER_BY_TYPE — Тип профиля

В ответ на запрос возвращаются следующие данные:

  • profiles: Параметры профиля.

    Пример 47. Структура данных
    profiles {
        description
        discoveryType
        id
        name
        scanMode
        typeOfProfile
        complianceSettings {
            benchmarks
        }
        nmapSettings {
            authSsh
            connectionTimeout
            dnsNameResolver
            extendSettings
            icmp
            nmapString
            scanTcp
            scanUdp
            tcpSyn
            timeTemplate
            udp
        }
        nseSettings {
            scripts
            categories
        }
        pentestSettings {
            extendSettings
            mode
            nmapString
            tcpPorts
            udpPorts
        }
        bruteforceSettings {
            emptyPassword
            endAfterFirstMatch
            loginAsPassword
            threadCount
            services {
                loginFile
                loginFileHash
                loginFileId
                name
                passwordFile
                passwordFileHash
                passwordFileId
                metadata {
                    key
                    value
                }
            }
        }
        importSettings {
            defineOs
            defineVersionService
            importOpenPort
            importSecurityOptions
            importSoft
            importUsers
            importWindowsUpdates
        }
    }
  • pageInfo: Параметры страницы.

    Пример 48. Структура данных
    pageInfo {
        totalCount
        pagination {
            limit
            offset
        }
    }
Пример 49. Пример запроса findProfiles
{
    "filter":
    {
        "name": "профиль"
    }
}
Пример 50. Пример использования переменных
query findProfiles ($filter: ProfilesFilter, $pagination: PaginationInput, $sorting: ProfilesSorting) {
    findProfiles (filter: $filter, pagination: $pagination, sorting: $sorting) {
        profiles {
            description
            discoveryType
            id
            name
            scanMode
            typeOfProfile
            tenantId
            complianceSettings {
                benchmarks
            }
            nmapSettings {
                authSsh
                connectionTimeout
                dnsNameResolver
                extendSettings
                icmp
                nmapString
                scanTcp
                scanUdp
                tcpSyn
                timeTemplate
                udp
            }
            nseSettings {
                scripts
                categories
            }
            pentestSettings {
                extendSettings
                mode
                nmapString
                tcpPorts
                udpPorts
            }
            bruteforceSettings {
                emptyPassword
                endAfterFirstMatch
                loginAsPassword
                threadCount
                services {
                    loginFile
                    loginFileHash
                    loginFileId
                    name
                    passwordFile
                    passwordFileHash
                    passwordFileId
                    metadata {
                        key
                        value
                    }
                }
            }
            importSettings {
                defineOs
                defineVersionService
                importOpenPort
                importSecurityOptions
                importSoft
                importUsers
                importWindowsUpdates
            }
        }
        pageInfo {
            totalCount
        }
    }
}
Пример 51. Пример ответа
{
    "data": {
        "findProfiles": {
            "profiles": [
                {
                    "description": "",
                    "discoveryType": "DISCOVERY_TYPE_NMAP",
                    "id": "00b42456-65bc-4096-ac30-703022c8f21c",
                    "name": "Тестовый",
                    "scanMode": "SCAN_MODE_AGENTLESS",
                    "typeOfProfile": "TYPE_OF_PROFILE_PENTEST",
                    "tenantId": "f88b30ff-7862-489a-a6dd-c82c23e5ea21",
                    "complianceSettings": {
                        "benchmarks": []
                    },
                    "nmapSettings": {
                        "authSsh": "22",
                        "connectionTimeout": 2,
                        "dnsNameResolver": false,
                        "extendSettings": false,
                        "icmp": false,
                        "nmapString": "--privileged -PS21,22,23,25,53,80,110,123,135,137,143,161,389,443,445,515,554,631,3389,5060,5061,5985,8080,8600,9100 -PU53,67,68,161 -sS -sU -R -p T:22,80,111,135,139,389,443,445,515,554,631,5060,5061,5985,8600,9100,U:161 -T4 -oX -  --host-timeout 2m",
                        "scanTcp": "22,80,135,139,389,443,445,515,554,631,5060,5061,8600,9100",
                        "scanUdp": "161",
                        "tcpSyn": "21,22,23,25,53,80,110,123,135,137,143,161,389,443,445,515,554,631,3389,5060,5061,8080,8600,9100",
                        "timeTemplate": "NMAP_TIME_TEMPLATE_T4",
                        "udp": "53,67,68,161"
                    },
                    "nseSettings": {
                        "scripts": [],
                        "categories": [
                            "safe"
                        ]
                    },
                    "pentestSettings": {
                        "extendSettings": false,
                        "mode": "PENTEST_MODE_DEFAULT",
                        "nmapString": "--privileged -PS21,22,23,25,53,80,110,123,135,137,143,161,389,443,445,515,554,631,3389,5060,5061,5985,8080,8600,9100 -PU53,67,68,161 -sS -sU -R -p T:22,80,111,135,139,389,443,445,515,554,631,5060,5061,5985,8600,9100,U:161 -T4 -oX -  --host-timeout 2m",
                        "tcpPorts": "",
                        "udpPorts": ""
                    },
                    "bruteforceSettings": {
                        "emptyPassword": false,
                        "endAfterFirstMatch": false,
                        "loginAsPassword": false,
                        "threadCount": 1,
                        "services": [
                            {
                                "loginFile": "",
                                "loginFileHash": "",
                                "loginFileId": "",
                                "name": "TYPE_OF_BRUTEFORCE_SERVICE_FTP",
                                "passwordFile": "",
                                "passwordFileHash": "",
                                "passwordFileId": "",
                                "metadata": [
                                    {
                                        "key": "target-port",
                                        "value": "21"
                                    }
                                ]
                            },
                            {
                                "loginFile": "",
                                "loginFileHash": "",
                                "loginFileId": "",
                                "name": "TYPE_OF_BRUTEFORCE_SERVICE_FTPS",
                                "passwordFile": "",
                                "passwordFileHash": "",
                                "passwordFileId": "",
                                "metadata": [
                                    {
                                        "key": "target-port",
                                        "value": "21"
                                    }
                                ]
                            },
                            {
                                "loginFile": "",
                                "loginFileHash": "",
                                "loginFileId": "",
                                "name": "TYPE_OF_BRUTEFORCE_SERVICE_HTTPS_GET",
                                "passwordFile": "",
                                "passwordFileHash": "",
                                "passwordFileId": "",
                                "metadata": [
                                    {
                                        "key": "target-port",
                                        "value": "443"
                                    }
                                ]
                            }
                        ]
                    },
                    "importSettings": {
                        "defineOs": false,
                        "defineVersionService": false,
                        "importOpenPort": false,
                        "importSecurityOptions": false,
                        "importSoft": false,
                        "importUsers": false,
                        "importWindowsUpdates": false
                    }
                },
...

Создание профиля

Позволяет создать профиль через мутацию createProfile.

URL: {{url}}/api/evo/core/bff/graphql

Таблица 16. Параметры мутации createProfile
Параметр Тип данных Обязателен Описание

input →

Объект

Да

Параметры профиля

→ description

Строка

Нет

Описание профиля

→ name

Строка

Да

Название профиля

→ typeOfProfile

Строка

Да

Тип профиля:

  • TYPE_OF_PROFILE_BASIC — Базовое сканирование

  • TYPE_OF_PROFILE_COMPLIANCE — Проверка соответствия

  • TYPE_OF_PROFILE_DISCOVERY — Обнаружение

  • TYPE_OF_PROFILE_PENTEST — Тестирование на проникновение

  • TYPE_OF_PROFILE_VULNER — Базовое сканирование

→ scanMode

Строка

Да

Режим сканирования:

  • SCAN_MODE_AGENTLESS — Безагентское сканирование

  • SCAN_MODE_AGENT — Агентское сканирование

→ tenantId

Строка

Да

UUID тенанта

В ответ на мутацию возвращаются следующие данные:

  • error: Текст ошибки запроса.

  • success: Статус запроса.

Пример 52. Пример мутации createProfile
mutation createProfile ($input: CreateProfileInput!) {
    createProfile (input: $input) {
        error
        success
        profile {
            id
        }
    }
}
Пример 53. Пример использования переменных
{
  "input": {
    "name": "профиль",
    "description": "",
    "typeOfProfile": "TYPE_OF_PROFILE_BASIC",
    "scanMode": "SCAN_MODE_AGENTLESS"
    "tenantId": "ea2e5b16-800a-4e1c-80b3-eb4aefefd4bb"
  }
}

Удаление профиля

Позволяет удалить профиль сканирования через мутацию deleteProfile.

URL: {{url}}/api/evo/core/bff/graphql

Таблица 17. Параметры мутации deleteProfile
Параметр Тип данных Обязателен Описание

delete →

Объект

Да

 — 

→ id

Строка

Да

UUID профиля

В ответ на мутацию возвращаются следующие данные:

  • error: Текст ошибки запроса.

  • success: Статус запроса.

  • profile: UUID профиля.

    Пример 54. Структура данных
    profile {
        id
    }
Пример 55. Пример мутации deleteProfile
mutation deleteProfile ($delete: DeleteProfileInput!) {
    deleteProfile (delete: $delete) {
        error
        success
    }
}
Пример 56. Пример использования переменных
{
  "delete": {
    "id": "02210d31-1cf1-4501-abc1-94484f011348"
  }
}

Редактирование профиля

Позволяет редактировать профиль через мутацию updateProfile.

URL: {{url}}/api/evo/core/bff/graphql

Таблица 18. Параметры мутации updateProfile
Параметр Тип данных Обязателен Описание

update →

Объект

Да

Параметры профиля

→ id

Строка

Да

UUID профиля

→ bruteforceSettings →

Объект

Нет

Параметры сервиса подбора паролей

→ → emptyPassword

Логический

Нет

Проверять пустые пароли

→ → endAfterFirstMatch

Логический

Нет

Завершать проверку узла после совпадения

→ → loginAsPassword

Логический

Нет

Проверять логин в качестве пароля

→ → threadCount

Целое число

Нет

Количество одновременно обрабатываемых логинов

→ → services

Объект

services {
        loginFile: String
        loginFileHash: String
        loginFileId: String
        name: String
        passwordFile: String
        passwordFileHash: String
        passwordFileId: String
        metadata {
            key: String
            value: String
        }
    }

Нет

Параметры сервисов

→ description

Строка

Нет

Описание профиля

→ discoveryType

Строка

Да

 — 

→ importSettings

Объект

importSettings {
    defineOs: Boolean
    defineVersionService: Boolean
    importOpenPort: Boolean
    importSecurityOptions: Boolean
    importSoft: Boolean
    importUsers: Boolean
    importWindowsUpdates: Boolean
}

Да

Параметры импорта

→ name

Строка

Нет

Название профиля

→ nmapSettings →

Объект

Да

Параметры обнаружения

→ → authSsh

Строка

Да

Порт авторизации SSH

Тип профиля: Проверка стандартов

→ → connectionTimeout

Целое число

Да

Таймаут соединения (в минутах)

Тип профиля: Проверка стандартов, Тестирование на проникновение

→ → dnsNameResolver

Логический

Да

Разрешение имен DNS

Тип профиля: Проверка стандартов, Тестирование на проникновение

→ → extendSettings

Логический

Да

Пользовательский режим работы

Тип профиля: Тестирование на проникновение

→ → icmp

Логический

Да

ICMP пингование (обнаружение хостов)

Тип профиля: Проверка стандартов, Тестирование на проникновение

→ → nmapString

Строка

Да

Параметры командной строки (если выбран Пользовательский режим работы)

Тип профиля: Тестирование на проникновение

→ → scanTcp

Строка

Да

Сканирование портов TCP

Тип профиля: Проверка стандартов, Тестирование на проникновение

→ → scanUdp

Строка

Да

Сканирование портов UDP

Тип профиля: Проверка стандартов, Тестирование на проникновение

→ → tcpSyn

Строка

Да

Порты для TCP SYN пингования (обнаружение хостов)

Тип профиля: Проверка стандартов, Тестирование на проникновение

→ → timeTemplate

Строка

Да

Шаблон настроек времени (обнаружение хостов):

  • NMAP_TIME_TEMPLATE_T0 — Очень медленный (Т0)

  • NMAP_TIME_TEMPLATE_T1 — Медленный (Т1)

  • NMAP_TIME_TEMPLATE_T2 — Умеренный (Т2)

  • NMAP_TIME_TEMPLATE_T3 — Стандартный (Т3)

  • NMAP_TIME_TEMPLATE_T4 — Быстрый (Т4)

  • NMAP_TIME_TEMPLATE_T5 — Очень быстрый (Т5)

Тип профиля: Проверка стандартов, Тестирование на проникновение

→ → udp

Строка

Да

Порты для UDP пингования (обнаружение хостов)

Тип профиля: Проверка стандартов, Тестирование на проникновение

→ nseSettings →

Объект

Нет

Параметры безопасных и небезопасных проверок

→ → categories

Массив [Строка]

Нет

Использовать:

  • safe — безопасные проверки

  • unsafe — небезопасные проверки

Тип профиля: Тестирование на проникновение

→ pentestSettings →

 — 

Нет

Параметры тестирования на проникновение

→ → extendSettings

Логический

Нет

Пользовательские настройки

→ → mode

Строка

Нет

Тип сканирования портов:

  • PENTEST_MODE_DEFAULT — Базовый

  • PENTEST_MODE_CUSTOM — Пользовательский список

  • PENTEST_MODE_FULL — Все порты

  • PENTEST_MODE_TOP25 — Топ 25

  • PENTEST_MODE_TOP100 — Топ 100

→ → tcpPorts

Строка

Нет

Порты для TCP пингования

→ → udpPorts

Строка

Нет

Порты для UDP пингования

→ complianceSettings →

 — 

Нет

Параметры проверок соответствия

→ → benchmarks

Массив [Строка]

Да

Массив со списком стандартов

Тип профиля: Проверка стандартов

→ typeOfProfile

Строка

Да

Тип профиля:

  • TYPE_OF_PROFILE_BASIC — Базовое сканирование

  • TYPE_OF_PROFILE_COMPLIANCE — Проверка соответствия

  • TYPE_OF_PROFILE_DISCOVERY — Обнаружение

  • TYPE_OF_PROFILE_PENTEST — Тестирование на проникновение

  • TYPE_OF_PROFILE_VULNER — Базовое сканирование

→ scanMode

Строка

Да

Режим сканирования:

  • SCAN_MODE_AGENTLESS — Безагентское сканирование

  • SCAN_MODE_AGENT — Агентское сканирование

В ответ на мутацию возвращаются следующие данные:

  • error: Текст ошибки запроса.

  • success: Статус запроса.

  • profile: Параметры профиля.

    Пример 57. Структура данных
    profiles {
        description
        discoveryType
        id
        name
        typeOfProfile
        complianceSettings {
            benchmarks
        }
        nmapSettings {
            authSsh
            connectionTimeout
            dnsNameResolver
            extendSettings
            icmp
            nmapString
            scanTcp
            scanUdp
            tcpSyn
            timeTemplate
            udp
        }
        nseSettings {
            scripts
            categories
        }
        pentestSettings {
            extendSettings
            mode
            nmapString
            tcpPorts
            udpPorts
        }
        bruteforceSettings {
            emptyPassword
            endAfterFirstMatch
            loginAsPassword
            threadCount
            services {
                loginFile
                loginFileHash
                loginFileId
                name
                passwordFile
                passwordFileHash
                passwordFileId
                metadata {
                    key
                    value
                }
            }
        }
        importSettings {
            defineOs
            defineVersionService
            importOpenPort
            importSecurityOptions
            importSoft
            importUsers
            importWindowsUpdates
        }
    }
Пример 58. Пример мутации updateProfile
mutation updateProfile ($update: UpdateProfileInput!) {
    updateProfile (update: $update) {
        error
        success
    }
}
Пример 59. Пример использования переменных
{
  "update": {
    "id": "00b42456-65bc-4096-ac30-703022c8f21c",
    "complianceSettings": { "benchmarks": [] },
    "discoveryType": "DISCOVERY_TYPE_NMAP",
    "name": "Тестовый 1",
    "importSettings": {
        "defineOs": true,
        "defineVersionService": true,
        "importOpenPort": true,
        "importSecurityOptions": true,
        "importSoft": true,
        "importUsers": true,
        "importWindowsUpdates": true
    },
    "nmapSettings": {
        "authSsh": "22",
        "connectionTimeout": 2,
        "dnsNameResolver": false,
        "extendSettings": false,
        "icmp": false,
        "nmapString": "--privileged -PS21,22,23,25,53,80,110,123,135,137,143,161,389,443,445,515,554,631,3389,5060,5061,5985,8080,8600,9100 -PU53,67,68,161 -sS -sU -R -p T:22,80,111,135,139,389,443,445,515,554,631,5060,5061,5985,8600,9100,U:161 -T4 -oX -  --host-timeout 2m",
        "scanTcp": "22,80,135,139,389,443,445,515,554,631,5060,5061,8600,9100",
        "scanUdp": "161",
        "tcpSyn": "21,22,23,25,53,80,110,123,135,137,143,161,389,443,445,515,554,631,3389,5060,5061,8080,8600,9100",
        "timeTemplate": "NMAP_TIME_TEMPLATE_T4",
        "udp": "53,67,68,161"
    },
    "scanMode": "SCAN_MODE_AGENTLESS"
    }
}
Пример 60. Пример ответа
{
    "data": {
        "updateProfile": {
            "error": null,
            "success": true
        }
    }
}

Получение списка стандартов

Позволяет получить список стандартов через запрос FindAgentToScan.

URL: {{url}}/api/evo/vm/bff/graphql

Таблица 19. Параметры запроса FindAgentToScan
Параметр Тип данных Обязателен Описание

pagination →

Объект

Нет

Параметры пагинации

→ limit

Целое число

Нет

Ограничение на количество возвращаемых результатов

→ offset

Целое число

Нет

Смещение

sorting →

Объект

Нет

Параметры сортировки

→ order

Строка

Нет

Порядок

→ orderBy

Строка

Нет

Поле сортировки

В ответ на запрос возвращаются следующие данные:

  • benchmarks: Параметры стандартов.

  • name: Название стандарта.

Пример 61. Пример запроса FindAgentToScan
query FindAgentToScan {
    findBenchmarks {
        benchmarks {
            name
        }
    }
}
Пример 62. Пример ответа
{
    "data": {
        "findBenchmarks": {
            "benchmarks": [
                {
                    "name": "CIS Cisco ASA 9.x Firewall Benchmark v1.1.0"
                },
                {
                    "name": "CIS Cisco IOS 17.x Benchmark v2.0.0"
                },
                {
                    "name": "CIS Cisco IOS XE 17.x Benchmark v2.1.1"
                },
                {
                    "name": "CIS Cisco IOS XR 7.x v1.0.0"
                },
                {
                    "name": "CIS Cisco NX-OS Benchmark v1.1.0"
                },
                {
                    "name": "CIS Microsoft Windows 10 Enterprise Benchmark v3.0.0"
                },
                {
                    "name": "CIS Microsoft Windows 10 Stand-alone Benchmark v3.0.0"
                },
                {
                    "name": "CIS Microsoft Windows 11 Enterprise Benchmark v3.0.0"
                },
                {
                    "name": "CIS Microsoft Windows 11 Stand-alone Benchmark v3.0.0"
                },
                {
                    "name": "CIS Microsoft Windows Server 2016 Benchmark v3.0.0"
                },
                {
                    "name": "CIS Microsoft Windows Server 2022 Benchmark v3.0.0"
                },
                {
                    "name": "CIS Red Hat Enterprise Linux 8 Benchmark v3.0.0"
                },
                {
                    "name": "CIS Red Hat Enterprise Linux 9 Benchmark v2.0.0"
                },
                {
                    "name": "CIS Rocky Linux 8 Benchmark v2.0.0"
                },
                {
                    "name": "CIS Rocky Linux 9 Benchmark v2.0.0"
                },
                {
                    "name": "CIS Ubuntu Linux 24.04 LTS Benchmark v1.0.0"
                }
            ]
        }
    }
}

Получение списка объектов сущности

Позволяет получить список объектов сущности определенного домена через запрос Objects.

URL: {{url}}/api/evo/cms/bff/api/graphql

Таблица 20. Параметры запроса Objects
Параметр Тип данных Обязателен Описание

domainId

Строка

Да

ID домена

entityId

Строка

Да

ID сущности домена

filter →

Объект

Нет

Параметры фильтра

→ ids

Массив [Строка]

Нет

Массив UUID объектов

→ query

Строка

Нет

Сквозной поиск

→ conditions

Строка

Нет

Фильтр по значению полей

Параметр является сериализованным JSON-объектом и имеет следующий формат:

"{\"${{логический оператор}}\":[{\"{{поле сущности}}\":{\"${{оператор сравнения}}\":\"{{значение поля}}\"}}]}"

Логические операторы: or, and

Операторы сравнения: eq (=), ne (!=), like, in

Пример 63. Пример
"{\"$or\":[{\"name\":{\"$eq\":\"Хост\"}}]}"

pagination →

Объект

Нет

Параметры пагинации

→ limit

Целое число

Нет

Ограничение на количество возвращаемых результатов

→ offset

Целое число

Нет

Смещение

sorting →

Объект

Нет

Параметры сортировки

→ order

Строка

Нет

Порядок

→ orderBy

Строка

Нет

Поле сортировки

В ответ на запрос возвращаются следующие данные:

  • objects: Параметры объекта.

  • createdAt: Дата и время создания.

  • creator: Кем создан объект.

    Пример 64. Структура данных
    creator {
           displayName
           id
    
    }
  • domainId: ID домена.

  • entityId: ID сущности.

  • id: UUID объекта.

  • label: Имя объекта.

  • tenantId: UUID тенанта.

  • updatedAt: Дата и время изменения.

  • updater: Кем изменен объект.

    Пример 65. Структура данных
    updater {
           displayName
           id
    
    }
  • values: Значения полей.

  • pageInfo: Информация о странице (число объектов, пагинация).

    Пример 66. Структура данных
    pageInfo {
         totalCount
         pagination {
               limit
               offset
         }
    
    }
Пример 67. Пример запроса Objects
query Objects($domainId: String!, $entityId: String!, $filter: ObjectsFilter, $pagination: PaginationInput, $sorting: ObjectsSorting) {
    objects(domainId: $domainId, entityId: $entityId, filter: $filter,pagination: $pagination, sorting: $sorting) {
            objects {
            domainId
            entityId
            label
            tenantId
            createdAt
            creator {
                id
                displayName
            }
            id
            updatedAt
            updater {
                displayName
                id
            }
            values
        }
    }
}
Пример 68. Пример использования переменных
{
    "domainId": "isassets.rvision.ru",
    "entityId": "Device"
}
Пример 69. Пример ответа
{
    "data": {
        "objects": {
            "objects": [
                {
                    "domainId": "isassets.rvision.ru",
                    "entityId": "Device",
                    "label": "alma85",
                    "tenantId": "00000000-0000-0000-0000-000000000000",
                    "createdAt": "2024-12-23T13:55:12.234Z",
                    "creator": {
                        "id": "00000000-0000-0000-0000-000000000000",
                        "displayName": "00000000-0000-0000-0000-000000000000"
                    },
                    "id": "c24c3851-edd0-485e-8c23-d1218b68ee7e",
                    "updatedAt": "2024-12-26T09:21:52.275Z",
                    "updater": {
                        "displayName": "admin",
                        "id": "4a84e42f-59d3-4736-9e55-41fc0e730dd2"
                    },
                    "values": "{\"deviceGuid\":null,\"deviceName\":\"alma85\",\"criticalityDevice\":null,\"networkInterfaces\":null,\"ipAddress\":\"10.99.103.155\",\"mask\":null,\"macAdress\":null,\"deviceDomain\":\"rvlab.local\",\"FQDN\":null,\"operatingSystem\":null,\"virtualMachine\":null,\"Hypervisor\":null,\"nodeType\":null,\"deviceStatus\":null,\"deviceGroupAssets\":null,\"deviceOwner\":null,\"assetTags\":null,\"deviceDescription\":\"щлжло\",\"port\":null,\"deviceSource\":null,\"inventoryDevice\":null,\"deviceScanDate\":null,\"deviceLocation\":null,\"deviceTz\":null}"
                }
            ]
        }
    }
}

Получение объекта сущности

Позволяет получить объект сущности определенного домена через запрос object.

URL: /api/evo/cms/bff/api/graphql

Таблица 21. Параметры запроса object
Параметр Тип данных Обязателен Описание

domainId

Строка

Да

ID домена

entityId

Строка

Да

ID сущности домена

id

Строка

Да

UUID объекта

В ответ на запрос возвращаются следующие данные:

  • objects: Параметры объекта.

  • createdAt: Дата и время создания.

  • creator: Кем создан объект.

    Пример 70. Структура данных
    creator {
           displayName
           id
    
    }
  • domainId: ID домена.

  • entityId: ID сущности.

  • id: UUID объекта.

  • label: Имя объекта.

  • tenantId: UUID тенанта.

  • updatedAt: Дата и время изменения.

  • updater: Кем изменен объект.

    Пример 71. Структура данных
    updater {
           displayName
           id
    
    }
  • values: Значения полей.

  • version: Версия объекта.

Пример 72. Пример запроса object
query object ($domainId: String!, $entityId: String!, $id: String!, $refFields: [String!]) {
    object (domainId: $domainId, entityId: $entityId, id: $id, refFields: $refFields) {
        createdAt
        domainId
        entityId
        id
        label
        tenantId
        updatedAt
        values
        version
        creator {
            displayName
            id
        }
        updater {
            displayName
            id
        }
    }
}
Пример 73. Пример использования переменных
{
  "domainId": "isassets.rvision.ru",
  "entityId": "Device",
  "id": "c24c3851-edd0-485e-8c23-d1218b68ee7e"

}
Пример 74. Пример ответа
{
    "data": {
        "object": {
            "createdAt": "2024-12-23T13:55:12.234Z",
            "domainId": "isassets.rvision.ru",
            "entityId": "Device",
            "id": "c24c3851-edd0-485e-8c23-d1218b68ee7e",
            "label": "alma85",
            "tenantId": "00000000-0000-0000-0000-000000000000",
            "updatedAt": "2024-12-26T09:21:52.275Z",
            "values": "{\"deviceGuid\":null,\"deviceName\":\"alma85\",\"criticalityDevice\":null,\"networkInterfaces\":null,\"ipAddress\":\"10.99.103.155\",\"mask\":null,\"macAdress\":null,\"deviceDomain\":\"rvlab.local\",\"FQDN\":null,\"operatingSystem\":null,\"virtualMachine\":null,\"Hypervisor\":null,\"nodeType\":null,\"deviceStatus\":null,\"deviceGroupAssets\":null,\"deviceOwner\":null,\"assetTags\":null,\"deviceDescription\":\"щлжло\",\"port\":null,\"deviceSource\":null,\"inventoryDevice\":null,\"deviceScanDate\":null,\"deviceLocation\":null,\"deviceTz\":null}",
            "version": 1,
            "creator": {
                "displayName": "00000000-0000-0000-0000-000000000000",
                "id": "00000000-0000-0000-0000-000000000000"
            },
            "updater": {
                "displayName": "admin",
                "id": "4a84e42f-59d3-4736-9e55-41fc0e730dd2"
            }
        }
    }
}

Позволяет получить связи определенного объекта сущности с объектами сущностей текущего или другого домена через запрос ObjectGraph.

URL: {{url}}/api/evo/cms/bff/api/graphql

Таблица 22. Параметры запроса ObjectGraph
Параметр Тип данных Обязателен Описание

domainId

Строка

Да

ID домена сущности

entityId

Строка

Да

ID сущности

id

Строка

Да

ID объекта

level

Целое число

Да

Максимальный уровень вложенности связи

relations →

Массив [Объект]

Да

Массив связей

→ domainId

Строка

Да

ID домена связанной сущности

→ linkageId

Строка

Да

ID типа связи.

Пример:

"linkageId": "device_to_software"

В ответ на запрос возвращаются следующие данные:

  • graphConnections: Параметры связи.

    Пример 75. Структура данных
    graphConnections {
                domainId
                from
                id
                linkageId
                to
            }
Пример 76. Пример запроса ObjectGraph
query ObjectGraph ($domainId: String!, $entityId: String!, $id: String!, $level: Int!, $relations:[CmsObjectGraphRelation!]!) {
    objectGraph(
        domainId: $domainId, entityId: $entityId, id: $id,
        level: $level, relations: $relations) {
        graphConnections {
            domainId
            from
            id
            linkageId
            to
        }
    }
}
Пример 77. Пример использования переменных
{
    "domainId": "isassets.rvision.ru",
    "entityId": "Device",
    "id": "c24c3851-edd0-485e-8c23-d1218b68ee7e",
    "level": 1,
    "relations": {
        "domainId": "isassets.rvision.ru",
        "linkageId": "device_to_software"
    }
}
Пример 78. Пример ответа
{
    "data": {
        "objectGraph": {
            "graphConnections": [
                {
                    "domainId": "isassets.rvision.ru",
                    "from": "c24c3851-edd0-485e-8c23-d1218b68ee7e",
                    "id": "34da8d34-51ad-4659-bf7a-1b3a3e47308a",
                    "linkageId": "device_to_software",
                    "to": "84ed4fb5-9c32-46ff-aac1-ff9f4cba768a"
                },
                {
                    "domainId": "isassets.rvision.ru",
                    "from": "c24c3851-edd0-485e-8c23-d1218b68ee7e",
                    "id": "3849888b-44fb-43eb-859e-e936b6093b88",
                    "linkageId": "device_to_software",
                    "to": "38c8add3-5055-4cb2-9147-b1b27f729666"
                },
...

Создание объекта сущности

Позволяет создать объект определенной сущности через мутацию createObject.

URL: {{url}}/api/evo/cms/bff/api/graphql

Ключ Описание

x-tenant-id

UUID тенанта, в котором находится сущность

Таблица 23. Параметры мутации createObject
Параметр Тип данных Обязателен Описание

input →

Объект

Да

Параметры объекта

→ domainId

Строка

Да

ID домена сущности

→ entityId

Строка

Да

ID сущности

→ values

Строка

Да

Значения полей, определенных схемой домена в формате сериализованного JSON-объекта.

Пример:

"values": "{\"deviceGuid\":null,\"deviceName\":\"alma85\",\"criticalityDevice\":null,\"networkInterfaces\":null,\"ipAddress\":\"10.99.103.155\",\"mask\":null,\"macAdress\":null,\"deviceDomain\":\"rvlab.local\",\"FQDN\":null,\"operatingSystem\":null,\"virtualMachine\":null,\"Hypervisor\":null,\"nodeType\":null,\"deviceStatus\":null,\"deviceGroupAssets\":null,\"deviceOwner\":null,\"assetTags\":null,\"deviceDescription\":\"щлжло\",\"port\":null,\"deviceSource\":null,\"inventoryDevice\":null,\"deviceScanDate\":null,\"deviceLocation\":null,\"deviceTz\":null}"

В ответ на мутацию возвращаются следующие данные:

  • createdAt: Дата и время создания.

  • creator: Кем создан объект.

    Пример 79. Структура данных
    creator {
           displayName
           id
    
    }
  • domainId: ID домена.

  • entityId: ID сущности.

  • id: UUID объекта.

  • label: Имя объекта.

  • tenantId: UUID тенанта.

  • updatedAt: Дата и время изменения.

  • values: Значения полей.

  • version: Версия объекта.

Пример 80. Пример мутации createObject
mutation createObject ($input: CreateObjectInput!) {
    createObject (input: $input) {
        createdAt
        domainId
        entityId
        id
        label
        tenantId
        updatedAt
        values
        version
    }
}
Пример 81. Пример использования переменных
{
  "input": {
    "domainId": "isassets.rvision.ru",
    "entityId": "Device",
    "values": "{\"deviceGuid\":null,\"deviceName\":\"test\",\"criticalityDevice\":null,\"networkInterfaces\":null,\"ipAddress\":\"10.99.103.155\",\"mask\":null,\"macAdress\":null,\"deviceDomain\":\"rvlab.local\",\"FQDN\":null,\"operatingSystem\":null,\"virtualMachine\":null,\"Hypervisor\":null,\"nodeType\":null,\"deviceStatus\":null,\"deviceGroupAssets\":null,\"deviceOwner\":null,\"assetTags\":null,\"deviceDescription\":\"щлжло\",\"port\":null,\"deviceSource\":null,\"inventoryDevice\":null,\"deviceScanDate\":null,\"deviceLocation\":null,\"deviceTz\":null}"
  }
}
Пример 82. Пример ответа
{
    "data": {
        "createObject": {
            "createdAt": "2025-01-14T12:43:40.379Z",
            "domainId": "isassets.rvision.ru",
            "entityId": "Device",
            "id": "3f571cae-267a-435b-9a0b-4b20b7505b23",
            "label": "test",
            "tenantId": "00000000-0000-0000-0000-000000000000",
            "updatedAt": "2025-01-14T12:43:40.379Z",
            "version": 1,
            "values": "{\"deviceGuid\":null,\"deviceName\":\"test\",\"criticalityDevice\":null,\"networkInterfaces\":null,\"ipAddress\":\"10.99.103.155\",\"mask\":null,\"macAdress\":null,\"deviceDomain\":\"rvlab.local\",\"FQDN\":null,\"operatingSystem\":null,\"virtualMachine\":null,\"Hypervisor\":null,\"nodeType\":null,\"deviceStatus\":null,\"deviceGroupAssets\":null,\"deviceOwner\":null,\"assetTags\":null,\"deviceDescription\":\"щлжло\",\"port\":null,\"deviceSource\":null,\"inventoryDevice\":null,\"deviceScanDate\":null,\"deviceLocation\":null,\"deviceTz\":null}"

        }
    }
}

Удаление объекта сущности

Позволяет удалить объект определенной сущности через мутацию deleteObject.

URL: {{url}}/api/evo/cms/bff/api/graphql

Ключ Описание

x-tenant-id

UUID тенанта, в котором находится сущность

Таблица 24. Параметры мутации deleteObject
Параметр Тип данных Обязателен Описание

input →

Объект

Да

Параметры объекта

→ domainId

Строка

Да

ID домена сущности

→ entityId

Строка

Да

ID сущности

→ id

Строка

Да

UUID объекта

В ответ на мутацию возвращаются следующие данные:

  • id: UUID объекта.

Пример 83. Пример мутации deleteObject
mutation deleteObject ($input: DeleteObjectInput!) {
    deleteObject (input: $input) {
        id
    }
}
Пример 84. Пример использования переменных
{
  "input": {
    "domainId": "isassets.rvision.ru",
    "entityId": "Device",
    "id": "c24c3851-edd0-485e-8c23-d1218b68ee7e"
  }
}

Редактирование объекта сущности

Позволяет редактировать объект определенной сущности через мутацию updateObject.

URL: {{url}}/api/evo/cms/bff/api/graphql

Ключ Описание

x-tenant-id

UUID тенанта, в котором находится сущность

Таблица 25. Параметры мутации updateObject
Параметр Тип данных Обязателен Описание

input →

Объект

Да

Параметры объекта

→ domainId

Строка

Да

ID домена сущности

→ entityId

Строка

Да

ID сущности

→ values

Строка

Да

Значения полей, определенных схемой домена в формате сериализованного JSON-объекта.

Пример:

"values": "{\"deviceGuid\":null,\"deviceName\":\"alma85\",\"criticalityDevice\":null,\"networkInterfaces\":null,\"ipAddress\":\"10.99.103.155\",\"mask\":null,\"macAdress\":null,\"deviceDomain\":\"rvlab.local\",\"FQDN\":null,\"operatingSystem\":null,\"virtualMachine\":null,\"Hypervisor\":null,\"nodeType\":null,\"deviceStatus\":null,\"deviceGroupAssets\":null,\"deviceOwner\":null,\"assetTags\":null,\"deviceDescription\":\"щлжло\",\"port\":null,\"deviceSource\":null,\"inventoryDevice\":null,\"deviceScanDate\":null,\"deviceLocation\":null,\"deviceTz\":null}"

В ответ на мутацию возвращаются следующие данные:

  • createdAt: Дата и время создания.

  • creator: Кем создан объект.

    Пример 85. Структура данных
    creator {
           displayName
           id
    
    }
  • updater: Кем изменен объект.

    Пример 86. Структура данных
    updater {
           displayName
           id
    
    }
  • domainId: ID домена.

  • entityId: ID сущности.

  • id: UUID объекта.

  • label: Имя объекта.

  • tenantId: UUID тенанта.

  • updatedAt: Дата и время изменения.

  • values: Значения полей.

  • version: Версия объекта.

Пример 87. Пример мутации updateObject
mutation updateObject ($input: UpdateObjectInput!) {
    updateObject (input: $input) {
        createdAt
        domainId
        entityId
        id
        label
        tenantId
        updatedAt
        values
        version
    }
}
Пример 88. Пример использования переменных
{
  "input": {
    "domainId": "isassets.rvision.ru",
    "entityId": "Device",
    "id": "3f571cae-267a-435b-9a0b-4b20b7505b23",
    "values": "{\"deviceGuid\":null,\"deviceName\":\"test1\",\"criticalityDevice\":null,\"networkInterfaces\":null,\"ipAddress\":\"10.99.103.155\",\"mask\":null,\"macAdress\":null,\"deviceDomain\":\"rvlab.local\",\"FQDN\":null,\"operatingSystem\":null,\"virtualMachine\":null,\"Hypervisor\":null,\"nodeType\":null,\"deviceStatus\":null,\"deviceGroupAssets\":null,\"deviceOwner\":null,\"assetTags\":null,\"deviceDescription\":\"щлжло\",\"port\":null,\"deviceSource\":null,\"inventoryDevice\":null,\"deviceScanDate\":null,\"deviceLocation\":null,\"deviceTz\":null}"
  }
}
Пример 89. Пример ответа
{
    "data": {
        "updateObject": {
            "createdAt": "2025-01-14T12:43:40.379Z",
            "domainId": "isassets.rvision.ru",
            "entityId": "Device",
            "id": "3f571cae-267a-435b-9a0b-4b20b7505b23",
            "label": "test1",
            "tenantId": "00000000-0000-0000-0000-000000000000",
            "updatedAt": "2025-01-14T15:44:58.087Z",
            "values": "{\"deviceGuid\":null,\"deviceName\":\"test1\",\"criticalityDevice\":null,\"networkInterfaces\":null,\"ipAddress\":\"10.99.103.155\",\"mask\":null,\"macAdress\":null,\"deviceDomain\":\"rvlab.local\",\"FQDN\":null,\"operatingSystem\":null,\"virtualMachine\":null,\"Hypervisor\":null,\"nodeType\":null,\"deviceStatus\":null,\"deviceGroupAssets\":null,\"deviceOwner\":null,\"assetTags\":null,\"deviceDescription\":\"щлжло\",\"port\":null,\"deviceSource\":null,\"inventoryDevice\":null,\"deviceScanDate\":null,\"deviceLocation\":null,\"deviceTz\":null}",
            "version": 2,
            "creator": {
                "displayName": "admin",
                "id": "4a84e42f-59d3-4736-9e55-41fc0e730dd2"
            },
            "updater": {
                "displayName": "admin",
                "id": "4a84e42f-59d3-4736-9e55-41fc0e730dd2"
            }
        }
    }
}

Позволяет создать связь объекта с объектами текущего или других доменов через мутацию createObjectLinks.

URL: {{url}}/api/evo/cms/bff/api/graphql

Ключ Описание

x-tenant-id

UUID тенанта, в котором находится сущность

Таблица 26. Параметры мутации createObjectLinks
Параметр Тип данных Обязателен Описание

input →

Объект

Да

Параметры объекта

→ domainId

Строка

Да

ID домена

→ entityId

Строка

Да

ID сущности

→ objectId

Строка

Да

ID объекта

→ inputs →

Массив [Объект]

Да

Массив связей

→ → domainId

Строка

Да

ID домена связанного объекта

→ → linkageId

Строка

Да

ID типа связи.

Пример:

"linkageId": "device_to_software"

objectId

Строка

Да

ID связанного объекта

В ответ на мутацию возвращаются следующие данные:

  • createdAt: Дата и время создания связи.

  • creator: Кем создан объект.

    Пример 90. Структура данных
    creator {
           displayName
           id
    
    }
  • domainId: ID домена.

  • id: UUID связи.

  • linkageId: ID связи.

  • side1: Параметры объекта 1.

    Пример 91. Структура данных
    side1 {
                domainId
                entityId
                id
                tenantId
                version
            }
  • side2: Параметры объекта 2.

    Пример 92. Структура данных
    side2 {
                domainId
                entityId
                id
                tenantId
                version
            }
Пример 93. Пример мутации createObjectLinks
mutation createObjectLinks ($input: CreateObjectLinksInput!) {
    createObjectLinks (input: $input) {
        createdAt
        domainId
        id
        linkageId
        side1 {
            domainId
            entityId
            id
            tenantId
            version
        }
        side2 {
            domainId
            entityId
            id
            tenantId
            version
        }
    }
}
Пример 94. Пример использования переменных
{
  "input": {
    "domainId": "isassets.rvision.ru",
    "entityId": "Device",
    "objectId": "3f571cae-267a-435b-9a0b-4b20b7505b23",
    "inputs": {
      "domainId": "isassets.rvision.ru",
      "linkageId": "device_to_software",
      "objectId": "3e72182c-6fae-443f-bcaa-9309afece8c5"
    }
  }
}
Пример 95. Пример ответа
{
    "data": {
        "createObjectLinks": [
            {
                "createdAt": "2025-01-14T15:47:33.326Z",
                "domainId": "isassets.rvision.ru",
                "id": "69ac7798-e1d3-409d-87a3-f7a88346060c",
                "linkageId": "device_to_software",
                "side1": {
                    "domainId": "isassets.rvision.ru",
                    "entityId": "Device",
                    "id": "3f571cae-267a-435b-9a0b-4b20b7505b23",
                    "tenantId": "00000000-0000-0000-0000-000000000000",
                    "version": 2
                },
                "side2": {
                    "domainId": "isassets.rvision.ru",
                    "entityId": "Software",
                    "id": "3e72182c-6fae-443f-bcaa-9309afece8c5",
                    "tenantId": "00000000-0000-0000-0000-000000000000",
                    "version": 3
                }
            }
        ]
    }
}

Позволяет удалить связь объекта с объектами текущего или других доменов через мутацию deleteObjectLinks.

URL: {{url}}/api/evo/cms/bff/api/graphql

Таблица 27. Параметры мутации deleteObjectLinks
Параметр Тип данных Обязателен Описание

input →

Объект

Да

Параметры объекта

→ domainId

Строка

Да

ID домена

→ entityId

Строка

Да

ID сущности

→ objectId

Строка

Да

ID объекта

→ inputs →

Массив [Объект]

Да

Массив связей

→ → domainId

Строка

Да

ID домена связанного объекта

→ → linkageId

Строка

Да

ID типа связи.

Пример:

"linkageId": "device_to_software"

→ → objectIds

Массив [Строка]

Да

Массив ID связанных объектов

В ответ на мутацию возвращаются следующие данные:

  • domainId: ID домена.

  • ids: UUID связей.

  • linkageId: ID связи.

Пример 96. Пример мутации deleteObjectLinks
mutation deleteObjectLinks ($input: DeleteObjectLinksInput!) {
    deleteObjectLinks (input: $input) {
        domainId
        ids
        linkageId
    }
}
Пример 97. Пример использования переменных
{
  "input": {
    "domainId": "isassets.rvision.ru",
    "entityId": "Device",
    "objectId": "3f571cae-267a-435b-9a0b-4b20b7505b23",
    "inputs": {
      "domainId": "isassets.rvision.ru",
      "linkageId": "device_to_software",
      "objectIds": ["3e72182c-6fae-443f-bcaa-9309afece8c5"]
    }
  }
}
Пример 98. Пример ответа
{
    "data": {
        "deleteObjectLinks": [
            {
                "domainId": "isassets.rvision.ru",
                "ids": [
                    "69ac7798-e1d3-409d-87a3-f7a88346060c"
                ],
                "linkageId": "device_to_software"
            }
        ]
    }
}

Получение учетной записи

Позволяет получить учетную запись через запрос getAccount.

URL: {{url}}/api/evo/vm/bff/graphql

Таблица 28. Параметры запроса getAccount
Параметр Тип данных Обязателен Описание

id

Строка

Да

UUID учетной записи

tenantId

Строка

Да

UUID тенанта

В ответ на запрос возвращаются следующие данные:

  • accountType: Тип учетной записи.

  • active: Учетная запись включена.

  • description: Описание.

  • login: Логин.

  • password: Пароль.

  • name: Название учетной записи.

  • dbAdditionalSettings: Параметры учетной записи СУБД.

    Пример 99. Структура данных
    dbAdditionalSettings {
            database
            instance
            port
            serviceName
            type
        }
  • privileges: Повышение привилегий:

    • Sudo (для Linux).

    • Enable (для Cisco).

    • Expert (для Checkpoint).

    • Super (для Linux).

    Пример 100. Структура данных
    privileges {
        enable {
            enabled: Boolean
            password: String
            level: Int
        }
        expert {
            enabled: Boolean
            password: String
        }
        sudo {
            enabled: Boolean
            password: String
        }
        super {
            enabled: Boolean
            password: String
            level: Int
        }
    }
  • sshAuthenticationMethod: Метод аутентификации:

    • SSH_AUTH_METHOD_PASSWORD — Пароль.

    • SSH_AUTH_METHOD_PRIVATE_KEY — Публичный ключ.

  • sshPrivateKeyFilename: Название файла закрытого ключа.

  • sshPrivateKey: Закрытый ключ.

  • sshPrivateKeyPassphrase: Пароль закрытого ключа.

  • tenantId: UUID тенанта.

Пример 101. Пример запроса getAccount
query getAccount ($id: String!, $organizationId: String) {
    getAccount (id: $id, organizationId: $organizationId) {
        accountType
        active
        description
        id
        isPasswordSet
        login
        name
        sshAuthenticationMethod
        sshPrivateKeyFilename
        sshPublicKey
        privileges {
            enable {
                enabled
                isPasswordSet
                level
            }
            expert {
                enabled
                isPasswordSet
            }
            sudo {
                enabled
                isPasswordSet
            }
            super {
                enabled
                isPasswordSet
                level
            }
        }
        tenantId
    }
}
Пример 102. Пример использования переменных
{
  "id": "007bf0d4-47a3-48c6-a884-fa52b578ef78"
}
Пример 103. Пример ответа
{
    "data": {
        "getAccount": {
            "accountType": "TYPE_OF_ACCOUNT_SSH",
            "active": true,
            "description": "autotest",
            "dbAdditionalSettings": null,
            "id": "00325cae-0722-47bc-aff5-33a3960d89cb",
            "isPasswordSet": true,
            "login": "root",
            "name": "autotest",
            "sshAuthenticationMethod": "SSH_AUTH_METHOD_PASSWORD",
            "sshPrivateKeyFilename": "",
            "sshPublicKey": "",
            "tenantId": "f88b30ff-7862-489a-a6dd-c82c23e5ea21",
            "privileges": {
                "enable": {
                    "enabled": false,
                    "isPasswordSet": false,
                    "level": 0
                },
                "expert": {
                    "enabled": false,
                    "isPasswordSet": false
                },
                "sudo": {
                    "enabled": false,
                    "isPasswordSet": false
                },
                "super": {
                    "enabled": false,
                    "isPasswordSet": false,
                    "level": 0
                }
            }
        }
    }
}

Проверка учетной записи на устройстве

Позволяет осуществлять проверку учетной записи на устройстве через запрос checkAccount.

URL: {{url}}/api/evo/vm/bff/graphql

Таблица 29. Параметры запроса checkAccount
Параметр Тип данных Обязателен Описание

account →

Объект

Да

Параметры учетной записи для проверки

→ id

Строка

Нет

UUID учетной записи

→ login

Строка

Да

Логин учетной записи

→ password

Строка

Нет

Пароль учетной записи

→ sshAuthenticationMethod

Строка

Нет

Способ аутентификации

→ sshPrivateKey

Строка

Нет

Пароль закрытого ключа

→ sshPublicKey

Строка

Нет

 — 

→ type

Строка

Да

Тип учетной записи

host →

Объект

Да

 — 

→ address

Строка

Да

Имя или IP устройства

→ port

Целое число

Да

Порт подключения

spaceId

Строка

Да

UUID пространства

workloadId

Строка

Да

UUID сканера

В ответ на запрос возвращаются следующие данные:

  • error: Текст ошибки запроса.

  • success: Статус запроса.

Пример 104. Пример запроса checkAccount
query checkAccount ($account: CheckAccountParams!, $host: CheckAccountHostParams!, $spaceId: String!, $workloadId: String!) {
    checkAccount (account: $account, host: $host, spaceId: $spaceId, workloadId: $workloadId) {
        error
        success
    }
}
Пример 105. Пример использования переменных
{
  "account": {
    "login": "login@rvlab.ru",
    "password": "password",
    "type": "TYPE_OF_ACCOUNT_WINDOWS"
  },
  "host": {
    "address": "admin.rvlab.local",
    "port": 22
  },
  "spaceId": "space-2",
  "workloadId": "vm-scanners-1"
}

Получение списка учетных записей

Позволяет получить список учетных записей через запрос findAccounts.

URL: {{url}}/api/evo/vm/bff/graphql

Таблица 30. Параметры запроса findAccounts
Параметр Тип данных Обязателен Описание

filter →

Объект

Нет

Параметры фильтра

→ name

Строка

Нет

Название задачи

→ query

Строка

Нет

Сквозной поиск по полям:

  • login;

  • name.

→ active

булево

Нет

Учетная запись включена

→ ids

Массив [Строка]

Нет

Массив UUID учетных записей

→ tenantId

Строка

Нет

UUID тенанта

pagination →

Объект

Нет

Параметры пагинации

→ limit

Целое число

Нет

Ограничение на количество возвращаемых результатов

→ offset

Целое число

Нет

Смещение

sorting →

Объект

Нет

Параметры сортировки

→ order

Строка

Нет

Порядок

→ orderBy

Строка

Нет

Поле сортировки:

  • ORDER_BY_ACCOUNT_TYPE — Тип УЗ

  • ORDER_BY_ACTIVE — Статус

  • ORDER_BY_LOGIN — Логин

  • ORDER_BY_NAME — Название

В ответ на запрос возвращаются следующие данные:

  • accounts: Текст ошибки запроса.

    Пример 106. Структура данных
    accounts {
        accountType
        active
        description
        dbAdditionalSettings {
            database
            instance
            port
            serviceName
            type
        }
        id
        isPasswordSet
        login
        name
        organizationId
        sshAuthenticationMethod
        sshPrivateKeyFilename
        sshPublicKey
        tenantId
        privileges {
            enable {
                enabled
                isPasswordSet
                level
            }
            expert {
                enabled
                isPasswordSet
            }
            sudo {
                enabled
                isPasswordSet
            }
            super {
                enabled
                isPasswordSet
                level
            }
        }
    }
  • pageInfo: Статус запроса.

    Пример 107. Структура данных
    pageInfo {
        totalCount
        pagination {
            limit
            offset
        }
    }
Пример 108. Пример запроса findAccounts
query findAccounts  ($filter: AccountsFilter, $pagination: PaginationInput, $sorting: AccountsSorting) {
    findAccounts  (filter: $filter, pagination: $pagination, sorting: $sorting) {
        accounts {
            accountType
            active
            description
            dbAdditionalSettings {
                database
                instance
                port
                serviceName
                type
            }
            id
            isPasswordSet
            login
            name
            sshAuthenticationMethod
            sshPrivateKeyFilename
            sshPublicKey
            tenantId
            privileges {
                enable {
                    enabled
                    isPasswordSet
                    level
                }
                expert {
                    enabled
                    isPasswordSet
                }
                sudo {
                    enabled
                    isPasswordSet
                }
                super {
                    enabled
                    isPasswordSet
                    level
                }
            }
        }
    }
}
Пример 109. Пример использования переменных
{
    "filter":
    {
        "name": "MSSQL"
    }
}
Пример 110. Пример ответа
{
    "data": {
        "findAccounts": {
            "accounts": [
                {
                    "accountType": "TYPE_OF_ACCOUNT_DATABASE",
                    "active": true,
                    "description": "",
                    "dbAdditionalSettings": {
                        "database": "master",
                        "instance": "MSSQLSERVER",
                        "port": 1433,
                        "serviceName": null,
                        "type": "TYPE_OF_DATABASE_MSSQL"
                    },
                    "id": "14f6e347-8b7c-4f69-8098-4903f93b693a",
                    "isPasswordSet": true,
                    "login": "admin",
                    "name": "MSSQL",
                    "sshAuthenticationMethod": "SSH_AUTH_METHOD_PASSWORD",
                    "sshPrivateKeyFilename": "",
                    "sshPublicKey": "",
                    "tenantId": "f88b30ff-7862-489a-a6dd-c82c23e5ea21",
                    "privileges": {
                        "enable": {
                            "enabled": false,
                            "isPasswordSet": false,
                            "level": 0
                        },
                        "expert": {
                            "enabled": false,
                            "isPasswordSet": false
                        },
                        "sudo": {
                            "enabled": false,
                            "isPasswordSet": false
                        },
                        "super": {
                            "enabled": false,
                            "isPasswordSet": false,
                            "level": 0
                        }
                    }
                }
            ]
        }
    }
}

Создание учетной записи

Позволяет создать учетную запись через мутацию createAccount.

URL: {{url}}/api/evo/vm/bff/graphql

Таблица 31. Параметры мутации createAccount
Параметр Тип данных Обязателен Описание

input →

Объект

Да

Параметры учетной записи

→ accountType

Строка

Да

Тип учетной записи

→ active

Булево

Да

Учетная запись включена

→ description

Строка

Да

Описание

→ dbAdditionalSettings →

Объект

Да, если Тип учетной записи = СУБД

Параметры учетной записи СУБД

→ → database

Строка

Да, если Тип учетной записи = СУБД

Название базы данных

→ → instance

Строка

Да, если Тип учетной записи = СУБД, Тип СУБД = MS SQL

Экземпляр

→ → port

Целое число

Да, если Тип учетной записи = СУБД

Порт

→ → serviceName

Строка

Да, если Тип учетной записи = СУБД, Тип СУБД = Oracle

Имя службы

→ → type

Строка

Да, если Тип учетной записи = СУБД

Тип СУБД

→ login

Строка

Да

Логин

→ password

Строка

Да, если Метод аутентификации = Пароль

Пароль

→ name

Строка

Да

Название учетной записи

→ privileges →

Объект

Да

Повышение привилегий

→ → enable

Объект

Пример 111. Структура данных
privileges {
    enable {
        enabled: Boolean
        password: String
        level: Int
    }

Enable (для Cisco)

Нет

→ → expert

Объект

Пример 112. Структура данных
expert {
        enabled: Boolean
        password: String
    }

Expert (для Checkpoint)

Нет

→ → sudo

Объект

Пример 113. Структура данных
sudo {
        enabled: Boolean
        password: String
    }

Sudo (для Linux)

Нет

→ → super

Объект

Пример 114. Структура данных
super {
        enabled: Boolean
        password: String
        level: Int
    }

Super (для Linux)

Нет

→ sshAuthenticationMethod

Строка

Нет

Метод аутентификации:

  • SSH_AUTH_METHOD_PASSWORD – Пароль

  • SSH_AUTH_METHOD_PRIVATE_KEY – Публичный ключ

→ sshPrivateKeyFilename

Строка

Нет

Название файла закрытого ключа

→ sshPrivateKey

Строка

Нет

Закрытый ключ

→ sshPrivateKeyPassphrase

Строка

Нет

Пароль закрытого ключа

→ tenantId

Строка

Да

Строка UUID

В ответ на запрос возвращаются следующие данные:

  • error: Текст ошибки запроса.

  • success: Статус запроса.

  • data: Параметры учетной записи.

    Пример 115. Структура данных
    data {
        accountType
        active
        description
        dbAdditionalSettings {
            database
            instance
            port
            serviceName
            type
        }
        id
        isPasswordSet
        login
        name
        sshAuthenticationMethod
        sshPrivateKeyFilename
        sshPublicKey
        tenantId
        privileges {
            enable {
                enabled
                isPasswordSet
                level
            }
            expert {
                enabled
                isPasswordSet
            }
            sudo {
                enabled
                isPasswordSet
            }
            super {
                enabled
                isPasswordSet
                level
            }
        }
        tenantId
    }
Пример 116. Пример мутации createAccount
mutation createAccount ($input: CreateAccountInput!) {
    createAccount (input: $input) {
        error
        success
        tenantId
    }
}
Пример 117. Пример использования переменных
{
  "input": {
    "accountType": "TYPE_OF_ACCOUNT_WINDOWS",
    "active": true,
    "description": "",
    "login": "admin",
    "name": "admin",
    "password": "admin",
    "privileges": {
      "enable": {
        "enabled": false,
        "level": 0,
        "password": ""
      },
      "expert": {
        "enabled": false,
        "password": ""
      },
      "sudo": {
        "enabled": false,
        "password": ""
      },
      "super": {
        "enabled": false,
        "level": 0,
        "password": ""
      }
    }
    "tenantId": "f88b30ff-7862-489a-a6dd-c82c23e5ea21",
  }
}

Удаление учетной записи

Позволяет удалить учетную запись через мутацию deleteAccount.

URL: {{url}}/api/evo/vm/bff/graphql

Таблица 32. Параметры мутации deleteAccount
Параметр Тип данных Обязателен Описание

delete →

Объект

Да

 — 

→ id

Строка

Да

UUID учетной записи

В ответ на запрос возвращаются следующие данные:

  • error: Текст ошибки запроса.

  • success: Статус запроса.

Пример 118. Пример мутации deleteAccount
mutation deleteAccount ($delete: DeleteAccountInput!) {
    deleteAccount (delete: $delete) {
        error
        success
    }
}
Пример 119. Пример использования переменных
{
  "delete": {
    "id": "02210d31-1cf1-4501-abc1-94484f011348"
  }
}

Редактирование учетной записи

Позволяет отредактировать учетную запись через мутацию updateAccount.

URL: {{url}}/api/evo/vm/bff/graphql

Таблица 33. Параметры мутации updateAccount
Параметр Тип данных Обязателен Описание

update →

Объект

Да

Параметры учетной записи

→ active

Булево

Нет

Учетная запись включена

→ description

Строка

Нет

Описание

→ dbAdditionalSettings →

Объект

Да, если Тип учетной записи = СУБД

Параметры учетной записи СУБД

→ → database

Строка

Да, если Тип учетной записи = СУБД

Название базы данных

→ → instance

Строка

Да, если Тип учетной записи = СУБД

Экземпляр (Тип СУБД = MS SQL)

→ → port

Целое число

Да, если Тип учетной записи = СУБД

Порт

→ → serviceName

Строка

Да, если Тип учетной записи = СУБД

Имя службы (Тип СУБД = Oracle)

→ → type

Строка

Да, если Тип учетной записи = СУБД

Тип СУБД

→ id

Строка

Да

UUID задачи

→ login

Строка

Нет

Логин

→ password

Строка

Нет

Пароль

→ name

Строка

Нет

Название

→ privileges

Объект

+

Пример 120. Структура данных
privileges {
    enable {
        enabled: Boolean
        password: String
        level: Int
    }
    expert {
        enabled: Boolean
        password: String
    }
    sudo {
        enabled: Boolean
        password: String
    }
    super {
        enabled: Boolean
        password: String
        level: Int
    }
}

Да

Повышение привилегий:

  • Sudo (для Linux)

  • Enable (для Cisco)

  • Expert (для Checkpoint)

  • Super (для Linux)

→ sshAuthenticationMethod

Строка

Нет

Метод аутентификации:

  • SSH_AUTH_METHOD_PASSWORD – Пароль

  • SSH_AUTH_METHOD_PRIVATE_KEY – Публичный ключ

→ sshPrivateKeyFilename

Строка

Нет

Название файла закрытого ключа

→ sshPrivateKey

Строка

Нет

Закрытый ключ

→ sshPrivateKeyPassphrase

Строка

Нет

Пароль закрытого ключа

В ответ на запрос возвращаются следующие данные:

  • error: Текст ошибки запроса.

  • success: Статус запроса.

  • data: Параметры учетной записи

    Пример 121. Структурa данных
    data {
        accountType
        active
        description
        dbAdditionalSettings {
            database
            instance
            port
            serviceName
            type
        }
        id
        isPasswordSet
        login
        name
        sshAuthenticationMethod
        sshPrivateKeyFilename
        sshPublicKey
        organizationId
        privileges {
            enable {
                enabled
                isPasswordSet
                level
            }
            expert {
                enabled
                isPasswordSet
            }
            sudo {
                enabled
                isPasswordSet
            }
            super {
                enabled
                isPasswordSet
                level
            }
        }
    }
Пример 122. Пример мутации updateAccount
mutation updateAccount ($input: UpdateAccountInput!) {
    updateAccount (update: $update) {
        error
        success
    }
}
Пример 123. Пример использования переменных
{
  "input": {
    "active": true,
    "description": "",
    "dbAdditionalSettings": null,
    "login": "admin",
    "name": "admin",
    "password": "admin",
    "privileges": {
      "enable": {
        "enabled": false,
        "level": 0,
        "password": ""
      },
      "expert": {
        "enabled": false,
        "password": ""
      },
      "sudo": {
        "enabled": false,
        "password": ""
      },
      "super": {
        "enabled": false,
        "level": 0,
        "password": ""
      }
    }
  }
}

Получение списка групп агентов

Позволяет получить список групп агентов через запрос GetAgentScanGroup.

В ответ на запрос возвращаются следующие данные:

  • id: UUID группы агентов .

  • name: Имя группы агентов.

Пример 124. Пример запроса GetAgentScanGroup
query GetAgentScanGroup {
    getAgentScanGroup {
        data {
            id
            name
        }
    }
}
Пример 125. Пример ответа
    "data": {
        "getAgentScanGroup": {
            "data": [
                {
                    "id": "e9bac87a-9ab9-4e93-bf4d-f27f1cffba03",
                    "name": "000real-agents"
                },
                {
                    "id": "44a756d1-a97d-4a10-96a7-233fed798cb6",
                    "name": "added-new-group"
                },
...

Получение списка агентов

Позволяет получить список агентов через запрос agents.

URL: {{url}}/api/evo/ep/bff/graphql

Таблица 34. Параметры запроса agents
Параметр Тип данных Обязателен Описание

filter →

Объект

Нет

Параметры пагинации

→ id

Массив [Строка]

Нет

Массив UUID агентов

→ status

Массив [Строка]

Нет

Статус агента:

  • REGISTERED — Зарегистрирован.

  • ONLINE — Онлайн.

  • DISABLED — Выключен.

  • OFFLINE — Оффлайн.

→ agentGroupId

Массив [Строка]

Нет

Массив UUID групп агентов, в которых состоят агенты

→ osType

Массив [Строка]

Нет

Тип ОС

→ search

Строка

Нет

Строка поиска

→ version

Строка

Нет

Версия агента

Пример:

"version": "rpoint v1.10.4.5"

→ registeredAtGte

Строка

Нет

Дата регистрации: от (в формате Datetime)

→ registeredAtLte

Строка

Нет

Дата регистрации: до (в формате Datetime)

→ lastActivity

Строка

Нет

Дата последней активности (в формате Datetime)

options →

Объект

Нет

 — 

→ limit

Целое число

Нет

Ограничение на количество возвращаемых результатов

→ offset

Целое число

Нет

Смещение

→ sort →

Объект

Нет

Параметры сортировки

→ → by

Строка

Нет

Поле сортировки

→ → order

Строка

Нет

Порядок

В ответ на запрос возвращаются следующие данные:

  • id: UUID агента.

  • name: Название агента.

  • machineId: UUID машины.

  • hostname: Имя хоста.

  • groupConfigStatus: Статус группы агентов.

  • ip: IP адреса хоста.

  • registeredAt: Дата регистрации.

  • lastAliveAt: Дата последней активности.

  • status: Статус агента.

  • version: Версия агента.

  • os: Параметры ОС.

    Пример 126. Структура данных
    os {
        major
        minor
        name
        platform
        version
        osType
        arch
        build
    }
  • groups: Параметры группы агентов, в которой состоит агент.

    Пример 127. Структура данных
    groups {
        id
        name
        autoAssignment
        createdAt
        updatedAt
        agentCount
        vrlExpressions
    }
  • inventory: Данные инвентаризации.

    Пример 128. Структура данных
    inventory {
        users
        containers
        processes
        openPorts
    }
Пример 129. Пример запроса agents
query agents ($filter: AgentFindFilter, $options: AgentFindOptions) {
    agents (filter: $filter, options: $options) {
        id
        name
        machineId
        hostname
        groupConfigStatus
        ip
        registeredAt
        lastAliveAt
        status
        version
        os {
            major
            minor
            name
            platform
            version
            osType
            arch
            build
        }
        groups {
            id
            name
        }
    }
}
Пример 130. Пример использования переменных
{
  "filter": {},
  "options": {
    "limit": 20
  }
}
Пример 131. Пример ответа
{
    "data": {
        "agents": [
            {
                "id": "010afe48-9f88-4256-afc4-2a28cea5f2eb",
                "name": "accomplished-niece.info",
                "machineId": "a4b39235-e4c9-4dfa-9062-ec6aa9603d04",
                "hostname": "accomplished-niece.info",
                "groupConfigStatus": "SYNCED",
                "ip": [
                    "71.199.20.179",
                    "53.1.163.162"
                ],
                "registeredAt": "2022-06-12T20:41:32.458Z",
                "lastAliveAt": "2025-01-22T21:25:47.701Z",
                "status": "OFFLINE",
                "version": "rpoint v1.10.4.5",
                "os": {
                    "major": "8",
                    "minor": "2",
                    "name": "Linux",
                    "platform": "rhel",
                    "version": "8.2",
                    "osType": "LINUX",
                    "arch": "x86_64",
                    "build": ""
                },
                "groups": [
                    {
                        "id": "ebf7445e-5fbc-4b25-85e6-2a60c0c1dde4",
                        "name": "one-hundred"
                    }
                ]
            },
...