gitlab_support_readiness 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (41) hide show
  1. checksums.yaml +7 -0
  2. data/lib/support_readiness/client.rb +108 -0
  3. data/lib/support_readiness/gitlab/client.rb +64 -0
  4. data/lib/support_readiness/gitlab/configuration.rb +46 -0
  5. data/lib/support_readiness/gitlab/groups.rb +180 -0
  6. data/lib/support_readiness/gitlab/issues.rb +410 -0
  7. data/lib/support_readiness/gitlab/namespaces.rb +190 -0
  8. data/lib/support_readiness/gitlab/projects.rb +510 -0
  9. data/lib/support_readiness/gitlab/repositories.rb +267 -0
  10. data/lib/support_readiness/gitlab/users.rb +488 -0
  11. data/lib/support_readiness/gitlab.rb +19 -0
  12. data/lib/support_readiness/pagerduty/client.rb +66 -0
  13. data/lib/support_readiness/pagerduty/configuration.rb +43 -0
  14. data/lib/support_readiness/pagerduty/escalation_policies.rb +123 -0
  15. data/lib/support_readiness/pagerduty/schedules.rb +223 -0
  16. data/lib/support_readiness/pagerduty/services.rb +132 -0
  17. data/lib/support_readiness/pagerduty.rb +16 -0
  18. data/lib/support_readiness/redis.rb +90 -0
  19. data/lib/support_readiness/zendesk/articles.rb +210 -0
  20. data/lib/support_readiness/zendesk/automations.rb +304 -0
  21. data/lib/support_readiness/zendesk/client.rb +84 -0
  22. data/lib/support_readiness/zendesk/configuration.rb +49 -0
  23. data/lib/support_readiness/zendesk/group_memberships.rb +256 -0
  24. data/lib/support_readiness/zendesk/groups.rb +249 -0
  25. data/lib/support_readiness/zendesk/job_statuses.rb +188 -0
  26. data/lib/support_readiness/zendesk/macros.rb +267 -0
  27. data/lib/support_readiness/zendesk/organization_fields.rb +233 -0
  28. data/lib/support_readiness/zendesk/organization_memberships.rb +257 -0
  29. data/lib/support_readiness/zendesk/organizations.rb +515 -0
  30. data/lib/support_readiness/zendesk/roles.rb +194 -0
  31. data/lib/support_readiness/zendesk/search.rb +159 -0
  32. data/lib/support_readiness/zendesk/sla_policies.rb +232 -0
  33. data/lib/support_readiness/zendesk/ticket_fields.rb +222 -0
  34. data/lib/support_readiness/zendesk/ticket_forms.rb +290 -0
  35. data/lib/support_readiness/zendesk/tickets.rb +854 -0
  36. data/lib/support_readiness/zendesk/triggers.rb +269 -0
  37. data/lib/support_readiness/zendesk/users.rb +946 -0
  38. data/lib/support_readiness/zendesk/views.rb +469 -0
  39. data/lib/support_readiness/zendesk.rb +31 -0
  40. data/lib/support_readiness.rb +29 -0
  41. metadata +215 -0
