Перейти к основному содержимому
Версия: 4.1

Incident Manager API

Point In Time

Для корректной работы пагинации перед запросом инцидентов и результатов агрегаций необходимо запросить Point In Time (PIT). При переключении страниц Incident Manager PIT должен остаться прежним, в ином случае необходимо запросить новый PIT, а старый удалить при помощи запроса к API.

Удаление PIT

Количество активных PIT в системе ограничено, поэтому если PIT более не актуален, необходимо выполнить запрос на его удаление.

Запрос PIT

Для получения PIT для запроса инцидентов и результатов агрегаций необходимо выполнить следующий запрос:

GET _im/incidents/pit

Для получения PIT для запроса только инцидентов, необходимо добавить в запрос флаг is_show_aggs=false:

GET _im/incidents/pit?is_show_aggs=false

Удаление PIT

Когда PIT становится неактуальным (например пользователь закрыл Incident Manager, обновил фильтры и т.д.), его необходимо удалить.

DELETE _im/incidents/pit
{
"id": "{pit_id}"
}

Получение инцидентов и результатов агрегаций

Общий вид запроса для получения инцидентов и результатов агрегаций:

GET _im/incidents_full_types
{
"pit": "pit_id",
"from": 0,
"size": 25,
"search_query": "{\"match_all\":{}}",
"additional_fields": [],
"end_time": "now",
"start_time": "now-1d",
"with_total_docs" : true,
"is_show_aggs" : true
}
НазваниеСинтаксисОписание
pit<string>Point In Time, полученный при запросе PIT.
from<int>Начальный индекс для поиска.
size<int>Количество результатов в ответе.
search_query<string>DSL query, сформированный на основе поисковой строки.
additional_fields<array>см. Additional Fields.
start_time<string>Начальная временная метка поиска.
end_time<string>Конечная временная метка поиска.
with_total_docs<bool>При значении true дополнительно возвращает поле total_docs, содержащее общее количество документов.
is_show_aggs<bool>При значении true возвращает инциденты и результаты агрегаций, при значении false только инциденты.
Запрос без PIT

Если в запросе не указать PIT, в ответе всегда будут возвращаться документы из актуальной версии индекса.

Additional Fields

Параметр additional_fields используется для передачи пользовательских фильтров. Он представляет собой массив объектов, содержащих поля name, type и value.

НазваниеCинтаксисОписание
name<string>Название поля для фильтрации.
type<string>Тип поля. Допустимы значения number, text, select, multiselect.
value<string>Значение фильтра.
Множественный выбор

При type=multiselect поле value должно иметь не строковый тип, а массив строк.

Пример заполнения additional_fields

[
{
"name": "select_field",
"type": "select",
"value": "test"
},
{
"name": "text_field",
"type": "text",
"value": "test*"
},
{
"name": "multiselect_field",
"type": "multiselect",
"value": ["t1", "t2"]
}
]

Получение статистики инцидентов и результатов агрегаций

Общий вид запроса для получения статистики инцидентов и результатов агрегаций:

POST  _im/incidents_full_types/stats/severity
{
"search_query": "{\"match_all\":{}}",
"additional_fields": [],
"end_time": "now",
"start_time": "now-1d",
"is_show_aggs" : true
}

Параметры аналогичны запросу инцидентов и результатов агрегаций

Результаты агрегаций

Получение результата агрегации и инцидентов по id результата агрегации

GET _im/aggregations/results?incident_aggregation_result_id={id}

Получение всех результатов агрегации по id агрегации

GET _im/aggregations/results?incident_aggregation_id={id}

Получение всех результатов агрегаций

GET _im/aggregations/results

Обновление результата агрегации

PUT _im/aggregations/results/{incident_aggregation_id}/{incident_aggregation_result_id}?sync={bool}
{

}
предупреждение

В тело запроса необходимо передавать только измененные поля, например:

{
"comment": "тестовый комментарий",
"reviewer": "test"
}
Sync

При значении параметра sync=true при изменении полей status, workflow_id, severity, comment и reviewer в результате агрегации, они также изменятся и в инцидентах, содержащихся в агрегации.

Получение MITRE по id инцидента

GET _im/incidents/{incident_id}/mitre

CRUD для инцидентов

Получение инцидента по id

GET _im/incidents/{incident_id}

Получение всех инцидентов

GET _im/incidents/
Фильтры

При запросе всех инцидентов при помощи параметров GET запроса можно указывать фильтры инцидентов.

Например, для запроса инцидентов за последний час, у которых поле test_field равно 5, можно использовать следующий запрос:

GET _im/incidents?start_time=now-1h&end_time=now&test_field=5

Создание инцидента

POST _im/incidents/{incident_id}

Обновление инцидента

PUT _im/incidents/{incident_id}
предупреждение

В тело запроса необходимо передавать только измененные поля и _meta, например:

{
"_meta": {
"id": "i59eb2be0-1841-11ef-9ffd-ad0f43d0acc5"
},
"comment": "тестовый комментарий",
"reviewer": "test"
}

Удаление инцидента

DELETE _im/incidents/{incident_id}

Bulk обновление инцидентов

POST _im/incidents/bulkUpdate

Формат аналогичен обычному bulk запросу к OpenSearch. Пример запроса:

POST _im/incidents/bulkIpdate
{"update":{"_index":".smos_incident-2024.21","_id":"i59eb2be0-1841-11ef-9ffd-ad0f43d0acc5"}}
{"doc":{"reviewer":"test","status":"in_work_incident","_meta":{"id":"i59eb2be0-1841-11ef-9ffd-ad0f43d0acc5"}}}
предупреждение

В тело запроса необходимо передавать только измененные поля и _meta.