API элементов библиотек
Note
Starting in Grafana 13,
/apiendpoints are being deprecated in favor of the/apisroute. 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
/apiroutes will no longer be updated.To learn more refer to the new API structure in Grafana.
Идентификатор (id) и уникальный идентификатор (uid)
Идентификатор (ID) элемента библиотеки — это автоинкрементное числовое значение, уникальное для каждой установки Grafana.
Уникальный идентификатор (UID) элемента библиотеки однозначно идентифицирует элементы библиотек между несколькими установками Grafana. Он генерируется автоматически, если вы не указали его при создании элемента библиотеки. UID обеспечивает согласованные URL для доступа к элементам библиотек и при синхронизации элементов библиотек между несколькими установками Grafana.
Максимальная длина UID — 40 символов.
Получение всех элементов библиотек
GET /api/library-elements
Возвращает список всех элементов библиотек, которые аутентифицированный пользователь имеет право просматривать. Используйте параметр запроса perPage, чтобы управлять максимальным количеством возвращаемых элементов библиотек; предел по умолчанию — 100. Также можно использовать параметр запроса page, чтобы получить элементы библиотек с любой страницы, кроме первой.
Параметры запроса:
searchString: часть имени или описания, по которой выполняется поиск.kind: тип элемента для поиска. Используйте1для библиотечных панелей.sortDirection: порядок сортировки элементов. Используйтеalpha-ascдля возрастающего иalpha-descдля убывающего порядка сортировки.typeFilter: разделённый запятыми список типов для фильтрации элементов.excludeUid: UID элемента, который нужно исключить из результатов поиска.folderFilter: устарел. Разделённый запятыми список ID папок для фильтрации элементов. Используйте вместо негоfolderFilterUIDs.folderFilterUIDs: разделённый запятыми список UID папок для фильтрации элементов.perPage: количество результатов на странице; по умолчанию 100.page: страница для набора записей, учитывая, что за раз возвращается толькоperPageзаписей. Нумерация начинается с1.
Пример запроса:
GET /api/library-elements?perPage=10 HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer <SERVICE_ACCOUNT_TOKEN>
Пример ответа:
HTTP/1.1 200
Content-Type: application/json
{
"result": {
"totalCount": 15,
"page": 1,
"perPage": 10
"elements": [
{
"id": 25,
"orgId": 1,
"folderId": 0,
"uid": "V--OrYHnz",
"name": "API docs Example",
"kind": 1,
"type": "text",
"description": "",
"model": {...},
"version": 1,
"meta": {
"folderName": "General",
"folderUid": "",
"connectedDashboards": 1,
"created": "2021-09-27T09:56:17+02:00",
"updated": "2021-09-27T09:56:17+02:00",
"createdBy": {
"id": 1,
"name": "admin",
"avatarUrl": "/avatar/46d229b033af06a191ff2267bca9ae56"
},
"updatedBy": {
"id": 1,
"name": "admin",
"avatarUrl": "/avatar/46d229b033af06a191ff2267bca9ae56"
}
}
},
{...}
{...}
],
}
}
Коды состояния:
200: Найдено401: Не авторизован
Получение элемента библиотеки по uid
GET /api/library-elements/:uid
Возвращает элемент библиотеки с заданным UID.
Пример запроса:
GET /api/library-elements/V--OrYHnz HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer <SERVICE_ACCOUNT_TOKEN>
Пример ответа:
HTTP/1.1 200
Content-Type: application/json
{
"result": {
"id": 25,
"orgId": 1,
"folderId": 0,
"uid": "V--OrYHnz",
"name": "API docs Example",
"kind": 1,
"type": "text",
"description": "",
"model": {...},
"version": 1,
"meta": {
"folderName": "General",
"folderUid": "",
"connectedDashboards": 1,
"created": "2021-09-27T09:56:17+02:00",
"updated": "2021-09-27T09:56:17+02:00",
"createdBy": {
"id": 1,
"name": "admin",
"avatarUrl": "/avatar/46d229b033af06a191ff2267bca9ae56"
},
"updatedBy": {
"id": 1,
"name": "admin",
"avatarUrl": "/avatar/46d229b033af06a191ff2267bca9ae56"
}
}
}
}
Коды состояния:
200: Найдено401: Не авторизован404: Элемент библиотеки не найден
Получение элемента библиотеки по имени
GET /api/library-elements/name/:name
Возвращает элемент библиотеки с заданным именем
Пример запроса:
GET /api/library-elements/name/API docs Example HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer <SERVICE_ACCOUNT_TOKEN>
Пример ответа:
HTTP/1.1 200
Content-Type: application/json
{
"result": [
{
"id": 25,
"orgId": 1,
"folderId": 0,
"uid": "V--OrYHnz",
"name": "API docs Example",
"kind": 1,
"type": "text",
"description": "",
"model": {...},
"version": 1,
"meta": {
"folderName": "General",
"folderUid": "",
"connectedDashboards": 1,
"created": "2021-09-27T09:56:17+02:00",
"updated": "2021-09-27T09:56:17+02:00",
"createdBy": {
"id": 1,
"name": "admin",
"avatarUrl": "/avatar/46d229b033af06a191ff2267bca9ae56"
},
"updatedBy": {
"id": 1,
"name": "admin",
"avatarUrl": "/avatar/46d229b033af06a191ff2267bca9ae56"
}
}
}
]
}
Коды состояния:
200: Найдено401: Не авторизован404: Элемент библиотеки не найден
Получение связей элемента библиотеки
GET /api/library-elements/:uid/connections
Возвращает список связей для элемента библиотеки на основе указанного UID.
Пример запроса:
GET /api/library-elements/V--OrYHnz/connections HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer <SERVICE_ACCOUNT_TOKEN>
Пример ответа:
HTTP/1.1 200
Content-Type: application/json
{
"result": [
{
"id": 148, // Deprecated: will be removed in the future.
"kind": 1,
"elementId": 25,
"connectionId": 527,
"connectionUid": "dHEquNzGz",
"created": "2021-09-27T10:00:07+02:00",
"createdBy": {
"id": 1,
"name": "admin",
"avatarUrl": "/avatar/46d229b033af06a191ff2267bca9ae56"
}
}
]
}
Коды состояния:
200: Найдено401: Не авторизован404: Элемент библиотеки не найден
Создание элемента библиотеки
POST /api/library-elements
Создаёт новый элемент библиотеки.
Схема тела JSON:
folderId: ID папки, в которой хранится элемент библиотеки. Устарел начиная с Grafana v9folderUid: необязательно, UID папки, в которой хранится элемент библиотеки; пустая строка, если он находится на корневом уровне.name: необязательно, имя элемента библиотеки.model: модель JSON для элемента библиотеки.kind: тип элемента для создания. Используйте1для библиотечных панелей.uid: необязательно, уникальный идентификатор.
Пример запроса:
POST /api/library-elements HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer <SERVICE_ACCOUNT_TOKEN>
{
"uid": "nErXDvCkzz",
"folderUid": "",
"name": "Example library panel",
"model": {...},
"kind": 1
}
Пример ответа:
HTTP/1.1 200
Content-Type: application/json
{
"result": {
"id": 28,
"orgId": 1,
"folderId": 0,
"folderUid": "",
"uid": "nErXDvCkzz",
"name": "Example library panel",
"kind": 1,
"type": "",
"description": "",
"model": {...},
"version": 1,
"meta": {
"folderName": "General",
"folderUid": "",
"connectedDashboards": 0,
"created": "2021-09-30T09:14:22.378307+02:00",
"updated": "2021-09-30T09:14:22.378307+02:00",
"createdBy": {
"id": 1,
"name": "admin",
"avatarUrl": "/avatar/46d229b033af06a191ff2267bca9ae56"
},
"updatedBy": {
"id": 1,
"name": "admin",
"avatarUrl": "/avatar/46d229b033af06a191ff2267bca9ae56"
}
}
}
}
Коды состояния:
200: Создано400: Ошибки (например, имя или UID уже существует, некорректный JSON, отсутствующие или недопустимые поля и так далее).401: Не авторизован403: Доступ запрещён
Обновление элемента библиотеки
PATCH /api/library-elements/:uid
Обновляет существующий элемент библиотеки, идентифицируемый uid.
Схема тела JSON:
folderId: ID папки, в которой хранится элемент библиотеки. Устарел начиная с Grafana v9folderUid: UID папки, в которой хранится элемент библиотеки; пустая строка, если он находится на корневом уровне.name: имя элемента библиотеки.model: модель JSON для элемента библиотеки.kind: тип элемента для создания. Используйте1для библиотечных панелей.version: версия обновляемого элемента библиотеки.uid: необязательно, уникальный идентификатор.
Пример запроса:
PATCH /api/library-elements/nErXDvCkzz HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer <SERVICE_ACCOUNT_TOKEN>
{
"name": "Renamed library panel",
"kind": 1,
"version": 1
}
Пример ответа:
HTTP/1.1 200
Content-Type: application/json
{
"result": {
"id": 28,
"orgId": 1,
"folderId": 0,
"folderUid": "",
"uid": "nErXDvCkzz",
"name": "Renamed library panel",
"kind": 1,
"type": "",
"description": "",
"model": {
"description": "",
"type": ""
},
"version": 2,
"meta": {
"folderName": "General",
"folderUid": "",
"connectedDashboards": 0,
"created": "2021-09-30T09:14:22+02:00",
"updated": "2021-09-30T09:25:57.697214+02:00",
"createdBy": {
"id": 1,
"name": "admin",
"avatarUrl": "/avatar/46d229b033af06a191ff2267bca9ae56"
},
"updatedBy": {
"id": 1,
"name": "admin",
"avatarUrl": "/avatar/46d229b033af06a191ff2267bca9ae56"
}
}
}
}
Коды состояния:
200: Обновлено400: Ошибки (например, имя или UID уже существует, некорректный JSON, отсутствующие или недопустимые поля и так далее).401: Не авторизован403: Доступ запрещён404: Элемент библиотеки не найден412: Несовпадение версий
Удаление элемента библиотеки
DELETE /api/library-elements/:uid
Удаляет существующий элемент библиотеки, указанный UID. Эту операцию нельзя отменить.
Note
Вы не можете удалить связанный элемент библиотеки. Эту операцию нельзя отменить.
Пример запроса:
DELETE /api/library-elements/nErXDvCkzz HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer <SERVICE_ACCOUNT_TOKEN>
Пример ответа:
HTTP/1.1 200
Content-Type: application/json
{
"message": "Library element deleted",
"id": 28
}
Коды состояния:
200: Удалено401: Не авторизован400: Некорректный запрос403: Доступ запрещён404: Элемент библиотеки не найден