forked from grafana/grafana-api-golang-client
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathservice_account_permissions.go
50 lines (42 loc) · 1.71 KB
/
service_account_permissions.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
package gapi
import (
"bytes"
"encoding/json"
"fmt"
)
// ServiceAccountPermission represents a service account permission for a user or a team.
type ServiceAccountPermission struct {
ID int64 `json:"id"`
TeamID int64 `json:"teamId,omitempty"`
UserID int64 `json:"userId,omitempty"`
IsManaged bool `json:"isManaged"`
Permission string `json:"permission"`
}
// ServiceAccountPermissionItems represents Grafana service account permission items used for permission updates.
type ServiceAccountPermissionItems struct {
Permissions []*ServiceAccountPermissionItem `json:"permissions"`
}
// ServiceAccountPermissionItem represents a Grafana service account permission item.
type ServiceAccountPermissionItem struct {
TeamID int64 `json:"teamId,omitempty"`
UserID int64 `json:"userId,omitempty"`
Permission string `json:"permission"`
}
// GetServiceAccountPermissions fetches and returns the permissions for the service account whose ID it's passed in.
func (c *Client) GetServiceAccountPermissions(id int64) ([]*ServiceAccountPermission, error) {
permissions := make([]*ServiceAccountPermission, 0)
err := c.request("GET", fmt.Sprintf("/api/access-control/serviceaccounts/%d", id), nil, nil, &permissions)
if err != nil {
return permissions, err
}
return permissions, nil
}
// UpdateServiceAccountPermissions updates service account permissions for teams and users included in the request.
func (c *Client) UpdateServiceAccountPermissions(id int64, items *ServiceAccountPermissionItems) error {
path := fmt.Sprintf("/api/access-control/serviceaccounts/%d", id)
data, err := json.Marshal(items)
if err != nil {
return err
}
return c.request("POST", path, nil, bytes.NewBuffer(data), nil)
}