Обновление инцидента
Запрос
| Тип | Метод |
|---|---|
PUT |
/service_asset_findings/update |
Описание: при выполнении запроса будет обновлена информация об инциденте в соответствии с заданными параметрами.
Метод работает по принципу частичного обновления, т. е. будут обновлены только те поля модели, которые были переданы в запросе.
При изменении lifecycle_status_id поле status синхронизируется автоматически.
Позволяет также управлять связями многие ко многим с другими моделями через поле _relations.
Ключами в поле _relations могут быть названия полей моделей, ссылающиеся на другие модели.
Управление связями работает следующим образом:
- Если поле связи в объекте
_relationsотсутствует, связь не изменяется. - Если поле связи указано и содержит непустой список идентификаторов, связи модели приводятся к указанному состоянию.
- Если поле связи указано и содержит пустой список, все соответствующие связи удаляются.
- Связанные сущности, переданные непосредственно в полях модели, игнорируются.
- Связанные сущности в ответе всегда имеют значение
null.
Пример запроса
PUT
http://127.0.0.1/cruddy/v2/service_asset_findings/update
Тело запроса
| Параметр | Тип данных | Обязательность | Описание |
|---|---|---|---|
| id | string uuid |
Required | Идентификатор обновляемого инцидента |
| created_at | string time |
Optional | Дата создания в формате date-time |
| updated_at | string time |
Optional | Дата изменения в формате date-time |
| description | string |
Optional | Подробное описание инцидента |
| risk_impact | string |
Optional | Описание последствий, которые могут возникнуть, если угроза была реализована |
| solution | string |
Optional | Рекомендации по устранению инцидента |
| mitigation | string |
Optional | Описание профилактики данного типа инцидента |
| status | string |
Optional | Состояние инцидента. При изменении lifecycle_status_id значение поля синхронизируется автоматически |
| risklevel | number |
Optional | Уровень риска. Допустимые значения от 0 до 10 |
| service_asset_id | string uuid |
Optional | Идентификатор актива, на котором обнаружен инцидент |
| finding_id | string uuid |
Optional | Идентификатор типа инцидента |
| analysis_output | string |
Optional | Результат анализа. Заполняемое поле в правиле корреляции. Например: на активе {{ .event.IP }} произошло… |
| synopsis | string |
Optional | Краткое описание сути инцидентов данного типа |
| title | string |
Optional | Название инцидента |
| risk | string |
Optional | Описание уровня риска инцидента. Допустимые значения: - none; - low; - medium; - high. |
| acknowledged_at | string time |
Optional | Дата выявления / обнаружения инцидента в формате date-time |
| alert_type | string |
Optional | Политика поведения Платформы при срабатывании правила корреляции |
| client_note | string |
Optional | Заметки клиента |
| internal_note | string |
Optional | Внутреннее примечание |
| external | boolean |
Optional | Признак возможности удалённой эксплуатации уязвимости, на основе которой создан инцидент |
| immediate_action_score | number |
Optional | Срочность инцидента |
| throughput_period | string |
Optional | Статус инцидента в логике оповещений операторов о задержке в обработке. Допустимые значения: - grace; - delay; - unacceptable. |
| throughput_period_change | string time |
Optional | Время изменения поля throughput_period в формате date-time |
| customer_created | boolean |
Optional | Флаг, указывающий, что инцидент создан пользователем, а не автоматически |
| c_visible_since | string time |
Optional | Дата и время, с которых инцидент виден пользователям |
| c_visible_since_in_days | integer |
Optional | Количество дней, в течение которых инцидент виден пользователям |
| c_reopened_count | integer |
Optional | Количество повторных открытий инцидента |
| c_last_customer_status_change | string time |
Optional | Дата и время последнего изменения статуса инцидента пользователем |
| c_customer_retention_time | integer |
Optional | Количество времени удержания клиента |
| logmule_identifier | string |
Optional | Идентификатор, который можно задать в правиле и использовать для фильтрации |
| c_remote_exploitable | boolean |
Optional | Возможность удалённого использования |
| c_occurrence_count | integer |
Optional | Количество происшествий в инциденте |
| last_occurrence_id | string uuid |
Optional | Идентификатор последнего происшествия |
| itsm_last_synced_at | string time |
Optional | Время последней синхронизации с внешней системой |
| itsm_sync_status | string |
Optional | Статус синхронизации с внешней системой. Допустимые значения: - scheduled; - aborted; - synced; - not_synced; - waiting_confirmation. |
| external_id | string |
Optional | Идентификатор инцидента во внешней клиентской системе |
| itsm_sync_error | string |
Optional | Ошибка синхронизации с внешней клиентской системой |
| user_id | string |
Optional | Идентификатор пользователя, назначенного на инцидент |
| updated_by | string |
Optional | Идентификатор пользователя, который последним обновил инцидент |
| group_id | string |
Optional | Идентификатор группы пользователей, назначенной на инцидент |
| acknowledged_by | string |
Optional | Идентификатор пользователя, который подтвердил инцидент |
| created_by_customer | string |
Optional | Идентификатор пользователя, который вручную создал инцидент |
| edited_by | string |
Optional | Идентификатор пользователя, который последним отредактировал созданный вручную инцидент |
| incident_group_id | string uuid |
Optional | Идентификатор группы инцидентов, в которую входит инцидент |
| reopened_at | string time |
Optional | Время повторного открытия инцидента |
| display_id | integer |
Optional | Идентификатор инцидента, формируемый в соответствии с последовательностью присвоения идентификаторов |
| lifecycle_status_id | string uuid |
Optional | Идентификатор статуса жизненного цикла. При изменении значения поле status синхронизируется автоматически |
| _relations | object<relations> |
Optional | Словарь, описывающий связанные модели через идентификаторы |
Relations
| Параметр | Тип данных | Обязательность | Описание |
|---|---|---|---|
| occurrences | Array<string> |
Optional | Идентификаторы происшествий |
| custom_field_values | Array<string> |
Optional | Идентификаторы значений дополнительных полей |
| comments | Array<string> |
Optional | Идентификаторы комментариев |
| documents | Array<string> |
Optional | Идентификаторы связанных документов |
| messages | Array<string> |
Optional | Идентификаторы связанных сообщений пользователей |
| service_asset_finding_status_changes | Array<string> |
Optional | Идентификаторы связанных операций изменения статуса инцидента |
| service_asset_groups | Array<string> |
Optional | Идентификаторы связанных групп активов |
Пример тела запроса
{
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"description": "Обновленное описание инцидента",
"lifecycle_status_id": "57e93f65-9db5-4b3c-8761-f3edd8ac8276"
}
При передаче lifecycle_status_id отдельно изменять поле status не требуется — его значение синхронизируется автоматически.
Пример изменения связей:
{
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"_relations": {
"occurrences": [
"8d6bf02f-aab2-4fbc-ab53-ee5963306be7"
],
"messages": []
}
}
В данном примере:
- список связанных происшествий будет приведён к переданному состоянию;
- все связи инцидента с сообщениями будут удалены.
Успешный ответ
Статус код: 200 – успешное обновление информации об инциденте.
Формат: JSON.
Тело ответа: модель обновлённого инцидента.
Связанные сущности в ответе имеют значение null.
Пример ответа
{
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"description": "Обновленное описание инцидента",
"risk_impact": "string",
"solution": "string",
"mitigation": "string",
"status": "working_customer",
"risklevel": 5,
"service_asset_id": "09122f07-8b1e-48dc-96fd-379806f6c51e",
"created_at": "2023-12-20T00:00:01.652259Z",
"updated_at": "2023-12-20T01:00:01.652259Z",
"finding_id": "feebf65a-2eaa-4fae-aab2-772450efdffe",
"analysis_output": "string",
"synopsis": "string",
"title": "string",
"risk": "medium",
"acknowledged_at": "2023-12-20T00:00:01.652259Z",
"alert_type": "automatic",
"client_note": "string",
"internal_note": "string",
"external": false,
"immediate_action_score": 0,
"throughput_period": "grace",
"throughput_period_change": "2023-12-20T00:00:01.652259Z",
"customer_created": false,
"c_visible_since": "2023-12-20T00:00:01.652259Z",
"c_visible_since_in_days": 0,
"c_reopened_count": 0,
"c_last_customer_status_change": "2023-12-20T00:00:01.652259Z",
"c_customer_retention_time": 0,
"logmule_identifier": "string",
"c_remote_exploitable": true,
"c_occurrence_count": 0,
"last_occurrence_id": "92c2542a-a9bb-4370-b835-20b1c9ac1fe9",
"itsm_last_synced_at": "2023-12-20T00:00:01.652259Z",
"itsm_sync_status": "scheduled",
"external_id": "string",
"itsm_sync_error": "string",
"user_id": "a169451c-8525-4352-b8ca-070dd449a1a5",
"updated_by": "deea00dc-b6b6-4412-a483-26ac61e1f6fe",
"group_id": "306db4e0-7449-4501-b76f-075576fe2d8f",
"acknowledged_by": "57e93f65-9db5-4b3c-8761-f3edd8ac8276",
"created_by_customer": "d299b51b-03f1-4b72-b793-1fb027d05389",
"edited_by": "9501acb5-3be0-4719-a60e-dfa79624666c",
"incident_group_id": "5ce55b8d-2342-4286-bf58-bfe807f8c05c",
"reopened_at": "2023-12-20T00:00:01.652259Z",
"display_id": 0,
"lifecycle_status_id": "57e93f65-9db5-4b3c-8761-f3edd8ac8276",
"service_asset": null,
"finding": null,
"last_occurrence_entity": null,
"user": null,
"group": null,
"incident_group": null,
"occurrences": null,
"custom_field_values": null,
"comments": null,
"documents": null,
"messages": null,
"service_asset_finding_status_changes": null,
"service_asset_groups": null
}
Другие возможные ответы
| Код | Ответ | Описание |
|---|---|---|
400 |
Bad Request |
Неверный тип параметра запроса, отсутствует обязательный параметр, неверно указан Pgr-User-ID или передан несовместимый ключ статуса жизненного цикла |
401 |
Unauthorized |
Невозможно аутентифицировать пользователя |
404 |
Not Found |
Редактируемый объект не найден в БД |
409 |
Conflict |
Невозможно получить информацию о пользователе |
500 |
Internal Server Error |
Другие ошибки сервера или указанный статус жизненного цикла не найден / не относится к инцидентам |
Возможные ошибки:
400—"missing uid header"— отсутствует заголовокPgr-User-ID;400—"Pgr-User-Id should be uuid format"— неверный форматPgr-User-ID;400—"Bad Request"— неверный тип параметра запроса либо отсутствует обязательный параметр;400—"unknown lifecycle status key ... for service_asset_finding"— несовместимый ключ статуса жизненного цикла;401—"can't get user info:"— невозможно аутентифицировать пользователя;404—"not found"— редактируемый объект не найден в БД;409—"can't get user info:"— невозможно получить информацию о пользователе;500—"Internal Server Error"— другие ошибки сервера;500—"lifecycle_status_id ... not found for entity_type service_asset_finding"— статус не найден или не принадлежит инцидентам.
Примечание: Текст ошибки не фиксированный и может изменяться в зависимости от фактического ответа на запрос.
Пример ответа с кодом 400
{
"error": "Bad Request",
"error_code": 400
}
Пример ответа с кодом 401
{
"error": "can't get user info:",
"error_code": 401
}
Пример ответа с кодом 404
{
"error": "not found",
"error_code": 404
}
Пример ответа с кодом 409
{
"error": "can't get user info:",
"error_code": 409
}
Пример ответа с кодом 500
{
"error": "Internal Server Error",
"error_code": 500
}