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

Обновление данных о ПО

Запрос

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