Работа с GraphQL
В данном разделе представлено описание функционала выполнения запросов, мутаций и подписок для взаимодействия с данными системы R-Vision SIEM через GraphQL API. Освещены возможности API, включая выгрузку событий, управление элементами экспертизы, функции экспорта данных. Представлены описания и примеры использования следующего функционала API.
Доступные операции:
-
Выгрузка событий: методы для извлечения данных о событиях, поддерживающие фильтрацию, сортировку и пагинацию.
-
Управление элементами экспертизы: создание, обновление, публикация и удаление элементов экспертизы.
-
Просмотр и управление каталогами: запросы для получения списка каталогов и управления ими.
-
Фильтры и сортировка: применение фильтров для уточнения запросов и настройка порядка сортировки результатов.
-
Пагинация: методы для организации данных в пагинированном виде.
Выполнение запросов
Для выполнения запросов GraphQL, учитывая, что операции GraphQL состоят из многострочного JSON, рекомендуется использовать GraphQL Explorer. В качестве альтернативы можно использовать curl или любую другую HTTP-совместимую библиотеку. Все запросы GraphQL, будь то запросы (queries), мутации (mutations) или подписки (subscriptions) передаются в теле POST-запроса в формате JSON.
Пример использования curl для выполнения GraphQL запроса:
curl -H "Authorization: Bearer YOUR_ACCESS_TOKEN" -H "x-tenant-id: YOUR_TENANT_ID" -X POST -d " \
{ \
\"query\": \"query { yourQueryHere }\" \
} \
" https://your-rvision-siem-domain/api/graphql
В этом примере:
-
YOUR_ACCESS_TOKEN
должен быть заменен на ваш фактический токен доступа к системе R-Vision SIEM. -
YOUR_TENANT_ID
должен быть заменен на идентификатор вашего тенанта в системе. -
yourQueryHere
должен быть заменен на ваш конкретный запрос GraphQL, например, запрос на получение списка событий или информации о специфическом объекте. -
URL
your-rvision-siem-domain/api/graphql
представляет собой конечную точку для доступа к GraphQL API вашей системы R-Vision SIEM и должен быть заменен на актуальный URL вашего API.
Важно корректно экранировать специальные символы в теле JSON-запроса для обеспечения его правильной обработки сервером. Внешние двойные кавычки и экранированные внутренние двойные кавычки помогают избежать ошибок при разборе запроса. |
При отсутствии необходимых разрешений у токена для доступа к запрашиваемому ресурсу, API вернет ошибку с указанием, какие разрешения необходимы для выполнения запроса.
Выгрузка событий
Позволяет осуществлять выгрузку событий через подписку exportSearch
, поддерживая фильтрацию, сортировку и пагинацию.
exportSearch
subscription {
exportSearch(
eventStorageId: String!
filters: [SearchFilter!]
limit: Int
rql: String!
timePeriod: TimePeriodInput!
) {
__typename
searchId
exportResult {
... on ExportSearchLimitWarning {
limitWarning
__typename
}
... on ExportSearchResult {
result {
... on SearchResultHeaders {
names
types
__typename
}
... on SearchResultRows {
rows
__typename
}
__typename
}
__typename
}
__typename
}
}
}
Параметр | Тип данных | Обязателен | Описание |
---|---|---|---|
|
Строка |
Да |
Идентификатор хранилища событий, указывает источник экспортируемых данных. |
|
Массив |
Да |
Список фильтров, применяемых к выгрузке. |
|
Целое число |
Нет |
Ограничение на количество возвращаемых записей. |
|
Строка |
Да |
RQL-запрос для фильтрации данных. |
|
Объект |
Да |
Временной интервал для выгрузки данных. |
Рассмотрим структуру подписки:
-
subscription
: указывает на тип операции подписки в GraphQL, позволяющее получать данные в реальном времени. -
exportSearch
: имя подписки, используемой для выгрузки данных событий. -
eventStorageId
: обязательный параметр, принимающий идентификатор хранилища событий, из которого будут экспортированы данные. -
filters
: массив фильтров, применяемых к выгрузке. Каждый фильтр задается объектомSearchFilter
, который включает поляinverted
,name
,operation
, иvalue
. -
limit
: ограничение на количество возвращаемых записей. Необязательный параметр. -
rql
: строка RQL-запроса, используемая для дополнительной фильтрации выгружаемых данных. -
timePeriod
: временной интервал, за который происходит выгрузка данных. Принимает объектTimePeriodInput
с полямиfrom
иto
, указывающими начало и конец интервала соответственно.
В ответ на подписку возвращаются следующие данные:
-
searchId
: идентификатор созданного поиска, по которому происходит выгрузка данных. -
exportResult
: объект, содержащий результат выгрузки. Может представлять предупреждение о превышении лимитаExportSearchLimitWarning
или непосредственно результаты поискаExportSearchResult
. -
ExportSearchLimitWarning
содержит полеlimitWarning
, информирующее о превышении установленного лимита записей. -
ExportSearchResult
включает в себяresult
, который может быть типомSearchResultHeaders
с информацией о заголовках и типах данных илиSearchResultRows
с собственно данными строк.
exportSearch
subscription {
exportSearch(
eventStorageId: "34b1b60a-9cce-4a64-b69a-5837a433b730",
filters: [
{
inverted: false,
name: "collectorId",
operation: EQ,
value: "'a7e7a9c3-c69e-460e-967a-1e437601fd71'"
}
],
limit: 500,
rql: "",
timePeriod: {
from: "2024-02-14T07:19:33.806Z",
to: "2024-02-14T07:20:33.806Z"
}
) {
__typename
searchId
exportResult {
... on ExportSearchLimitWarning {
limitWarning
__typename
}
... on ExportSearchResult {
result {
... on SearchResultHeaders {
names
types
__typename
}
... on SearchResultRows {
rows
__typename
}
__typename
}
__typename
}
__typename
}
}
}
Как работает данная подписка:
-
subscription
: определяет начало подписки, которая будет активно слушать изменения и отправлять данные клиенту, как только они станут доступны. -
exportSearch
: имя подписки, которое инициирует процесс выгрузки данных событий из системы. -
eventStorageId
: идентификатор хранилища событий, который указывает, откуда будут экспортироваться данные. В данном случае "34b1b60a-9cce-4a64-b69a-5837a433b730". -
filters
: список фильтров, применяемых к выгрузке. В примере используется один фильтр для поля "collectorId" с операцией сравнения EQ (равно) и значением "'a7e7a9c3-c69e-460e-967a-1e437601fd71'". Фильтр не инвертирован (inverted: false
), что означает прямое сравнение. -
limit
: ограничивает количество возвращаемых записей до 500. -
rql
: параметр, представляющий RQL-запрос для дополнительной фильтрации данных. В данном случае он пуст, что означает отсутствие дополнительных условий фильтрации. -
timePeriod
: задает временной интервал для выгрузки данных, начиная с "2024-02-14T07:19:33.806Z" и заканчивая "2024-02-14T07:20:33.806Z". -
searchId
: возвращаемый идентификатор нового поиска, который может использоваться для отслеживания процесса выгрузки. -
exportResult
: объект, содержащий результат выгрузки. Используется фрагментExportSearchResult
, который может представлять либо предупреждение о превышении лимита (ExportSearchLimitWarning
), либо непосредственно результаты поиска (ExportSearchResult
).
Параметры ExportSearchResult
и SearchResult
определяют структуру возвращаемых данных:
-
ExportSearchLimitWarning
содержитlimitWarning
, информирующее о превышении заданного лимита выгрузки. -
ExportSearchResult
включаетresult
, который далее разделяется наSearchResultHeaders
с информацией о заголовках и типах данных иSearchResultRows
с данными строк.
__typename
используется для определения конкретного типа возвращаемого объекта в ответе, что позволяет клиенту корректно обрабатывать различные типы результатов выгрузки.
Сохранение черновика элемента экспертизы
Мутация saveExpertiseDraft
позволяет сохранить черновик элемента экспертизы в системе.
saveExpertiseDraft
mutation {
saveExpertiseDraft(input: SaveExpertiseDraftInput!) {
id
sourceId
folderId
type
name
description
draft
author
status
tags
version
severity
createdAt
updatedAt
__typename
}
}
Параметр | Тип данных | Обязателен | Описание |
---|---|---|---|
|
Строка |
Да |
Идентификатор каталога, в который добавляется черновик. |
|
Строка |
Нет |
Идентификатор существующего элемента экспертизы для обновления. |
|
Строка |
Да |
Исходный код элемента экспертизы. |
|
|
Да |
Тип элемента экспертизы, определяющий его категорию или классификацию. |
Возвращаемый тип Expertise
Параметр |
Описание |
|
Уникальный идентификатор элемента экспертизы, генерируемый системой. |
|
Идентификатор источника данных для элемента экспертизы. |
|
Идентификатор каталога, к которому принадлежит объект. |
|
Тип элемента экспертизы. |
|
Название элемента экспертизы. |
|
Описание элемента экспертизы. |
|
Статус черновика объекта. |
|
Автор элемента экспертизы. |
|
Текущий статус элемента экспертизы. |
|
Массив тегов, ассоциированных с объектом. |
|
Версия элемента экспертизы. |
|
Уровень серьезности элемента экспертизы. |
|
Дата и время создания объекта. |
|
Дата и время последнего обновления объекта. |
|
Тип объекта в системе GraphQL. |
saveExpertiseDraft
mutation {
saveExpertiseDraft(input: {
folderId: "1de2e868-768c-4707-bb5e-7de4413f833f",
id: "01c3b9ef-b1fa-4ff9-a465-c89d43cb537b",
sourceCode: "Вставьте исходный код элемента экспертизы",
type: "CORRELATION_RULE"
}) {
id
sourceId
folderId
type
name
description
draft
author
status
tags
version
severity
createdAt
updatedAt
__typename
}
}
Как работает данная мутация:
-
mutation
: указывает на начало операции мутации. -
saveExpertiseDraft
: имя мутации, используемой для сохранения черновика элемента экспертизы. -
input
: параметр, который принимает данные для сохранения черновика. Эти данные упакованы в объектSaveExpertiseDraftInput
. -
SaveExpertiseDraftInput
: входной объект мутации, содержащий необходимые данные для создания или обновления черновика элемента экспертизы. Включает в себя поля, такие какfolderId
,id
,sourceCode
, иtype
. -
folderId
: идентификатор каталога, в который добавляется черновик. Этот параметр обязателен. -
id
: необязательный параметр, указывающий идентификатор существующего элемента экспертизы, если требуется обновление черновика. -
sourceCode
: текстовое содержание кода элемента экспертизы. Обязательный параметр. -
type
: тип элемента экспертизы, определяющий его функциональную принадлежность или категорию. Этот параметр обязателен.
Возвращаемые поля мутации saveExpertiseDraft
:
-
id
: уникальный идентификатор созданного или обновленного элемента экспертизы. -
sourceId
,folderId
,type
,name
,description
: основные атрибуты элемента экспертизы, включая его исходный идентификатор, принадлежность к каталогу, тип, название, и описание. -
draft
: статус черновика объекта, указывающий, находится ли объект в разработке. -
author
: автор элемента экспертизы. -
status
,tags
,version
,severity
: дополнительные атрибуты объекта, такие как его статус, теги, версия и уровень серьезности. -
createdAt
,updatedAt
: даты создания и последнего обновления элемента экспертизы. -
__typename
: служебное поле GraphQL, указывающее тип возвращаемого объекта.
Публикация версии элемента экспертизы
Мутация publishExpertise
позволяет публиковать версии элементов экспертизы, переводя их из статуса "Черновик" в статус "Опубликовано". Опубликованные объекты становятся доступными для просмотра и использования в рамках системы.
publishExpertise
mutation {
publishExpertise(input: PublishExpertiseInput!) {
id
sourceId
folderId
type
name
description
draft
author
status
tags
version
severity
createdAt
updatedAt
__typename
}
}
Параметр | Тип данных | Обязателен | Описание |
---|---|---|---|
|
Строка |
Да |
Идентификатор каталога, к которому будет принадлежать опубликованный объект. |
|
Строка |
Нет |
Идентификатор существующего черновика элемента экспертизы. |
|
Строка |
Да |
Исходный код элемента экспертизы для публикации. |
|
|
Да |
Тип элемента экспертизы, указывающий на его функциональную категорию. |
Возвращаемый тип Expertise
Параметр |
Описание |
|
Уникальный идентификатор опубликованного элемента экспертизы. |
|
Идентификатор источника данных для элемента экспертизы. |
|
Идентификатор каталога, к которому принадлежит опубликованный объект. |
|
Тип опубликованного элемента экспертизы. |
|
Название опубликованного элемента экспертизы. |
|
Описание опубликованного элемента экспертизы. |
|
Статус черновика, указывающий на стадию разработки объекта. |
|
Автор элемента экспертизы. |
|
Текущий статус опубликованного элемента экспертизы. |
|
Массив тегов, ассоциированных с элементом экспертизы. |
|
Версия элемента экспертизы. |
|
Уровень серьезности элемента экспертизы. |
|
Дата и время создания элемента экспертизы. |
|
Дата и время последнего обновления элемента экспертизы. |
|
Тип объекта в системе GraphQL. |
publishExpertise
mutation {
publishExpertise(input: {
folderId: "1de2e868-768c-4707-bb5e-7de4413f833f",
id: "01c3b9ef-b1fa-4ff9-a465-c89d43cb537b",
sourceCode: "Вставьте исходный код элемента экспертизы",
type: CORRELATION_RULE
}) {
id
sourceId
folderId
type
name
description
draft
author
status
tags
version
severity
createdAt
updatedAt
__typename
}
}
Как работает данная мутация:
-
mutation
: указывает на начало операции мутации. -
publishExpertise
: имя мутации для публикации элемента экспертизы. -
input
: параметр, принимающий данные для публикации черновика. Включает в себяfolderId
,id
(если это обновление существующего объекта),sourceCode
, иtype
. -
folderId
: идентификатор каталога для нового элемента экспертизы. -
id
: необязательный параметр, указывающий на существующий элемент экспертизы. -
sourceCode
: исходный код элемента экспертизы. -
type
: тип элемента экспертизы, определяющий его функциональную категорию.
Возвращаемые поля мутации publishExpertise
:
-
id
: уникальный идентификатор опубликованного элемента экспертизы. -
sourceId
,folderId
,type
,name
,description
: основные атрибуты элемента экспертизы, включая его исходный идентификатор, принадлежность к каталогу, тип, название и описание. -
draft
: статус объекта. -
author
: автор элемента экспертизы. -
status
,tags
,version
,severity
: дополнительные атрибуты объекта, такие как его статус, теги, версия и уровень серьезности. -
createdAt
,updatedAt
: даты создания и последнего обновления элемента экспертизы. -
__typename
: служебное поле GraphQL, указывающее тип возвращаемого объекта.
Экспорт элементов экспертизы
Запрос exportExpertise
предоставляет возможность экспортировать элементы экспертизы, определяемые их уникальными идентификаторами (UUID элемента экспертизы), позволяя пользователям системы сохранить эти данные вне системы.
exportExpertise
exportExpertise(ids: [String!]!) {
content
contentType
}
}
Параметр | Тип данных | Обязателен | Описание |
---|---|---|---|
|
Массив |
Да |
Массив значений UUID элементов экспертизы для экспорта. |
Возвращаемый тип ExportExpertiseResponse
Параметр |
Описание |
|
Содержимое экспортированных элементов экспертизы в формате base64. Клиент должен декодировать это содержимое и сохранить как файл в формате ZIP. |
|
Тип содержимого, обычно указывается как |
exportExpertise
query {
exportExpertise(ids: ["uuid1", "uuid2"]) {
content
contentType
}
}
Этот запрос инициирует экспорт элементов экспертизы с указанными UUID. В ответе предоставляется закодированное содержимое экспортированных объектов в формате base64 и тип содержимого, что позволяет клиенту обработать и сохранить данные в виде ZIP-файла.
Как работает данный запрос:
-
query
: указывает на начало операции запроса. -
exportExpertise
: имя запроса, используемого для экспорта элементов экспертизы. -
ids
: параметр запроса, представляющий собой массив UUID элементов экспертизы, которые будут экспортированы.
Возвращаемые поля мутации exportExpertise
:
-
content
: содержимое экспортированных объектов в формате base64, позволяет пользователям декодировать и сохранить информацию в виде файла. -
contentType
: тип содержимого экспорта, указывающий на формат файла (например,application/zip
для ZIP-архивов).
Просмотр каталогов
Запрос resourceFolders
предлагает обзор всех каталогов, содержащих элементы экспертизы в системе.
resourceFolders
query {
resourceFolders {
id
name
parentFolderId
createdAt
updatedAt
creator {
id
name
}
updater {
id
name
}
}
}
Возвращаемый тип ResourceFolder
Параметр |
Описание |
|
Уникальный идентификатор каталога. |
|
Название каталога. |
|
Идентификатор родительского каталога. |
|
Дата и время создания каталога. |
|
Дата и время последнего обновления каталога. |
|
Информация о пользователе, создавшем каталог. |
|
Информация о последнем пользователе, обновившем каталог. |
query {
resourceFolders {
id
name
parentFolderId
createdAt
updatedAt
creator {
name
}
updater {
name
}
}
}
Данный запрос возвращает иерархический список всех каталогов, доступных в системе, включая информацию об их создании и последних изменениях.
Просмотр элемента экспертизы
Запрос expertise
предоставляет детальную информацию о конкретном элементе экспертизы, идентифицируемом по его уникальному идентификатору в системе.
expertise
query {
expertise(id: ID!) {
id
sourceId
folderId
type
name
description
draft
author
status
tags
version
severity
createdAt
updatedAt
__typename
}
}
Параметр | Тип данных | Обязателен | Описание |
---|---|---|---|
|
ID! |
Да |
Уникальный идентификатор элемента экспертизы для получения информации. |
Возвращаемый тип Expertise
Параметр |
Описание |
|
Уникальный идентификатор элемента экспертизы. |
|
Идентификатор исходного объекта, если применимо. |
|
Идентификатор каталога, содержащего элемент экспертизы. |
|
Тип элемента экспертизы, указывающий на его функциональную категорию. |
|
Название элемента экспертизы. |
|
Описание объекта, предоставляющее детальную информацию о его содержании. |
|
Статус черновика, указывающий на текущее состояние объекта. |
|
Автор элемента экспертизы. |
|
Текущий статус объекта в системе. |
|
Массив тегов, ассоциированных с объектом. |
|
Версия элемента экспертизы, отражающая его историю изменений. |
|
Уровень серьезности объекта, определяющий его важность. |
|
Дата и время создания объекта. |
|
Дата и время последнего обновления объекта. |
|
Служебное поле GraphQL, указывающее тип возвращаемого объекта. |
Просмотр списка элементов экспертизы
Запрос expertises
обеспечивает возможность получения списка элементов экспертизы в системе R-Vision SIEM, поддерживая фильтрацию, сортировку и пагинацию для удобства навигации и анализа.
expertises
query {
expertises(
filter: ExpertisesFilterInput,
pagination: PaginationInput,
sorting: SortingInput
) {
expertises {
id
sourceId
folderId
type
name
description
draft
author
status
tags
version
severity
createdAt
updatedAt
__typename
}
pageInfo {
pagination {
limit
offset
__typename
}
totalCount
__typename
}
__typename
}
}
Параметр | Тип данных | Обязателен | Описание |
---|---|---|---|
|
|
Нет |
Параметры фильтрации для настройки списка элементов экспертизы. |
|
|
Нет |
Параметры пагинации для контроля количества отображаемых результатов. |
|
|
Нет |
Параметры сортировки для упорядочивания результатов запроса. |
Возвращаемый тип Expertises
Параметр |
Описание |
|
Список элементов экспертизы, соответствующих заданным критериям фильтрации, сортировки и пагинации. |
|
Метаинформация о странице, включая общее количество доступных объектов и параметры текущей пагинации. |
|
Общее количество элементов экспертизы, соответствующих критериям фильтрации. |
|
Служебное поле GraphQL, указывающее тип возвращаемого объекта. |
query {
expertises(
filter: {
folder: {
folderId: "1de2e868-768c-4707-bb5e-7de4413f833f",
withChildFolders: true
},
query: "",
status: ENABLED,
type: CORRELATION_RULE
},
pagination: {
limit: 100,
offset: 0
},
sorting: {
order: DESC,
orderBy: CREATED_AT
}
) {
expertises {
id
sourceId
folderId
type
name
description
draft
author
status
tags
version
severity
createdAt
updatedAt
__typename
}
pageInfo {
pagination {
limit
offset
__typename
}
totalCount
__typename
}
__typename
}
}
Этот запрос инициирует вывод списка элементов экспертизы, применяя заданные критерии фильтрации, пагинации и сортировки.
Как работает данный запрос:
-
query
: указывает на начало операции запроса. -
expertises
: имя запроса, используемое для получения списка элементов экспертизы. -
filter
: параметр, принимающий критерии фильтрации для применения к запросу. Включает:-
folder
: объект сfolderId
, указывающий на конкретный каталог, иwithChildFolders
, указывающий, следует ли включать объекты из дочерних каталогов. -
query
: строка для поиска по элементам экспертизы, в данном примере пустая, что означает отсутствие фильтрации по текстовому запросу. -
status
: фильтр по статусу объектов, в данном случаеENABLED
, что указывает на выборку активных объектов. -
type
: фильтр по типу объекта, в данном случаеCORRELATION_RULE
, ограничивающий выборку объектами определённого типа.
-
-
pagination
: объект с параметрами пагинации,limit
устанавливает максимальное количество объектов в ответе,offset
— смещение от начала списка. -
sorting
: параметры сортировки результатов запроса, в данном случае сортировка по дате создания (CREATED_AT
) в обратном порядке (DESC
).
Возвращаемые данные запроса expertises
:
-
expertises
: массив элементов экспертизы, каждый из которых содержит:-
id
,sourceId
,folderId
,type
,name
,description
,draft
,author
,status
,tags
,version
,severity
,createdAt
,updatedAt
: основные атрибуты элемента экспертизы. -
__typename
: служебное поле GraphQL, указывающее тип возвращаемого объекта.
-
-
pageInfo
: объект с информацией о пагинации и общим количеством объектов в ответе, включает:-
pagination
: внутренний объект с текущими параметрами пагинации (limit
,offset
). -
totalCount
: общее количество доступных элементов экспертизы с учётом применённых фильтров. -
__typename
: служебное поле для объекта пагинации и общего количества.
-
Удаление элемента экспертизы
Мутация deleteExpertise
позволяет удалить элемент экспертизы из системы.
deleteExpertise(input: DeleteExpertiseInput!): DeleteExpertiseResponse!
Параметр | Тип данных | Обязателен | Описание |
---|---|---|---|
|
|
Да |
Входные данные для удаления, включая |
Параметр | Тип данных | Обязателен | Описание |
---|---|---|---|
|
Строка |
Да |
Идентификатор элемента экспертизы, который требуется удалить. |
Параметр | Тип данных | Обязателен | Описание |
---|---|---|---|
|
Строка |
Да |
Идентификатор удаленного элемента экспертизы, подтверждающий успешное выполнение операции. |
Пример использования мутации для удаления экспертизы:
mutation {
deleteExpertise(input: { id: "uniqueExpertiseId" }) {
id
}
}
Этот запрос инициирует удаление элемента экспертизы с указанным идентификатором из системы. В ответе возвращается идентификатор удаленного элемента экспертизы.
Фильтры
GraphQL API системы R-Vision SIEM поддерживает использование фильтров для уточненного поиска и отбора данных, возвращаемых при выполнении запросов или подписок. Они могут быть применены к различным полям и поддерживают разнообразные операции сравнения.
Использование фильтров
Для применения фильтров в запросах или подписках, используется параметр filters
. Каждый фильтр определяет name
поля для фильтрации, operation
(тип операции), value
(значение для сравнения) и, опционально, inverted
(инвертирование условия).
query {
expertises(
filter: {
folder: {
folderId: "1de2e868-768c-4707-bb5e-7de4413f833f",
withChildFolders: true
},
query: "",
status: ENABLED
type: CORRELATION_RULE
},
pagination: {
limit: 100,
offset: 0
},
sorting: {
order: DESC,
orderBy: CREATED_AT
}
) {
expertises {
id
sourceId
folderId
type
name
description
draft
author
status
tags
version
severity
createdAt
updatedAt
__typename
}
pageInfo {
pagination {
limit
offset
__typename
}
totalCount
__typename
}
__typename
}
}
Операции сравнения
В фильтрах используются следующие операции сравнения:
-
BETWEEN
— между двумя значениями; -
EQ
— равно; -
GE
— больше или равно; -
GT
— больше; -
IN
— входит в перечень; -
LE
— меньше или равно; -
LIKE
— соответствует шаблону; -
LT
— меньше; -
NE
— не равно.
Набор доступных операторов может варьироваться в зависимости от запроса. |
Сортировка и пагинация
В GraphQL API R-Vision SIEM предусмотрены механизмы сортировки и пагинации, позволяющие управлять порядком представления данных и их разбивкой на удобные для восприятия части. Эти механизмы особенно важны при работе с запросами, возвращающими большое количество записей, например, expertises
.
Сортировка
Сортировка в запросах GraphQL API R-Vision SIEM позволяет упорядочить результаты запроса по определенным критериям. В запросе expertises
параметр sorting
используется для указания направления сортировки (order
) и поля, по которому следует сортировать (orderBy
).
Пример ниже демонстрирует, как можно запросить список экспертиз, отсортированный по дате создания (CREATED_AT
) в убывающем порядке (DESC
), с применением фильтра и пагинации:
query {
expertises(
filter: {
folder: {
folderId: "1de2e868-768c-4707-bb5e-7de4413f833f",
withChildFolders: true
},
query: "",
status: ENABLED,
type: CORRELATION_RULE
},
pagination: {
limit: 100,
offset: 0
},
sorting: {
order: DESC,
orderBy: CREATED_AT
}
) {
expertises {
id
sourceId
folderId
type
name
description
draft
author
status
tags
version
severity
createdAt
updatedAt
__typename
}
pageInfo {
pagination {
limit
offset
__typename
}
totalCount
__typename
}
__typename
}
}
Параметр | Тип | Описание |
---|---|---|
|
Перечисление |
Направление сортировки, может быть |
|
Строка |
Поле, по которому будет проводиться сортировка. |
Пагинация
Пагинация в GraphQL API R-Vision SIEM предоставляет механизм для контроля объема данных, возвращаемых в результате запроса при работе с большими наборами данных, позволяя разбивать их на управляемые "страницы".
Пример запроса ниже иллюстрирует, как получить список элементов экспертизы с использованием пагинации для ограничения количества возвращаемых записей и управления точкой начала выборки данных:
query {
expertises(
filter: {
folder: {
folderId: "1de2e868-768c-4707-bb5e-7de4413f833f",
withChildFolders: true
},
query: "",
status: ENABLED,
type: CORRELATION_RULE
},
pagination: {
limit: 100,
offset: 0
},
sorting: {
order: DESC,
orderBy: CREATED_AT
}
) {
expertises {
id
sourceId
folderId
type
name
description
draft
author
status
tags
version
severity
createdAt
updatedAt
__typename
}
pageInfo {
pagination {
limit
offset
__typename
}
totalCount
__typename
}
__typename
}
}
Параметр | Тип | Описание |
---|---|---|
|
Целое число |
Максимальное количество записей, возвращаемых за один запрос. |
|
Целое число |
Смещение от начала списка записей, с которого начинается возвращение данных. |