@@ -14,6 +14,12 @@ type Folder struct {
14
14
URL string `json:"url"`
15
15
}
16
16
17
+ type FolderPayload struct {
18
+ Title string `json:"title"`
19
+ UID string `json:"uid,omitempty"`
20
+ Overwrite bool `json:"overwrite,omitempty"`
21
+ }
22
+
17
23
// Folders fetches and returns Grafana folders.
18
24
func (c * Client ) Folders () ([]Folder , error ) {
19
25
folders := make ([]Folder , 0 )
@@ -54,13 +60,13 @@ func (c *Client) NewFolder(title string, uid ...string) (Folder, error) {
54
60
}
55
61
56
62
folder := Folder {}
57
- dataMap := map [ string ] string {
58
- "title" : title ,
63
+ payload := FolderPayload {
64
+ Title : title ,
59
65
}
60
66
if len (uid ) == 1 {
61
- dataMap [ "uid" ] = uid [0 ]
67
+ payload . UID = uid [0 ]
62
68
}
63
- data , err := json .Marshal (dataMap )
69
+ data , err := json .Marshal (payload )
64
70
if err != nil {
65
71
return folder , err
66
72
}
@@ -73,17 +79,21 @@ func (c *Client) NewFolder(title string, uid ...string) (Folder, error) {
73
79
return folder , err
74
80
}
75
81
76
- // UpdateFolder updates the folder whose ID it's passed.
77
- func (c * Client ) UpdateFolder (id string , name string ) error {
78
- dataMap := map [string ]string {
79
- "name" : name ,
82
+ // UpdateFolder updates the folder whose UID it's passed.
83
+ func (c * Client ) UpdateFolder (uid string , title string , newUID ... string ) error {
84
+ payload := FolderPayload {
85
+ Title : title ,
86
+ Overwrite : true ,
87
+ }
88
+ if len (newUID ) == 1 {
89
+ payload .UID = newUID [0 ]
80
90
}
81
- data , err := json .Marshal (dataMap )
91
+ data , err := json .Marshal (payload )
82
92
if err != nil {
83
93
return err
84
94
}
85
95
86
- return c .request ("PUT" , fmt .Sprintf ("/api/folders/%s" , id ), nil , bytes .NewBuffer (data ), nil )
96
+ return c .request ("PUT" , fmt .Sprintf ("/api/folders/%s" , uid ), nil , bytes .NewBuffer (data ), nil )
87
97
}
88
98
89
99
// DeleteFolder deletes the folder whose ID it's passed.
0 commit comments