HTTP API documentation +fix when updating a playlist (#12612)
* get id from path param when updating a playlist * add playlist http api documentation * remove required condition for the id in update cmd
This commit is contained in:
committed by
Torkel Ödegaard
parent
b526150578
commit
05e060dee0
@@ -0,0 +1,286 @@
|
|||||||
|
+++
|
||||||
|
title = "Playlist HTTP API "
|
||||||
|
description = "Playlist Admin HTTP API"
|
||||||
|
keywords = ["grafana", "http", "documentation", "api", "playlist"]
|
||||||
|
aliases = ["/http_api/playlist/"]
|
||||||
|
type = "docs"
|
||||||
|
[menu.docs]
|
||||||
|
name = "Playlist"
|
||||||
|
parent = "http_api"
|
||||||
|
+++
|
||||||
|
|
||||||
|
# Playlist API
|
||||||
|
|
||||||
|
## Search Playlist
|
||||||
|
|
||||||
|
`GET /api/playlists`
|
||||||
|
|
||||||
|
Get all existing playlist for the current organization using pagination
|
||||||
|
|
||||||
|
**Example Request**:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
GET /api/playlists HTTP/1.1
|
||||||
|
Accept: application/json
|
||||||
|
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
|
||||||
|
```
|
||||||
|
|
||||||
|
Querystring Parameters:
|
||||||
|
|
||||||
|
These parameters are used as querystring parameters.
|
||||||
|
|
||||||
|
- **query** - Limit response to playlist having a name like this value.
|
||||||
|
- **limit** - Limit response to *X* number of playlist.
|
||||||
|
|
||||||
|
**Example Response**:
|
||||||
|
|
||||||
|
```json
|
||||||
|
HTTP/1.1 200
|
||||||
|
Content-Type: application/json
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"id": 1,
|
||||||
|
"name": "my playlist",
|
||||||
|
"interval": "5m"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
```
|
||||||
|
|
||||||
|
## Get one playlist
|
||||||
|
|
||||||
|
`GET /api/playlists/:id`
|
||||||
|
|
||||||
|
**Example Request**:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
GET /api/playlists/1 HTTP/1.1
|
||||||
|
Accept: application/json
|
||||||
|
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
|
||||||
|
```
|
||||||
|
|
||||||
|
**Example Response**:
|
||||||
|
|
||||||
|
```json
|
||||||
|
HTTP/1.1 200
|
||||||
|
Content-Type: application/json
|
||||||
|
{
|
||||||
|
"id" : 1,
|
||||||
|
"name": "my playlist",
|
||||||
|
"interval": "5m",
|
||||||
|
"orgId": "my org",
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"id": 1,
|
||||||
|
"playlistId": 1,
|
||||||
|
"type": "dashboard_by_id",
|
||||||
|
"value": "3",
|
||||||
|
"order": 1,
|
||||||
|
"title":"my third dasboard"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 2,
|
||||||
|
"playlistId": 1,
|
||||||
|
"type": "dashboard_by_tag",
|
||||||
|
"value": "myTag",
|
||||||
|
"order": 2,
|
||||||
|
"title":"my other dasboard"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Get Playlist items
|
||||||
|
|
||||||
|
`GET /api/playlists/:id/items`
|
||||||
|
|
||||||
|
**Example Request**:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
GET /api/playlists/1/items HTTP/1.1
|
||||||
|
Accept: application/json
|
||||||
|
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
|
||||||
|
```
|
||||||
|
|
||||||
|
**Example Response**:
|
||||||
|
|
||||||
|
```json
|
||||||
|
HTTP/1.1 200
|
||||||
|
Content-Type: application/json
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"id": 1,
|
||||||
|
"playlistId": 1,
|
||||||
|
"type": "dashboard_by_id",
|
||||||
|
"value": "3",
|
||||||
|
"order": 1,
|
||||||
|
"title":"my third dasboard"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 2,
|
||||||
|
"playlistId": 1,
|
||||||
|
"type": "dashboard_by_tag",
|
||||||
|
"value": "myTag",
|
||||||
|
"order": 2,
|
||||||
|
"title":"my other dasboard"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
```
|
||||||
|
|
||||||
|
## Get Playlist dashboards
|
||||||
|
|
||||||
|
`GET /api/playlists/:id/dashboards`
|
||||||
|
|
||||||
|
**Example Request**:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
GET /api/playlists/1/dashboards HTTP/1.1
|
||||||
|
Accept: application/json
|
||||||
|
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
|
||||||
|
```
|
||||||
|
|
||||||
|
**Example Response**:
|
||||||
|
|
||||||
|
```json
|
||||||
|
HTTP/1.1 200
|
||||||
|
Content-Type: application/json
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"id": 3,
|
||||||
|
"title": "my third dasboard",
|
||||||
|
"order": 1,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 5,
|
||||||
|
"title":"my other dasboard"
|
||||||
|
"order": 2,
|
||||||
|
|
||||||
|
}
|
||||||
|
]
|
||||||
|
```
|
||||||
|
|
||||||
|
## Create a playlist
|
||||||
|
|
||||||
|
`POST /api/playlists/`
|
||||||
|
|
||||||
|
**Example Request**:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
PUT /api/playlists/1 HTTP/1.1
|
||||||
|
Accept: application/json
|
||||||
|
Content-Type: application/json
|
||||||
|
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
|
||||||
|
{
|
||||||
|
"name": "my playlist",
|
||||||
|
"interval": "5m",
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"type": "dashboard_by_id",
|
||||||
|
"value": "3",
|
||||||
|
"order": 1,
|
||||||
|
"title":"my third dasboard"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "dashboard_by_tag",
|
||||||
|
"value": "myTag",
|
||||||
|
"order": 2,
|
||||||
|
"title":"my other dasboard"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
**Example Response**:
|
||||||
|
|
||||||
|
```json
|
||||||
|
HTTP/1.1 200
|
||||||
|
Content-Type: application/json
|
||||||
|
{
|
||||||
|
"id": 1,
|
||||||
|
"name": "my playlist",
|
||||||
|
"interval": "5m"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Update a playlist
|
||||||
|
|
||||||
|
`PUT /api/playlists/:id`
|
||||||
|
|
||||||
|
**Example Request**:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
PUT /api/playlists/1 HTTP/1.1
|
||||||
|
Accept: application/json
|
||||||
|
Content-Type: application/json
|
||||||
|
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
|
||||||
|
{
|
||||||
|
"name": "my playlist",
|
||||||
|
"interval": "5m",
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"playlistId": 1,
|
||||||
|
"type": "dashboard_by_id",
|
||||||
|
"value": "3",
|
||||||
|
"order": 1,
|
||||||
|
"title":"my third dasboard"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"playlistId": 1,
|
||||||
|
"type": "dashboard_by_tag",
|
||||||
|
"value": "myTag",
|
||||||
|
"order": 2,
|
||||||
|
"title":"my other dasboard"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
**Example Response**:
|
||||||
|
|
||||||
|
```json
|
||||||
|
HTTP/1.1 200
|
||||||
|
Content-Type: application/json
|
||||||
|
{
|
||||||
|
"id" : 1,
|
||||||
|
"name": "my playlist",
|
||||||
|
"interval": "5m",
|
||||||
|
"orgId": "my org",
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"id": 1,
|
||||||
|
"playlistId": 1,
|
||||||
|
"type": "dashboard_by_id",
|
||||||
|
"value": "3",
|
||||||
|
"order": 1,
|
||||||
|
"title":"my third dasboard"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 2,
|
||||||
|
"playlistId": 1,
|
||||||
|
"type": "dashboard_by_tag",
|
||||||
|
"value": "myTag",
|
||||||
|
"order": 2,
|
||||||
|
"title":"my other dasboard"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Delete a playlist
|
||||||
|
|
||||||
|
`DELETE /api/playlists/:id`
|
||||||
|
|
||||||
|
**Example Request**:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
DELETE /api/playlists/1 HTTP/1.1
|
||||||
|
Accept: application/json
|
||||||
|
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
|
||||||
|
```
|
||||||
|
|
||||||
|
**Example Response**:
|
||||||
|
|
||||||
|
```json
|
||||||
|
HTTP/1.1 200
|
||||||
|
Content-Type: application/json
|
||||||
|
{}
|
||||||
|
```
|
||||||
@@ -160,6 +160,7 @@ func CreatePlaylist(c *m.ReqContext, cmd m.CreatePlaylistCommand) Response {
|
|||||||
|
|
||||||
func UpdatePlaylist(c *m.ReqContext, cmd m.UpdatePlaylistCommand) Response {
|
func UpdatePlaylist(c *m.ReqContext, cmd m.UpdatePlaylistCommand) Response {
|
||||||
cmd.OrgId = c.OrgId
|
cmd.OrgId = c.OrgId
|
||||||
|
cmd.Id = c.ParamsInt64(":id")
|
||||||
|
|
||||||
if err := bus.Dispatch(&cmd); err != nil {
|
if err := bus.Dispatch(&cmd); err != nil {
|
||||||
return Error(500, "Failed to save playlist", err)
|
return Error(500, "Failed to save playlist", err)
|
||||||
|
|||||||
@@ -63,7 +63,7 @@ type PlaylistDashboards []*PlaylistDashboard
|
|||||||
|
|
||||||
type UpdatePlaylistCommand struct {
|
type UpdatePlaylistCommand struct {
|
||||||
OrgId int64 `json:"-"`
|
OrgId int64 `json:"-"`
|
||||||
Id int64 `json:"id" binding:"Required"`
|
Id int64 `json:"id"`
|
||||||
Name string `json:"name" binding:"Required"`
|
Name string `json:"name" binding:"Required"`
|
||||||
Interval string `json:"interval"`
|
Interval string `json:"interval"`
|
||||||
Items []PlaylistItemDTO `json:"items"`
|
Items []PlaylistItemDTO `json:"items"`
|
||||||
|
|||||||
Reference in New Issue
Block a user