@@ -0,0 +1,233 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Defines the module Readiness.
4
+ module Readiness
5
+ # Defines the module Zendesk
6
+ module Zendesk
7
+ ##
8
+ # Defines the class OrganizationFields within the module {Readiness::Zendesk}.
9
+ #
10
+ # @author Jason Colyer
11
+ # @since 1.0.0
12
+ class OrganizationFields < Readiness::Client
13
+ attr_accessor :active, :custom_field_options, :description, :id, :key, :position, :regexp_for_validation, :title, :type
14
+
15
+ ##
16
+ # Creates a new {Readiness::Zendesk::OrganizationFields} instance
17
+ #
18
+ # @author Jason Colyer
19
+ # @since 1.0.0
20
+ # @param object [Object] An instance of {Readiness::Zendesk::OrganizationFields}
21
+ # @example
22
+ # require 'support_readiness'
23
+ # Readiness::Zendesk::OrganizationFields.new
24
+ def initialize(object = {})
25
+ @active = object['active']
26
+ @custom_field_options = object['custom_field_options']
27
+ @description = object['description']
28
+ @id = object['id']
29
+ @key = object['key']
30
+ @position = object['position']
31
+ @regexp_for_validation = object['regexp_for_validation']
32
+ @title = object['title']
33
+ @type = object['type']
34
+ end
35
+
36
+ ##
37
+ # Lists all organization fields
38
+ #
39
+ # @author Jason Colyer
40
+ # @since 1.0.0
41
+ # @param client [Object] An instance of {Readiness::Zendesk::Client}
42
+ # @return [Array]
43
+ # @see https://developer.zendesk.com/api-reference/ticketing/organizations/organization_fields/#list-organization-fields Zendesk API > Organization Fields > List Organization Fields
44
+ # @example
45
+ # require 'support_readiness'
46
+ # config = Readiness::Zendesk::Configuration.new
47
+ # config.username = 'alice@example.com'
48
+ # config.token = 'test123abc'
49
+ # config.url = 'https://example.zendesk.com/api/v2'
50
+ # client = Readiness::Zendesk::Client.new(config)
51
+ # fields = Readiness::Zendesk::OrganizationFields.list(client)
52
+ # pp fields.first.id
53
+ # # => 7
54
+ def self.list(client, limit = 0, sort = 'id')
55
+ array = []
56
+ opts = "page[size]=100"
57
+ loop do
58
+ response = client.connection.get("organization_fields?#{opts}")
59
+ handle_request_error(0, 'Zendesk', response.status) unless response.status == 200
60
+ body = Oj.load(response.body)
61
+ array += body['organization_fields'].map { |f| OrganizationFields.new(f) }
62
+ break if limit != 0 && array.count >= (limit * 100)
63
+ break unless body['meta']['has_more']
64
+
65
+ opts = body['links'] ['next'].split('?').last
66
+ end
67
+ array
68
+ end
69
+
70
+ ##
71
+ # Locates an organization field within Zendesk. This will not exit on error (except Authentication errors)
72
+ #
73
+ # @author Jason Colyer
74
+ # @since 1.0.0
75
+ # @param client [Object] An instance of {Readiness::Zendesk::Client}
76
+ # @param fid [Integer] The organization field ID to find
77
+ # @return [Hash]
78
+ # @see https://developer.zendesk.com/api-reference/ticketing/organizations/organization_fields/#show-organization-field > Organization Fields > Show Organization Field
79
+ # @example
80
+ # require 'support_readiness'
81
+ # config = Readiness::Zendesk::Configuration.new
82
+ # config.username = 'alice@example.com'
83
+ # config.token = 'test123abc'
84
+ # config.url = 'https://example.zendesk.com/api/v2'
85
+ # client = Readiness::Zendesk::Client.new(config)
86
+ # field = Readiness::Zendesk::OrganizationFields.find(client, 8)
87
+ # pp field.title
88
+ # # => "Custom Field 1"
89
+ def self.find(client, fid)
90
+ response = client.connection.get("organization_fields/#{fid}")
91
+ handle_request_error(0, 'Zendesk', response.status, { action: 'get', id: fid }) unless response.status == 200
92
+ return OrganizationFields.new(Oj.load(response.body)['organization_field']) if response.status == 200
93
+
94
+ Oj.load(response.body)
95
+ end
96
+
97
+ ##
98
+ # Locates an organization field within Zendesk. This will exit on error
99
+ #
100
+ # @author Jason Colyer
101
+ # @since 1.0.0
102
+ # @param client [Object] An instance of {Readiness::Zendesk::Client}
103
+ # @param fid [Integer] The organization field ID to find
104
+ # @return [Object] An instance of {Readiness::Zendesk::OrganizationFields}
105
+ # @see https://developer.zendesk.com/api-reference/ticketing/organizations/organization_fields/#show-organization-field > Organization Fields > Show Organization Field
106
+ # @example
107
+ # require 'support_readiness'
108
+ # config = Readiness::Zendesk::Configuration.new
109
+ # config.username = 'alice@example.com'
110
+ # config.token = 'test123abc'
111
+ # config.url = 'https://example.zendesk.com/api/v2'
112
+ # client = Readiness::Zendesk::Client.new(config)
113
+ # field = Readiness::Zendesk::OrganizationFields.find!(client, 8)
114
+ # pp field.title
115
+ # # => "Custom Field 1"
116
+ def self.find!(client, fid)
117
+ response = client.connection.get("organization_fields/#{fid}")
118
+ handle_request_error(1, 'Zendesk', response.status, { action: 'Find organization field', id: fid }) unless response.status == 200
119
+ OrganizationFields.new(Oj.load(response.body)['organization_field'])
120
+ end
121
+
122
+ ##
123
+ # Creates an organization field. Will exit if unsuccessful
124
+ #
125
+ # @author Jason Colyer
126
+ # @since 1.0.0
127
+ # @param client [Object] An instance of {Readiness::Zendesk::Client}
128
+ # @param field [Object] An instance of {Readiness::Zendesk::OrganizationFields}
129
+ # @return [Object] An instance of {Readiness::Zendesk::OrganizationFields}
130
+ # @see https://developer.zendesk.com/api-reference/ticketing/organizations/organization_fields/#create-organization-field Zendesk API > Organization Fields > Create Organization Field
131
+ # @example
132
+ # require 'support_readiness'
133
+ # config = Readiness::Zendesk::Configuration.new
134
+ # config.username = 'alice@example.com'
135
+ # config.token = 'test123abc'
136
+ # config.url = 'https://example.zendesk.com/api/v2'
137
+ # client = Readiness::Zendesk::Client.new(config)
138
+ # field = Readiness::Zendesk::OrganizationFields.new
139
+ # field.type = 'text'
140
+ # field.title = 'Support desc'
141
+ # field.description = 'This field describes the support plan this organization has'
142
+ # field.position: 0
143
+ # field.active = true
144
+ # field.key = 'support_description'
145
+ # create = Readiness::Zendesk::OrganizationFields.create!(client, field)
146
+ # pp create.id
147
+ # # => 75
148
+ def self.create!(client, field)
149
+ response = client.connection.post 'organization_fields', to_clean_json_with_key(field, 'organization_field')
150
+ handle_request_error(1, 'Zendesk', response.status, { action: 'Create organization field', message: Oj.load(response.body)}) unless response.status == 201
151
+ OrganizationFields.new(Oj.load(response.body)['organization_field'])
152
+ end
153
+
154
+ ##
155
+ # Updates an organization field. Will exit if unsuccessful
156
+ #
157
+ # @author Jason Colyer
158
+ # @since 1.0.0
159
+ # @param client [Object] An instance of {Readiness::Zendesk::Client}
160
+ # @param field [Object] An instance of {Readiness::Zendesk::OrganizationFields}
161
+ # @return [Object] An instance of {Readiness::Zendesk::OrganizationFields}
162
+ # @see https://developer.zendesk.com/api-reference/ticketing/organizations/organization_fields/#update-organization-field Zendesk API > Organization Fields > Update Organization Field
163
+ # @example
164
+ # require 'support_readiness'
165
+ # config = Readiness::Zendesk::Configuration.new
166
+ # config.username = 'alice@example.com'
167
+ # config.token = 'test123abc'
168
+ # config.url = 'https://example.zendesk.com/api/v2'
169
+ # client = Readiness::Zendesk::Client.new(config)
170
+ # field = Readiness::Zendesk::OrganizationFields.find!(client, 75)
171
+ # field.title = 'Support description'
172
+ # update = Readiness::Zendesk::OrganizationFields.update!(client, field)
173
+ # pp create.title
174
+ # # => "Support description"
175
+ def self.update!(client, field)
176
+ response = client.connection.put "organization_fields/#{field.id}", to_clean_json_with_key(field, 'ticket_field')
177
+ handle_request_error(1, 'Zendesk', response.status, { action: 'Update organization field', message: Oj.load(response.body)}) unless response.status == 200
178
+ OrganizationFields.new(Oj.load(response.body)['organization_field'])
179
+ end
180
+
181
+ ##
182
+ # Deletes an organization field. Will exit if unsuccessful
183
+ #
184
+ # @author Jason Colyer
185
+ # @since 1.0.0
186
+ # @param client [Object] An instance of {Readiness::Zendesk::Client}
187
+ # @param field [Object] An instance of {Readiness::Zendesk::OrganizationFields}
188
+ # @return [Boolean]
189
+ # @see https://developer.zendesk.com/api-reference/ticketing/organizations/organization_fields/#delete-organization-field Zendesk API > Organization Fields > Delete Organization Field
190
+ # @example
191
+ # require 'support_readiness'
192
+ # config = Readiness::Zendesk::Configuration.new
193
+ # config.username = 'alice@example.com'
194
+ # config.token = 'test123abc'
195
+ # config.url = 'https://example.zendesk.com/api/v2'
196
+ # client = Readiness::Zendesk::Client.new(config)
197
+ # field = Readiness::Zendesk::OrganizationFields.find!(client, 75)
198
+ # delete = Readiness::Zendesk::OrganizationFields.delete!(client, field)
199
+ # pp delete
200
+ # # => true
201
+ def self.delete!(client, field)
202
+ response = client.connection.delete "organization_fields/#{field.id}"
203
+ handle_request_error(1, 'Zendesk', response.status, { action: 'Delete an organization field', id: field.id, message: Oj.load(response.body)}) unless response.status == 204
204
+ true
205
+ end
206
+
207
+ ##
208
+ # Reorders organization fields. Will exit if unsuccessful
209
+ #
210
+ # @author Jason Colyer
211
+ # @since 1.0.0
212
+ # @param client [Object] An instance of {Readiness::Zendesk::Client}
213
+ # @param fids [Array] An Array of field IDs (order is important)
214
+ # @return [Boolean]
215
+ # @see https://developer.zendesk.com/api-reference/ticketing/organizations/organization_fields/#reorder-organization-field Zendesk API > Organization Fields > Reorder Organization Field
216
+ # @example
217
+ # require 'support_readiness'
218
+ # config = Readiness::Zendesk::Configuration.new
219
+ # config.username = 'alice@example.com'
220
+ # config.token = 'test123abc'
221
+ # config.url = 'https://example.zendesk.com/api/v2'
222
+ # client = Readiness::Zendesk::Client.new(config)
223
+ # reorder = Readiness::Zendesk::OrganizationFields.reorder!(client, [4, 5, 2, 8])
224
+ # pp reorder
225
+ # # => true
226
+ def self.reorder!(client, fids)
227
+ response = client.connection.put 'organization_fields/reorder', { organization_field_ids: fids }.to_json
228
+ handle_request_error(1, 'Zendesk', response.status, { action: 'Reorder organization fields', id: fids, message: Oj.load(response.body)}) unless response.status == 200
229
+ true
230
+ end
231
+ end
232
+ end
233
+ end
@@ -0,0 +1,257 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Defines the module Readiness.
4
+ module Readiness
5
+ # Defines the module Zendesk
6
+ module Zendesk
7
+ ##
8
+ # Defines the class OrganizationMemberships within the module {Readiness::Zendesk}.
9
+ #
10
+ # @author Jason Colyer
11
+ # @since 1.0.0
12
+ class OrganizationMemberships < Readiness::Client
13
+ attr_accessor :id, :default, :organization_id, :organization_name, :user_id, :view_tickets
14
+
15
+ ##
16
+ # Creates a new {Readiness::Zendesk::OrganizationMemberships} instance
17
+ #
18
+ # @author Jason Colyer
19
+ # @since 1.0.0
20
+ # @param object [Object] An instance of {Readiness::Zendesk::OrganizationMemberships}
21
+ # @example
22
+ # require 'support_readiness'
23
+ # Readiness::Zendesk::OrganizationMemberships.new
24
+ def initialize(object = {})
25
+ @id = object['id']
26
+ @default = object['default']
27
+ @organization_id = object['organization_id']
28
+ @organization_name = object['organization_name']
29
+ @user_id = object['user_id']
30
+ @view_tickets = object['view_tickets']
31
+ end
32
+
33
+ ##
34
+ # Lists the first 100 organization memberships
35
+ #
36
+ # @author Jason Colyer
37
+ # @since 1.0.0
38
+ # @param client [Object] An instance of {Readiness::Zendesk::Client}
39
+ # @return [Array]
40
+ # @see https://developer.zendesk.com/api-reference/ticketing/organizations/organization_memberships/#list-memberships Zendesk API > Organization Memberships > List Memberships
41
+ # @example
42
+ # require 'support_readiness'
43
+ # config = Readiness::Zendesk::Configuration.new
44
+ # config.username = 'alice@example.com'
45
+ # config.token = 'test123abc'
46
+ # config.url = 'https://example.zendesk.com/api/v2'
47
+ # client = Readiness::Zendesk::Client.new(config)
48
+ # memberships = Readiness::Zendesk::OrganizationMemberships.list(client)
49
+ # pp memberships.first.id
50
+ # # => 4
51
+ def self.list(client)
52
+ response = client.connection.get("organization_memberships?page[size]=100")
53
+ handle_request_error(0, 'Zendesk', response.status) unless response.status == 200
54
+ Oj.load(response.body)['organization_memberships'].map { |m| OrganizationMemberships.new(m) }
55
+ end
56
+
57
+ ##
58
+ # Lists many organization memberships. Does not stop until it ends or the page limit is hit.
59
+ # This method can take a long time to run depending on the parameters used.
60
+ #
61
+ # @author Jason Colyer
62
+ # @since 1.0.0
63
+ # @param client [Object] An instance of {Readiness::Zendesk::Client}
64
+ # @param limit [Integer] The number of pages to stop at. Using 0 means to list all.
65
+ # @return [Array]
66
+ # @see https://developer.zendesk.com/api-reference/ticketing/organizations/organization_memberships/#list-memberships Zendesk API > Organization Memberships > List Memberships
67
+ # @example
68
+ # require 'support_readiness'
69
+ # config = Readiness::Zendesk::Configuration.new
70
+ # config.username = 'alice@example.com'
71
+ # config.token = 'test123abc'
72
+ # config.url = 'https://example.zendesk.com/api/v2'
73
+ # client = Readiness::Zendesk::Client.new(config)
74
+ # memberships = Readiness::Zendesk::OrganizationMemberships.list_many(client, 2)
75
+ # pp memberships.count
76
+ # # => 200
77
+ def self.list_many(client, limit = 0)
78
+ array = []
79
+ opts = "page[size]=100"
80
+ loop do
81
+ response = client.connection.get("organization_memberships?#{opts}")
82
+ handle_request_error(0, 'Zendesk', response.status) unless response.status == 200
83
+ body = Oj.load(response.body)
84
+ array += body['organization_memberships'].map { |o| OrganizationMemberships.new(o) }
85
+ break if limit != 0 && array.count >= (limit * 100)
86
+ break unless body['meta']['has_more']
87
+
88
+ opts = body['links'] ['next'].split('?').last
89
+ end
90
+ array
91
+ end
92
+
93
+ ##
94
+ # Locates an organization membership within Zendesk. This will not exit on error (except Authentication errors)
95
+ #
96
+ # @author Jason Colyer
97
+ # @since 1.0.0
98
+ # @param client [Object] An instance of {Readiness::Zendesk::Client}
99
+ # @param oid [Integer] The organization membership ID to find
100
+ # @return [Hash]
101
+ # @see https://developer.zendesk.com/api-reference/ticketing/organizations/organization_memberships/#show-membership Zendesk API > Organization Memberships > Show Membership
102
+ # @example
103
+ # require 'support_readiness'
104
+ # config = Readiness::Zendesk::Configuration.new
105
+ # config.username = 'alice@example.com'
106
+ # config.token = 'test123abc'
107
+ # config.url = 'https://example.zendesk.com/api/v2'
108
+ # client = Readiness::Zendesk::Client.new(config)
109
+ # membership = Readiness::Zendesk::OrganizationMemberships.find(client, 4)
110
+ # pp membership.user_id
111
+ # # => 29
112
+ def self.find(client, oid)
113
+ response = client.connection.get("organization_memberships/#{oid}")
114
+ handle_request_error(0, 'Zendesk', response.status, { action: 'get', id: oid }) unless response.status == 200
115
+ return OrganizationMemberships.new(Oj.load(response.body)['organization_membership']) if response.status == 200
116
+
117
+ Oj.load(response.body)
118
+ end
119
+
120
+ ##
121
+ # Locates an organization membership within Zendesk. This will exit on error
122
+ #
123
+ # @author Jason Colyer
124
+ # @since 1.0.0
125
+ # @param client [Object] An instance of {Readiness::Zendesk::Client}
126
+ # @param oid [Integer] The organization membership ID to find
127
+ # @return [Hash]
128
+ # @see https://developer.zendesk.com/api-reference/ticketing/organizations/organization_memberships/#show-membership Zendesk API > Organization Memberships > Show Membership
129
+ # @example
130
+ # require 'support_readiness'
131
+ # config = Readiness::Zendesk::Configuration.new
132
+ # config.username = 'alice@example.com'
133
+ # config.token = 'test123abc'
134
+ # config.url = 'https://example.zendesk.com/api/v2'
135
+ # client = Readiness::Zendesk::Client.new(config)
136
+ # membership = Readiness::Zendesk::OrganizationMemberships.find!(client, 4)
137
+ # pp membership.user_id
138
+ # # => 29
139
+ def self.find!(client, oid)
140
+ response = client.connection.get("organization_memberships/#{oid}")
141
+ handle_request_error(1, 'Zendesk', response.status, { action: 'Find organization membership', id: oid }) unless response.status == 200
142
+ OrganizationMemberships.new(Oj.load(response.body)['organization_membership'])
143
+ end
144
+
145
+ ##
146
+ # Creates an organization membership. Will exit if unsuccessful
147
+ #
148
+ # @author Jason Colyer
149
+ # @since 1.0.0
150
+ # @param client [Object] An instance of {Readiness::Zendesk::Client}
151
+ # @param membership [Object] An instance of {Readiness::Zendesk::OrganizationMemberships}
152
+ # @return [Object] An instance of {Readiness::Zendesk::OrganizationMemberships}
153
+ # @see https://developer.zendesk.com/api-reference/ticketing/organizations/organization_memberships/#create-membership Zendesk API > Organization Memberships > Create Membership
154
+ # @example
155
+ # require 'support_readiness'
156
+ # config = Readiness::Zendesk::Configuration.new
157
+ # config.username = 'alice@example.com'
158
+ # config.token = 'test123abc'
159
+ # config.url = 'https://example.zendesk.com/api/v2'
160
+ # client = Readiness::Zendesk::Client.new(config)
161
+ # membership = Readiness::Zendesk::OrganizationMemberships.new
162
+ # membership.user_id = 72
163
+ # membership.organization_id = 88
164
+ # create = Readiness::Zendesk::OrganizationMemberships.create!(client, membership)
165
+ # pp create.id
166
+ # # => 461
167
+ def self.create!(client, membership)
168
+ response = client.connection.post 'organization_memberships', to_clean_json_with_key(membership, 'organization_membership')
169
+ handle_request_error(1, 'Zendesk', response.status, { action: 'Create organization membership', message: Oj.load(response.body)}) unless response.status == 201
170
+ OrganizationMemberships.new(Oj.load(response.body)['organization_membership'])
171
+ end
172
+
173
+ ##
174
+ # Creates multiple organization memberships via a batch job
175
+ #
176
+ # @author Jason Colyer
177
+ # @since 1.0.0
178
+ # @param client [Object] An instance of {Readiness::Zendesk::Client}
179
+ # @param memberships [Array] An array of {Readiness::Zendesk::OrganizationMemberships} instances
180
+ # @return [object] A {Readiness::Zendesk::JobStatuses} instance
181
+ # @see https://developer.zendesk.com/api-reference/ticketing/organizations/organization_memberships/#create-many-memberships Zendesk API > Organization Memberships > Create Many Memberships
182
+ # @example
183
+ # require 'support_readiness'
184
+ # config = Readiness::Zendesk::Configuration.new
185
+ # config.username = 'alice@example.com'
186
+ # config.token = 'test123abc'
187
+ # config.url = 'https://example.zendesk.com/api/v2'
188
+ # client = Readiness::Zendesk::Client.new(config)
189
+ # membership1 = Readiness::Zendesk::OrganizationMemberships.new
190
+ # membership1.user_id = 72
191
+ # membership1.organization_id = 88
192
+ # membership2 = Readiness::Zendesk::OrganizationMemberships.new
193
+ # membership2.user_id = 27
194
+ # membership2.organization_id = 88
195
+ # creates = Readiness::Zendesk::OrganizationMemberships.create_many!(client, membership)
196
+ # pp creates.id
197
+ # # => "8b726e606741012ffc2d782bcb7848fe"
198
+ def self.create_many!(client, memberships)
199
+ data = { organization_memberships: memberships.map { |t| to_hash(t).compact } }.to_json
200
+ response = client.connection.post('organization_memberships/create_many', data)
201
+ handle_request_error(1, 'Zendesk', response.status, { action: 'Create many organization memberships', message: Oj.load(response.body)}) unless response.status == 200
202
+ JobStatuses.new(Oj.load(response.body)['job_status'])
203
+ end
204
+
205
+ ##
206
+ # Deletes an organization membership. Will exit if unsuccessful
207
+ #
208
+ # @author Jason Colyer
209
+ # @since 1.0.0
210
+ # @param client [Object] An instance of {Readiness::Zendesk::Client}
211
+ # @param membership [Object] An instance of {Readiness::Zendesk::OrganizationMemberships}
212
+ # @return [Boolean]
213
+ # @see hhttps://developer.zendesk.com/api-reference/ticketing/organizations/organization_memberships/#delete-membership Zendesk API > Organization Memberships > Delete Membership
214
+ # @example
215
+ # require 'support_readiness'
216
+ # config = Readiness::Zendesk::Configuration.new
217
+ # config.username = 'alice@example.com'
218
+ # config.token = 'test123abc'
219
+ # config.url = 'https://example.zendesk.com/api/v2'
220
+ # client = Readiness::Zendesk::Client.new(config)
221
+ # membership = Readiness::Zendesk::OrganizationMemberships.find!(client, 461)
222
+ # delete = Readiness::Zendesk::OrganizationMemberships.delete!(client, membership)
223
+ # pp delete
224
+ # # => true
225
+ def self.delete!(client, membership)
226
+ response = client.connection.delete "organization_memberships/#{membership.id}"
227
+ handle_request_error(1, 'Zendesk', response.status, { action: 'Delete organization membership', message: Oj.load(response.body)}) unless response.status == 204
228
+ true
229
+ end
230
+
231
+ ##
232
+ # Deletes multiple organization memberships via a batch job
233
+ #
234
+ # @author Jason Colyer
235
+ # @since 1.0.0
236
+ # @param client [Object] An instance of {Readiness::Zendesk::Client}
237
+ # @param mids [Array] An array of organization memberships IDs
238
+ # @return [object] A {Readiness::Zendesk::JobStatuses} instance
239
+ # @see https://developer.zendesk.com/api-reference/ticketing/organizations/organization_memberships/#bulk-delete-memberships Zendesk API > Organization Memberships > Bulk Delete Memberships
240
+ # @example
241
+ # require 'support_readiness'
242
+ # config = Readiness::Zendesk::Configuration.new
243
+ # config.username = 'alice@example.com'
244
+ # config.token = 'test123abc'
245
+ # config.url = 'https://example.zendesk.com/api/v2'
246
+ # client = Readiness::Zendesk::Client.new(config)
247
+ # deletes = Readiness::Zendesk::OrganizationMemberships.delete!(client, [461, 462])
248
+ # pp deletes.id
249
+ # # => "82de0b044094f0c67893ac9fe64f1a99"
250
+ def self.delete_many(client, mids)
251
+ response = client.connection.delete("organization_memberships/destroy_many?ids=#{mids.join(',')}")
252
+ handle_request_error(1, 'Zendesk', response.status, { action: 'Delete many organization memberships', message: Oj.load(response.body)}) unless response.status == 200
253
+ JobStatuses.new(Oj.load(response.body)['job_status'])
254
+ end
255
+ end
256
+ end
257
+ end