1/*
2* Copyright 2018 - Present Okta, Inc.
3*
4* Licensed under the Apache License, Version 2.0 (the "License");
5* you may not use this file except in compliance with the License.
6* You may obtain a copy of the License at
7*
8*      http://www.apache.org/licenses/LICENSE-2.0
9*
10* Unless required by applicable law or agreed to in writing, software
11* distributed under the License is distributed on an "AS IS" BASIS,
12* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13* See the License for the specific language governing permissions and
14* limitations under the License.
15 */
16
17// AUTO-GENERATED!  DO NOT EDIT FILE DIRECTLY
18
19package okta
20
21import (
22	"fmt"
23	"github.com/okta/okta-sdk-golang/okta/query"
24	"time"
25)
26
27type GroupResource resource
28
29type Group struct {
30	Embedded              interface{}   `json:"_embedded,omitempty"`
31	Links                 interface{}   `json:"_links,omitempty"`
32	Created               *time.Time    `json:"created,omitempty"`
33	Id                    string        `json:"id,omitempty"`
34	LastMembershipUpdated *time.Time    `json:"lastMembershipUpdated,omitempty"`
35	LastUpdated           *time.Time    `json:"lastUpdated,omitempty"`
36	ObjectClass           []string      `json:"objectClass,omitempty"`
37	Profile               *GroupProfile `json:"profile,omitempty"`
38	Type                  string        `json:"type,omitempty"`
39}
40
41func (m *GroupResource) UpdateGroup(groupId string, body Group) (*Group, *Response, error) {
42	url := fmt.Sprintf("/api/v1/groups/%v", groupId)
43	req, err := m.client.requestExecutor.NewRequest("PUT", url, body)
44	if err != nil {
45		return nil, nil, err
46	}
47
48	var group *Group
49	resp, err := m.client.requestExecutor.Do(req, &group)
50	if err != nil {
51		return nil, resp, err
52	}
53	return group, resp, nil
54}
55func (m *GroupResource) DeleteGroup(groupId string) (*Response, error) {
56	url := fmt.Sprintf("/api/v1/groups/%v", groupId)
57	req, err := m.client.requestExecutor.NewRequest("DELETE", url, nil)
58	if err != nil {
59		return nil, err
60	}
61
62	resp, err := m.client.requestExecutor.Do(req, nil)
63	if err != nil {
64		return resp, err
65	}
66	return resp, nil
67}
68func (m *GroupResource) ListGroups(qp *query.Params) ([]*Group, *Response, error) {
69	url := fmt.Sprintf("/api/v1/groups")
70	if qp != nil {
71		url = url + qp.String()
72	}
73	req, err := m.client.requestExecutor.NewRequest("GET", url, nil)
74	if err != nil {
75		return nil, nil, err
76	}
77
78	var group []*Group
79	resp, err := m.client.requestExecutor.Do(req, &group)
80	if err != nil {
81		return nil, resp, err
82	}
83	return group, resp, nil
84}
85func (m *GroupResource) CreateGroup(body Group) (*Group, *Response, error) {
86	url := fmt.Sprintf("/api/v1/groups")
87	req, err := m.client.requestExecutor.NewRequest("POST", url, body)
88	if err != nil {
89		return nil, nil, err
90	}
91
92	var group *Group
93	resp, err := m.client.requestExecutor.Do(req, &group)
94	if err != nil {
95		return nil, resp, err
96	}
97	return group, resp, nil
98}
99func (m *GroupResource) ListRules(qp *query.Params) ([]*GroupRule, *Response, error) {
100	url := fmt.Sprintf("/api/v1/groups/rules")
101	if qp != nil {
102		url = url + qp.String()
103	}
104	req, err := m.client.requestExecutor.NewRequest("GET", url, nil)
105	if err != nil {
106		return nil, nil, err
107	}
108
109	var groupRule []*GroupRule
110	resp, err := m.client.requestExecutor.Do(req, &groupRule)
111	if err != nil {
112		return nil, resp, err
113	}
114	return groupRule, resp, nil
115}
116func (m *GroupResource) CreateRule(body GroupRule) (*GroupRule, *Response, error) {
117	url := fmt.Sprintf("/api/v1/groups/rules")
118	req, err := m.client.requestExecutor.NewRequest("POST", url, body)
119	if err != nil {
120		return nil, nil, err
121	}
122
123	var groupRule *GroupRule
124	resp, err := m.client.requestExecutor.Do(req, &groupRule)
125	if err != nil {
126		return nil, resp, err
127	}
128	return groupRule, resp, nil
129}
130func (m *GroupResource) DeleteRule(ruleId string, qp *query.Params) (*Response, error) {
131	url := fmt.Sprintf("/api/v1/groups/rules/%v", ruleId)
132	if qp != nil {
133		url = url + qp.String()
134	}
135	req, err := m.client.requestExecutor.NewRequest("DELETE", url, nil)
136	if err != nil {
137		return nil, err
138	}
139
140	resp, err := m.client.requestExecutor.Do(req, nil)
141	if err != nil {
142		return resp, err
143	}
144	return resp, nil
145}
146func (m *GroupResource) GetRule(ruleId string, qp *query.Params) (*GroupRule, *Response, error) {
147	url := fmt.Sprintf("/api/v1/groups/rules/%v", ruleId)
148	if qp != nil {
149		url = url + qp.String()
150	}
151	req, err := m.client.requestExecutor.NewRequest("GET", url, nil)
152	if err != nil {
153		return nil, nil, err
154	}
155
156	var groupRule *GroupRule
157	resp, err := m.client.requestExecutor.Do(req, &groupRule)
158	if err != nil {
159		return nil, resp, err
160	}
161	return groupRule, resp, nil
162}
163func (m *GroupResource) UpdateRule(ruleId string, body GroupRule) (*GroupRule, *Response, error) {
164	url := fmt.Sprintf("/api/v1/groups/rules/%v", ruleId)
165	req, err := m.client.requestExecutor.NewRequest("PUT", url, body)
166	if err != nil {
167		return nil, nil, err
168	}
169
170	var groupRule *GroupRule
171	resp, err := m.client.requestExecutor.Do(req, &groupRule)
172	if err != nil {
173		return nil, resp, err
174	}
175	return groupRule, resp, nil
176}
177func (m *GroupResource) ActivateRule(ruleId string) (*Response, error) {
178	url := fmt.Sprintf("/api/v1/groups/rules/%v/lifecycle/activate", ruleId)
179	req, err := m.client.requestExecutor.NewRequest("POST", url, nil)
180	if err != nil {
181		return nil, err
182	}
183
184	resp, err := m.client.requestExecutor.Do(req, nil)
185	if err != nil {
186		return resp, err
187	}
188	return resp, nil
189}
190func (m *GroupResource) DeactivateRule(ruleId string) (*Response, error) {
191	url := fmt.Sprintf("/api/v1/groups/rules/%v/lifecycle/deactivate", ruleId)
192	req, err := m.client.requestExecutor.NewRequest("POST", url, nil)
193	if err != nil {
194		return nil, err
195	}
196
197	resp, err := m.client.requestExecutor.Do(req, nil)
198	if err != nil {
199		return resp, err
200	}
201	return resp, nil
202}
203func (m *GroupResource) GetGroup(groupId string, qp *query.Params) (*Group, *Response, error) {
204	url := fmt.Sprintf("/api/v1/groups/%v", groupId)
205	if qp != nil {
206		url = url + qp.String()
207	}
208	req, err := m.client.requestExecutor.NewRequest("GET", url, nil)
209	if err != nil {
210		return nil, nil, err
211	}
212
213	var group *Group
214	resp, err := m.client.requestExecutor.Do(req, &group)
215	if err != nil {
216		return nil, resp, err
217	}
218	return group, resp, nil
219}
220func (m *GroupResource) ListGroupUsers(groupId string, qp *query.Params) ([]*User, *Response, error) {
221	url := fmt.Sprintf("/api/v1/groups/%v/users", groupId)
222	if qp != nil {
223		url = url + qp.String()
224	}
225	req, err := m.client.requestExecutor.NewRequest("GET", url, nil)
226	if err != nil {
227		return nil, nil, err
228	}
229
230	var user []*User
231	resp, err := m.client.requestExecutor.Do(req, &user)
232	if err != nil {
233		return nil, resp, err
234	}
235	return user, resp, nil
236}
237func (m *GroupResource) RemoveGroupUser(groupId string, userId string) (*Response, error) {
238	url := fmt.Sprintf("/api/v1/groups/%v/users/%v", groupId, userId)
239	req, err := m.client.requestExecutor.NewRequest("DELETE", url, nil)
240	if err != nil {
241		return nil, err
242	}
243
244	resp, err := m.client.requestExecutor.Do(req, nil)
245	if err != nil {
246		return resp, err
247	}
248	return resp, nil
249}
250func (m *GroupResource) AddUserToGroup(groupId string, userId string) (*Response, error) {
251	url := fmt.Sprintf("/api/v1/groups/%v/users/%v", groupId, userId)
252	req, err := m.client.requestExecutor.NewRequest("PUT", url, nil)
253	if err != nil {
254		return nil, err
255	}
256
257	resp, err := m.client.requestExecutor.Do(req, nil)
258	if err != nil {
259		return resp, err
260	}
261	return resp, nil
262}
263