Обновление данных о ПО
Запрос
Тип | Метод |
---|---|
PUT |
/software/update |
Описание: при выполнении запроса будет обновлена информация о ПО в соответствии с заданными параметрами.
Работает по принципу частичного обновления, т.е. будут обновлены только те поля, которые были переданы в запросе.
Позволяет также управлять связями многие ко многим с другими моделями через поле _relations
.
В поле _relations
в качестве ключей могут быть указаны названия полей моделей, которые ссылаются на другие модели. Например, если модель связана с моделью актива и в ней хранится объект связанного правила, то это поле можно использовать для управления данной связью.
Управление работает следующим образом:
- Если поля в объекте
_relations
отсутствуют, то зависимости не обновляются; - Если поле зависимости указано и в значении не пустой список идентификаторов, то связи модели приводятся к описанному состоянию;
- Если поле зависимости указано и в значении пустой список то все связи удаляются;
- Связанные сущности игнорируются в теле запроса;
- Связанные сущности в ответе всегда null.
Например следующий запрос:
{
"id": "uuid",
...
"_relations": {
"service_assets": [] // - очистит все связи с активами
// "service_assets": ["uuid1", "uuid2"] // - создаст связь с 2 активами
// "service_assets": ["uuid1"] // - оставит связь только с первым активами
}
}
Тело запроса:
Параметр | Тип | Обязательность | Описание |
---|---|---|---|
id | string |
Required | Идентификатор ПО |
name | string |
Required | Название ПО |
raw_output_line | string |
Optional | Необработанная строка данных (уникальное значение) |
version | string |
Optional | Версия |
release | string |
Optional | Релиз - информация о технике сборки ПО (билде). При создании из результата сканирования, совпадает с version . При сканировании ПО, не заполняется. |
os | string |
Optional | Операционная система |
display_name | string |
Optional | Название клиента (отображается в деталях инцидента) |
description | string |
Optional | Описание |
software_group_id | string |
Optional | Идентификатор группы ПО |
_relations | object |
Optional | Словарь описывающий связанные модели через идентификаторы |
_relations{service_assets} | Array<string> |
Optional | Идентификаторы связанных активов |
Пример тела запроса
{
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"name": "string",
"raw_output_line": "string",
"version": "string",
"release": "string",
"os": "string",
"display_name": "string",
"description": "string",
"software_group_id": "d7939ec9-4754-44e2-b522-27172eae4658",
"_relations": {
"service_assets": [
"497f6eca-6276-4993-bfeb-53cbbbba6f08"
]
}
}
Успешный ответ
Статус код: 200
– успешное обновление информации о ПО.
Формат: JSON
.
Тело ответа: модель обновленного ПО.
Пример ответа
{
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"created_at": "2023-12-20T00:00:01.652259Z",
"updated_at": "2023-12-20T00:00:01.652259Z",
"trace_id": "uuid",
"name": "string",
"raw_output_line": "string",
"version": "string",
"release": "string",
"os": "string",
"display_name": "string",
"description": "string",
"software_group_id": "d7939ec9-4754-44e2-b522-27172eae4658",
"tsvector": "'17':4,12 '17.5.2.1':8,16,17 'driver':3,11 'for':5,13 'microsoft':1,9 'odbc':2,10 'server':7,15 'sql':6,14",
"assets_count": 0,
"is_group": true,
"software_count": 0,
"software_group": {
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"created_at": "2023-12-20T00:00:01.652259Z",
"updated_at": "2023-12-20T00:00:01.652259Z",
"trace_id": "uuid",
"name": "Новая группа ПО",
"description": "Описание новой группы ПО",
"add_new_software_versions": false
},
"service_assets": [
{
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"created_at": "2023-12-20T00:00:01.652259Z",
"updated_at": "2023-12-20T00:00:01.652259Z",
"trace_id": "uuid",
"type": "Host",
"name": "Актив",
"description": "Описание актива",
"coordinates": "--- []",
"active": true,
"scan_id": "9a59f0f5-5572-476d-a7fc-c960ef43a5af",
"value": 3,
"client_note": "string",
"internal_note": "string",
"location": "string",
"network_exposure": 3,
"responsible_person": "string",
"technical_specialist": "string",
"responsible_group_id": "2d40d7ca-3218-4132-89ef-42e29379a567",
"edited_by": "9501acb5-3be0-4719-a60e-dfa79624666c"
}
],
"_relations": {
"service_assets": [
"497f6eca-6276-4993-bfeb-53cbbbba6f08"
]
}
}
Другие возможные ответы
Код | Ответ | Описание |
---|---|---|
400 |
Bad Request |
Неверный тип параметра запроса, либо отсутствует обязательный параметр |
404 |
Not Foundd |
Редактируемый объект не найден в БД |
409 |
Name_already_used |
Попытка присвоить объекту существующее уникальное значение атрибута raw_output_line |
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
}