Incident Manager API
Примеры ответов сокращены: повторяющиеся объекты и поля, не влияющие на понимание структуры, не приведены. Персональные данные и сведения об инфраструктуре обезличены.
Point In Time
Для корректной работы пагинации перед запросом инцидентов и результатов агрегаций необходимо запросить Point In Time (PIT). При переключении страниц Incident Manager PIT должен остаться прежним, в ином случае необходимо запросить новый PIT, а старый удалить при помощи запроса к API.
Количество активных 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-запрос, сформированный на основе поисковой строки. |
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, в ответе всегда будут возвращаться документы из актуальной версии индекса.
Additional Fields
Параметр additional_fields используется для передачи пользовательских фильтров. Он представляет собой массив объектов, содержащих поля name, type и value.
| Название | Синтаксис | Описание |
|---|---|---|
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
}
Параметры аналогичны запросу инцидентов и результатов агрегаций.
Пример ответа
[
{
"severity": "2",
"result_count": 350
},
{
"severity": "3",
"result_count": 92
},
{
"severity": "4",
"result_count": 6
},
{
"severity": "1",
"result_count": 4
}
]
Результаты агрегаций
Получение результата агрегации и инцидентов по ID результата агрегации
GET _im/aggregations/results?incident_aggregation_result_id={id}
Пример запроса и ответа
GET _im/aggregations/results?incident_aggregation_result_id=AGG-260914-222
{
"incident_agg_result": {
"_meta": {
"from_system": false,
"id": "AGG-260914-222"
},
"aggregation_info": {
"severity": "2",
"workflow_id": "initial-workflow",
"id": "MA:_Podozritelnoe_povedenie_polzovatelya",
"status": "init"
},
"mitre_fields": [
{
"severity": "high",
"job_id": "RULE_-_MA_-_Sysmon_-_OS_Credential_Dumping",
"layers": ["<layer_id>"],
"technique_id": ["T1003"]
}
],
"incident_identifiers": [
"INC-260914-499249",
"INC-260914-499248"
],
"incidents_count": 9,
"status": "init"
},
"incidents": {
"INC-260914-499249": {
"_meta": {
"id": "INC-260914-499249"
},
"incident_title": "Suspicious activity on workstation-01",
"severity": "2",
"aggregation_id": "MA:_Podozritelnoe_povedenie_polzovatelya",
"status": "init"
}
}
}
Получение всех результатов агрегации по ID агрегации
GET _im/aggregations/results?incident_aggregation_id={id}
Пример запроса и ответа
GET _im/aggregations/results?incident_aggregation_id=MA:_Podozritelnoe_povedenie_polzovatelya
[
{
"incident_agg_result": {
"_index": ".sm_incident_aggregation_results-2026.38",
"_meta": {
"id": "AGG-260916-226"
},
"aggregation_info": {
"id": "MA:_Podozritelnoe_povedenie_polzovatelya",
"severity": "2",
"status": "init"
},
"incident_identifiers": [
"INC-260916-500281",
"INC-260916-500280"
],
"incidents_count": 5
},
"incidents": {
"INC-260916-500281": {
"_meta": {
"id": "INC-260916-500281"
},
"severity": "2",
"status": "init"
}
}
}
]
Получение всех результатов агрегаций
GET _im/aggregations/results
Пример ответа
[
{
"_index": ".sm_incident_aggregation_results-2026.38",
"_meta": {
"id": "AGG-260916-226"
},
"aggregation_info": {
"id": "MA:_Podozritelnoe_povedenie_polzovatelya",
"severity": "2",
"status": "init"
},
"incident_identifiers": [
"INC-260916-500281",
"INC-260916-500280"
],
"incidents_count": 5,
"closed": false
}
]
Обновление результата агрегации
PUT _im/aggregations/result/{incident_aggregation_id}/{incident_aggregation_result_id}?sync={bool}
{
"<field_name>": "<new_value>"
}
В тело запроса необходимо передавать только измененные поля, например:
{
"comment": "тестовый комментарий",
"reviewer": "test"
}
При значении параметра sync=true при изменении полей status, workflow_id, severity, comment и reviewer в результате агрегации эти поля также изменятся в инцидентах, содержащихся в агрегации.
Пример запроса и ответа
PUT _im/aggregations/result/MA:_Podozritelnoe_povedenie_polzovatelya/AGG-260914-222?sync=false
{
"comment": "API update test"
}
Updated aggregation result with id: AGG-260914-222
Получение данных MITRE ATT&CK по ID инцидента
Запрос возвращает сведения о техниках MITRE ATT&CK®, связанных с инцидентом. Эти данные не формируются из полей карточки инцидента: источником служат документы в индексе .smos_mitre-*, созданные активным действием Фиксация техник MITRE ATT&CK®.
Чтобы связать запись MITRE ATT&CK® с инцидентом, в одном срабатывании задания действие Фиксация техник MITRE ATT&CK® должно выполняться после действия Создание инцидента. В этом случае Smart Monitor автоматически добавляет в запись поле incident_id.
| Поле | Описание |
|---|---|
incident_id | Идентификатор связанного инцидента. |
@timestamp | Время создания записи о срабатывании техники. |
custom_fields | Поля результата, переданные активным действием. Состав зависит от настроек задания. |
layers | Идентификаторы слоев MITRE ATT&CK®, выбранных в активном действии. |
rule | Название корреляционного правила. |
technique_id | Идентификаторы техник MITRE ATT&CK®, выбранных в активном действии. |
GET _im/incidents/{incident_id}/mitre
Пример запроса и ответа
GET _im/incidents/INC-260915-499823/mitre
[
{
"incident_id": "INC-260915-499823",
"@timestamp": "2026-09-15T10:07:19.500+0300",
"custom_fields": {
"host.ip": "192.0.2.10",
"image": "C:\\Windows\\System32\\example.exe",
"process_id": "595533",
"user.name": "user01",
"host.name": "workstation-01"
},
"layers": ["<layer_id>"],
"rule": "RULE - MA - Sysmon - System Time Discovery",
"technique_id": ["T1124"]
}
]
CRUD для инцидентов
Получение инцидента по ID
GET _im/incidents/{incident_id}
Пример запроса и ответа
GET _im/incidents/INC-260915-499823
{
"incident_type": "default",
"workflow_id": "initial-workflow",
"_index": ".smos_incident-smart_sec-2026.38",
"_meta": {
"id": "INC-260915-499823"
},
"incident_title": "System time discovery on workstation-01",
"severity": "2",
"is_aggregated": false,
"reviewer": "empty",
"tags": [
{
"type": "mitre",
"value": "T1124"
}
],
"incident_category_id": "smart_sec",
"_id": "INC-260915-499823",
"status": "init"
}
Получение всех инцидентов
GET _im/incidents/
Пример ответа
[
{
"incident_type": "default",
"workflow_id": "initial-workflow",
"_index": ".smos_incident-smart_sec-2026.38",
"_meta": {
"id": "INC-260916-500293"
},
"incident_title": "System time discovery on workstation-01",
"severity": "2",
"incident_category_id": "smart_sec",
"_id": "INC-260916-500293",
"status": "init"
}
]
При запросе всех инцидентов с помощью параметров GET можно указывать фильтры.
Например, для запроса инцидентов за последний час, у которых поле test_field равно 5, можно использовать следующий запрос:
GET _im/incidents?start_time=now-1h&end_time=now&test_field=5
Создание инцидента
POST _im/incidents/{incident_id}
В теле запроса необходимо передать данные нового инцидента. Значение _meta.id должно совпадать с incident_id в пути запроса.
Пример запроса и ответа
POST _im/incidents/INC-260915-900001
{
"_meta": {
"id": "INC-260915-900001"
},
"incident_type": "default",
"incident_category_id": "smart_sec",
"incident_title": "API test incident",
"incident_description": "Incident created to test the Incident Manager API",
"severity": "2",
"status": "init",
"workflow_id": "initial-workflow",
"reviewer": "empty",
"damage": "0",
"source_events": "no",
"is_aggregated": false,
"aggregation_id": "",
"incident_index_suffix": "",
"drilldown_type": "",
"drilldown_context": "",
"comment": "",
"info": "",
"line": "",
"log": "",
"division": ["IT"],
"user_sm": ["Все"],
"fields": {},
"order_fields": [],
"inventory": [],
"tags": []
}
{
"message": "created"
}
Обновление инцидента
PUT _im/incidents/{incident_id}
В тело запроса необходимо передавать только измененные поля и _meta, например:
{
"_meta": {
"id": "i59eb2be0-1841-11ef-9ffd-ad0f43d0acc5"
},
"comment": "тестовый комментарий",
"reviewer": "test"
}
Удаление инцидента
DELETE _im/incidents/{incident_id}
Пример запроса и ответа
DELETE _im/incidents/INC-260915-900001
deleted
Bulk обновление инцидентов
POST _im/incidents/bulkUpdate
Тело запроса передается в формате NDJSON: операция update и объект doc располагаются на отдельных строках. После последней строки должен быть перевод строки.
Пример запроса и ответа
POST _im/incidents/bulkUpdate
{"update":{"_index":".smos_incident-smart_sec-2026.38","_id":"INC-260914-499249"}}
{"doc":{"comment":"API bulk update test","_meta":{"id":"INC-260914-499249"}}}
OK
docВ тело запроса необходимо передавать только измененные поля и _meta.