@@ -14,6 +14,12 @@ type Folder struct {
1414 URL string `json:"url"`
1515}
1616
17+ type FolderPayload struct {
18+ Title string `json:"title"`
19+ UID string `json:"uid,omitempty"`
20+ Overwrite bool `json:"overwrite,omitempty"`
21+ }
22+
1723// Folders fetches and returns Grafana folders.
1824func (c * Client ) Folders () ([]Folder , error ) {
1925 folders := make ([]Folder , 0 )
@@ -54,13 +60,13 @@ func (c *Client) NewFolder(title string, uid ...string) (Folder, error) {
5460 }
5561
5662 folder := Folder {}
57- dataMap := map [ string ] string {
58- "title" : title ,
63+ payload := FolderPayload {
64+ Title : title ,
5965 }
6066 if len (uid ) == 1 {
61- dataMap [ "uid" ] = uid [0 ]
67+ payload . UID = uid [0 ]
6268 }
63- data , err := json .Marshal (dataMap )
69+ data , err := json .Marshal (payload )
6470 if err != nil {
6571 return folder , err
6672 }
@@ -73,17 +79,21 @@ func (c *Client) NewFolder(title string, uid ...string) (Folder, error) {
7379 return folder , err
7480}
7581
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 ]
8090 }
81- data , err := json .Marshal (dataMap )
91+ data , err := json .Marshal (payload )
8292 if err != nil {
8393 return err
8494 }
8595
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 )
8797}
8898
8999// DeleteFolder deletes the folder whose ID it's passed.
0 commit comments