Новая структура HTTP API в Grafana
Note
Доступно в Grafana 12 и более поздних версиях.
В этом документе объясняется, как Grafana структурирует HTTP API /apis, которые используют уровень API в стиле Kubernetes со стандартизированной структурой и согласованным версионированием. Читайте далее, чтобы понять пути запросов, версии, пространства имён и общие поля ответов при переходе с устаревших конечных точек /api или при работе с новыми API.
Перед началом
Перед началом убедитесь, что у вас есть следующее:
- Версия Grafana: используйте Grafana 12 или более позднюю.
- Доступ к API: убедитесь, что вы можете отправлять HTTP-запросы к своему экземпляру Grafana.
- Контекст устаревшего API: знайте, какие устаревшие конечные точки
/apiвы хотите заменить, если планируете миграцию.
Переход с устаревших конечных точек api
Grafana 13 объявляет устаревшими конечные точки устаревшего API (/api) в пользу нового поколения улучшенных API (/apis). Устаревшие API на данный момент не отключаются. Удаление устаревших API планируется в одном из будущих мажорных релизов, и о любых ломающих изменениях будет объявлено заранее, чтобы избежать сбоев.
Дополнительные сведения см. в разделе Переход на новые API.
Структура API
API Grafana используют общий формат пути и общую форму ответа.
Путь API
Все API Grafana следуют этому стандартизированному формату:
/apis/<GROUP>/<VERSION>/namespaces/<NAMESPACE>/<RESOURCE>[/<NAME>]
Замените заполнители значениями для своей группы API, версии, пространства имён, ресурса и необязательного имени ресурса. Используйте конечный сегмент /<NAME> для операций над отдельными ресурсами, таких как получение, обновление или удаление. Опускайте его для операций над коллекциями, таких как получение списка или создание.
Формат ответа API
Все ответы API Grafana следуют этой структуре:
{
"kind": "<KIND>",
"apiVersion": "<GROUP>/<VERSION>",
"metadata": {
"name": "<NAME>",
"namespace": "<NAMESPACE>",
"uid": "db323171-c78a-42fa-be98-16a3d799a779",
"resourceVersion": "1758777451428472",
"generation": 10,
"creationTimestamp": "2026-01-23T22:06:40Z",
"annotations": {}
},
"spec": {
// resource-specific fields
}
}
Замените заполнители значениями, возвращёнными запрошенным вами ресурсом.
Понимание компонентов
Каждая часть пути и ответа имеет определённое назначение.
Группа (<group>)
Группы организуют связанную функциональность в логические наборы. Например, dashboard.grafana.app используется для операций, связанных с дашбордами.
Версия (<version>)
API Grafana используют семантическое версионирование с тремя уровнями стабильности:
Alpha
Версии Alpha не должны обслуживаться, если они явно не включены флагом функции, и должны считаться полностью экспериментальными и подверженными серьёзным изменениям. Версия alpha может претерпеть ломающие изменения без добавления новой версии, и на неё не следует полагаться в производственных процессах. Версии alpha могут быть удалены полностью, даже без повышения до более стабильного уровня (например, экспериментальный API может быть представлен как alpha для новой функции и впоследствии полностью удалён, если эта функция будет отменена).
Beta
Версии Beta не должны содержать ломающих изменений в схеме, но всё ещё могут быть подвержены изменениям в логике обработки или семантике.
Ломающие изменения схемы требуют новой опубликованной версии beta (например, публикации v1beta2 для ломающих изменений в схеме v1beta1).
Хотя версии beta больше не считаются экспериментальными, как версии alpha, они всё ещё должны быть отключены по умолчанию.
GA
Версии GA включены по умолчанию и могут считаться полностью стабильными. Единственные изменения, которые можно вносить в эти API, — это исправления ошибок, а любые другие изменения должны вместо этого приводить к публикации новой версии API.
Пространство имён (<namespace>)
Пространства имён изолируют ресурсы внутри вашего экземпляра Grafana. Формат зависит от типа развёртывания:
OSS и локальная Grafana
- Организация по умолчанию: используйте
defaultдля организации 1. - Дополнительные организации: используйте
org-<ORG_ID>.
Grafana Cloud
- Формат: используйте
stacks-<STACK_ID>. - ID экземпляра: ваш ID экземпляра — это
STACK_ID.
ID экземпляра можно найти в следующих местах:
- Портал Grafana Cloud: перейдите на
grafana.com, откройте свой стек и выберите Details для вашего экземпляра Grafana. - Swagger UI: откройте страницу
/swaggerв вашем экземпляре Grafana Cloud, где пространство имён автоматически подставляется для соответствующих конечных точек.
Ресурс (<resource>)
Ресурс — это тип, с которым вы хотите взаимодействовать. Распространённые примеры включают следующее:
- Дашборды: используйте
dashboards. - Плейлисты: используйте
playlists. - Папки: используйте
folders.
Kind (<kind>)
Kind идентифицирует тип ресурса в ответах API и соответствует форме единственного числа ресурса.
Например, ресурс dashboards имеет kind Dashboard.
Имя (<name>)
<name> — уникальный идентификатор конкретного экземпляра ресурса внутри его пространства имён и типа ресурса. <name> отличается от поля metadata.uid. В пути URL всегда используется metadata.name.
Например, чтобы получить дашборд, определённый как:
{
"kind": "Dashboard",
"apiVersion": "dashboard.grafana.app/v1",
"metadata": {
"name": "production-overview", // This value IS used in the URL path
"namespace": "default",
"uid": "a1b2c3d4-e5f6-7890-g1h2-i3j4k5l6m7n8" // This value is NOT used in the URL path
// ... other metadata
},
"spec": {
// ... dashboard spec
}
}
Вы бы использовали следующий вызов API:
GET /apis/dashboard.grafana.app/v1/namespaces/default/dashboards/production-overview
Метаданные
Раздел метаданных содержит информацию об экземпляре ресурса. Этот раздел включает имя и пространство имён, описанные ранее в этом документе, а также следующие поля:
UID
Внутренний идентификатор, который можно игнорировать в большинстве сценариев использования. Вместо него используйте поле name как уникальный идентификатор. Это значение не совпадает с UID Grafana.
ResourceVersion
Значение, которое меняется при любом изменении ресурса, включая метаданные или статус.
Используйте это поле для:
- Обнаружения изменений: отслеживания, изменился ли ресурс.
- Оптимистичного контроля параллелизма: предотвращения перезаписи более новой версии ресурса.
Generation
Монотонно возрастающее число, которое увеличивается только при изменении spec. Обновления метаданных или статуса не влияют на это значение.
CreationTimestamp
Время создания объекта, отформатированное как метка времени RFC 3339 UTC (например, 2026-01-23T22:06:40Z).
Аннотации
Карта пар ключ-значение.
Распространённые аннотации включают:
grafana.app/createdByиgrafana.app/updatedBy: указывают, кто создал ресурс или последним обновил его. Используйте формат<USER_TYPE>:<UID>, напримерuser:u000000839.grafana.app/folder: если ресурс поддерживает папки, здесь содержится UID папки, к которой принадлежит объект.grafana.app/updatedTimestamp: хранит время последнего обновления как метку времени RFC 3339 UTC, например2026-01-23T05:17:31Z.
Метки
Необязательная карта пар ключ-значение для организации и выбора ресурсов.
Spec
Поле spec описывает желаемое состояние ресурса. Его структура зависит от типа ресурса и версии API. Точную схему spec ресурса см. в документации Swagger или OpenAPI.
Связанные материалы
Используйте следующие материалы для дальнейшей работы с API Grafana:
- Руководство по миграции: см. Переход на новые API.
- Справочник по HTTP API: см. Справочник по HTTP API.
- Swagger UI: откройте страницу
/swaggerв вашем экземпляре Grafana, чтобы изучить схемы конечных точек и опробовать запросы.