+++
title = "Панели HTTP API "
description = "Harvest панели HTTP API"
keywords = ["harvest", "http", "documentation", "api", "dashboard"]
aliases = ["/docs/harvest/latest/http_api/dashboard/"]
+++

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

## Идентификатор (id) против уникального идентификатора (uid)

Идентификатор (id) панели мониторинга представляет собой автоматически увеличивающееся числовое значение и уникален только для каждой установки Harvest.

Уникальный идентификатор (uid) панели мониторинга можно использовать для однозначной идентификации панели мониторинга между несколькими установками Harvest.
Он генерируется автоматически, если не указан при создании панели мониторинга. Идентификатор uid позволяет использовать согласованные URL-адреса для доступа
к панелям мониторинга и при синхронизации панелей мониторинга между несколькими установками Harvest, см. [подготовка панели мониторинга]({{<< "../administration/provisioning.md#панели мониторинга" >}})
для получения дополнительной информации. Это означает, что изменение заголовка панели мониторинга не приведет к разрыву ссылок с закладками на эту панель мониторинга.

Идентификатор пользователя может иметь максимальную длину 40 символов.

## Создание / Обновление панели мониторинга

`POST /api/dashboards/db`

Создает новую панель мониторинга или обновляет существующую панель мониторинга.

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

```http
POST /api/dashboards/db HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk

{
  "dashboard": {
    "id": null,
    "uid": null,
    "title": "Production Overview",
    "tags": [ "templated" ],
    "timezone": "browser",
    "schemaVersion": 16,
    "version": 0,
    "refresh": "25s"
  },
  "folderId": 0,
  "message": "Made changes to xyz",
  "overwrite": false
}
```

Схема тела JSON:

- ** панель мониторинга ** – Полная модель панели мониторинга, id = null для создания новой панели мониторинга.
- **dashboard.id ** – id = null для создания новой панели мониторинга.
- **dashboard.uid** – Необязательный уникальный идентификатор при создании панели мониторинга. uid = null сгенерирует новый uid.
- **Идентификатор папки** – идентификатор папки для сохранения панели мониторинга.
- ** перезапись ** – Установите значение true, если вы хотите перезаписать существующую панель мониторинга более новой версией, тем же заголовком панели мониторинга в папке или тем же uid панели мониторинга.
- ** сообщение ** - Установите сообщение о фиксации для истории версий.
- ** обновить ** - Установите интервал обновления панели мониторинга. Если это значение меньше [минимального интервала обновления]({{<relief "../administration/configuration.md#min_refresh_interval">}}), то Harvest проигнорирует его и применит минимальный интервал обновления.

Для добавления или обновления правила оповещения для панели панели мониторинга пользователь должен объявить
`dashboard.panels.блок "тревога`.

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

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

