-
Notifications
You must be signed in to change notification settings - Fork 5
/
jamfproapi_enrollment_customizations.go
153 lines (115 loc) · 4.58 KB
/
jamfproapi_enrollment_customizations.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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
// jamfproapi_enrollment_customizations.go
// Jamf Pro Api - Enrollment Customizations
// api reference: https://developer.jamf.com/jamf-pro/reference/get_v2-enrollment-customizations-id
// Jamf Pro API requires the structs to support a JSON data structure.
package jamfpro
import (
"fmt"
"github.com/mitchellh/mapstructure"
)
const uriEnrollmentCustomizationSettings = "/api/v2/enrollment-customizations"
// Structs
// List
type ResponseEnrollmentCustomizationList struct {
TotalCount int `json:"totalCount"`
Results []ResourceEnrollmentCustomization
}
// Responses
type ResponseEnrollmentCustomizationCreate struct {
Id string `json:"id"`
Href string `json:"href"`
}
// Resource
type ResourceEnrollmentCustomization struct {
ID string `json:"id"`
SiteID string `json:"siteId"`
DisplayName string `json:"displayName"`
Description string `json:"description"`
BrandingSettings EnrollmentCustomizationSubsetBrandingSettings `json:"enrollmentCustomizationBrandingSettings"`
}
// Subsets
type EnrollmentCustomizationSubsetBrandingSettings struct {
TextColor string `json:"textColor"`
ButtonColor string `json:"buttonColor"`
ButtonTextColor string `json:"buttonTextColor"`
BackgroundColor string `json:"backgroundColor"`
IconUrl string `json:"iconUrl"`
}
// CRUD
// TODO Upload an image - https://developer.jamf.com/jamf-pro/reference/post_v2-enrollment-customizations-images
// TODO Download an image - https://developer.jamf.com/jamf-pro/reference/get_v2-enrollment-customizations-images-id
// Returns paginated list of Enrollment Customization
func (c *Client) GetEnrollmentCustomizations(sort_filter string) (*ResponseEnrollmentCustomizationList, error) {
endpoint := uriEnrollmentCustomizationSettings
resp, err := c.DoPaginatedGet(
endpoint,
standardPageSize,
startingPageNumber,
sort_filter,
)
if err != nil {
return nil, fmt.Errorf(errMsgFailedPaginatedGet, "enrollment customization", err)
}
var out ResponseEnrollmentCustomizationList
out.TotalCount = resp.Size
for _, value := range resp.Results {
var newObj ResourceEnrollmentCustomization
err := mapstructure.Decode(value, &newObj)
if err != nil {
return nil, fmt.Errorf(errMsgFailedMapstruct, "enrollment customization", err)
}
out.Results = append(out.Results, newObj)
}
return &out, nil
}
// Returns single ResourceEnrollmentCustomization object matching given id
func (c *Client) GetEnrollmentCustomizationByID(id string) (*ResourceEnrollmentCustomization, error) {
endpoint := fmt.Sprintf("%s/%s", uriEnrollmentCustomizationSettings, id)
var out ResourceEnrollmentCustomization
resp, err := c.HTTP.DoRequest("GET", endpoint, nil, &out)
if err != nil {
return nil, fmt.Errorf(errMsgFailedGetByID, "enrollment customization", id, err)
}
if resp != nil && resp.Body != nil {
defer resp.Body.Close()
}
return &out, nil
}
// Creates new resource enrollment customization
func (c *Client) CreateEnrollmentCustomization(enrollmentCustomization ResourceEnrollmentCustomization) (*ResponseEnrollmentCustomizationCreate, error) {
endpoint := uriEnrollmentCustomizationSettings
var out ResponseEnrollmentCustomizationCreate
resp, err := c.HTTP.DoRequest("POST", endpoint, enrollmentCustomization, &out)
if err != nil {
return nil, fmt.Errorf(errMsgFailedCreate, "enrollment customization", err)
}
if resp != nil && resp.Body != nil {
defer resp.Body.Close()
}
return &out, nil
}
// Updates resource enrollment customization by id
func (c *Client) UpdateEnrollmentCustomizationByID(id string, updatedCustomization ResourceEnrollmentCustomization) (*ResourceEnrollmentCustomization, error) {
endpoint := fmt.Sprintf("%s/%s", uriEnrollmentCustomizationSettings, id)
var out ResourceEnrollmentCustomization
resp, err := c.HTTP.DoRequest("PUT", endpoint, updatedCustomization, &out)
if err != nil {
return nil, fmt.Errorf(errMsgFailedUpdateByID, "enrollment customization settings", id, err)
}
if resp != nil && resp.Body != nil {
defer resp.Body.Close()
}
return &out, nil
}
// Deletes resource enrollment customization by id
func (c *Client) DeleteEnrollmentCustomizationByID(id string) error {
endpoint := fmt.Sprintf("%s/%s", uriEnrollmentCustomizationSettings, id)
resp, err := c.HTTP.DoRequest("DELETE", endpoint, nil, nil)
if err != nil {
return fmt.Errorf(errMsgFailedDeleteByID, "enrollment customization settings", id, err)
}
if resp != nil {
defer resp.Body.Close()
}
return nil
}