mirror of
https://github.com/grafana/grafana.git
synced 2025-07-31 21:42:38 +08:00
Merge pull request #2378 from sbengo/improved_http_api_doc
Added details on api documentation
This commit is contained in:
@ -22,7 +22,7 @@ standard basic auth.
|
|||||||
|
|
||||||
curl example:
|
curl example:
|
||||||
```
|
```
|
||||||
❯curl http://admin:admin@localhost:3000/api/org
|
?curl http://admin:admin@localhost:3000/api/org
|
||||||
{"id":1,"name":"Main Org."}
|
{"id":1,"name":"Main Org."}
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -158,10 +158,88 @@ The above will delete the dashboard with the specified slug. The slug is the url
|
|||||||
|
|
||||||
`GET /api/dashboards/home`
|
`GET /api/dashboards/home`
|
||||||
|
|
||||||
|
Will return the home dashboard.
|
||||||
|
|
||||||
|
**Example Request**:
|
||||||
|
|
||||||
|
GET /api/dashboards/home HTTP/1.1
|
||||||
|
Accept: application/json
|
||||||
|
Content-Type: application/json
|
||||||
|
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
|
||||||
|
|
||||||
|
**Example Response**:
|
||||||
|
|
||||||
|
HTTP/1.1 200
|
||||||
|
Content-Type: application/json
|
||||||
|
|
||||||
|
{
|
||||||
|
"meta": {
|
||||||
|
"isHome":true,
|
||||||
|
"canSave":false,
|
||||||
|
"canEdit":false,
|
||||||
|
"canStar":false,
|
||||||
|
"slug":"",
|
||||||
|
"expires":"0001-01-01T00:00:00Z",
|
||||||
|
"created":"0001-01-01T00:00:00Z"
|
||||||
|
},
|
||||||
|
"dashboard": {
|
||||||
|
"editable":false,
|
||||||
|
"hideControls":true,
|
||||||
|
"nav":[
|
||||||
|
{
|
||||||
|
"enable":false,
|
||||||
|
"type":"timepicker"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"rows": [
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"style":"dark",
|
||||||
|
"tags":[],
|
||||||
|
"templating":{
|
||||||
|
"list":[
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"time":{
|
||||||
|
},
|
||||||
|
"timezone":"browser",
|
||||||
|
"title":"Home",
|
||||||
|
"version":5
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
### Tags for Dashboard
|
### Tags for Dashboard
|
||||||
|
|
||||||
|
|
||||||
`GET /api/dashboards/tags`
|
`GET /api/dashboards/tags`
|
||||||
|
|
||||||
|
Get all tabs of dashboards
|
||||||
|
|
||||||
|
**Example Request**:
|
||||||
|
|
||||||
|
GET /api/dashboards/home HTTP/1.1
|
||||||
|
Accept: application/json
|
||||||
|
Content-Type: application/json
|
||||||
|
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
|
||||||
|
|
||||||
|
**Example Response**:
|
||||||
|
|
||||||
|
HTTP/1.1 200
|
||||||
|
Content-Type: application/json
|
||||||
|
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"term":"tag1",
|
||||||
|
"count":1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"term":"tag2",
|
||||||
|
"count":4
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
### Dashboard from JSON file
|
### Dashboard from JSON file
|
||||||
|
|
||||||
`GET /file/:file`
|
`GET /file/:file`
|
||||||
@ -184,35 +262,165 @@ Status Codes:
|
|||||||
Content-Type: application/json
|
Content-Type: application/json
|
||||||
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
|
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
|
||||||
|
|
||||||
|
**Example Response**:
|
||||||
|
|
||||||
|
HTTP/1.1 200
|
||||||
|
Content-Type: application/json
|
||||||
|
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"id":1,
|
||||||
|
"title":"Production Overview",
|
||||||
|
"uri":"db/production-overview",
|
||||||
|
"type":"dash-db",
|
||||||
|
"tags":[],
|
||||||
|
"isStarred":false
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
## Data sources
|
## Data sources
|
||||||
|
|
||||||
### Get all datasources
|
### Get all datasources
|
||||||
|
|
||||||
`GET /api/datasources`
|
`GET /api/datasources`
|
||||||
|
|
||||||
|
**Example Request**:
|
||||||
|
|
||||||
|
GET /api/datasources HTTP/1.1
|
||||||
|
Accept: application/json
|
||||||
|
Content-Type: application/json
|
||||||
|
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
|
||||||
|
|
||||||
|
**Example Response**:
|
||||||
|
|
||||||
|
HTTP/1.1 200
|
||||||
|
Content-Type: application/json
|
||||||
|
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"id":1,
|
||||||
|
"orgId":1,
|
||||||
|
"name":"datasource_elastic",
|
||||||
|
"type":"elasticsearch",
|
||||||
|
"access":"proxy",
|
||||||
|
"url":"http://mydatasource.com",
|
||||||
|
"password":"",
|
||||||
|
"user":"",
|
||||||
|
"database":"grafana-dash",
|
||||||
|
"basicAuth":false,
|
||||||
|
"basicAuthUser":"",
|
||||||
|
"basicAuthPassword":"",
|
||||||
|
"isDefault":false,
|
||||||
|
"jsonData":null
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
### Get a single data sources by Id
|
### Get a single data sources by Id
|
||||||
|
|
||||||
`GET /api/datasources/:datasourceId`
|
`GET /api/datasources/:datasourceId`
|
||||||
|
|
||||||
|
**Example Request**:
|
||||||
|
|
||||||
|
GET /api/datasources/1 HTTP/1.1
|
||||||
|
Accept: application/json
|
||||||
|
Content-Type: application/json
|
||||||
|
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
|
||||||
|
|
||||||
|
**Example Response**:
|
||||||
|
|
||||||
|
HTTP/1.1 200
|
||||||
|
Content-Type: application/json
|
||||||
|
|
||||||
|
{
|
||||||
|
"id":1,
|
||||||
|
"orgId":1,
|
||||||
|
"name":"test_datasource",
|
||||||
|
"type":"graphite",
|
||||||
|
"access":"proxy",
|
||||||
|
"url":"http://mydatasource.com",
|
||||||
|
"password":"",
|
||||||
|
"user":"",
|
||||||
|
"database":"",
|
||||||
|
"basicAuth":false,
|
||||||
|
"basicAuthUser":"",
|
||||||
|
"basicAuthPassword":"",
|
||||||
|
"isDefault":false,
|
||||||
|
"jsonData":null
|
||||||
|
}
|
||||||
|
|
||||||
### Create data source
|
### Create data source
|
||||||
|
|
||||||
`POST /api/datasources`
|
`POST /api/datasources`
|
||||||
|
|
||||||
|
**Example Request**:
|
||||||
|
|
||||||
|
POST /api/datasources HTTP/1.1
|
||||||
|
Accept: application/json
|
||||||
|
Content-Type: application/json
|
||||||
|
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
|
||||||
|
|
||||||
|
{
|
||||||
|
"name":"test_datasource",
|
||||||
|
"type":"graphite",
|
||||||
|
"url":"http://mydatasource.com",
|
||||||
|
"access":"proxy",
|
||||||
|
"basicAuth":false
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
**Example Response**:
|
**Example Response**:
|
||||||
|
|
||||||
HTTP/1.1 200
|
HTTP/1.1 200
|
||||||
Content-Type: application/json
|
Content-Type: application/json
|
||||||
|
|
||||||
{"message":"Datasource added"}
|
{"id":1,"message":"Datasource added"}
|
||||||
|
|
||||||
### Update an existing data source
|
### Update an existing data source
|
||||||
|
|
||||||
`PUT /api/datasources/:datasourceId`
|
`PUT /api/datasources/:datasourceId`
|
||||||
|
|
||||||
|
**Example Request**:
|
||||||
|
|
||||||
|
PUT /api/datasources/1 HTTP/1.1
|
||||||
|
Accept: application/json
|
||||||
|
Content-Type: application/json
|
||||||
|
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
|
||||||
|
|
||||||
|
{
|
||||||
|
"id":1,
|
||||||
|
"orgId":1,
|
||||||
|
"name":"test_datasource",
|
||||||
|
"type":"graphite",
|
||||||
|
"access":"proxy",
|
||||||
|
"url":"http://mydatasource.com",
|
||||||
|
"password":"",
|
||||||
|
"user":"",
|
||||||
|
"database":"",
|
||||||
|
"basicAuth":true,
|
||||||
|
"basicAuthUser":"basicuser",
|
||||||
|
"basicAuthPassword":"basicuser",
|
||||||
|
"isDefault":false,
|
||||||
|
"jsonData":null
|
||||||
|
}
|
||||||
|
|
||||||
|
**Example Response**:
|
||||||
|
|
||||||
|
HTTP/1.1 200
|
||||||
|
Content-Type: application/json
|
||||||
|
|
||||||
|
{"message":"Datasource updated"}
|
||||||
|
|
||||||
### Delete an existing data source
|
### Delete an existing data source
|
||||||
|
|
||||||
`DELETE /api/datasources/:datasourceId`
|
`DELETE /api/datasources/:datasourceId`
|
||||||
|
|
||||||
|
**Example Request**:
|
||||||
|
|
||||||
|
DELETE /api/datasources/1 HTTP/1.1
|
||||||
|
Accept: application/json
|
||||||
|
Content-Type: application/json
|
||||||
|
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
|
||||||
|
|
||||||
**Example Response**:
|
**Example Response**:
|
||||||
|
|
||||||
HTTP/1.1 200
|
HTTP/1.1 200
|
||||||
@ -224,6 +432,31 @@ Status Codes:
|
|||||||
|
|
||||||
`GET /api/datasources/plugins`
|
`GET /api/datasources/plugins`
|
||||||
|
|
||||||
|
**Example Request**:
|
||||||
|
|
||||||
|
GET /api/datasources/plugins HTTP/1.1
|
||||||
|
Accept: application/json
|
||||||
|
Content-Type: application/json
|
||||||
|
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
|
||||||
|
|
||||||
|
**Example Response**:
|
||||||
|
|
||||||
|
HTTP/1.1 200
|
||||||
|
Content-Type: application/json
|
||||||
|
|
||||||
|
{
|
||||||
|
"grafana":{
|
||||||
|
"metrics":true,"module":"plugins/datasource/grafana/datasource",
|
||||||
|
"name":"Grafana (for testing)",
|
||||||
|
"partials":{
|
||||||
|
"query":"app/plugins/datasource/grafana/partials/query.editor.html"
|
||||||
|
},
|
||||||
|
"pluginType":"datasource",
|
||||||
|
"serviceName":"GrafanaDatasource",
|
||||||
|
"type":"grafana"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
## Data source proxy calls
|
## Data source proxy calls
|
||||||
|
|
||||||
`GET /api/datasources/proxy/:datasourceId/*`
|
`GET /api/datasources/proxy/:datasourceId/*`
|
||||||
@ -236,27 +469,118 @@ Proxies all calls to the actual datasource.
|
|||||||
|
|
||||||
`GET /api/org`
|
`GET /api/org`
|
||||||
|
|
||||||
|
**Example Request**:
|
||||||
|
|
||||||
|
GET /api/org HTTP/1.1
|
||||||
|
Accept: application/json
|
||||||
|
Content-Type: application/json
|
||||||
|
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
|
||||||
|
|
||||||
|
**Example Response**:
|
||||||
|
|
||||||
|
HTTP/1.1 200
|
||||||
|
Content-Type: application/json
|
||||||
|
|
||||||
|
{
|
||||||
|
"id":1,
|
||||||
|
"name":"Main Org."
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
### Get all users within the actual organisation
|
### Get all users within the actual organisation
|
||||||
|
|
||||||
`GET /api/org/users`
|
`GET /api/org/users`
|
||||||
|
|
||||||
|
**Example Request**:
|
||||||
|
|
||||||
|
GET /api/org/users HTTP/1.1
|
||||||
|
Accept: application/json
|
||||||
|
Content-Type: application/json
|
||||||
|
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
|
||||||
|
|
||||||
|
**Example Response**:
|
||||||
|
|
||||||
|
HTTP/1.1 200
|
||||||
|
Content-Type: application/json
|
||||||
|
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"orgId":1,
|
||||||
|
"userId":1,
|
||||||
|
"email":"admin@mygraf.com",
|
||||||
|
"login":"admin",
|
||||||
|
"role":"Admin"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
### Add a new user to the actual organisation
|
### Add a new user to the actual organisation
|
||||||
|
|
||||||
`POST /api/org/users`
|
`POST /api/org/users`
|
||||||
|
|
||||||
Adds a global user to the actual organisation.
|
Adds a global user to the actual organisation.
|
||||||
|
|
||||||
|
**Example Request**:
|
||||||
|
|
||||||
|
POST /api/org/users HTTP/1.1
|
||||||
|
Accept: application/json
|
||||||
|
Content-Type: application/json
|
||||||
|
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
|
||||||
|
|
||||||
|
{
|
||||||
|
"role": "Admin",
|
||||||
|
"loginOrEmail": "admin"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
**Example Response**:
|
||||||
|
|
||||||
|
HTTP/1.1 200
|
||||||
|
Content-Type: application/json
|
||||||
|
|
||||||
|
{"message":"User added to organization"}
|
||||||
|
|
||||||
### Updates the given user
|
### Updates the given user
|
||||||
|
|
||||||
`PATCH /api/org/users/:userId`
|
`PATCH /api/org/users/:userId`
|
||||||
|
|
||||||
|
**Example Request**:
|
||||||
|
|
||||||
|
PATCH /api/org/users/1 HTTP/1.1
|
||||||
|
Accept: application/json
|
||||||
|
Content-Type: application/json
|
||||||
|
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
|
||||||
|
|
||||||
|
{
|
||||||
|
"role": "Viewer",
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
**Example Response**:
|
||||||
|
|
||||||
|
HTTP/1.1 200
|
||||||
|
Content-Type: application/json
|
||||||
|
|
||||||
|
{"message":"Organization user updated"}
|
||||||
|
|
||||||
|
|
||||||
### Delete user in actual organisation
|
### Delete user in actual organisation
|
||||||
|
|
||||||
`DELETE /api/org/users/:userId`
|
`DELETE /api/org/users/:userId`
|
||||||
|
|
||||||
### Get all Users
|
**Example Request**:
|
||||||
|
|
||||||
|
DELETE /api/org/users/1 HTTP/1.1
|
||||||
|
Accept: application/json
|
||||||
|
Content-Type: application/json
|
||||||
|
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
|
||||||
|
|
||||||
|
**Example Response**:
|
||||||
|
|
||||||
|
HTTP/1.1 200
|
||||||
|
Content-Type: application/json
|
||||||
|
|
||||||
|
{"message":"User removed from organization"}
|
||||||
|
|
||||||
`GET /api/org/users`
|
|
||||||
|
|
||||||
## Organisations
|
## Organisations
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user