Поиск инцидентов
Запрос
| Тип | Метод |
|---|---|
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. |
Object VirtualSearch
| Параметр | Тип данных | Обязательность | Описание / Допустимые значения |
|---|---|---|---|
| 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
}