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

Поиск отчетов

Запрос

Тип Метод
POST /reports/archive/search

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

По умолчанию в объекты не загружаются связанные модели по типам связи many2many , для включения загрузки их нужно указывать в поле relations объекта запроса. У данной модели нет связей один-ко-многим, поэтому в ответе поле _relations всегда равно {}.

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

POST
http://127.0.0.1/cruddy/v2/reports/archive/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 Поле для поиска по подстроке по всем строковым полям модели и настройка строгого поиска
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 В зависимости от этого значения определяется допустимые значения в поле value. Допустимые значения:
- equal -> строка|число, проверяет равенство значений
- substr -> строка, проверяет вхождение подстроки
- intersection -> массив (тип элемента зависит от типа поля), проверяет вхождение значения поля в переданный массив
- range -> массив (тип элемента зависит от типа поля), проверяет вхождение значения поля в переданный диапазон
- related -> строка или массив строк (uuid), проверят связанность с моделью по идентификатору
если value: [], проверяет наличие или отсутствие связанных сущностей
- exists -> значение отсутствует, проверяется равенство колонки с null
negation boolean Optional Флаг использования отрицания при проверке фильтра
Array of ordering
Параметр Тип Обязательность Описание / Допустимые значения
field string Required Поле модели выбранное для сортировки
direction string Required Направление сортировки. Допустимые значения:
- asc
- desc
Параметр Тип Обязательность Описание / Допустимые значения
value string Required Значение выбранное для поиска
strict boolean Required Опция, включающая строгий поиск. Возможные значения:
- true - строгий поиск включена;
- false - строгий поиск выключен.
Пример тела запроса

{
  "include_fields": [
    "string"
  ],
  "exclude_fields": [
    "string"
  ],
  "filters": [
    {
      "field": "string",
      "value": [
        "name",
        [
          "value1",
          "value2"
        ]
      ],
      "filter_type": "equal",
      "negation": false
    }
  ],
  "ordering": [
    {
      "field": "string",
      "direction": "asc"
    }
  ],
  "virtual_search": {
    "value": "string",
    "strict": false
  },
  "relations": [
    "service_asset_findings",
    "logmule_go_rules",
    "user"
  ],
  "limit": 20,
  "offset": 0,
  "_relations": [
    "string"
  ]
}

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

Статус код: 200 – успешный ответ. Возвращаются только отчеты, к которым пользователь имеет доступ (напрямую или через группы пользователей). Для проверки доступа используется связанный отчёт.

Формат: JSON.

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

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

