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.
Caution
Вы не можете аутентифицироваться в HTTP API пользователей с помощью токенов сервисных учётных записей. Сервисные учётные записи ограничены организацией и ролью в организации. Им нельзя предоставить права администратора сервера Grafana.
В качестве альтернативы вы можете использовать HTTP API организаций с токенами сервисных учётных записей для управления пользователями в конкретной организации
Чтобы использовать эти конечные точки API, необходимо применять basic-аутентификацию, и пользователь Grafana должен иметь право администратора сервера Grafana.
Пользователь
admin, с которым Grafana создаётся по умолчанию, имеет права на использование этих конечных точек API.
Клиентам Grafana Cloud см. HTTP API организаций для поиска пользователей с ролью администратора организации.
Если вы используете Grafana Enterprise, для некоторых конечных точек потребуются определённые права. Дополнительные сведения см. в разделе Права управления доступом на основе ролей.
Поиск пользователей
GET /api/users?perpage=10&page=1&sort=login-asc,email-asc
Требуемые права
Пояснения см. в примечании во введении.
Пример запроса:
GET /api/users HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Basic YWRtaW46YWRtaW4=
Значение по умолчанию для параметра perpage — 1000, а для параметра page — 1. Требует basic-аутентификации и того, чтобы аутентифицированный пользователь был администратором Grafana.
Параметр sort — необязательный разделённый запятыми список опций для упорядочивания результатов поиска. Допустимые значения для фильтра sort: login-asc, login-desc, email-asc, email-desc, name-asc, name-desc, lastSeenAtAge-asc, lastSeenAtAge-desc. По умолчанию, если sort не указан, список пользователей упорядочивается по login, email в возрастающем порядке.
Пример ответа:
HTTP/1.1 200
Content-Type: application/json
[
{
"id": 1,
"name": "Admin",
"login": "admin",
"email": "admin@mygraf.com",
"isAdmin": true,
"isDisabled": false,
"lastSeenAt": "2020-04-10T20:29:27+03:00",
"lastSeenAtAge": "2m",
"authLabels": ["OAuth"]
},
{
"id": 2,
"name": "User",
"login": "user",
"email": "user@mygraf.com",
"isAdmin": false,
"isDisabled": false,
"lastSeenAt": "2020-01-24T12:38:47+02:00",
"lastSeenAtAge": "2M",
"authLabels": []
}
]
Поиск пользователей с постраничной выдачей
GET /api/users/search?perpage=10&page=1&query=mygraf&sort=login-asc,email-asc
Требуемые права
Пояснения см. в примечании во введении.
Пример запроса:
GET /api/users/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, login или email. Значения запросов с пробелами нужно кодировать в URL, например query=Jane%20Doe.
Параметр sort — необязательный разделённый запятыми список опций для упорядочивания результатов поиска. Допустимые значения для фильтра sort: login-asc, login-desc, email-asc, email-desc, name-asc, name-desc, lastSeenAtAge-asc, lastSeenAtAge-desc. По умолчанию, если sort не указан, список пользователей упорядочивается по login, email в возрастающем порядке.
Требует basic-аутентификации и того, чтобы аутентифицированный пользователь был администратором Grafana.
Пример ответа:
HTTP/1.1 200
Content-Type: application/json
{
"totalCount": 2,
"users": [
{
"id": 1,
"name": "Admin",
"login": "admin",
"email": "admin@mygraf.com",
"isAdmin": true,
"isDisabled": false,
"lastSeenAt": "2020-04-10T20:29:27+03:00",
"lastSeenAtAge': "2m",
"authLabels": ["OAuth"]
},
{
"id": 2,
"name": "User",
"login": "user",
"email": "user@mygraf.com",
"isAdmin": false,
"isDisabled": false,
"lastSeenAt": "2020-01-24T12:38:47+02:00",
"lastSeenAtAge": "2M",
"authLabels": []
}
],
"page": 1,
"perPage": 10
}
Получение одного пользователя по Id
GET /api/users/:id
Требуемые права
Пояснения см. в примечании во введении.
Пример запроса:
GET /api/users/1 HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Basic YWRtaW46YWRtaW4=
Требует basic-аутентификации и того, чтобы аутентифицированный пользователь был администратором Grafana.
Пример ответа:
HTTP/1.1 200
Content-Type: application/json
{
"id": "1",
"email": "user@mygraf.com",
"name": "admin",
"login": "admin",
"theme": "light",
"orgId": 1,
"isGrafanaAdmin": true,
"isDisabled": true,
"isExternal": false,
"authLabels": [],
"updatedAt": "2019-09-09T11:31:26+01:00",
"createdAt": "2019-09-09T11:31:26+01:00",
"avatarUrl": ""
}
Получение одного пользователя по имени пользователя (login) или email
GET /api/users/lookup?loginOrEmail=user@mygraf.com
Требуемые права
Пояснения см. в примечании во введении.
Пример запроса с использованием email:
GET /api/users/lookup?loginOrEmail=user@mygraf.com HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Basic YWRtaW46YWRtaW4=
Пример запроса с использованием имени пользователя:
GET /api/users/lookup?loginOrEmail=admin HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Basic YWRtaW46YWRtaW4=
Требует basic-аутентификации и того, чтобы аутентифицированный пользователь был администратором Grafana.
Пример ответа:
HTTP/1.1 200
Content-Type: application/json
{
"id": 1,
"email": "user@mygraf.com",
"name": "admin",
"login": "admin",
"theme": "light",
"orgId": 1,
"isGrafanaAdmin": true,
"isDisabled": false,
"isExternal": false,
"authLabels": null,
"updatedAt": "2019-09-25T14:44:37+01:00",
"createdAt": "2019-09-25T14:44:37+01:00",
"avatarUrl":""
}
Обновление пользователя
PUT /api/users/:id
Требуемые права
Пояснения см. в примечании во введении.
Пример запроса:
PUT /api/users/2 HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Basic YWRtaW46YWRtaW4=
{
"email":"user@mygraf.com",
"name":"User2",
"login":"user",
"theme":"light"
}
Требует basic-аутентификации и того, чтобы аутентифицированный пользователь был администратором Grafana.
Пример ответа:
HTTP/1.1 200
Content-Type: application/json
{"message":"User updated"}
Получение организаций пользователя
GET /api/users/:id/orgs
Требуемые права
Пояснения см. в примечании во введении.
Пример запроса:
GET /api/users/1/orgs HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Basic YWRtaW46YWRtaW4=
Требует basic-аутентификации и того, чтобы аутентифицированный пользователь был администратором Grafana.
Пример ответа:
HTTP/1.1 200
Content-Type: application/json
[
{
"orgId":1,
"name":"Main Org.",
"role":"Admin"
}
]
Получение команд пользователя
GET /api/users/:id/teams
Требуемые права
Пояснения см. в примечании во введении.
Пример запроса:
GET /api/users/1/teams HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Basic YWRtaW46YWRtaW4=
Требует basic-аутентификации и того, чтобы аутентифицированный пользователь был администратором Grafana.
Пример ответа:
HTTP/1.1 200
Content-Type: application/json
[
{
"id":1,
"orgId":1,
"name":"team1",
"email":"",
"avatarUrl":"/avatar/3fcfe295eae3bcb67a49349377428a66",
"memberCount":1
}
]
Пользователь
Текущий пользователь
GET /api/user
Пример запроса:
GET /api/user HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Basic YWRtaW46YWRtaW4=
Требует basic-аутентификации.
Пример ответа:
HTTP/1.1 200
Content-Type: application/json
{
"id":1,
"email":"admin@mygraf.com",
"name":"Admin",
"login":"admin",
"theme":"light",
"orgId":1,
"isGrafanaAdmin":true,
"isDisabled":false
"isExternal": false,
"authLabels": [],
"updatedAt": "2019-09-09T11:31:26+01:00",
"createdAt": "2019-09-09T11:31:26+01:00",
"avatarUrl": ""
}
Смена пароля
PUT /api/user/password
Меняет пароль пользователя. Требует basic-аутентификации.
Пример запроса:
PUT /api/user/password HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Basic YWRtaW46YWRtaW4=
{
"oldPassword": "old_password",
"newPassword": "new_password"
}
Пример ответа:
HTTP/1.1 200
Content-Type: application/json
{"message":"User password changed"}
Смена пароля с помощью скрипта
Если вам нужно сменить пароль с помощью скрипта, вот пример смены пароля администратора с использованием curl и basic-аутентификации:
curl -X PUT -H "Content-Type: application/json" -d '{
"oldPassword": "oldpass",
"newPassword": "newpass",
"confirmNew": "newpass"
}' http://admin:oldpass@<your_grafana_host>:3000/api/user/password
Переключение контекста пользователя для указанного пользователя
POST /api/users/:userId/using/:organizationId
Переключает контекст пользователя на заданную организацию. Требует basic-аутентификации и того, чтобы аутентифицированный пользователь был администратором Grafana.
Пример запроса:
POST /api/users/7/using/2 HTTP/1.1
Authorization: Basic YWRtaW46YWRtaW4=
Пример ответа:
HTTP/1.1 200
Content-Type: application/json
{"message":"Active organization changed"}
Переключение контекста пользователя для вошедшего пользователя
POST /api/user/using/:organizationId
Переключает контекст пользователя на заданную организацию.
Пример запроса:
POST /api/user/using/2 HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer <SERVICE_ACCOUNT_TOKEN>
Пример ответа:
HTTP/1.1 200
Content-Type: application/json
{"message":"Active organization changed"}
Организации текущего пользователя
GET /api/user/orgs
Возвращает список всех организаций текущего пользователя. Требует basic-аутентификации.
Пример запроса:
GET /api/user/orgs HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Basic YWRtaW46YWRtaW4=
Пример ответа:
HTTP/1.1 200
Content-Type: application/json
[
{
"orgId":1,
"name":"Main Org.",
"role":"Admin"
}
]
Команды, в которых состоит текущий пользователь
GET /api/user/teams
Возвращает список всех команд, в которых состоит текущий пользователь.
Пример запроса:
GET /api/user/teams HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer <SERVICE_ACCOUNT_TOKEN>
Пример ответа:
HTTP/1.1 200
Content-Type: application/json
[
{
"id": 1,
"orgId": 1,
"name": "MyTestTeam",
"email": "",
"avatarUrl": "\/avatar\/3f49c15916554246daa714b9bd0ee398",
"memberCount": 1
}
]
Добавление дашборда в избранное
POST /api/user/stars/dashboard/uid/:uid
Добавляет указанный дашборд в избранное для текущего пользователя.
Пример запроса:
POST /api/user/stars/dashboard/uid/BqokFhx7z HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer <SERVICE_ACCOUNT_TOKEN>
Пример ответа:
HTTP/1.1 200
Content-Type: application/json
{"message":"Dashboard starred!"}
Удаление дашборда из избранного
DELETE /api/user/stars/dashboard/uid/:uid
Удаляет отметку избранного у указанного дашборда для текущего пользователя.
Пример запроса:
DELETE /api/user/stars/dashboard/uid/BqokFhx7z HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer <SERVICE_ACCOUNT_TOKEN>
Пример ответа:
HTTP/1.1 200
Content-Type: application/json
{"message":"Dashboard unstarred"}
Токены аутентификации текущего пользователя
GET /api/user/auth-tokens
Возвращает список всех токенов аутентификации (устройств), с которых текущий пользователь в настоящий момент авторизован.
Пример запроса:
GET /api/user/auth-tokens HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer <SERVICE_ACCOUNT_TOKEN>
Пример ответа:
HTTP/1.1 200
Content-Type: application/json
[
{
"id": 361,
"isActive": true,
"clientIp": "127.0.0.1",
"browser": "Chrome",
"browserVersion": "72.0",
"os": "Linux",
"osVersion": "",
"device": "Other",
"createdAt": "2019-03-05T21:22:54+01:00",
"seenAt": "2019-03-06T19:41:06+01:00"
},
{
"id": 364,
"isActive": false,
"clientIp": "127.0.0.1",
"browser": "Mobile Safari",
"browserVersion": "11.0",
"os": "iOS",
"osVersion": "11.0",
"device": "iPhone",
"createdAt": "2019-03-06T19:41:19+01:00",
"seenAt": "2019-03-06T19:41:21+01:00"
}
]
Отзыв токена аутентификации текущего пользователя
POST /api/user/revoke-auth-token
Отзывает указанный токен аутентификации (устройство) для текущего пользователя. Пользователь выданного токена аутентификации (устройства) больше не будет авторизован, и при следующей активности потребуется аутентификация заново.
Пример запроса:
POST /api/user/revoke-auth-token HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer <SERVICE_ACCOUNT_TOKEN>
{
"authTokenId": 364
}
Пример ответа:
HTTP/1.1 200
Content-Type: application/json
{
"message": "User auth token revoked"
}