+++
title = "Версии панели инструментов HTTP API"
description = "Harvest Dashboard Versions HTTP API"
keywords = ["harvest", "http", "documentation", "api", "dashboard", "versions"]
aliases = ["/docs/harvest/latest/http_api/dashboardversions/"]
+++

# Версии панели мониторинга

## Получить все версии панели мониторинга

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

- ** ограничение ** - Максимальное количество возвращаемых результатов
- ** начало ** - Версия, с которой нужно начинать при возврате запросов

`GET /api/dashboards/id/:dashboardId/versions`

Возвращает все существующие версии панели мониторинга для панели мониторинга с заданным идентификатором панели мониторинга.

**Пример запроса для получения всех версий панели мониторинга**:

```http
GET /api/dashboards/id/1/versions?limit=2?start=0 HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
```

**Пример Ответа**

```http
HTTP/1.1 200 OK
Content-Type: application/json; charset=UTF-8
Content-Length: 428

[
  {
    "id": 2,
    "dashboardId": 1,
    "parentVersion": 1,
    "restoredFrom": 0,
    "version": 2,
    "created": "2017-06-08T17:24:33-04:00",
    "createdBy": "admin",
    "message": "Updated panel title"
  },
  {
    "id": 1,
    "dashboardId": 1,
    "parentVersion": 0,
    "restoredFrom": 0,
    "version": 1,
    "created": "2017-06-08T17:23:33-04:00",
    "createdBy": "admin",
    "message": "Initial save"
  }
]
```

Коды состояния:

- **200** - Хорошо
- **400** - Ошибки
- **401** - Несанкционированный
- **404** - Версия панели мониторинга не найдена

## Получить версию панели мониторинга

`GET /api/dashboards/id/:dashboardId/versions/:id`

Получите версию панели мониторинга с заданным идентификатором для панели мониторинга с заданным идентификатором.

**Пример запроса на получение версии информационной панели**:

```http
GET /api/dashboards/id/1/versions/1 HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
```

**Пример Ответа**

```http
HTTP/1.1 200 OK
Content-Type: application/json; charset=UTF-8
Content-Length: 1300

{
  "id": 1,
  "dashboardId": 1,
  "parentVersion": 0,
  "restoredFrom": 0,
  "version": 1,
  "created": "2017-04-26T17:18:38-04:00",
  "message": "Initial save",
  "data": {
    "annotations": {
      "list": [

      ]
    },
    "editable": true,
    "gnetId": null,
    "graphTooltip": 0,
    "hideControls": false,
    "id": 1,
    "links": [

    ],
    "rows": [
      {
        "collapse": false,
        "height": "250px",
        "panels": [

        ],
        "repeat": null,
        "repeatIteration": null,
        "repeatRowId": null,
        "showTitle": false,
        "title": "Dashboard Row",
        "titleSize": "h6"
      }
    ],
    "schemaVersion": 14,
    "style": "dark",
    "tags": [

    ],
    "templating": {
      "list": [

      ]
    },
    "time": {
      "from": "now-6h",
      "to": "now"
    },
    "timepicker": {
      "refresh_intervals": [
        "5s",
        "10s",
        "30s",
        "1m",
        "5m",
        "15m",
        "30m",
        "1h",
        "2h",
        "1d"
      ],
      "time_options": [
        "5m",
        "15m",
        "1h",
        "6h",
        "12h",
        "24h",
        "2d",
        "7d",
        "30d"
      ]
    },
    "timezone": "browser",
    "title": "test",
    "version": 1
  },
  "createdBy": "admin"
}
```

Коды состояния:

- **200** - Хорошо
- **401** - Несанкционированный
- **404** - Версия панели мониторинга не найдена

## Восстановить панель мониторинга

`POST /api/dashboards/id/:dashboardId/restore`

Восстанавливает панель мониторинга до заданной версии панели мониторинга.

**Пример запроса на восстановление версии панели мониторинга**:

```http
POST /api/dashboards/id/1/restore
Accept: application/json
Content-Type: application/json
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk

{
  "version": 1
}
```

JSON body schema:

- **version** - Версия панели мониторинга для восстановления до

**Пример Ответа**

```http
HTTP/1.1 200 OK
Content-Type: application/json; charset=UTF-8
Content-Length: 67

{
  "slug": "my-dashboard",
  "status": "success",
  "version": 3
}
```

Схема тела ответа JSON:

- ** slug** - дружественный URL-адрес заголовка панели мониторинга
- ** статус ** - было ли восстановление успешным или нет
- ** версия** - новая версия панели мониторинга, после восстановления

Коды состояния:

- **200** - ХОРОШО
- **401** - Несанкционированный
- **404** - Не найдено (панель мониторинга не найдена или версия панели мониторинга не найдена)
- **500** - Внутренняя ошибка сервера (указывает на проблему с извлечением тегов панели мониторинга из базы данных)

**Пример ответа на ошибку**

```http
HTTP/1.1 404 Not Found
Content-Type: application/json; charset=UTF-8
Content-Length: 46

{
  "message": "Dashboard version not found"
}
```

JSON response body schema:

- **message** - Сообщение с объяснением причины сбоя запроса.

## Сравнение версий панели мониторинга

`POST /api/dashboards/calculate-diff`

Сравнивает две версии панели мониторинга, вычисляя их разницу в формате JSON.

**Пример Ответа**

```http
POST /api/dashboards/calculate-diff HTTP/1.1
Accept: text/html
Content-Type: application/json
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk

{
  "base": {
    "dashboardId": 1,
    "version": 1
  },
  "new": {
    "dashboardId": 1,
    "version": 2
  },
  "diffType": "json"
}
```

JSON body schema:

- **база** - объект, представляющий базовую версию панели мониторинга
- **новый** - объект, представляющий новую версию панели мониторинга
- **- **Тип различия** - тип возвращаемого различия. Может быть "json" или "basic".

**Пример ответа (разница в JSON)**:

```http
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8

<p id="l1" class="diff-line diff-json-same">
  <!-- Diff omitted -->
</p>
```

Ответ представляет собой текстовое представление diff со значениями панели инструментов в формате JSON, аналогичными различиям, которые можно увидеть на таких сайтах, как GitHub или GitLab.

Коды состояния:

- **200** - Хорошо
- **400** - Неверный запрос (отправлен неверный JSON)
- **401** - Несанкционированный
- **404** - Не найдено

**Пример ответа (основное различие)**:

```http
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8

<div class="diff-group">
  <!-- Diff omitted -->
</div>
```

Ответ здесь представляет собой краткое изложение изменений, полученных в результате различия между двумя объектами JSON.

Коды состояния:

- **200** - ХОРОШО
- **400** - Неверный запрос (отправлен неверный JSON)
- **401** - Несанкционированный
- **404** - Не найдено