{
  "items": [
    {
      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
      "created_at": "2023-12-20T00:00:01.652259Z",
      "updated_at": "2023-12-20T00:00:01.652259Z",
      "name": "string",
      "storage_id": "b393bdc8-beeb-473d-b930-952d1433f9f9",
      "file_id": "8a0cfb4f-ddc9-436d-91bb-75133c583767",
      "report_id": "5ed7905a-4735-4cf7-b1ab-521e066fb971",
      "task_id": "736fde4d-9029-4915-8189-01353d6982cb",
      "report": {
        "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
        "created_at": "2023-12-20T00:00:01.652259Z",
        "updated_at": "2023-12-20T00:00:01.652259Z",
        "name": "string",
        "config": {
          "pages": [
            [
              {}
            ]
          ]
        },
        "settings": {
          "general": {
            "period": [
              "2019-08-24T14:15:22Z"
            ],
            "name_mask": "string"
          },
          "header": {
            "show": true,
            "text": "string",
            "show_on_all_pages": true,
            "color": "string",
            "text_align": "right",
            "image": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAA...",
            "fit": "fit",
            "image_align": "string"
          },
          "footer": {
            "show": true,
            "show_on_first_page": true,
            "text": "string",
            "color": "string",
            "show_date": true,
            "show_page_number": true,
            "text_align": "right",
            "date_align": "string",
            "page_number_align": "string",
            "image": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAA...",
            "fit": "fit",
            "image_align": "string"
          },
          "style": {
            "font": "OpenSans-ExtraBoldItalic"
          }
        },
        "is_system": false,
        "category": {
          "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
          "created_at": "2023-12-20T00:00:01.652259Z",
          "updated_at": "2023-12-20T00:00:01.652259Z",
          "name": "string",
          "parent_id": "string"
        },
        "dashboard": {
          "id": "uuid",
          "created_at": "2023-12-20T00:00:01.652259Z",
          "updated_at": "2023-12-20T00:00:01.652259Z",
          "name": "string",
          "config": {
            "grid": [
              {}
            ],
            "period": [
              "now-1",
              "now"
            ]
          },
          "owner": {
            "id": "uuid",
            "email": "string",
            "first_name": "string",
            "last_name": "string",
            "username": "string"
          },
          "users": [
            {
              "id": "uuid",
              "email": "string",
              "first_name": "string",
              "last_name": "string",
              "username": "string"
            }
          ],
          "user_ids": [
            "uuid"
          ],
          "groups": [
            {
              "id": "uuid",
              "name": "string",
              "parent_group": "string",
              "realm_id": "string",
              "email": "string",
              "phone_number": "string",
              "leader_id": "string",
              "accept_risk": true,
              "visible_scan_schedules": true,
              "stop_scans": true,
              "edited_by": "string",
              "user_ids": [
                "uuid"
              ]
            }
          ],
          "group_ids": [
            "uuid"
          ],
          "widgets": [
            {
              "id": "uuid",
              "created_at": "2023-12-20T00:00:01.652259Z",
              "updated_at": "2023-12-20T00:00:01.652259Z",
              "name": "string",
              "config": {
                "type": "string",
                "settings": {
                  "kind": "histogram",
                  "base": {
                    "name": "Гистрограмма",
                    "showHeading": true,
                    "description": "string"
                  },
                  "legend": {
                    "placement": "string",
                    "show": true
                  },
                  "settings": {
                    "type": "bar",
                    "lineStyle": "linear",
                    "showDots": true,
                    "stack": true,
                    "theme": "string"
                  },
                  "mappings": {
                    "xAxis": {
                      "field": "string",
                      "customRange": true,
                      "customRangeValues": [
                        "string"
                      ],
                      "useUnknownValues": true
                    },
                    "yAxis": {
                      "field": "string",
                      "groupingField": "string"
                    },
                    "normalizationStrategy": "fix"
                  }
                },
                "series": [
                  {
                    "name": "string",
                    "mode": "string",
                    "source": "string",
                    "period": [
                      "now-1",
                      "now"
                    ],
                    "sql": "string",
                    "query": {
                      "dataset": "string",
                      "distinct": true,
                      "fields": [
                        {
                          "field": "string",
                          "alias": "string",
                          "format": "string",
                          "aggregation": {
                            "func": "string",
                            "distinct": true,
                            "args": [
                              null
                            ]
                          }
                        }
                      ],
                      "filters": [
                        {
                          "field": "string",
                          "negation": false,
                          "operator": "is",
                          "value": "string"
                        }
                      ],
                      "group_by": [
                        "string"
                      ],
                      "limit": 20,
                      "offset": 0,
                      "order_by": [
                        {
                          "direction": "asc",
                          "field": "string"
                        }
                      ],
                      "interval": "1y"
                    }
                  }
                ]
              },
              "settings": {
                "settings": {
                  "kind": "histogram",
                  "base": {
                    "name": "Гистрограмма",
                    "showHeading": true,
                    "description": "string"
                  },
                  "legend": {
                    "placement": "string",
                    "show": true
                  },
                  "settings": {
                    "type": "bar",
                    "showDots": true,
                    "text": "string",
                    "image": "string",
                    "fit": "string"
                  },
                  "mappings": {
                    "xAxis": {
                      "field": "string",
                      "customRange": true,
                      "customRangeValues": [
                        "string"
                      ]
                    },
                    "yAxis": {
                      "field": "string"
                    },
                    "fields": [
                      {
                        "label": "string",
                        "key": "string"
                      }
                    ],
                    "field": "string",
                    "dataSeries": "string"
                  }
                },
                "period": [
                  "now-1",
                  "now"
                ],
                "series": [
                  {
                    "name": "string",
                    "mode": "string",
                    "source": "string",
                    "period": [
                      "now-1",
                      "now"
                    ],
                    "sql": "string",
                    "query": {
                      "dataset": "string",
                      "distinct": true,
                      "fields": [
                        {
                          "field": "string",
                          "alias": "string",
                          "format": "string",
                          "aggregation": {
                            "func": "string",
                            "distinct": true,
                            "args": [
                              null
                            ]
                          }
                        }
                      ],
                      "filters": [
                        {
                          "field": "string",
                          "negation": false,
                          "operator": "is",
                          "value": "string"
                        }
                      ],
                      "group_by": [
                        "string"
                      ],
                      "limit": 20,
                      "offset": 0,
                      "order_by": [
                        {
                          "direction": "asc",
                          "field": "string"
                        }
                      ],
                      "interval": "1y"
                    }
                  }
                ]
              },
              "dashboard_id": "uuid"
            }
          ]
        },
        "owner": {
          "id": "uuid",
          "email": "string",
          "first_name": "string",
          "last_name": "string",
          "username": "string"
        },
        "users": [
          {
            "id": "uuid",
            "email": "string",
            "first_name": "string",
            "last_name": "string",
            "username": "string"
          }
        ],
        "groups": [
          {
            "id": "uuid",
            "name": "string",
            "parent_group": "string",
            "realm_id": "string",
            "email": "string",
            "phone_number": "string",
            "leader_id": "string",
            "accept_risk": true,
            "visible_scan_schedules": true,
            "stop_scans": true,
            "edited_by": "string",
            "user_ids": [
              "uuid"
            ]
          }
        ],
        "task": {
          "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
          "created_at": "2023-12-20T00:00:01.652259Z",
          "updated_at": "2023-12-20T00:00:01.652259Z",
          "interval": "* 0 1 1 1",
          "instance": "868cf2e9-bd6d-4bac-96ba-2b08120d8cf9"
        }
      },
      "task": {
        "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
        "created_at": "2023-12-20T00:00:01.652259Z",
        "updated_at": "2023-12-20T00:00:01.652259Z",
        "interval": "* 0 1 1 1",
        "instance": "868cf2e9-bd6d-4bac-96ba-2b08120d8cf9"
      }
    }
  ],
  "total": 1
}

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

Код Ответ Описание
400 Bad Request Неверный тип параметра запроса, либо отсутствует обязательный параметр
500 Internal Server Error Другие ошибки сервера

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

Пример ответа
Код 400

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

Код 500

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