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

Копирование рабочего стола

Запрос

Тип Метод
POST /dashboards/{id}/copy

Описание: При выполнении запроса будет создана копия выбранного рабочего стола. Запрос выполняется со следующими особенностями:

  • Копирование рабочего стола доступно его владельцу, либо пользователям, которым открыт доступ по ID или группе.
  • Скопированному рабочему столу присваивается имя “name-Копия N”, где:
    • name - имя копируемого рабочего стола;
    • N - порядковый номер копии (максимум - 50 копий)
      • При получении ошибки SC 500 “can’t select name for dashboard copy:” необходимо изменить название ранее созданных копий или удалить их.
  • Скопированный рабочий стол наследует все настройки, виджеты, права доступа для пользователей и групп.
  • Владельцем скопированного рабочего стола назначается пользователь, который инициировал копирование.
Пример запроса

POST
http://127.0.0.1/cruddy/v2/dashboards/{id}/copy

Path параметры запроса:

Параметр Описание
{id} Идентификатор рабочего стола

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

Статус код: 201 - успешное создание значения дополнительного поля.

Формат: JSON.

Тело ответа: модель скопированного рабочего стола.

Пример ответа

{
  "id": "uuid",
  "created_at": "2023-12-20T00:00:01.652259Z",
  "updated_at": "2023-12-20T00:00:01.652259Z",
  "trace_id": "uuid",
  "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",
      "trace_id": "uuid",
      "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"
    }
  ]
}

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

Код Ответ Описание
400 Bad Request
id is empty
missing uid header
Неверный тип параметра запроса, либо отсутствует обязательный параметр
Не передан ID рабочего стола
Не передан заголовок “Pgr-User-ID”
404 Not Found Рабочий стол не найден или у пользователя отсутствуют права доступа к рабочему столу
500 Internal Server Error
failed to get user groups
can’t select name for dashboard copy
Другие ошибки при создании объекта
Не определена группа пользователя, копирующего рабочий стол
Достигнут максимум количества копий (50)

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

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

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

Код 404

{
  "error": "Not Found",
  "error_code": 404
}

Код 500

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