Обновление табличного списка
Запрос
Тип | Метод |
---|---|
PUT |
/value_stores/update |
Описание: при выполнении запроса будет обновлена информация о табличном списке в соответствии с заданными параметрами.
Работает по принципу частичного обновления, т.е. будут обновлены только те поля модели которые были переданы в запросе.
Позволяет также управлять связями многие ко многим с другими моделями через поле _relations
.
Ключами в поле _relations
могут быть названия полей моделей ссылающиеся на другие. Например если у модели связь с моделью правил корреляции и в нем хранится объект связанного правила то это поле можно использовать при управлении данной связью.
Управление работает следующим образом:
- Если поля в объекте
_relations
отсутствуют зависимости не обновляются. - Если поле зависимости указано и в значении не пустой список идентификаторов, то связи модели приводятся к описанному состоянию.
- Если поле зависимости указано и в значении пустой список то все связи удаляются.
- Зависимости игнорируются в теле запроса.
- Зависимости в ответе всегда
null
.
Например следующий запрос:
{
"id": "uuid",
...
"_relations": {
"logmule_go_rules": [] // - очистит все связи с правилами
// "logmule_go_rules": ["uuid1", "uuid2"] // - создаст связь с 2 правилами
// "logmule_go_rules": ["uuid1"] // - оставит связь только с первым правилом
}
}
Пример запроса
PUT
http://127.0.0.1/cruddy/v2/value_stores/update
Тело запроса:
Параметр | Тип | Обязательность | Описание |
---|---|---|---|
id | string |
Required | Идентификатор хранилища (RVS, табличный список) |
name | string |
Required | Название табличного списка |
description | string |
Required | Описание табличного списка |
values_scheme | Array <ValueScheme> |
Optional | Схема значений хранилища (Json как строка) |
is_large | boolean |
Required | Флаг: используется ли хранилище под большой объем данных |
mask_values | boolean |
Required | Флаг маскировать ли значения в пользовательском интерфейсе (значения не будут показываться пользователю) |
type | string |
Required | Тип БД хранилища (на данный момент поддерживается только postgresql - “pg”) |
version | integer |
Required | Версия хранилища (автоматически увеличивается при изменениях в БД) |
source | string |
Required | Имя сервера БД, путь к файлу или папке (Не используется. По умолчанию - пустое) |
scheme | string |
Required | Схема БД |
db_name | string |
Required | Имя БД |
user | string |
Required | Имя пользователя БД (Не используется. По умолчанию - пустое) |
password | string |
Required | Пароль пользователя БД (Не используется. По умолчанию - пустое) |
store_count | integer |
Required | Количество записей в хранилище |
content | object |
Required | Контент. По умолчанию - null. |
tollerId | string |
Optional | Идентификатор трассировки |
_relations | object |
Optional |
Словарь описывающий связанные модели через идентификаторы |
_relations{logmule_go_rules} | Array<string> |
Optional |
Список идентификаторов связанных правил |
logmule_go_rules | Array <LogmuleGoRule> |
Optional | Список связанных правил |
Пример тела запроса
{
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"name": "uuid",
"description": "string",
"values_scheme": [
{
"name": "field",
"type": "int",
"is_key": false
}
],
"is_large": true,
"mask_values": true,
"type": "pg",
"version": 1,
"source": "",
"scheme": "vstore",
"db_name": "vs_111dfca1defc11faa11dc11f1d11fd11",
"user": "",
"password": "",
"store_count": 10,
"content": null,
"tollerId": "string",
"_relations": {
"logmule_go_rules": [
"497f6eca-6276-4993-bfeb-53cbbbba6f08"
]
},
"logmule_go_rules": {
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"created_at": "2023-12-20T00:00:01.652259Z",
"updated_at": "2023-12-20T00:00:01.652259Z",
"name": "string",
"frontend_data": {
"alert": {
"id": "uuid",
"trace_id": "uuid",
"name": "string",
"create_incident": true,
"assign_to_customer": true,
"risk_level": 5.35,
"asset_ip": "string",
"asset_hostname": "string",
"asset_fqdn": "string",
"asset_mac": "string",
"first_and_last_logs": false,
"trim_logs": 1,
"template": "string",
"mitre": ""
},
"grouper": {
"id": "uuid",
"trace_id": "uuid",
"name": "string",
"grouped_by": [
"string"
],
"aggregated_by": [
"string"
],
"grouped_time_field": "string",
"grouped_time_type": "2023-12-20T00:00:01.652259Z",
"detection_windows": 5,
"detection_windows_unit": "ms",
"aggregate_count": 1,
"aggregate_unique": true
},
"actions": [
{
"TTL": "string",
"key": {
"_default": {
"type": "value",
"value": "string"
}
},
"type": "store-set",
"store": "string",
"value": "string",
"column": "string"
}
],
"conditions": [
{
"type": "compare-condition",
"id": "uuid",
"parentId": null,
"negation": false,
"compareFn": "eq",
"expressions": [
{
"type": "logline-get",
"value": "string"
}
]
}
],
"version": 2
},
"test_data": [
{}
],
"settings": {
"function_metrics": false,
"is_constructor": false,
"max_alerts": 1,
"max_alerts_per_second": 1,
"max_rule_memory_mb": 1
},
"active": true,
"reload": true,
"finding_id": "uuid",
"description": "string",
"lua": "string",
"is_retro": false,
"is_system": true,
"stats": {
"result_count": 1,
"error_count": 0
},
"is_error": 0,
"running_at": "2023-12-20T00:00:01.652259Z"
}
}
Успешный ответ
Статус код: 200
– успешное обновление информации о табличном списке.
Формат: JSON
.
Тело ответа: модель обновленного табличного списка.
Пример ответа
{
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"name": "uuid",
"description": "string",
"values_scheme": [
{
"name": "field",
"type": "int",
"is_key": false
}
],
"is_large": true,
"mask_values": true,
"type": "pg",
"version": 1,
"source": "",
"scheme": "vstore",
"db_name": "vs_111dfca1defc11faa11dc11f1d11fd11",
"user": "",
"password": "",
"store_count": 10,
"content": null,
"tollerId": "string",
"_relations": {
"logmule_go_rules": [
"497f6eca-6276-4993-bfeb-53cbbbba6f08"
]
},
"logmule_go_rules": {
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"created_at": "2023-12-20T00:00:01.652259Z",
"updated_at": "2023-12-20T00:00:01.652259Z",
"name": "string",
"frontend_data": {
"alert": {
"id": "uuid",
"trace_id": "uuid",
"name": "string",
"create_incident": true,
"assign_to_customer": true,
"risk_level": 5.35,
"asset_ip": "string",
"asset_hostname": "string",
"asset_fqdn": "string",
"asset_mac": "string",
"first_and_last_logs": false,
"trim_logs": 1,
"template": "string",
"mitre": ""
},
"grouper": {
"id": "uuid",
"trace_id": "uuid",
"name": "string",
"grouped_by": [
"string"
],
"aggregated_by": [
"string"
],
"grouped_time_field": "string",
"grouped_time_type": "2023-12-20T00:00:01.652259Z",
"detection_windows": 5,
"detection_windows_unit": "ms",
"aggregate_count": 1,
"aggregate_unique": true
},
"actions": [
{
"TTL": "string",
"key": {
"_default": {
"type": "value",
"value": "string"
}
},
"type": "store-set",
"store": "string",
"value": "string",
"column": "string"
}
],
"conditions": [
{
"type": "compare-condition",
"id": "uuid",
"parentId": null,
"negation": false,
"compareFn": "eq",
"expressions": [
{
"type": "logline-get",
"value": "string"
}
]
}
],
"version": 2
},
"test_data": [
{}
],
"settings": {
"function_metrics": false,
"is_constructor": false,
"max_alerts": 1,
"max_alerts_per_second": 1,
"max_rule_memory_mb": 1
},
"active": true,
"reload": true,
"finding_id": "uuid",
"description": "string",
"lua": "string",
"is_retro": false,
"is_system": true,
"stats": {
"result_count": 1,
"error_count": 0
},
"is_error": 0,
"running_at": "2023-12-20T00:00:01.652259Z"
}
}
Другие возможные ответы
Код | Ответ | Описание |
---|---|---|
400 |
Bad Request name_already_used |
Неверный тип параметра запроса, либо отсутствует обязательный параметр Попытка присвоить объекту существующее уникальное значение атрибута |
404 |
Not Found |
Редактируемый объект не найден в БД |
409 |
name_already_used |
Попытка создать объект с существующим уникальным атрибутом |
500 |
Internal Server Error |
Другие ошибки при редактировании объекта |
Примечание: Текст ошибки не фиксированный, может изменяться в зависимости от фактического ответа получателя запроса.
Пример ответа
Код 400
{
"error": "Bad Request",
"error_code": 400
}
Код 404
{
"error": "Not Found",
"error_code": 404
}
Код 409
{
"error": "name_already_used",
"error_code": 409,
"extra": {
"fields": [
"name"
]
}
}
Код 500
{
"error": "Internal Server Error",
"error_code": 500
}