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.
Если вы используете Grafana Enterprise, для некоторых конечных точек потребуются определённые права. Дополнительные сведения см. в разделе Права управления доступом на основе ролей. Для экземпляров Grafana Cloud используйте для аутентификации Bearer-токен. Примеры в этом разделе ссылаются на basic-аутентификацию, которая предназначена для локальных экземпляров Grafana.
Поиск сервисных учётных записей с постраничной выдачей
GET /api/serviceaccounts/search?perpage=10&page=1&query=myserviceaccount
Требуемые права
Пояснения см. в примечании во введении.
Пример запроса:
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/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
Требуемые права
Пояснения см. в примечании во введении.
Пример запроса:
POST /api/serviceaccounts HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Basic YWRtaW46YWRtaW4=
{
"name": "grafana",
"role": "Viewer",
"isDisabled": false
}
Пример ответа:
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
Требуемые права
Пояснения см. в примечании во введении.
Пример запроса:
GET /api/serviceaccounts/1 HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Basic YWRtaW46YWRtaW4=
Пример ответа:
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
Требуемые права
Пояснения см. в примечании во введении.
Пример запроса:
PATCH /api/serviceaccounts/2 HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Basic YWRtaW46YWRtaW4=
{
"name": "test",
"role": "Editor"
}
Пример ответа:
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
Требуемые права
Пояснения см. в примечании во введении.
Пример запроса:
DELETE /api/serviceaccounts/2 HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Basic YWRtaW46YWRtaW4=
Пример ответа:
HTTP/1.1 200
Content-Type: application/json
{
"message": "Service account deleted"
}
Получение токенов сервисной учётной записи
GET /api/serviceaccounts/:id/tokens
Требуемые права
Пояснения см. в примечании во введении.
Пример запроса:
GET /api/serviceaccounts/2/tokens HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Basic YWRtaW46YWRtaW4=
Пример ответа:
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
Требуемые права
Пояснения см. в примечании во введении.
Пример запроса:
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/1.1 200
Content-Type: application/json
{
"id": 7,
"name": "grafana",
"key": "eyJrIjoiVjFxTHZ6dGdPSjg5Um92MjN1RlhjMkNqYkZUbm9jYkwiLCJuIjoiZ3JhZmFuYSIsImlkIjoxfQ=="
}
Удаление токенов сервисной учётной записи
DELETE /api/serviceaccounts/:id/tokens/:tokenId
Требуемые права
Пояснения см. в примечании во введении.
Пример запроса:
DELETE /api/serviceaccounts/2/tokens/1 HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Basic YWRtaW46YWRtaW4=
Пример ответа:
HTTP/1.1 200
Content-Type: application/json
{
"message": "API key deleted"
}