2016-10-21 11:01:34 +02:00
+++
title = "User HTTP API "
description = "Grafana User HTTP API"
keywords = ["grafana", "http", "documentation", "api", "user"]
aliases = ["/http_api/user/"]
type = "docs"
[menu.docs]
name = "Users"
parent = "http_api"
+++
# User HTTP resources / actions
2016-02-02 22:59:22 -08:00
2016-02-05 01:47:34 -08:00
## Search Users
2016-02-02 22:59:22 -08:00
2017-02-21 16:09:15 +01:00
`GET /api/users?perpage=10&page=1`
2016-02-02 22:59:22 -08:00
**Example Request** :
2017-10-05 19:01:03 +02:00
```http
GET /api/users HTTP / 1.1
Accept : application/json
Content-Type : application/json
Authorization : Basic YWRtaW46YWRtaW4=
```
2016-02-02 22:59:22 -08:00
2017-08-11 10:24:54 +02:00
Default value for the `perpage` parameter is `1000` and for the `page` parameter is `1` . Requires basic authentication and that the authenticated user is a Grafana Admin.
2017-02-21 16:09:15 +01:00
2016-02-02 22:59:22 -08:00
**Example Response** :
2017-10-05 19:01:03 +02:00
```http
HTTP / 1.1 200
Content-Type : application/json
[
{
"id" : 1 ,
"name" : "Admin" ,
"login" : "admin" ,
"email" : "admin@mygraf.com" ,
"isAdmin" : true
},
{
"id" : 2 ,
"name" : "User" ,
"login" : "user" ,
"email" : "user@mygraf.com" ,
"isAdmin" : false
}
]
```
2016-02-02 22:59:22 -08:00
2017-02-21 16:09:15 +01:00
## Search Users with Paging
2017-03-23 18:07:29 +01:00
`GET /api/users/search?perpage=10&page=1&query=mygraf`
2017-02-21 16:09:15 +01:00
**Example Request** :
2017-10-05 19:01:03 +02:00
```http
GET /api/users/search?perpage=10&page=1&query=mygraf HTTP / 1.1
Accept : application/json
Content-Type : application/json
Authorization : Basic YWRtaW46YWRtaW4=
```
2017-02-21 16:09:15 +01:00
2017-03-23 18:07:29 +01:00
Default value for the `perpage` parameter is `1000` and for the `page` parameter is `1` . The `totalCount` field in the response can be used for pagination of the user list E.g. if `totalCount` is equal to 100 users and the `perpage` parameter is set to 10 then there are 10 pages of users. The `query` parameter is optional and it will return results where the query value is contained in one of the `name` , `login` or `email` fields. Query values with spaces need to be url encoded e.g. `query=Jane%20Doe` .
2017-02-21 16:09:15 +01:00
2017-08-11 10:24:54 +02:00
Requires basic authentication and that the authenticated user is a Grafana Admin.
2017-02-21 16:09:15 +01:00
**Example Response** :
2017-10-05 19:01:03 +02:00
```http
HTTP / 1.1 200
Content-Type : application/json
{
"totalCount" : 2 ,
"users" : [
2017-02-21 16:09:15 +01:00
{
2017-10-05 19:01:03 +02:00
"id" : 1 ,
"name" : "Admin" ,
"login" : "admin" ,
"email" : "admin@mygraf.com" ,
"isAdmin" : true
},
{
"id" : 2 ,
"name" : "User" ,
"login" : "user" ,
"email" : "user@mygraf.com" ,
"isAdmin" : false
2017-02-21 16:09:15 +01:00
}
2017-10-05 19:01:03 +02:00
] ,
"page" : 1 ,
"perPage" : 10
}
```
2017-02-21 16:09:15 +01:00
2016-02-05 01:47:34 -08:00
## Get single user by Id
2016-02-02 22:59:22 -08:00
`GET /api/users/:id`
**Example Request** :
2017-10-05 19:01:03 +02:00
```http
GET /api/users/1 HTTP / 1.1
Accept : application/json
Content-Type : application/json
Authorization : Basic YWRtaW46YWRtaW4=
```
2017-08-11 10:24:54 +02:00
Requires basic authentication and that the authenticated user is a Grafana Admin.
2016-02-02 22:59:22 -08:00
**Example Response** :
2017-10-05 19:01:03 +02:00
```http
HTTP / 1.1 200
Content-Type : application/json
2016-02-02 22:59:22 -08:00
2017-10-05 19:01:03 +02:00
{
"email" : "user@mygraf.com"
"name" : "admin" ,
"login" : "admin" ,
"theme" : "light" ,
"orgId" : 1 ,
"isGrafanaAdmin" : true
}
```
2016-02-02 22:59:22 -08:00
2017-01-31 07:25:55 +02:00
## Get single user by Username(login) or Email
2017-02-14 12:56:49 +01:00
`GET /api/users/lookup?loginOrEmail=user@mygraf.com`
2017-01-31 07:25:55 +02:00
2017-02-14 12:56:49 +01:00
**Example Request using the email as option** :
2017-01-31 07:25:55 +02:00
2017-10-05 19:01:03 +02:00
```http
GET /api/users/lookup?loginOrEmail=user@mygraf.com HTTP / 1.1
Accept : application/json
Content-Type : application/json
Authorization : Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
```
2017-01-31 07:25:55 +02:00
2017-02-14 12:56:49 +01:00
**Example Request using the username as option** :
2017-10-05 19:01:03 +02:00
```http
GET /api/users/lookup?loginOrEmail=admin HTTP / 1.1
Accept : application/json
Content-Type : application/json
Authorization : Basic YWRtaW46YWRtaW4=
```
2017-08-11 10:24:54 +02:00
Requires basic authentication and that the authenticated user is a Grafana Admin.
2017-01-31 07:25:55 +02:00
2017-02-14 12:56:49 +01:00
**Example Response** :
2017-01-31 07:25:55 +02:00
2017-10-05 19:01:03 +02:00
```http
HTTP / 1.1 200
Content-Type : application/json
2017-01-31 07:25:55 +02:00
2017-10-05 19:01:03 +02:00
{
2017-12-19 22:30:35 +02:00
"email" : "user@mygraf.com" ,
2017-10-05 19:01:03 +02:00
"name" : "admin" ,
"login" : "admin" ,
"theme" : "light" ,
"orgId" : 1 ,
"isGrafanaAdmin" : true
}
```
2017-01-31 07:25:55 +02:00
2016-02-05 01:47:34 -08:00
## User Update
2016-02-02 22:59:22 -08:00
`PUT /api/users/:id`
**Example Request** :
2017-10-05 19:01:03 +02:00
```http
PUT /api/users/2 HTTP / 1.1
Accept : application/json
Content-Type : application/json
Authorization : Basic YWRtaW46YWRtaW4=
2016-02-02 22:59:22 -08:00
2017-10-05 19:01:03 +02:00
{
"email" : "user@mygraf.com" ,
"name" : "User2" ,
"login" : "user" ,
"theme" : "light"
}
```
2016-02-02 22:59:22 -08:00
2017-08-11 10:24:54 +02:00
Requires basic authentication and that the authenticated user is a Grafana Admin.
2016-02-02 22:59:22 -08:00
**Example Response** :
2017-10-05 19:01:03 +02:00
```http
HTTP / 1.1 200
Content-Type : application/json
2016-02-02 22:59:22 -08:00
2017-10-05 19:01:03 +02:00
{ "message" : "User updated" }
```
2016-02-02 22:59:22 -08:00
2016-02-05 01:47:34 -08:00
## Get Organisations for user
2016-02-02 22:59:22 -08:00
`GET /api/users/:id/orgs`
**Example Request** :
2017-10-05 19:01:03 +02:00
```http
GET /api/users/1/orgs HTTP / 1.1
Accept : application/json
Content-Type : application/json
Authorization : Basic YWRtaW46YWRtaW4=
```
2017-08-11 10:24:54 +02:00
Requires basic authentication and that the authenticated user is a Grafana Admin.
2016-02-02 22:59:22 -08:00
**Example Response** :
2017-10-05 19:01:03 +02:00
```http
HTTP / 1.1 200
Content-Type : application/json
2016-02-02 22:59:22 -08:00
2017-10-05 19:01:03 +02:00
[
{
"orgId" : 1 ,
"name" : "Main Org." ,
"role" : "Admin"
}
]
```
2016-02-02 22:59:22 -08:00
## User
2016-02-05 01:47:34 -08:00
## Actual User
2016-02-02 22:59:22 -08:00
`GET /api/user`
**Example Request** :
2017-10-05 19:01:03 +02:00
```http
GET /api/user HTTP / 1.1
Accept : application/json
Content-Type : application/json
Authorization : Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
```
2016-02-02 22:59:22 -08:00
**Example Response** :
2017-10-05 19:01:03 +02:00
```http
HTTP / 1.1 200
Content-Type : application/json
2016-02-02 22:59:22 -08:00
2017-10-05 19:01:03 +02:00
{
"email" : "admin@mygraf.com" ,
"name" : "Admin" ,
"login" : "admin" ,
"theme" : "light" ,
"orgId" : 1 ,
"isGrafanaAdmin" : true
}
```
2016-02-02 22:59:22 -08:00
2016-02-05 01:47:34 -08:00
## Change Password
2016-02-02 22:59:22 -08:00
`PUT /api/user/password`
Changes the password for the user
**Example Request** :
2017-10-05 19:01:03 +02:00
```http
PUT /api/user/password HTTP / 1.1
Accept : application/json
Content-Type : application/json
Authorization : Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
2016-02-02 22:59:22 -08:00
2017-10-05 19:01:03 +02:00
{
"oldPassword" : "old_password" ,
"newPassword" : "new_password" ,
"confirmNew" : "confirm_new_password"
}
```
2016-02-02 22:59:22 -08:00
**Example Response** :
2017-10-05 19:01:03 +02:00
```http
HTTP / 1.1 200
Content-Type : application/json
2016-02-02 22:59:22 -08:00
2017-10-05 19:01:03 +02:00
{ "message" : "User password changed" }
```
2016-02-02 22:59:22 -08:00
2017-08-11 10:24:54 +02:00
## Switch user context for a specified user
`POST /api/users/:userId/using/:organizationId`
Switch user context to the given organization. Requires basic authentication and that the authenticated user is a Grafana Admin.
**Example Request** :
2017-10-05 19:01:03 +02:00
```http
POST /api/users/7/using/2 HTTP / 1.1
Authorization : Basic YWRtaW46YWRtaW4=
```
2017-08-11 10:24:54 +02:00
**Example Response** :
2017-10-05 19:01:03 +02:00
```http
HTTP / 1.1 200
Content-Type : application/json
2017-08-11 10:24:54 +02:00
2017-10-05 19:01:03 +02:00
{ "message" : "Active organization changed" }
```
2017-08-11 10:24:54 +02:00
## Switch user context for signed in user
2016-02-02 22:59:22 -08:00
2017-08-11 10:24:54 +02:00
`POST /api/user/using/:organizationId`
2016-02-02 22:59:22 -08:00
2017-08-11 10:24:54 +02:00
Switch user context to the given organization.
2016-02-02 22:59:22 -08:00
**Example Request** :
2017-10-05 19:01:03 +02:00
```http
POST /api/user/using/2 HTTP / 1.1
Accept : application/json
Content-Type : application/json
Authorization : Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
```
2016-02-02 22:59:22 -08:00
**Example Response** :
2017-10-05 19:01:03 +02:00
```http
HTTP / 1.1 200
Content-Type : application/json
2016-02-02 22:59:22 -08:00
2017-10-05 19:01:03 +02:00
{ "message" : "Active organization changed" }
```
2016-02-02 22:59:22 -08:00
2016-02-05 01:47:34 -08:00
## Organisations of the actual User
2016-02-02 22:59:22 -08:00
`GET /api/user/orgs`
Return a list of all organisations of the current user.
**Example Request** :
2017-10-05 19:01:03 +02:00
```http
GET /api/user/orgs HTTP / 1.1
Accept : application/json
Content-Type : application/json
Authorization : Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
```
2016-02-02 22:59:22 -08:00
**Example Response** :
2017-10-05 19:01:03 +02:00
```http
HTTP / 1.1 200
Content-Type : application/json
2016-02-02 22:59:22 -08:00
2017-10-05 19:01:03 +02:00
[
{
"orgId" : 1 ,
"name" : "Main Org." ,
"role" : "Admin"
}
]
```
2016-02-02 22:59:22 -08:00
2018-08-08 10:26:05 +02:00
## Teams that the actual User is member of
`GET /api/user/teams`
Return a list of all teams that the current user is member of.
**Example Request** :
```http
GET /api/user/teams HTTP / 1.1
Accept : application/json
Content-Type : application/json
Authorization : Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
```
**Example Response** :
```http
HTTP / 1.1 200
Content-Type : application/json
[
{
"id" : 1 ,
"orgId" : 1 ,
"name" : "MyTestTeam" ,
"email" : "" ,
"avatarUrl" : "\/avatar\/3f49c15916554246daa714b9bd0ee398" ,
"memberCount" : 1
}
]
```
2016-02-05 01:47:34 -08:00
## Star a dashboard
2016-02-02 22:59:22 -08:00
`POST /api/user/stars/dashboard/:dashboardId`
Stars the given Dashboard for the actual user.
**Example Request** :
2017-10-05 19:01:03 +02:00
```http
POST /api/user/stars/dashboard/1 HTTP / 1.1
Accept : application/json
Content-Type : application/json
Authorization : Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
```
2016-02-02 22:59:22 -08:00
**Example Response** :
2017-10-05 19:01:03 +02:00
```http
HTTP / 1.1 200
Content-Type : application/json
2016-02-02 22:59:22 -08:00
2017-10-05 19:01:03 +02:00
{ "message" : "Dashboard starred!" }
```
2016-02-02 22:59:22 -08:00
2016-02-05 01:47:34 -08:00
## Unstar a dashboard
2016-02-02 22:59:22 -08:00
`DELETE /api/user/stars/dashboard/:dashboardId`
Deletes the starring of the given Dashboard for the actual user.
**Example Request** :
2017-10-05 19:01:03 +02:00
```http
DELETE /api/user/stars/dashboard/1 HTTP / 1.1
Accept : application/json
Content-Type : application/json
Authorization : Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
```
2016-02-02 22:59:22 -08:00
**Example Response** :
2017-10-05 19:01:03 +02:00
```http
HTTP / 1.1 200
Content-Type : application/json
2016-02-02 22:59:22 -08:00
2017-10-05 19:01:03 +02:00
{ "message" : "Dashboard unstarred" }
2017-12-19 22:30:35 +02:00
```