2016-10-21 04:01:34 -05: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-03 00:59:22 -06:00
2016-02-05 03:47:34 -06:00
## Search Users
2016-02-03 00:59:22 -06:00
2017-02-21 09:09:15 -06:00
`GET /api/users?perpage=10&page=1`
2016-02-03 00:59:22 -06:00
**Example Request**:
2017-10-05 12:01:03 -05:00
```http
GET /api/users HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Basic YWRtaW46YWRtaW4=
```
2016-02-03 00:59:22 -06:00
2017-08-11 03:24:54 -05: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 09:09:15 -06:00
2016-02-03 00:59:22 -06:00
**Example Response**:
2017-10-05 12:01:03 -05: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-03 00:59:22 -06:00
2017-02-21 09:09:15 -06:00
## Search Users with Paging
2017-03-23 12:07:29 -05:00
`GET /api/users/search?perpage=10&page=1&query=mygraf`
2017-02-21 09:09:15 -06:00
**Example Request**:
2017-10-05 12:01:03 -05: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 09:09:15 -06:00
2017-03-23 12:07:29 -05: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 09:09:15 -06:00
2017-08-11 03:24:54 -05:00
Requires basic authentication and that the authenticated user is a Grafana Admin.
2017-02-21 09:09:15 -06:00
**Example Response**:
2017-10-05 12:01:03 -05:00
```http
HTTP/1.1 200
Content-Type: application/json
{
"totalCount": 2,
"users": [
2017-02-21 09:09:15 -06:00
{
2017-10-05 12:01:03 -05: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 09:09:15 -06:00
}
2017-10-05 12:01:03 -05:00
],
"page": 1,
"perPage": 10
}
```
2017-02-21 09:09:15 -06:00
2016-02-05 03:47:34 -06:00
## Get single user by Id
2016-02-03 00:59:22 -06:00
`GET /api/users/:id`
**Example Request**:
2017-10-05 12:01:03 -05:00
```http
GET /api/users/1 HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Basic YWRtaW46YWRtaW4=
```
2017-08-11 03:24:54 -05:00
Requires basic authentication and that the authenticated user is a Grafana Admin.
2016-02-03 00:59:22 -06:00
**Example Response**:
2017-10-05 12:01:03 -05:00
```http
HTTP/1.1 200
Content-Type: application/json
2016-02-03 00:59:22 -06:00
2017-10-05 12:01:03 -05:00
{
"email": "user@mygraf.com"
"name": "admin",
"login": "admin",
"theme": "light",
"orgId": 1,
"isGrafanaAdmin": true
}
```
2016-02-03 00:59:22 -06:00
2017-01-30 23:25:55 -06:00
## Get single user by Username(login) or Email
2017-02-14 05:56:49 -06:00
`GET /api/users/lookup?loginOrEmail=user@mygraf.com`
2017-01-30 23:25:55 -06:00
2017-02-14 05:56:49 -06:00
**Example Request using the email as option**:
2017-01-30 23:25:55 -06:00
2017-10-05 12:01:03 -05: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-30 23:25:55 -06:00
2017-02-14 05:56:49 -06:00
**Example Request using the username as option**:
2017-10-05 12:01:03 -05:00
```http
GET /api/users/lookup?loginOrEmail=admin HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Basic YWRtaW46YWRtaW4=
```
2017-08-11 03:24:54 -05:00
Requires basic authentication and that the authenticated user is a Grafana Admin.
2017-01-30 23:25:55 -06:00
2017-02-14 05:56:49 -06:00
**Example Response**:
2017-01-30 23:25:55 -06:00
2017-10-05 12:01:03 -05:00
```http
HTTP/1.1 200
Content-Type: application/json
2017-01-30 23:25:55 -06:00
2017-10-05 12:01:03 -05:00
{
2017-12-19 14:30:35 -06:00
"email": "user@mygraf.com",
2017-10-05 12:01:03 -05:00
"name": "admin",
"login": "admin",
"theme": "light",
"orgId": 1,
"isGrafanaAdmin": true
}
```
2017-01-30 23:25:55 -06:00
2016-02-05 03:47:34 -06:00
## User Update
2016-02-03 00:59:22 -06:00
`PUT /api/users/:id`
**Example Request**:
2017-10-05 12:01:03 -05:00
```http
PUT /api/users/2 HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Basic YWRtaW46YWRtaW4=
2016-02-03 00:59:22 -06:00
2017-10-05 12:01:03 -05:00
{
"email":"user@mygraf.com",
"name":"User2",
"login":"user",
"theme":"light"
}
```
2016-02-03 00:59:22 -06:00
2017-08-11 03:24:54 -05:00
Requires basic authentication and that the authenticated user is a Grafana Admin.
2016-02-03 00:59:22 -06:00
**Example Response**:
2017-10-05 12:01:03 -05:00
```http
HTTP/1.1 200
Content-Type: application/json
2016-02-03 00:59:22 -06:00
2017-10-05 12:01:03 -05:00
{"message":"User updated"}
```
2016-02-03 00:59:22 -06:00
2016-02-05 03:47:34 -06:00
## Get Organisations for user
2016-02-03 00:59:22 -06:00
`GET /api/users/:id/orgs`
**Example Request**:
2017-10-05 12:01:03 -05:00
```http
GET /api/users/1/orgs HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Basic YWRtaW46YWRtaW4=
```
2017-08-11 03:24:54 -05:00
Requires basic authentication and that the authenticated user is a Grafana Admin.
2016-02-03 00:59:22 -06:00
**Example Response**:
2017-10-05 12:01:03 -05:00
```http
HTTP/1.1 200
Content-Type: application/json
2016-02-03 00:59:22 -06:00
2017-10-05 12:01:03 -05:00
[
{
"orgId":1,
"name":"Main Org.",
"role":"Admin"
}
]
```
2016-02-03 00:59:22 -06:00
## User
2016-02-05 03:47:34 -06:00
## Actual User
2016-02-03 00:59:22 -06:00
`GET /api/user`
**Example Request**:
2017-10-05 12:01:03 -05:00
```http
GET /api/user HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
```
2016-02-03 00:59:22 -06:00
**Example Response**:
2017-10-05 12:01:03 -05:00
```http
HTTP/1.1 200
Content-Type: application/json
2016-02-03 00:59:22 -06:00
2017-10-05 12:01:03 -05:00
{
"email":"admin@mygraf.com",
"name":"Admin",
"login":"admin",
"theme":"light",
"orgId":1,
"isGrafanaAdmin":true
}
```
2016-02-03 00:59:22 -06:00
2016-02-05 03:47:34 -06:00
## Change Password
2016-02-03 00:59:22 -06:00
`PUT /api/user/password`
Changes the password for the user
**Example Request**:
2017-10-05 12:01:03 -05:00
```http
PUT /api/user/password HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
2016-02-03 00:59:22 -06:00
2017-10-05 12:01:03 -05:00
{
"oldPassword": "old_password",
"newPassword": "new_password",
"confirmNew": "confirm_new_password"
}
```
2016-02-03 00:59:22 -06:00
**Example Response**:
2017-10-05 12:01:03 -05:00
```http
HTTP/1.1 200
Content-Type: application/json
2016-02-03 00:59:22 -06:00
2017-10-05 12:01:03 -05:00
{"message":"User password changed"}
```
2016-02-03 00:59:22 -06:00
2017-08-11 03:24:54 -05: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 12:01:03 -05:00
```http
POST /api/users/7/using/2 HTTP/1.1
Authorization: Basic YWRtaW46YWRtaW4=
```
2017-08-11 03:24:54 -05:00
**Example Response**:
2017-10-05 12:01:03 -05:00
```http
HTTP/1.1 200
Content-Type: application/json
2017-08-11 03:24:54 -05:00
2017-10-05 12:01:03 -05:00
{"message":"Active organization changed"}
```
2017-08-11 03:24:54 -05:00
## Switch user context for signed in user
2016-02-03 00:59:22 -06:00
2017-08-11 03:24:54 -05:00
`POST /api/user/using/:organizationId`
2016-02-03 00:59:22 -06:00
2017-08-11 03:24:54 -05:00
Switch user context to the given organization.
2016-02-03 00:59:22 -06:00
**Example Request**:
2017-10-05 12:01:03 -05:00
```http
POST /api/user/using/2 HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
```
2016-02-03 00:59:22 -06:00
**Example Response**:
2017-10-05 12:01:03 -05:00
```http
HTTP/1.1 200
Content-Type: application/json
2016-02-03 00:59:22 -06:00
2017-10-05 12:01:03 -05:00
{"message":"Active organization changed"}
```
2016-02-03 00:59:22 -06:00
2016-02-05 03:47:34 -06:00
## Organisations of the actual User
2016-02-03 00:59:22 -06:00
`GET /api/user/orgs`
Return a list of all organisations of the current user.
**Example Request**:
2017-10-05 12:01:03 -05:00
```http
GET /api/user/orgs HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
```
2016-02-03 00:59:22 -06:00
**Example Response**:
2017-10-05 12:01:03 -05:00
```http
HTTP/1.1 200
Content-Type: application/json
2016-02-03 00:59:22 -06:00
2017-10-05 12:01:03 -05:00
[
{
"orgId":1,
"name":"Main Org.",
"role":"Admin"
}
]
```
2016-02-03 00:59:22 -06:00
2016-02-05 03:47:34 -06:00
## Star a dashboard
2016-02-03 00:59:22 -06:00
`POST /api/user/stars/dashboard/:dashboardId`
Stars the given Dashboard for the actual user.
**Example Request**:
2017-10-05 12:01:03 -05:00
```http
POST /api/user/stars/dashboard/1 HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
```
2016-02-03 00:59:22 -06:00
**Example Response**:
2017-10-05 12:01:03 -05:00
```http
HTTP/1.1 200
Content-Type: application/json
2016-02-03 00:59:22 -06:00
2017-10-05 12:01:03 -05:00
{"message":"Dashboard starred!"}
```
2016-02-03 00:59:22 -06:00
2016-02-05 03:47:34 -06:00
## Unstar a dashboard
2016-02-03 00:59:22 -06:00
`DELETE /api/user/stars/dashboard/:dashboardId`
Deletes the starring of the given Dashboard for the actual user.
**Example Request**:
2017-10-05 12:01:03 -05:00
```http
DELETE /api/user/stars/dashboard/1 HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
```
2016-02-03 00:59:22 -06:00
**Example Response**:
2017-10-05 12:01:03 -05:00
```http
HTTP/1.1 200
Content-Type: application/json
2016-02-03 00:59:22 -06:00
2017-10-05 12:01:03 -05:00
{"message":"Dashboard unstarred"}
2017-12-19 14:30:35 -06:00
```