{
 "dashboard":  {
        "id": 104,
        "panels": [
            {
                "alert": {
                    "alertRuleTags": {},
                    "conditions": [
                        {
                            "evaluator": {
                                "params": [
                                    25
                                ],
                                "type": "gt"
                            },
                            "operator": {
                                "type": "and"
                            },
                            "query": {
                                "params": [
                                    "A",
                                    "5m",
                                    "now"
                                ]
                            },
                            "reducer": {
                                "params": [],
                                "type": "avg"
                            },
                            "type": "query"
                        }
                    ],
                    "executionErrorState": "alerting",
                    "for": "5m",
                    "frequency": "1m",
                    "handler": 1,
                    "name": "Panel Title alert",
                    "noDataState": "no_data",
                    "notifications": []
                },
                "aliasColors": {},
                "bars": false,
                "dashLength": 10,
                "dashes": false,
                "datasource": null,
                "fieldConfig": {
                    "defaults": {
                        "custom": {}
                    },
                    "overrides": []
                },
                "fill": 1,
                "fillGradient": 0,
                "gridPos": {
                    "h": 9,
                    "w": 12,
                    "x": 0,
                    "y": 0
                },
                "hiddenSeries": false,
                "id": 2,
                "legend": {
                    "avg": false,
                    "current": false,
                    "max": false,
                    "min": false,
                    "show": true,
                    "total": false,
                    "values": false
                },
                "lines": true,
                "linewidth": 1,
                "nullPointMode": "null",
                "options": {
                    "dataLinks": []
                },
                "percentage": false,
                "pointradius": 2,
                "points": false,
                "renderer": "flot",
                "seriesOverrides": [],
                "spaceLength": 10,
                "stack": false,
                "steppedLine": false,
                "targets": [
                    {
                        "refId": "A",
                        "scenarioId": "random_walk"
                    }
                ],
                "thresholds": [
                    {
                        "colorMode": "critical",
                        "fill": true,
                        "line": true,
                        "op": "gt",
                        "value": 50
                    }
                ],
                "timeFrom": null,
                "timeRegions": [],
                "timeShift": null,
                "title": "Panel Title",
                "tooltip": {
                    "shared": true,
                    "sort": 0,
                    "value_type": "individual"
                },
                "type": "graph",
                "xaxis": {
                    "buckets": null,
                    "mode": "time",
                    "name": null,
                    "show": true,
                    "values": []
                },
                "yaxes": [
                    {
                        "format": "short",
                        "label": null,
                        "logBase": 1,
                        "max": null,
                        "min": null,
                        "show": true
                    },
                    {
                        "format": "short",
                        "label": null,
                        "logBase": 1,
                        "max": null,
                        "min": null,
                        "show": true
                    }
                ],
                "yaxis": {
                    "align": false,
                    "alignLevel": null
                }
            }
        ],
        "title": "Update alert rule via API",
        "uid": "dHEquNzGz",
        "version": 1
    }
}
```

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

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

{
  "id":      1,
  "uid":     "cIBgcSjkk",
  "url":     "/d/cIBgcSjkk/production-overview",
  "status":  "success",
  "version": 1,
  "slug":    "production-overview" //deprecated in Harvest v5.0
}
```

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

- **200** – Созданный
- **400** – Ошибки (недопустимый json, отсутствующие или недопустимые поля и т.д.)
- **401** – Несанкционированный
- **403** – Доступ запрещен
- **412** – Предварительное условие не выполнено

В **412** код состояния используется для объяснения того, что вы не можете создать панель мониторинга и почему.
Для этого могут быть разные причины:

- Панель мониторинга была изменена кем-то другим, `статус=версия-несоответствие`
- Панель мониторинга с тем же именем в папке уже существует, `status=name-существует`
- Панель мониторинга с тем же uid уже существует, `status=name-существует`
- Панель мониторинга принадлежит плагину `<название плагина>`, `статус=плагин-панель мониторинга`

 Тело ответа будет обладать следующими свойствами:

```http
HTTP/1.1 412 Precondition Failed
Content-Type: application/json; charset=UTF-8
Content-Length: 97

{
  "message": "The dashboard has been changed by someone else",
  "status": "version-mismatch"
}
```

В случае, если заголовок уже существует, свойство `status` будет иметь значение `name-exists`.

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

`GET /api/dashboards/uid/:uid`

Вернет панель мониторинга с учетом уникального идентификатора панели мониторинга (uid).

**Пример Запроса**:

```http
GET /api/dashboards/uid/cIBgcSjkk HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
```

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

```http
HTTP/1.1 200
Content-Type: application/json

{
  "dashboard": {
    "id": 1,
    "uid": "cIBgcSjkk",
    "title": "Production Overview",
    "tags": [ "templated" ],
    "timezone": "browser",
    "schemaVersion": 16,
    "version": 0
  },
  "meta": {
    "isStarred": false,
    "url": "/d/cIBgcSjkk/production-overview",
    "slug": "production-overview" //deprecated in Harvest v5.0
  }
}
```

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

- **200** – Найденный
- **401** – Несанкционированный
- **403** – Доступ запрещен
- **404** – Не найдено

## Удалить панель мониторинга по uid

`DELETE /api/dashboards/uid/:uid`

Удалит панель мониторинга с учетом указанного уникального идентификатора (uid).

**Пример Запроса**:

```http
DELETE /api/dashboards/uid/cIBgcSjkk HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
```

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

