Создание категории
Запрос
Тип | Метод |
---|---|
POST |
/report_category/create |
Описание: При выполнении запроса будет создана категория для хранения отчетов.
Позволяет также управлять связями многие ко многим с другими моделями через поле _relations
.
Ключами в поле _relations
могут быть названия полей моделей, ссылающиеся на другие. Например, если у модели связь с моделью правил корреляции и в нем хранится объект связанного правила, то это поле можно использовать при управлении данной связью.
Управление работает следующим образом:
- Если поля в объекте
_relations
отсутствуют, то зависимости не обновляются; - Если поле зависимости указано и в значении не пустой список идентификаторов, то связи модели приводятся к описанному состоянию;
- Если поле зависимости указано и в значении пустой список, то все связи удаляются;
- Зависимости игнорируются в теле запроса;
- Зависимости в ответе всегда
null
.
Например, следующий запрос:
{
"name": "Test",
...
"_relations": {
"reports": [] // - очистит все связи с отчетами
// "reports": ["uuid1", "uuid2"] // - создаст связь с 2 отчетами
// "reports": ["uuid1"] // - оставит связь только с первым отчетом
}
}
Пример запроса
POST
http://127.0.0.1/cruddy/v2/report_category/create
Тело запроса:
Параметр | Тип данных | Обязательность | Описание |
---|---|---|---|
name | string |
Required | Название категории |
parent_id | string |
Optional | Идентификатор родительской категории |
_relations | object |
Optional | Словарь, описывающий связанные модели через идентификаторы |
_relations{children} | Array<string> |
Optional | Массив идентификаторов вложенных категорий отчетов |
_relations{reports} | Array<string> |
Optional | Массив идентификаторов связанных отчетов |
Пример тела запроса
{
"name": "string",
"parent_id": "string",
"_relations": {
"children": [
"497f6eca-6276-4993-bfeb-53cbbbba6f08"
],
"reports": [
"497f6eca-6276-4993-bfeb-53cbbbba6f08"
]
}
}
Успешный ответ
Статус код: 201
– успешное создание.
Формат: JSON
Тело ответа: модель категории для хранения отчетов.
Пример ответа
{
"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",
"reports": [
{
"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": [
"string"
]
}
}
],
"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": [
"string"
]
}
}
],
"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"
}
}
],
"children": [
{
"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"
}
],
"_relations": {
"children": [
"497f6eca-6276-4993-bfeb-53cbbbba6f08"
],
"reports": [
"497f6eca-6276-4993-bfeb-53cbbbba6f08"
]
}
}
Другие возможные ответы
Код | Ответ | Описание |
---|---|---|
400 |
1. Bad Request 2. missing uid header 3. Pgr-User-Id should be uuid format 4. missing mandatory field: name |
1. Неверный тип параметра запроса, либо отсутствует обязательный параметр 2. Не передан заголовок Pgr-User-ID 3. Недопустимый формат Pgr-User-ID 4. Не передано название категории |
401 |
unauthorized |
Ошибки авторизации |
500 |
Internal Server Error |
Другие ошибки при удалении объектов |
Примечание: Текст ошибки не фиксированный, может изменяться в зависимости от фактического ответа получателя запроса.
Пример ответа
Код 400
{
"error": "Bad Request",
"error_code": 400
}
Код 401
{
"error": "can't get user info: {\\\"error\\\":\\\"invalid_token\\\",\\\"error_description\\\":\\\"Token verification failed\\\"}\nor \n{ \"error\": \"unauthorized\", \"error_code\": 401 }",
"error_code": 401
}
Код 500
{
"error": "Internal Server Error",
"error_code": 500
}