Обновление правила разбора
Запрос
Тип | Метод |
---|---|
PUT |
/sources_pipelines/update |
Описание: при выполнении запроса будет обновлена информация о правиле разбора в соответствии с заданными параметрами.
Работает по принципу частичного обновления, т.е. будут обновлены только те поля модели, которые были переданы в запросе.
Из поля normalizers
создаются/обновляются связи с полями события (маппинг). Для поиска маппинга используется поле normalizers.field
, если маппинг не найден, создаётся новый с параметрами
{
"field_path": "<normalizers.field>",
"type": "<normalizers.type>"
}
Связи с полями событий, не указанными в normalizers
, удаляются.
Пример запроса
PUT
http://127.0.0.1/cruddy/v2/sources_pipelines/update
Тело запроса:
Параметр | Тип | Обязательность | Описание |
---|---|---|---|
id | string |
Required | Идентификатор правила разбора |
name | string |
Required | Название правила разбора |
source_id | string |
Required | Идентификатор источника, события от которого обрабатываются правилом разбора |
raw | string |
Required | Пример сырого события от источника |
is_active | boolean |
Required | Признак, активно ли правило при разборе событий от источника |
is_root | boolean |
Required | Признак, является ли правило безусловно применяемым для источника |
order | integer |
Required | Порядок исполнения правила при разборе событий от источника |
filters | Array <Filters> |
Required | Фильтры потока событий от источника |
parsers | Array <Parsers> |
Required | Механизмы разбора событий |
normalizers | Array <Normalizers> |
Required | Механизмы нормализации разобранных событий |
Модель данных Filters
Параметр | Тип | Обязательность | Описание |
---|---|---|---|
id | string |
Required | Идентификатор фильтра |
field | string |
Required | Поле для проверки |
ignore_case | boolean |
Required | Флаг сравнения строк без учета регистра |
method | string |
Required | Функция сравнения |
negation | string |
Required | Флаг отрицания результата фильтра |
order | integer |
Required | Порядок применения фильтра |
status | integer |
Required | Состояние фильтра |
expressions | Array<object> |
Required | Выражения фильтра |
Модель данных Parsers
Параметр | Тип | Обязательность | Описание |
---|---|---|---|
id | string |
Required | Идентификатор механизма разбора |
type | string |
Required | Тип механизма разбора |
field | string |
Required | Поле для разбора |
method | string |
Required | Функция механизма разбора |
negation | string |
Required | Метод разбора |
order | integer |
Required | Порядок применения механизма разбора |
status | integer |
Required | Состояние механизма разбора |
expressions | Array<object> |
Required | Выражения механизма разбора |
Модель данных Normalizers
Параметр | Тип | Обязательность | Описание |
---|---|---|---|
id | string |
Required | Идентификатор механизма нормализации |
field | string |
Required | Поле события |
type | string |
Required | Тип поля |
method | string |
Required | Метод нормализации |
order | integer |
Required | Порядок исполнения механизма нормализации |
status | integer |
Required | Статус механизма нормализации |
value | string |
Required | Значение |
fn | string |
Required | Функция нормализации |
params_fn | Array<string> |
Required | Параметры функции (поле отсутствует, если пустое) |
req | boolean |
Required | Признак, обязательно ли исполнение механизма нормализации |
field_path_stops | Array<string> |
Required | Элементы поля (field разбитое по ”.“) |
field_path_len | integer |
Required | Число элементов поля |
Пример тела запроса
{
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"name": "string",
"source_id": "ae50a35c-df42-4eff-ba26-f8bc28d2af81",
"raw": "string",
"is_active": true,
"is_root": true,
"order": 0,
"filters": [
{
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"field": "string",
"ignore_case": true,
"method": "string",
"negation": "string",
"order": 0,
"status": 0,
"expressions": [
{}
]
}
],
"parsers": [
{
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"type": "string",
"field": "string",
"method": "string",
"order": 0,
"status": 0,
"expressions": [
{}
]
}
],
"normalizers": [
{
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"field": "string",
"type": "string",
"method": "string",
"order": 0,
"status": 0,
"value": "string",
"fn": "string",
"params_fn": [
"string"
],
"req": true,
"field_path_stops": [
"string"
],
"field_path_len": 0
}
]
}
Успешный ответ
Статус код: 200
– успешное обновление информации о правиле разбора.
Формат: JSON
.
Тело ответа: модель обновленного правила разбора.
Пример ответа
{
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"created_at": "2023-12-20T00:00:01.652259Z",
"updated_at": "2023-12-20T00:00:01.652259Z",
"name": "string",
"source_id": "ae50a35c-df42-4eff-ba26-f8bc28d2af81",
"raw": "string",
"is_active": true,
"is_root": true,
"order": 0,
"filters": [
{
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"field": "string",
"ignore_case": true,
"method": "string",
"negation": "string",
"order": 0,
"status": 0,
"expressions": [
{}
]
}
],
"parsers": [
{
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"type": "string",
"field": "string",
"method": "string",
"order": 0,
"status": 0,
"expressions": [
{}
]
}
],
"normalizers": [
{
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"field": "string",
"type": "string",
"method": "string",
"order": 0,
"status": 0,
"value": "string",
"fn": "string",
"params_fn": [
"string"
],
"req": true,
"field_path_stops": [
"string"
],
"field_path_len": 0
}
]
}
Другие возможные ответы
Код | Ответ | Описание |
---|---|---|
400 |
Bad Request |
Неверный тип параметра запроса, либо отсутствует обязательный параметр |
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
}