```http
HTTP/1.1 200
Content-Type: application/json

{
  "title": "Production Overview",
  "message": "Dashboard Production Overview deleted",
  "id": 2
}
```

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

- **200** – Удалено
- **401** – Несанкционированный
- **403** – Доступ запрещен
- **404** – Не найдено

## Получает домашнюю панель управления

`GET /api/dashboards/home`

Вернет домашнюю панель управления.

**Пример Запроса**:

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

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

```http
HTTP/1.1 200
Content-Type: application/json

{
  "dashboard": {
    "editable":false,
    "hideControls":true,
    "nav":[
      {
        "enable":false,
        "type":"timepicker"
      }
    ],
    "style":"dark",
    "tags":[],
    "templating":{
      "list":[
      ]
    },
    "time":{
    },
    "timezone":"browser",
    "title":"Home",
    "version":5
  },
  "meta":	{
    "isHome":true,
    "canSave":false,
    "canEdit":false,
    "canStar":false,
    "url":"",
    "expires":"0001-01-01T00:00:00Z",
    "created":"0001-01-01T00:00:00Z"
  }
}
```

## Теги для панели мониторинга

`GET /api/dashboards/tags`

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

**Пример Запроса**:

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

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

```http
HTTP/1.1 200
Content-Type: application/json

[
  {
    "term":"tag1",
    "count":1
  },
  {
    "term":"tag2",
    "count":4
  }
]
```

## Поиск на панели мониторинга
Смотрите [API поиска по папкам/приборной панели]({{< относительная ссылка "folder_dashboard_search.md " >}}).

## Устаревшие ресурсы
Пожалуйста, обратите внимание, что эти ресурсы устарели и будут удалены в будущей версии.

### Получить панель управления с помощью пули
**Устарел, начиная с версии Harvest v5.0. Пожалуйста, обновите, чтобы вместо этого использовать новый ресурс *Get dashboard by uid***

`GET /api/dashboards/db/:slug`

Вернет панель инструментов с учетом пули панели инструментов. Slug - это удобная для URL-адресов версия заголовка панели мониторинга.
Если существует несколько панелей мониторинга с одним и тем же слагом, в ответе будет возвращена одна из них.

**Пример Запроса**:

```http
GET /api/dashboards/db/production-overview HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
```

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

```http
HTTP/1.1 200
Content-Type: application/json

{
  "dashboard": {
    "id": 1,
    "uid": "cIBgcSjkk",
    "title": "Production Overview",
    "tags": [ "templated" ],
    "timezone": "browser",
    "schemaVersion": 16,
    "version": 0
  },
  "meta": {
    "isStarred": false,
    "url": "/d/cIBgcSjkk/production-overview",
    "slug": "production-overview" // deprecated in Harvest v5.0
  }
}
```

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

- **200** – Найденный
- **401** – Несанкционированный
- **403** – Доступ запрещен
- **404** – Не найдено

### Удалить панель мониторинга с помощью slug
**Устарел, начиная с версии Harvest v5.0. Пожалуйста, обновите, чтобы вместо этого использовать ресурс *Удалить панель мониторинга по uid*.**

`DELETE /api/dashboards/db/:slug`

Удалит панель мониторинга с учетом указанного сбоя. Slug - это удобная для URL-адресов версия заголовка панели мониторинга.

**Пример Запроса**:

```http
DELETE /api/dashboards/db/test HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
```

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

```http
HTTP/1.1 200
Content-Type: application/json

{
  "title": "Production Overview",
  "message": "Dashboard Production Overview deleted",
  "id": 2
}
```

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

- **200** – Удалено
- **401** – Несанкционированный
- **403** – Доступ запрещен
- **404** – Не найдено
- **412** – Предварительное условие не выполнено

В **412** код состояния используется, когда существует несколько панелей мониторинга с одним и тем же слагом.
Тело ответа будет выглядеть следующим образом:

```http
HTTP/1.1 412 Precondition Failed
Content-Type: application/json; charset=UTF-8
Content-Length: 97

{
  "message": "Multiple dashboards with the same slug exists",
  "status": "multiple-slugs-exists"
}
```
