API снимков

Note

Starting in Grafana 13, /api endpoints are being deprecated in favor of the /apis route. Note that while Grafana is working on migrating existing APIs, currently there may not be an exact match to the legacy API you’re using.

This change doesn’t disrupt or break your current setup. Legacy APIs are not being disabled and remain fully accessible and operative, but /api routes will no longer be updated.

To learn more refer to the new API structure in Grafana.

Создание нового снимка

POST /api/snapshots

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

http
    POST /api/snapshots HTTP/1.1
    Accept: application/json
    Content-Type: application/json
    Authorization: Bearer <SERVICE_ACCOUNT_TOKEN>

    {
      "dashboard": {
        "editable":false,
        "nav":[
        {
          "enable":false,
        "type":"timepicker"
        }
        ],
        "rows": [
          {

          }
        ],
        "style":"dark",
        "tags":[],
        "templating":{
          "list":[
          ]
        },
        "time":{
        },
        "timezone":"browser",
        "title":"Home",
        "version":5
        },
      "expires": 3600
    }

Схема тела JSON:

  • dashboard — обязательно. Полная модель дашборда.
  • name — необязательно. Имя снимка
  • expires — необязательно. Когда снимок должен истечь, в секундах. 3600 — это 1 час, 86400 — 1 день. По умолчанию срок действия не истекает.
  • external — необязательно. Сохранить снимок на внешнем сервере, а не локально. По умолчанию false.
  • key — необязательно. Задаёт уникальный ключ. Обязательно, если external равно true.
  • deleteKey — необязательно. Уникальный ключ, используемый для удаления снимка. Он отличается от key, чтобы только создатель мог удалить снимок. Обязательно, если external равно true.

Note

При создании снимка через API необходимо предоставить полную полезную нагрузку дашборда, включая данные снимка. Эта конечная точка предназначена для интерфейса Grafana.

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

http
    HTTP/1.1 200
    Content-Type: application/json
    {
      "deleteKey":"XXXXXXX",
      "deleteUrl":"myurl/api/snapshots-delete/XXXXXXX",
      "key":"YYYYYYY",
      "url":"myurl/dashboard/snapshot/YYYYYYY",
      "id": 1
    }

Ключи:

  • deleteKey — ключ, созданный для удаления снимка
  • key — ключ, созданный для обмена дашбордом

Получение списка снимков

GET /api/dashboard/snapshots

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

  • query — поисковый запрос
  • limit — ограничение числа возвращаемых результатов. По умолчанию 1000, если не задано или передано недопустимое значение.

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

http
GET /api/dashboard/snapshots HTTP/1.1
Accept: application/json
Authorization: Bearer <SERVICE_ACCOUNT_TOKEN>

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

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

[
  {
    "id":8,
    "name":"Home",
    "key":"YYYYYYY",
    "orgId":1,
    "userId":1,
    "external":false,
    "externalUrl":"",
    "expires":"2200-13-32T25:23:23+02:00",
    "created":"2200-13-32T28:24:23+02:00",
    "updated":"2200-13-32T28:24:23+02:00"
  }
]

Получение снимка по ключу

GET /api/snapshots/:key

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

http
GET /api/snapshots/YYYYYYY HTTP/1.1
Accept: application/json
Authorization: Bearer <SERVICE_ACCOUNT_TOKEN>

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

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

{
  "meta":{
    "isSnapshot":true,
    "type":"snapshot",
    "canSave":false,
    "canEdit":false,
    "canStar":false,
    "slug":"",
    "expires":"2200-13-32T25:23:23+02:00",
    "created":"2200-13-32T28:24:23+02:00"
  },
  "dashboard": {
    "editable":false,
    "nav": [
      {
        "enable":false,
        "type":"timepicker"
      }
    ],
    "rows": [
      {

      }
    ],
    "style":"dark",
    "tags":[],
    "templating":{
      "list":[
      ]
    },
    "time":{
    },
    "timezone":"browser",
    "title":"Home",
    "version":5
  }
}

Удаление снимка по ключу

DELETE /api/snapshots/:key

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

http
DELETE /api/snapshots/YYYYYYY HTTP/1.1
Accept: application/json
Authorization: Bearer <SERVICE_ACCOUNT_TOKEN>

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

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

{"message":"Snapshot deleted. It might take an hour before it's cleared from any CDN caches.", "id": 1}

Удаление снимка по deleteKey

Этот вызов API можно использовать без аутентификации, применяя секретный ключ удаления для снимка.

GET /api/snapshots-delete/:deleteKey

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

http
GET /api/snapshots-delete/XXXXXXX HTTP/1.1
Accept: application/json

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

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

{"message":"Snapshot deleted. It might take an hour before it's cleared from any CDN caches.", "id": 1}