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.

Если вы используете Grafana Enterprise, для некоторых конечных точек потребуются определённые права. Дополнительные сведения см. в разделе Права управления доступом на основе ролей. Для экземпляров Grafana Cloud используйте для аутентификации Bearer-токен. Примеры в этом разделе ссылаются на basic-аутентификацию, которая предназначена для локальных экземпляров Grafana.

Поиск сервисных учётных записей с постраничной выдачей

GET /api/serviceaccounts/search?perpage=10&page=1&query=myserviceaccount

Требуемые права

Пояснения см. в примечании во введении.

Действие Область
serviceaccounts:read н/д

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

http
GET /api/serviceaccounts/search?perpage=10&page=1&query=mygraf HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Basic YWRtaW46YWRtaW4=

Значение по умолчанию для параметра perpage — 1000, а для параметра page — 1. Поле totalCount в ответе можно использовать для постраничной выдачи списка пользователей. Например, если totalCount равен 100 пользователям, а параметр perpage установлен в 10, то имеется 10 страниц пользователей. Параметр query необязателен, и он вернёт результаты, в которых значение запроса содержится в одном из name. Значения запросов с пробелами нужно кодировать в URL, например query=Jane%20Doe.

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

http
HTTP/1.1 200
Content-Type: application/json
{
	"totalCount": 2,
	"serviceAccounts": [
		{
			"id": 1,
			"name": "grafana",
			"login": "sa-grafana",
			"orgId": 1,
			"isDisabled": false,
			"role": "Viewer",
			"tokens": 0,
			"avatarUrl": "/avatar/85ec38023d90823d3e5b43ef35646af9",
			"accessControl": {
				"serviceaccounts:delete": true,
				"serviceaccounts:read": true,
				"serviceaccounts:write": true
			}
		},
		{
			"id": 2,
			"name": "test",
			"login": "sa-test",
			"orgId": 1,
			"isDisabled": false,
			"role": "Viewer",
			"tokens": 0,
			"avatarUrl": "/avatar/8ea890a677d6a223c591a1beea6ea9d2",
			"accessControl": {
				"serviceaccounts:delete": true,
				"serviceaccounts:read": true,
				"serviceaccounts:write": true
			}
		}
	],
	"page": 1,
	"perPage": 10
}

Создание сервисной учётной записи

POST /api/serviceaccounts

Требуемые права

Пояснения см. в примечании во введении.

Действие Область
serviceaccounts:create н/д

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

http
POST /api/serviceaccounts HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Basic YWRtaW46YWRtaW4=

{
  "name": "grafana",
  "role": "Viewer",
  "isDisabled": false
}

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

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

{
	"id": 1,
	"name": "test",
	"login": "sa-test",
	"orgId": 1,
	"isDisabled": false,
	"createdAt": "2022-03-21T14:35:33Z",
	"updatedAt": "2022-03-21T14:35:33Z",
	"avatarUrl": "/avatar/8ea890a677d6a223c591a1beea6ea9d2",
	"role": "Viewer",
	"teams": []
}

Фиксированные и настраиваемые роли можно задавать для сервисных учётных записей с помощью RBAC HTTP API.

Получение сервисной учётной записи по ID

GET /api/serviceaccounts/:id

Требуемые права

Пояснения см. в примечании во введении.

Действие Область
serviceaccounts:read serviceaccounts:id:*

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

http
GET /api/serviceaccounts/1 HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Basic YWRtaW46YWRtaW4=

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

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

{
	"id": 1,
	"name": "test",
	"login": "sa-test",
	"orgId": 1,
	"isDisabled": false,
	"createdAt": "2022-03-21T14:35:33Z",
	"updatedAt": "2022-03-21T14:35:33Z",
	"avatarUrl": "/avatar/8ea890a677d6a223c591a1beea6ea9d2",
	"role": "Viewer",
	"teams": []
}

Обновление сервисной учётной записи

PATCH /api/serviceaccounts/:id

Требуемые права

Пояснения см. в примечании во введении.

Действие Область
serviceaccounts:write serviceaccounts:id:*

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

http
PATCH /api/serviceaccounts/2 HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Basic YWRtaW46YWRtaW4=

{
  "name": "test",
	"role": "Editor"
}

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

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

{
	"id": 2,
	"name": "test",
	"login": "sa-grafana",
	"orgId": 1,
	"isDisabled": false,
	"createdAt": "2022-03-21T14:35:44Z",
	"updatedAt": "2022-03-21T14:35:44Z",
	"avatarUrl": "/avatar/8ea890a677d6a223c591a1beea6ea9d2",
	"role": "Editor",
	"teams": []
}

Фиксированные и настраиваемые роли можно задавать для сервисных учётных записей с помощью RBAC HTTP API.

Удаление сервисной учётной записи

DELETE /api/serviceaccounts/:id

Требуемые права

Пояснения см. в примечании во введении.

Действие Область
serviceaccounts:delete serviceaccounts:id:*

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

http
DELETE /api/serviceaccounts/2 HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Basic YWRtaW46YWRtaW4=

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

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

{
	"message": "Service account deleted"
}

Получение токенов сервисной учётной записи

GET /api/serviceaccounts/:id/tokens

Требуемые права

Пояснения см. в примечании во введении.

Действие Область
serviceaccounts:read serviceaccounts:id:*

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

http
GET /api/serviceaccounts/2/tokens HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Basic YWRtaW46YWRtaW4=

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

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

[
	{
		"id": 1,
		"name": "grafana",
		"role": "Viewer",
		"created": "2022-03-23T10:31:02Z",
		"expiration": null,
		"secondsUntilExpiration": 0,
		"hasExpired": false
	}
]

Создание токенов сервисной учётной записи

POST /api/serviceaccounts/:id/tokens

Требуемые права

Пояснения см. в примечании во введении.

Действие Область
serviceaccounts:write serviceaccounts:id:*

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

http
POST /api/serviceaccounts/2/tokens HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Basic YWRtaW46YWRtaW4=

{
	"name": "grafana",
	"secondsToLive": 604800
}

Значение по умолчанию для secondsToLive — 0, что означает, что срок действия токена сервисной учётной записи никогда не истечёт.

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

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

{
	"id": 7,
	"name": "grafana",
	"key": "eyJrIjoiVjFxTHZ6dGdPSjg5Um92MjN1RlhjMkNqYkZUbm9jYkwiLCJuIjoiZ3JhZmFuYSIsImlkIjoxfQ=="
}

Удаление токенов сервисной учётной записи

DELETE /api/serviceaccounts/:id/tokens/:tokenId

Требуемые права

Пояснения см. в примечании во введении.

Действие Область
serviceaccounts:write serviceaccounts:id:*

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

http
DELETE /api/serviceaccounts/2/tokens/1 HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Basic YWRtaW46YWRtaW4=

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

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

{
	"message": "API key deleted"
}