Перейти к содержанию

Обновление правила разбора

Запрос

Тип Метод
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
}