Поиск агентов
Запрос
| Тип | Метод |
|---|---|
POST |
/agents/search |
Описание: При выполнении запроса будут возвращены агенты сбора с учётом заданных фильтров.
Пример запроса
POST
https://127.0.0.1:9000/cm/api/v2/agents/search
Тело запроса:
| Параметр | Тип данных | Обязательность | Описание |
|---|---|---|---|
| include_fields | Array<string> |
Required | Список полей для выборки. Если модель содержит поля, не указанные в запросе, они будут отсутствовать в ответе |
| exclude_fields | Array<string> |
Required | Список полей для удаления из выборки. Если модель содержит поля, указанные в запросе, они будут отсутствовать в ответе |
| filters | Array<filters> |
Required | Список фильтров по полям модели |
| ordering | Array<ordering> |
Required | Настройки сортировки |
| virtual_search | object<virtual_search> |
Required | Поле для поиска по подстроке по всем строковым полям модели и настройка строгого поиска |
| extension_params | object<extension_params> |
Required | Информация по связанным объектам |
| relations | Array<string> |
Required | Список связей для выборки. Список доступных связей отображается в ответе запроса на получение метаданных - “/_meta” |
| limit | integer |
Required | Лимит выдачи найденных объектов |
| offset | integer |
Required | Отступ от начала результата поиска в базе |
| _relations | Array<string> |
Optional | Перечисление связанных сущностей идентификаторы которых нужно вернуть в ответе в поле _relations |
Array of filters
| Параметр | Тип данных | Обязательность | Описание |
|---|---|---|---|
| field | string |
Required | Название поля модели |
| value | object |
Required | Значение для фильтрации |
| filter_type | string |
Required | В зависимости от этого значения определяется допустимые значения в поле value. Допустимые значения:- equal -> строка|число, проверяет равенство значений - substr -> строка, проверяет вхождение подстроки - intersection -> массив (тип элемента зависит от типа поля), проверяет вхождение значения поля в переданный массив - range -> массив (тип элемента зависит от типа поля), проверяет вхождение значения поля в переданный диапазон - related -> строка или массив строк (uuid), проверят связанность с моделью по идентификатору если value: [], проверяет наличие или отсутствие связанных сущностей- exists -> значение отсутствует, проверяется равенство колонки с null |
| negation | boolean |
Optional | Флаг использования отрицания при проверке фильтра |
Array of ordering
| Параметр | Тип | Обязательность | Описание / Допустимые значения |
|---|---|---|---|
| field | string |
Required | Поле модели выбранное для сортировки |
| direction | string |
Required | Направление сортировки. Допустимые значения: - asc - desc |
Object VirtualSearch
| Параметр | Тип | Обязательность | Описание / Допустимые значения |
|---|---|---|---|
| value | string |
Required | Значение выбранное для поиска |
| strict | boolean |
Required | Опция, включающая строгий поиск. Возможные значения: - true - строгий поиск включена;- false - строгий поиск выключен. |
Object Extension_params
| Параметр | Тип | Обязательность | Описание / Допустимые значения |
|---|---|---|---|
| chidlrens_all | boolean |
Required | Получить всех детей объекта |
| parents_all | boolean |
Required | Получить цепочку родителей объекта |
Пример тела запроса
{
"include_fields": [
"string"
],
"exclude_fields": [
"string"
],
"filters": [
{
"field": "string",
"value": [
"name",
[
"value1",
"value2"
]
],
"filter_type": "equal",
"negation": false,
"extension_params": {
"children_all": true,
"parents_all": true
}
}
],
"ordering": [
{
"field": "string",
"direction": "asc"
}
],
"virtual_search": {
"value": "string",
"strict": false
},
"extension_params": {
"chidlrens_all": true,
"parents_all": true
},
"relations": [
"service_asset_findings",
"logmule_go_rules",
"user"
],
"limit": 20,
"offset": 0,
"_relations": [
"string"
]
}
Успешный ответ
Статус код: 200 – успешный ответ.
Формат: JSON.
Параметры ответа:
| Параметр | Тип данных | Описание |
|---|---|---|
| items | Array<Agent> |
Список найденных агентов сбора |
| total | integer |
Количество найденных записей |
Пример ответа
{
"items": [
{
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"created_at": "2023-12-20T00:00:01.652259Z",
"updated_at": "2023-12-20T00:00:01.652259Z",
"NodeId": "751bc283-15dd-4dbf-b6a2-af5b46ca6553",
"Port": 0,
"IsSecure": true,
"User": "string",
"Sig": "07499738-7526-400c-9356-b27c3590f210",
"CredentialId": "9d3d7489-5144-47e3-bbcf-c61791352a86",
"LicenseId": "697f9f09-23e2-4d5f-9109-d8e9d56ed064",
"version": "4.0.0.0",
"config_hash": "7ddb4b12efdefea377ea5b5cc7b2c7e4488af1e229712a3d57fdb52cb19aeaae",
"config": {
"cm_url": "https://172.30.254.70:9000/cm",
"api_key": "7f819f8f-8220-4dcd-b7e3-37c81ead8b7a",
"skip_verify": true,
"config_update_freq_sec": 30,
"secret_file": "string",
"secret_storage": "string",
"disk_usage": {
"stop_limit_pct": 95,
"restart_limit_pct": 85,
"disk_overflow_behavior": "turn_off",
"disk_check_freq_sec": 60
},
"controller": {
"port": 48000,
"inputs_grpc_port": 48006,
"senders_grpc_port": 48001
},
"journal": {
"port": 48004,
"log_level": "DEBUG",
"log_path": "C:\\log-collector\\journal.log",
"rotation_size": 100,
"max_backups": 0,
"max_age": 0
},
"api_server": {
"address": "string",
"port": 48004,
"read_timeout": 0,
"write_timeout": 0,
"enable_tls": true,
"cert_file": "string",
"key_file": "string",
"cert_key_pass": "string",
"require_client_cert": true,
"ca_file": "string",
"log_level": "DEBUG"
},
"metric_server": {
"port": 48005,
"log_level": "DEBUG"
},
"inputs": [
{
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"type": "opsec_lea_input",
"_": {
"host": null,
"poll_interval": 1,
"auth": {
"auth_port": 1024,
"auth_type": "SSLCA",
"opsec_sic_name": "string",
"opsec_sslca_file": "string",
"opsec_entity_sic_name": "string",
"opsec_sic_policy_file": "string"
},
"log_filename": "string",
"log_level": "DEBUG"
}
}
],
"routes": {
"property1": [
"string"
],
"property2": [
"string"
]
}
},
"config_generated_at": "2025-03-27T15:18:23.118238Z",
"node": {
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"created_at": "2023-12-20T00:00:01.652259Z",
"updated_at": "2023-12-20T00:00:01.652259Z",
"Ip": "string",
"Name": "master",
"Login": "root",
"Pass": "string",
"Port": 22
}
}
],
"total": 1
}
Другие возможные ответы
| Код | Ответ | Описание |
|---|---|---|
400 |
Bad Request |
Неверный тип параметра запроса, либо отсутствует обязательный параметр |
401 |
no auth header |
Не передан заголовок авторизации (PgrApiKey или Authorization) |
500 |
Internal Server Error |
Другие ошибки сервера |
Примечание: Текст ошибки не фиксированный, может изменяться в зависимости от фактического ответа получателя запроса.
Пример ответа
Код 400
{
"error": "Bad Request",
"error_code": 400
}
Код 401
{
"error": "no auth header"
"error_code": 401
}
Код 500
{
"error": "Internal Server Error",
"error_code": 500
}