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

Поиск инцидентов

Запрос

Тип Метод
POST /service_asset_findings/search

Описание: при выполнении запроса будут возвращены найденные инциденты с учётом заданных фильтров.

По умолчанию связанные модели с типами связей many2many и has-many не загружаются. Чтобы загрузить связанные модели, их необходимо указать в поле relations.

Поле _relations позволяет дополнительно получить идентификаторы связанных сущностей. Для этого в одноимённом поле запроса необходимо указать список связанных моделей.

Для связей, отличных от один-к-одному, поле _relations расширяет relations: сущности, указанные в _relations, будут представлены в одноимённом поле ответа независимо от того, указаны ли они в relations.

Пример запроса

POST

http://127.0.0.1/cruddy/v2/service_asset_findings/search

Тело запроса:

Параметр Тип данных Обязательность Описание
include_fields Array<string> Required Список полей для выборки. Если модель содержит поля, не указанные в запросе, они будут отсутствовать в ответе
exclude_fields Array<string> Required Список полей, которые необходимо исключить из выборки. Указанные поля будут отсутствовать в ответе
filters Array<filters> Required Список фильтров по полям модели
ordering Array<ordering> Required Настройки сортировки
virtual_search object<virtual_search> Required Настройки поиска по подстроке по строковым полям модели
extension_params object<extension_params> Required Дополнительные параметры работы со связанными объектами
relations Array<string> Required Список связанных моделей, которые необходимо загрузить в ответе. Список доступных связей можно получить с помощью запроса /_meta
limit integer Required Максимальное количество объектов в ответе
offset integer Required Отступ от начала результатов поиска
_relations Array<string> Optional Список связанных сущностей, идентификаторы которых необходимо вернуть в поле _relations ответа
Array of filters
Параметр Тип данных Обязательность Описание
field string Required Название поля модели
value object Required Значение, используемое для фильтрации
filter_type string Required Тип фильтра. Допустимые значения:
- equal — строка или число, проверяет равенство значений;
- substr — строка, проверяет вхождение подстроки;
- intersection — массив, проверяет вхождение значения поля в переданный массив;
- range — массив, проверяет вхождение значения поля в переданный диапазон;
- related — строка или массив строк UUID, проверяет наличие связи с моделью по идентификатору. Если передано value: [], проверяется наличие или отсутствие связанных сущностей;
- exists — значение отсутствует, проверяется равенство поля null
negation boolean Optional Флаг отрицания результата проверки фильтра
extension_params object<extension_params> Required Дополнительные параметры работы со связанными объектами
Array of ordering
Параметр Тип данных Обязательность Описание / Допустимые значения
field string Required Поле модели, используемое для сортировки
direction string Required Направление сортировки. Допустимые значения:
- asc;
- desc.
Параметр Тип данных Обязательность Описание / Допустимые значения
value string Required Значение для поиска
strict boolean Required Опция строгого поиска. Возможные значения:
- true — строгий поиск включён;
- false — строгий поиск выключен.
Object Extension_params
Параметр Тип данных Обязательность Описание
children_all boolean Required Получить всех дочерних объектов
parents_all boolean Required Получить цепочку родительских объектов
Пример тела запроса

{
  "include_fields": [
    "id",
    "title",
    "status",
    "risklevel"
  ],
  "exclude_fields": [],
  "filters": [
    {
      "field": "status",
      "value": "new",
      "filter_type": "equal",
      "negation": false,
      "extension_params": {
        "children_all": false,
        "parents_all": false
      }
    }
  ],
  "ordering": [
    {
      "field": "created_at",
      "direction": "desc"
    }
  ],
  "virtual_search": {
    "value": "string",
    "strict": false
  },
  "extension_params": {
    "children_all": false,
    "parents_all": false
  },
  "relations": [
    "service_asset",
    "finding"
  ],
  "limit": 20,
  "offset": 0,
  "_relations": [
    "occurrences",
    "messages"
  ]
}

В приведённом примере:

  • поиск выполняется среди инцидентов со статусом new;
  • результаты сортируются по дате создания в порядке убывания;
  • возвращается не более 20 инцидентов;
  • в ответ загружаются связанные актив и тип инцидента;
  • в поле _relations возвращаются идентификаторы связанных происшествий и сообщений.

Успешный ответ

Статус код: 200 – успешный ответ.

Формат: JSON.

Параметры ответа:

Параметр Тип данных Описание
items Array<ServiceAssetFinding> Список найденных инцидентов
total integer Общее количество найденных инцидентов
Пример ответа

{
  "items": [
    {
      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
      "title": "string",
      "status": "new",
      "risklevel": 5,
      "service_asset_id": "09122f07-8b1e-48dc-96fd-379806f6c51e",
      "finding_id": "feebf65a-2eaa-4fae-aab2-772450efdffe",
      "_relations": {
        "occurrences": [
          "8d6bf02f-aab2-4fbc-ab53-ee5963306be7"
        ],
        "messages": [
          "3194e023-c19f-4a42-9172-9e18d68e3a3a"
        ]
      }
    }
  ],
  "total": 1
}

Другие возможные ответы

Код Ответ Описание
400 Bad Request Неверный тип параметра запроса, отсутствует обязательный параметр или некорректно указан Pgr-User-ID
401 Unauthorized Невозможно аутентифицировать пользователя
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" — неверный тип параметра запроса либо отсутствует обязательный параметр;
  • 401"can't get user info:" — невозможно аутентифицировать пользователя;
  • 500"Internal Server Error" — другие ошибки сервера.

Примечание: Текст ошибки не фиксированный и может изменяться в зависимости от фактического ответа на запрос.

Пример ответа с кодом 400

{
  "error": "Bad Request",
  "error_code": 400
}

Пример ответа с кодом 401

{
  "error": "can't get user info:",
  "error_code": 401
}

Пример ответа с кодом 500

{
  "error": "Internal Server Error",
  "error_code": 500
}