Запросы API модуля управления уязвимостями
В данном разделе представлено описание функционала выполнения запросов и мутаций для взаимодействия с данными модуля управления уязвимостями через GraphQL API и примеры его использования.
В запросы к API необходимо включать HTTP-заголовок x-tenant-id
, указывающий идентификатор
тенанта.
Доступные операции:
-
авторизация и получение токена.
-
получение списка пространств.
-
получение списка тенантов.
-
получение списка сканеров.
-
получение задачи сканирования, списка задач сканирования, истории запусков задачи сканирования.
-
создание, редактирование, удаление, запуск, отмена запущенной задачи сканирования.
-
приостановка и возобновление задачи сканироввния.
-
получение профиля, списка профилей и списка стандартов.
-
создание, редактирование, удаление профиля.
-
получение объекта сущности, списка объектов сущности и связей объекта с другими объектами, создание, удаление и редактирование объекта сущности.
-
создание и удаление связи объекта.
-
получение учетной записи и ее проверка на устройстве.
-
получение списка агентов и групп агентов.
Авторизация и получение токена
Позволяет осуществлять авторизацию и получение токена через мутацию login
.
URL: {{url}}/api/evo/core/bff/graphql
Параметр | Тип данных | Обязателен | Описание |
---|---|---|---|
|
Объект |
Да |
— |
|
Строка |
Да |
Пароль |
|
Строка |
Да |
Логин |
В ответ на мутацию возвращаются следующие данные:
-
accessToken
: Access токен. Передается в запросах как параметр авторизации типа bearer token. -
passwordExpiredAt
: Дата истечения пароля учетной записи. -
refreshToken
: Refresh токен. Передается при истечении срока действия access токена.
login
mutation Login ($input: LoginRequest!) {
login (input: $input) {
accessToken
passwordExpiredAt
refreshToken
}
}
{
"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 }
listSpaces
query ListSpaces {
listSpaces {
spaces {
createdAt
createdBy
deletedAt
deletedBy
description
host
id
name
port
updatedAt
updatedBy
}
}
}
Список тенантов
Позволяет получить список тенантов в системе через запрос listTenants
.
URL: {{url}}/api/evo/core/bff/graphql
Параметр | Тип данных | Обязателен | Описание |
---|---|---|---|
|
Объект |
Нет |
— |
|
Объект |
Нет |
— |
|
Строка |
Нет |
— |
|
Массив [Строка] |
Нет |
Статус тенанта:
|
|
Строка |
Нет |
Порядок сортировки. Пример: name DESC |
|
Объект |
Нет |
— |
|
Булево |
Нет |
Подсчет количества объектов на странице |
|
Целое число |
Нет |
Ограничение на количество возвращаемых результатов |
|
Целое число |
Нет |
Смещение |
В ответ на запрос возвращаются следующие данные:
-
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 }
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
}
}
}
}
{
"input": {
"orderBy": "name asc",
"filter": null
}
}
{
"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
Параметр | Тип данных | Обязателен | Описание |
---|---|---|---|
|
Объект |
Нет |
— |
|
Объект |
Нет |
Параметры фильтра |
|
Строка |
Нет |
Название задачи |
|
Строка |
Нет |
Сквозной поиск по полям:
|
|
Объект |
Нет |
Параметры пагинации |
|
Целое число |
Нет |
Ограничение на количество возвращаемых результатов |
|
Целое число |
Нет |
Смещение |
|
Объект |
Нет |
Параметры сортировки |
|
Строка |
Нет |
Порядок |
|
Строка |
Нет |
Поле сортировки |
В ответ на запрос возвращаются следующие данные:
-
scanners
: Параметры сканераПример 8. Структура данныхscanners { cpu createdAt createdBy deletedAt deletedBy description id isActive name ram spaceId spaceName type updatedAt updatedBy agentConfiguration { name ram workersCount } }
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
}
}
}
}
{
"input": {
"filter": {}
}
}
{
"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
Параметр | Тип данных | Обязателен | Описание |
---|---|---|---|
|
Строка |
Да |
UUID задачи сканирования |
|
Строка |
Нет |
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 сканера.
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
}
}
{
"id": "028924cd-19cd-43f2-8bb8-75697d269920"
}
Получение списка задач
Запрос findTasks
позволяет получить список задач сканирования.
URL: {{url}}/api/evo/core/bff/graphql
Параметр | Тип данных | Обязателен | Описание |
---|---|---|---|
|
Объект |
Нет |
Параметры фильтра |
|
Строка |
Нет |
Название задачи |
|
Строка |
Нет |
Сквозной поиск по полям:
|
|
Строка |
Нет |
Статус задачи:
|
|
Строка |
Нет |
Тип профиля:
|
|
Строка |
Нет |
Тип сканирования:
|
|
Строка |
Нет |
ID пространства |
|
Строка |
Нет |
ID сканера |
|
Строка |
Нет |
UUID тенанта |
|
Объект |
Нет |
Параметры пагинации |
|
Целое число |
Нет |
Ограничение на количество возвращаемых результатов |
|
Целое число |
Нет |
Смещение |
|
Объект |
Нет |
Параметры сортировки |
|
Строка |
Нет |
Порядок |
|
Строка |
Нет |
Поле сортировки |
В ответ на запрос возвращаются следующие данные:
-
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 } }
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
}
}
}
{
"filter":
{
"name": "задача"
}
}
Получение истории запусков задачи сканирования
Запрос FindTaskHistory
позволяет получить историю запусков задачи сканирования.
URL: {{url}}/api/evo/core/bff/graphql
Параметр | Тип данных | Обязателен | Описание |
---|---|---|---|
|
Объект |
Нет |
Фильтр по статусу сканирования |
|
Строка |
Нет |
Статус сканирования |
|
Строка |
Да |
UUID задачи |
В ответ на запрос возвращаются следующие данные:
-
scans
: Параметры запуска сканирования.Пример 20. Структура данныхscans { discovered finished finishedAt id interrupted onlyDiscoveredHost scanDuration scanSuccess startedAt status targets }
-
taskId
: UUID задачи.
FindTaskHistory
query FindTaskHistory {
findTaskHistory(taskId: "8fb5ad26-4e54-432c-a320-0b869b5e59a9") {
taskId
scans {
discovered
finished
finishedAt
id
interrupted
onlyDiscoveredHost
scanDuration
scanSuccess
startedAt
status
targets
}
}
}
{
"taskId": "df846bc0-bded-42bd-9988-112dd5b9055f"
}
Создание задачи сканирования
Позволяет создать задачу сканирования через мутацию createTask
.
URL: {{url}}/api/evo/core/bff/graphql
Параметр | Тип данных | Обязателен | Описание | ||
---|---|---|---|---|---|
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 |
Строка |
Да |
Уровень журналирования:
|
||
→ name |
Строка |
Да |
Название задачи сканирования |
||
→ pausedDuration |
Целое число |
Да, если используется приостановка |
Длительность приостановки (в секундах) |
||
→ pausedOffsetStart |
Целое число |
Да, если используется приостановка |
Время начала приостановки (в секундах) |
||
→ pausedUnit |
Строка |
Да, если используется приостановка |
Дни месяца/недели, в которые нужно приостанавливать сканирование в формате чисел Пример: "pausedUnit": "1,2" // понедельник, вторник |
||
→ profileId |
Строка |
Да |
UUID профиля |
||
→ repeatInterval |
Целое число |
Да, если задан ежемесячный, еженедельный или ежедневный запуск |
Повторять запуск задачи каждый __ месяц/неделю/день |
||
→ repeatUnit |
Строка |
Да, если задан ежемесячный или еженедельный запуск |
Дни месяца/недели, в которые нужно запускать задачу Пример: "repeatUnit": "3,11,19,20" |
||
→ scanMode |
Строка |
Да |
Тип сканирования:
|
||
→ spaceId |
Строка |
Да |
ID пространства |
||
→ tenantId |
Строка |
Да |
UUID тенанта |
||
→ targets |
Строка |
Да |
IP целей сканирования |
||
→ targetsExcludes |
Строка |
Да |
IP исключений сканирования |
||
→ taskPaused |
Строка |
Да |
Значение в соответствии со значением переменной |
||
→ taskRunner |
Строка |
Да |
Режим запуска:
|
||
→ 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 }
createTask
mutation createTask ($input: CreateTaskInput!) {
createTask (input: $input) {
error
success
task {
id
}
tenantId
}
}
{
"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"
}
}
{
"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
Параметр | Тип данных | Обязателен | Описание | ||
---|---|---|---|---|---|
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 |
Строка |
Да |
Уровень журналирования:
|
||
→ name |
Строка |
Нет |
Название задачи сканирования |
||
→ pausedDuration |
Целое число |
Нет |
Длительность приостановки (в секундах) |
||
→ pausedOffsetStart |
Целое число |
Нет |
Время начала приостановки (в секундах) |
||
→ pausedUnit |
Строка |
Нет |
Дни месяца/недели, в которые нужно приостанавливать сканирование в формате чисел Пример: "pausedUnit": "1,2" // понедельник, вторник |
||
→ profileId |
Строка |
Да |
UUID профиля |
||
→ repeatInterval |
Целое число |
Нет |
Повторять запуск задачи каждый __ месяц/неделю/день |
||
→ repeatUnit |
Строка |
Нет |
Дни месяца/недели, в которые нужно запускать задачу Пример: "repeatUnit": "3,11,19,20" |
||
→ scanMode |
Строка |
Да |
Тип сканирования:
|
||
→ spaceId |
Строка |
Да |
ID пространства |
||
→ targets |
Строка |
Да |
IP целей сканирования |
||
→ targetsExcludes |
Строка |
Да |
IP исключений сканирования |
||
→ taskPaused |
Строка |
Да |
Значение в соответствии со значением переменной taskRunner |
||
→ taskRunner |
Строка |
Да |
Режим запуска:
|
||
→ 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
Параметр | Тип данных | Обязателен | Описание |
---|---|---|---|
delete → |
Объект |
Да |
— |
→ id |
Строка |
Да |
UUID профиля |
В ответ на мутацию возвращаются следующие данные:
-
error
: Текст ошибки запроса. -
success
: Статус запроса. -
task
: Параметры задачи.Пример 28. Структура данныхtask { id }
deleteTask
mutation deleteTask ($delete: DeleteTaskInput!) {
deleteTask (delete: $delete) {
error
success
}
}
{
"delete": {
"id": "df846bc0-bded-42bd-9988-112dd5b9055f"
}
}
Запуск задачи сканирования
Позволяет осуществлять запуск задачи сканирования через мутацию runTask
.
URL: {{url}}/api/evo/core/bff/graphql
Параметр | Тип данных | Обязателен | Описание |
---|---|---|---|
run → |
Объект |
Да |
— |
→ id |
Строка |
Да |
UUID задачи |
В ответ на мутацию возвращаются следующие данные:
-
error
: Текст ошибки запроса. -
success
: Статус запроса. -
task
: UUID задачи.Пример 31. Структура данныхtasks { id }
runTask
mutation runTask ($run: RunTaskInput!) {
runTask (run: $run) {
error
success
}
}
{
"run": {
"id": "df846bc0-bded-42bd-9988-112dd5b9055f"
}
}
Отмена задачи сканирования
Позволяет отменить запущенную задачу сканирования через мутацию cancelTask
.
URL: {{url}}/api/evo/core/bff/graphql
Параметр | Тип данных | Обязателен | Описание |
---|---|---|---|
cancel → |
Объект |
Да |
Параметры задачи |
→ id |
Строка |
Да |
UUID задачи |
В ответ на мутацию возвращаются следующие данные:
-
error
: Текст ошибки запроса. -
success
: Статус запроса. -
task
: Параметры задачи.Пример 34. Структура данныхtask { id }
cancelTask
mutation cancelTask ($cancel: CancelTaskInput!) {
cancelTask (cancel: $cancel) {
error
success
task {
id
}
}
}
{
"cancel": {
"id": "df846bc0-bded-42bd-9988-112dd5b9055f"
}
}
Приостановка задачи сканирования
Позволяет приостановить задачу сканирования через мутацию pauseTask
.
URL: {{url}}/api/evo/core/bff/graphql
Параметр | Тип данных | Обязателен | Описание |
---|---|---|---|
pause → |
Объект |
Да |
— |
→ id |
Строка |
Да |
UUID задачи |
В ответ на мутацию возвращаются следующие данные:
-
error
: Текст ошибки запроса. -
success
: Статус запроса. -
task
: UUID задачи.Пример 37. Структура данныхtask { id }
pauseTask
mutation pauseTask ($pause: PauseTaskInput!) {
pauseTask (pause: $pause) {
error
success
}
}
{
"pause": {
"id": "ad755637-63d1-4834-97e3-b963257af96f"
}
}
Возобновление задачи
Позволяет возобновить задачу через мутацию resumeTask
.
URL: {{url}}/api/evo/core/bff/graphql
Параметр | Тип данных | Обязателен | Описание |
---|---|---|---|
resume → |
Объект |
Да |
— |
→ id |
Строка |
Да |
UUID задачи |
В ответ на мутацию возвращаются следующие данные:
-
error
: Текст ошибки запроса. -
success
: Статус запроса. -
task
: UUID задачи.Пример 40. Структура данныхtask { id }
resumeTask
mutation resumeTask ($resume: ResumeTaskInput!) {
resumeTask (resume: $resume) {
error
success
}
}
{
"resume": {
"id": ""
}
}
Получение профиля
Позволяет получить профиль через запрос getProfile
.
URL: {{url}}/api/evo/vm/bff/graphql
Параметр | Тип данных | Обязателен | Описание |
---|---|---|---|
|
Строка |
Да |
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 тенанта.
getProfile
query getProfile ($id: String!) {
getProfile (id: $id) {
description
discoveryType
id
name
typeOfProfile
}
}
{
"id": ""
}
Получение списка профилей
Запрос findProfiles
позволяет получить список профилей.
URL: {{url}}/api/evo/core/bff/graphql
Параметр | Тип данных | Обязателен | Описание |
---|---|---|---|
|
Объект |
Нет |
Параметры фильтра |
|
Строка |
Нет |
Название задачи |
|
Строка |
Нет |
Сквозной поиск по полям:
|
|
Строка |
Нет |
Тип сканирования:
|
|
Строка |
Нет |
Тип профиля:
|
|
Объект |
Нет |
Параметры пагинации |
|
Целое число |
Нет |
Ограничение на количество возвращаемых результатов |
|
Целое число |
Нет |
Смещение |
|
Объект |
Нет |
Параметры сортировки |
|
Строка |
Нет |
Порядок |
|
Строка |
Нет |
Поле сортировки:
|
В ответ на запрос возвращаются следующие данные:
-
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 } }
findProfiles
{
"filter":
{
"name": "профиль"
}
}
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
}
}
}
{
"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
Параметр | Тип данных | Обязателен | Описание |
---|---|---|---|
input → |
Объект |
Да |
Параметры профиля |
→ description |
Строка |
Нет |
Описание профиля |
→ name |
Строка |
Да |
Название профиля |
→ typeOfProfile |
Строка |
Да |
Тип профиля:
|
→ scanMode |
Строка |
Да |
Режим сканирования:
|
→ tenantId |
Строка |
Да |
UUID тенанта |
В ответ на мутацию возвращаются следующие данные:
-
error
: Текст ошибки запроса. -
success
: Статус запроса.
createProfile
mutation createProfile ($input: CreateProfileInput!) {
createProfile (input: $input) {
error
success
profile {
id
}
}
}
{
"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
Параметр | Тип данных | Обязателен | Описание |
---|---|---|---|
delete → |
Объект |
Да |
— |
→ id |
Строка |
Да |
UUID профиля |
В ответ на мутацию возвращаются следующие данные:
-
error
: Текст ошибки запроса. -
success
: Статус запроса. -
profile
: UUID профиля.Пример 54. Структура данныхprofile { id }
deleteProfile
mutation deleteProfile ($delete: DeleteProfileInput!) {
deleteProfile (delete: $delete) {
error
success
}
}
{
"delete": {
"id": "02210d31-1cf1-4501-abc1-94484f011348"
}
}
Редактирование профиля
Позволяет редактировать профиль через мутацию updateProfile
.
URL: {{url}}/api/evo/core/bff/graphql
Параметр | Тип данных | Обязателен | Описание |
---|---|---|---|
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 |
Строка |
Да |
Шаблон настроек времени (обнаружение хостов):
Тип профиля: Проверка стандартов, Тестирование на проникновение |
→ → udp |
Строка |
Да |
Порты для UDP пингования (обнаружение хостов) Тип профиля: Проверка стандартов, Тестирование на проникновение |
→ nseSettings → |
Объект |
Нет |
Параметры безопасных и небезопасных проверок |
→ → categories |
Массив [Строка] |
Нет |
Использовать:
Тип профиля: Тестирование на проникновение |
→ pentestSettings → |
— |
Нет |
Параметры тестирования на проникновение |
→ → extendSettings |
Логический |
Нет |
Пользовательские настройки |
→ → mode |
Строка |
Нет |
Тип сканирования портов:
|
→ → tcpPorts |
Строка |
Нет |
Порты для TCP пингования |
→ → udpPorts |
Строка |
Нет |
Порты для UDP пингования |
→ complianceSettings → |
— |
Нет |
Параметры проверок соответствия |
→ → benchmarks |
Массив [Строка] |
Да |
Массив со списком стандартов Тип профиля: Проверка стандартов |
→ typeOfProfile |
Строка |
Да |
Тип профиля:
|
→ scanMode |
Строка |
Да |
Режим сканирования:
|
В ответ на мутацию возвращаются следующие данные:
-
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 } }
updateProfile
mutation updateProfile ($update: UpdateProfileInput!) {
updateProfile (update: $update) {
error
success
}
}
{
"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"
}
}
{
"data": {
"updateProfile": {
"error": null,
"success": true
}
}
}
Получение списка стандартов
Позволяет получить список стандартов через запрос FindAgentToScan
.
URL: {{url}}/api/evo/vm/bff/graphql
Параметр | Тип данных | Обязателен | Описание |
---|---|---|---|
|
Объект |
Нет |
Параметры пагинации |
|
Целое число |
Нет |
Ограничение на количество возвращаемых результатов |
|
Целое число |
Нет |
Смещение |
|
Объект |
Нет |
Параметры сортировки |
|
Строка |
Нет |
Порядок |
|
Строка |
Нет |
Поле сортировки |
В ответ на запрос возвращаются следующие данные:
-
benchmarks
: Параметры стандартов. -
name
: Название стандарта.
FindAgentToScan
query FindAgentToScan {
findBenchmarks {
benchmarks {
name
}
}
}
{
"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
Параметр | Тип данных | Обязателен | Описание |
---|---|---|---|
|
Строка |
Да |
ID домена |
|
Строка |
Да |
ID сущности домена |
|
Объект |
Нет |
Параметры фильтра |
|
Массив [Строка] |
Нет |
Массив UUID объектов |
|
Строка |
Нет |
Сквозной поиск |
|
Строка |
Нет |
Фильтр по значению полей Параметр является сериализованным JSON-объектом и имеет следующий формат: "{\"${{логический оператор}}\":[{\"{{поле сущности}}\":{\"${{оператор сравнения}}\":\"{{значение поля}}\"}}]}" Логические операторы: Операторы сравнения: Пример 63. Пример
|
|
Объект |
Нет |
Параметры пагинации |
|
Целое число |
Нет |
Ограничение на количество возвращаемых результатов |
|
Целое число |
Нет |
Смещение |
|
Объект |
Нет |
Параметры сортировки |
|
Строка |
Нет |
Порядок |
|
Строка |
Нет |
Поле сортировки |
В ответ на запрос возвращаются следующие данные:
-
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 } }
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
}
}
}
{
"domainId": "isassets.rvision.ru",
"entityId": "Device"
}
{
"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
Параметр | Тип данных | Обязателен | Описание |
---|---|---|---|
|
Строка |
Да |
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
: Версия объекта.
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
}
}
}
{
"domainId": "isassets.rvision.ru",
"entityId": "Device",
"id": "c24c3851-edd0-485e-8c23-d1218b68ee7e"
}
{
"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
Параметр | Тип данных | Обязателен | Описание |
---|---|---|---|
|
Строка |
Да |
ID домена сущности |
|
Строка |
Да |
ID сущности |
|
Строка |
Да |
ID объекта |
|
Целое число |
Да |
Максимальный уровень вложенности связи |
|
Массив [Объект] |
Да |
Массив связей |
|
Строка |
Да |
ID домена связанной сущности |
|
Строка |
Да |
ID типа связи. Пример: "linkageId": "device_to_software" |
В ответ на запрос возвращаются следующие данные:
-
graphConnections
: Параметры связи.Пример 75. Структура данныхgraphConnections { domainId from id linkageId to }
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
}
}
}
{
"domainId": "isassets.rvision.ru",
"entityId": "Device",
"id": "c24c3851-edd0-485e-8c23-d1218b68ee7e",
"level": 1,
"relations": {
"domainId": "isassets.rvision.ru",
"linkageId": "device_to_software"
}
}
{
"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 тенанта, в котором находится сущность |
Параметр | Тип данных | Обязателен | Описание |
---|---|---|---|
|
Объект |
Да |
Параметры объекта |
|
Строка |
Да |
ID домена сущности |
|
Строка |
Да |
ID сущности |
|
Строка |
Да |
Значения полей, определенных схемой домена в формате сериализованного 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
: Версия объекта.
createObject
mutation createObject ($input: CreateObjectInput!) {
createObject (input: $input) {
createdAt
domainId
entityId
id
label
tenantId
updatedAt
values
version
}
}
{
"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}"
}
}
{
"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 тенанта, в котором находится сущность |
Параметр | Тип данных | Обязателен | Описание |
---|---|---|---|
|
Объект |
Да |
Параметры объекта |
|
Строка |
Да |
ID домена сущности |
|
Строка |
Да |
ID сущности |
|
Строка |
Да |
UUID объекта |
В ответ на мутацию возвращаются следующие данные:
-
id
: UUID объекта.
deleteObject
mutation deleteObject ($input: DeleteObjectInput!) {
deleteObject (input: $input) {
id
}
}
{
"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 тенанта, в котором находится сущность |
Параметр | Тип данных | Обязателен | Описание |
---|---|---|---|
|
Объект |
Да |
Параметры объекта |
|
Строка |
Да |
ID домена сущности |
|
Строка |
Да |
ID сущности |
|
Строка |
Да |
Значения полей, определенных схемой домена в формате сериализованного 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
: Версия объекта.
updateObject
mutation updateObject ($input: UpdateObjectInput!) {
updateObject (input: $input) {
createdAt
domainId
entityId
id
label
tenantId
updatedAt
values
version
}
}
{
"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}"
}
}
{
"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 тенанта, в котором находится сущность |
Параметр | Тип данных | Обязателен | Описание |
---|---|---|---|
|
Объект |
Да |
Параметры объекта |
|
Строка |
Да |
ID домена |
|
Строка |
Да |
ID сущности |
|
Строка |
Да |
ID объекта |
|
Массив [Объект] |
Да |
Массив связей |
|
Строка |
Да |
ID домена связанного объекта |
|
Строка |
Да |
ID типа связи. Пример: "linkageId": "device_to_software" |
|
Строка |
Да |
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 }
createObjectLinks
mutation createObjectLinks ($input: CreateObjectLinksInput!) {
createObjectLinks (input: $input) {
createdAt
domainId
id
linkageId
side1 {
domainId
entityId
id
tenantId
version
}
side2 {
domainId
entityId
id
tenantId
version
}
}
}
{
"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"
}
}
}
{
"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
Параметр | Тип данных | Обязателен | Описание |
---|---|---|---|
|
Объект |
Да |
Параметры объекта |
|
Строка |
Да |
ID домена |
|
Строка |
Да |
ID сущности |
|
Строка |
Да |
ID объекта |
|
Массив [Объект] |
Да |
Массив связей |
|
Строка |
Да |
ID домена связанного объекта |
|
Строка |
Да |
ID типа связи. Пример: "linkageId": "device_to_software" |
|
Массив [Строка] |
Да |
Массив ID связанных объектов |
В ответ на мутацию возвращаются следующие данные:
-
domainId
: ID домена. -
ids
: UUID связей. -
linkageId
: ID связи.
deleteObjectLinks
mutation deleteObjectLinks ($input: DeleteObjectLinksInput!) {
deleteObjectLinks (input: $input) {
domainId
ids
linkageId
}
}
{
"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"]
}
}
}
{
"data": {
"deleteObjectLinks": [
{
"domainId": "isassets.rvision.ru",
"ids": [
"69ac7798-e1d3-409d-87a3-f7a88346060c"
],
"linkageId": "device_to_software"
}
]
}
}
Получение учетной записи
Позволяет получить учетную запись через запрос getAccount
.
URL: {{url}}/api/evo/vm/bff/graphql
Параметр | Тип данных | Обязателен | Описание |
---|---|---|---|
|
Строка |
Да |
UUID учетной записи |
|
Строка |
Да |
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 тенанта.
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
}
}
{
"id": "007bf0d4-47a3-48c6-a884-fa52b578ef78"
}
{
"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
Параметр | Тип данных | Обязателен | Описание |
---|---|---|---|
|
Объект |
Да |
Параметры учетной записи для проверки |
|
Строка |
Нет |
UUID учетной записи |
|
Строка |
Да |
Логин учетной записи |
|
Строка |
Нет |
Пароль учетной записи |
|
Строка |
Нет |
Способ аутентификации |
|
Строка |
Нет |
Пароль закрытого ключа |
|
Строка |
Нет |
— |
|
Строка |
Да |
Тип учетной записи |
|
Объект |
Да |
— |
|
Строка |
Да |
Имя или IP устройства |
|
Целое число |
Да |
Порт подключения |
|
Строка |
Да |
UUID пространства |
|
Строка |
Да |
UUID сканера |
В ответ на запрос возвращаются следующие данные:
-
error
: Текст ошибки запроса. -
success
: Статус запроса.
checkAccount
query checkAccount ($account: CheckAccountParams!, $host: CheckAccountHostParams!, $spaceId: String!, $workloadId: String!) {
checkAccount (account: $account, host: $host, spaceId: $spaceId, workloadId: $workloadId) {
error
success
}
}
{
"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
Параметр | Тип данных | Обязателен | Описание |
---|---|---|---|
|
Объект |
Нет |
Параметры фильтра |
|
Строка |
Нет |
Название задачи |
|
Строка |
Нет |
Сквозной поиск по полям:
|
|
булево |
Нет |
Учетная запись включена |
|
Массив [Строка] |
Нет |
Массив UUID учетных записей |
|
Строка |
Нет |
UUID тенанта |
|
Объект |
Нет |
Параметры пагинации |
|
Целое число |
Нет |
Ограничение на количество возвращаемых результатов |
|
Целое число |
Нет |
Смещение |
|
Объект |
Нет |
Параметры сортировки |
|
Строка |
Нет |
Порядок |
|
Строка |
Нет |
Поле сортировки:
|
В ответ на запрос возвращаются следующие данные:
-
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 } }
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
}
}
}
}
}
{
"filter":
{
"name": "MSSQL"
}
}
{
"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
Параметр | Тип данных | Обязателен | Описание |
---|---|---|---|
|
Объект |
Да |
Параметры учетной записи |
|
Строка |
Да |
Тип учетной записи |
|
Булево |
Да |
Учетная запись включена |
|
Строка |
Да |
Описание |
|
Объект |
Да, если Тип учетной записи = СУБД |
Параметры учетной записи СУБД |
|
Строка |
Да, если Тип учетной записи = СУБД |
Название базы данных |
|
Строка |
Да, если Тип учетной записи = СУБД, Тип СУБД = MS SQL |
Экземпляр |
|
Целое число |
Да, если Тип учетной записи = СУБД |
Порт |
|
Строка |
Да, если Тип учетной записи = СУБД, Тип СУБД = Oracle |
Имя службы |
|
Строка |
Да, если Тип учетной записи = СУБД |
Тип СУБД |
|
Строка |
Да |
Логин |
|
Строка |
Да, если Метод аутентификации = Пароль |
Пароль |
|
Строка |
Да |
Название учетной записи |
|
Объект |
Да |
Повышение привилегий |
|
Объект Пример 111. Структура данных
|
Enable (для Cisco) |
Нет |
|
Объект Пример 112. Структура данных
|
Expert (для Checkpoint) |
Нет |
|
Объект Пример 113. Структура данных
|
Sudo (для Linux) |
Нет |
|
Объект Пример 114. Структура данных
|
Super (для Linux) |
Нет |
|
Строка |
Нет |
Метод аутентификации:
|
|
Строка |
Нет |
Название файла закрытого ключа |
|
Строка |
Нет |
Закрытый ключ |
|
Строка |
Нет |
Пароль закрытого ключа |
|
Строка |
Да |
Строка 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 }
createAccount
mutation createAccount ($input: CreateAccountInput!) {
createAccount (input: $input) {
error
success
tenantId
}
}
{
"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
Параметр | Тип данных | Обязателен | Описание |
---|---|---|---|
|
Объект |
Да |
— |
|
Строка |
Да |
UUID учетной записи |
В ответ на запрос возвращаются следующие данные:
-
error
: Текст ошибки запроса. -
success
: Статус запроса.
deleteAccount
mutation deleteAccount ($delete: DeleteAccountInput!) {
deleteAccount (delete: $delete) {
error
success
}
}
{
"delete": {
"id": "02210d31-1cf1-4501-abc1-94484f011348"
}
}
Редактирование учетной записи
Позволяет отредактировать учетную запись через мутацию updateAccount
.
URL: {{url}}/api/evo/vm/bff/graphql
Параметр | Тип данных | Обязателен | Описание |
---|---|---|---|
|
Объект |
Да |
Параметры учетной записи |
|
Булево |
Нет |
Учетная запись включена |
|
Строка |
Нет |
Описание |
|
Объект |
Да, если Тип учетной записи = СУБД |
Параметры учетной записи СУБД |
|
Строка |
Да, если Тип учетной записи = СУБД |
Название базы данных |
|
Строка |
Да, если Тип учетной записи = СУБД |
Экземпляр (Тип СУБД = MS SQL) |
|
Целое число |
Да, если Тип учетной записи = СУБД |
Порт |
|
Строка |
Да, если Тип учетной записи = СУБД |
Имя службы (Тип СУБД = Oracle) |
|
Строка |
Да, если Тип учетной записи = СУБД |
Тип СУБД |
|
Строка |
Да |
UUID задачи |
|
Строка |
Нет |
Логин |
|
Строка |
Нет |
Пароль |
|
Строка |
Нет |
Название |
|
Объект + Пример 120. Структура данных
|
Да |
Повышение привилегий:
|
|
Строка |
Нет |
Метод аутентификации:
|
|
Строка |
Нет |
Название файла закрытого ключа |
|
Строка |
Нет |
Закрытый ключ |
|
Строка |
Нет |
Пароль закрытого ключа |
В ответ на запрос возвращаются следующие данные:
-
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 } } }
updateAccount
mutation updateAccount ($input: UpdateAccountInput!) {
updateAccount (update: $update) {
error
success
}
}
{
"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
: Имя группы агентов.
GetAgentScanGroup
query GetAgentScanGroup {
getAgentScanGroup {
data {
id
name
}
}
}
"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
Параметр | Тип данных | Обязателен | Описание |
---|---|---|---|
|
Объект |
Нет |
Параметры пагинации |
|
Массив [Строка] |
Нет |
Массив UUID агентов |
|
Массив [Строка] |
Нет |
Статус агента:
|
|
Массив [Строка] |
Нет |
Массив UUID групп агентов, в которых состоят агенты |
|
Массив [Строка] |
Нет |
Тип ОС |
|
Строка |
Нет |
Строка поиска |
|
Строка |
Нет |
Версия агента Пример: "version": "rpoint v1.10.4.5" |
|
Строка |
Нет |
Дата регистрации: от (в формате Datetime) |
|
Строка |
Нет |
Дата регистрации: до (в формате Datetime) |
|
Строка |
Нет |
Дата последней активности (в формате Datetime) |
|
Объект |
Нет |
— |
|
Целое число |
Нет |
Ограничение на количество возвращаемых результатов |
|
Целое число |
Нет |
Смещение |
|
Объект |
Нет |
Параметры сортировки |
|
Строка |
Нет |
Поле сортировки |
|
Строка |
Нет |
Порядок |
В ответ на запрос возвращаются следующие данные:
-
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 }
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
}
}
}
{
"filter": {},
"options": {
"limit": 20
}
}
{
"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"
}
]
},
...