gitlab-customer-support-operations_zendesk 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. checksums.yaml +7 -0
  2. data/lib/support_ops_zendesk/packages.rb +89 -0
  3. data/lib/support_ops_zendesk/zendesk/app_installations.rb +62 -0
  4. data/lib/support_ops_zendesk/zendesk/app_job_statuses.rb +157 -0
  5. data/lib/support_ops_zendesk/zendesk/apps.rb +476 -0
  6. data/lib/support_ops_zendesk/zendesk/articles.rb +362 -0
  7. data/lib/support_ops_zendesk/zendesk/audit_logs.rb +166 -0
  8. data/lib/support_ops_zendesk/zendesk/automations.rb +390 -0
  9. data/lib/support_ops_zendesk/zendesk/base.rb +472 -0
  10. data/lib/support_ops_zendesk/zendesk/brands.rb +172 -0
  11. data/lib/support_ops_zendesk/zendesk/client.rb +91 -0
  12. data/lib/support_ops_zendesk/zendesk/comments.rb +37 -0
  13. data/lib/support_ops_zendesk/zendesk/configuration.rb +138 -0
  14. data/lib/support_ops_zendesk/zendesk/custom_roles.rb +224 -0
  15. data/lib/support_ops_zendesk/zendesk/dynamic_content.rb +297 -0
  16. data/lib/support_ops_zendesk/zendesk/dynamic_content_variants.rb +309 -0
  17. data/lib/support_ops_zendesk/zendesk/group_memberships.rb +337 -0
  18. data/lib/support_ops_zendesk/zendesk/groups.rb +385 -0
  19. data/lib/support_ops_zendesk/zendesk/help_center_categories.rb +332 -0
  20. data/lib/support_ops_zendesk/zendesk/help_center_content_tags.rb +237 -0
  21. data/lib/support_ops_zendesk/zendesk/help_center_management_permission_groups.rb +271 -0
  22. data/lib/support_ops_zendesk/zendesk/help_center_sections.rb +378 -0
  23. data/lib/support_ops_zendesk/zendesk/help_center_topics.rb +274 -0
  24. data/lib/support_ops_zendesk/zendesk/help_center_user_segments.rb +279 -0
  25. data/lib/support_ops_zendesk/zendesk/job_statuses.rb +231 -0
  26. data/lib/support_ops_zendesk/zendesk/locales.rb +326 -0
  27. data/lib/support_ops_zendesk/zendesk/macros.rb +407 -0
  28. data/lib/support_ops_zendesk/zendesk/oauth_clients.rb +186 -0
  29. data/lib/support_ops_zendesk/zendesk/oauth_tokens.rb +114 -0
  30. data/lib/support_ops_zendesk/zendesk/organization_fields.rb +282 -0
  31. data/lib/support_ops_zendesk/zendesk/organization_memberships.rb +336 -0
  32. data/lib/support_ops_zendesk/zendesk/organizations.rb +568 -0
  33. data/lib/support_ops_zendesk/zendesk/requester_roles.rb +58 -0
  34. data/lib/support_ops_zendesk/zendesk/satisfaction_reasons.rb +161 -0
  35. data/lib/support_ops_zendesk/zendesk/schedule_holidays.rb +27 -0
  36. data/lib/support_ops_zendesk/zendesk/schedules.rb +192 -0
  37. data/lib/support_ops_zendesk/zendesk/search.rb +185 -0
  38. data/lib/support_ops_zendesk/zendesk/sla_policies.rb +302 -0
  39. data/lib/support_ops_zendesk/zendesk/targets.rb +96 -0
  40. data/lib/support_ops_zendesk/zendesk/theme_job_statuses.rb +154 -0
  41. data/lib/support_ops_zendesk/zendesk/themes.rb +328 -0
  42. data/lib/support_ops_zendesk/zendesk/ticket_field_options.rb +154 -0
  43. data/lib/support_ops_zendesk/zendesk/ticket_fields.rb +357 -0
  44. data/lib/support_ops_zendesk/zendesk/ticket_forms.rb +370 -0
  45. data/lib/support_ops_zendesk/zendesk/ticket_user_types.rb +67 -0
  46. data/lib/support_ops_zendesk/zendesk/tickets.rb +837 -0
  47. data/lib/support_ops_zendesk/zendesk/translations.rb +310 -0
  48. data/lib/support_ops_zendesk/zendesk/trigger_categories.rb +275 -0
  49. data/lib/support_ops_zendesk/zendesk/triggers.rb +427 -0
  50. data/lib/support_ops_zendesk/zendesk/user_field_options.rb +153 -0
  51. data/lib/support_ops_zendesk/zendesk/user_fields.rb +312 -0
  52. data/lib/support_ops_zendesk/zendesk/users.rb +889 -0
  53. data/lib/support_ops_zendesk/zendesk/via_types.rb +137 -0
  54. data/lib/support_ops_zendesk/zendesk/views.rb +636 -0
  55. data/lib/support_ops_zendesk/zendesk/webhooks.rb +206 -0
  56. data/lib/support_ops_zendesk/zendesk.rb +66 -0
  57. data/lib/support_ops_zendesk.rb +29 -0
  58. metadata +274 -0
@@ -0,0 +1,336 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Defines the module SupportOps.
4
+ module SupportOps
5
+ # Defines the module Zendesk
6
+ module Zendesk
7
+ ##
8
+ # Defines the class GroupMemberships within the module {SupportOps::Zendesk}.
9
+ #
10
+ # @author Jason Colyer
11
+ # @since 1.0.0
12
+ # @attr [String] created_at When this record was created
13
+ # @attr [Boolean] default Denotes whether this is the default organization membership for the user. If false, returns null
14
+ # @attr [Integer] id Automatically assigned when the membership is created
15
+ # @attr [Integer] organization_id The ID of the organization associated with this user, in this membership
16
+ # @attr [String] organization_name The name of the organization associated with this user, in this membership
17
+ # @attr [String] updated_at When this record last got updated
18
+ # @attr [Integer] user_id The ID of the user for whom this memberships belongs
19
+ # @attr [Boolean] view_tickets Denotes whether the user can or cannot have access to all organization's tickets.
20
+ class OrganizationMemberships < SupportOps::Zendesk::Base
21
+ # @!parse
22
+ # # Creates an organization membership
23
+ # #
24
+ # # @author Jason Colyer
25
+ # # @since 1.0.0
26
+ # # @return [Object] Instance of {SupportOps::Zendesk::OrganizationMemberships}
27
+ # # @note This is inherited from {SupportOps::Zendesk::Base#save!}
28
+ # # @see
29
+ # # https://developer.zendesk.com/api-reference/ticketing/organizations/organization_memberships/#create-membership
30
+ # # Zendesk API > Organization Memberships > Create Membership
31
+ # # @example
32
+ # # require 'support_ops_zendesk'
33
+ # #
34
+ # # SupportOps::Zendesk::Configuration.configure do |config|
35
+ # # config.url = 'https://gitlab.zendesk.com/api/v2'
36
+ # # config.username = 'jason@example.com'
37
+ # # config.token = 'abc123'
38
+ # # end
39
+ # #
40
+ # # new_membership = SupportOps::Zendesk::OrganizationMemberships.new
41
+ # # new_membership.organization_id = 88
42
+ # # new_membership.user_id = 72
43
+ # #
44
+ # # new_membership.save!
45
+ # #
46
+ # # pp new_membership.id
47
+ # # # => 461
48
+ # def save!; end
49
+ # @!parse
50
+ # # Deletes an organization membership
51
+ # #
52
+ # # @author Jason Colyer
53
+ # # @since 1.0.0
54
+ # # @return [Boolean]
55
+ # # @note This is inherited from {SupportOps::Zendesk::Base#delete!}
56
+ # # @see
57
+ # # https://developer.zendesk.com/api-reference/ticketing/organizations/organization_memberships/#delete-membership
58
+ # # Zendesk API > Organization Memberships > Delete Membership
59
+ # # @example
60
+ # # require 'support_ops_zendesk'
61
+ # #
62
+ # # SupportOps::Zendesk::Configuration.configure do |config|
63
+ # # config.url = 'https://gitlab.zendesk.com/api/v2'
64
+ # # config.username = 'jason@example.com'
65
+ # # config.token = 'abc123'
66
+ # # end
67
+ # #
68
+ # # existing_membership = SupportOps::Zendesk::OrganizationMemberships.get!(461)
69
+ # # existing_membership.delete!
70
+ # def delete!; end
71
+ # @!parse
72
+ # # Lists organization membership's organization
73
+ # #
74
+ # # @author Jason Colyer
75
+ # # @since 1.0.0
76
+ # # @return [Object]
77
+ # # @note This is inherited from {SupportOps::Zendesk::Base#organizations}
78
+ # # @example
79
+ # # require 'support_ops_zendesk'
80
+ # #
81
+ # # SupportOps::Zendesk::Configuration.configure do |config|
82
+ # # config.url = 'https://gitlab.zendesk.com/api/v2'
83
+ # # config.username = 'jason@example.com'
84
+ # # config.token = 'abc123'
85
+ # # end
86
+ # #
87
+ # # existing_membership = SupportOps::Zendesk::OrganizationMemberships.get!(461)
88
+ # # org = existing_membership.organizations
89
+ # # pp org.name
90
+ # # # => "Bob's Burgers"
91
+ # def organizations; end
92
+ # @!parse
93
+ # # Lists organization membership's user
94
+ # #
95
+ # # @author Jason Colyer
96
+ # # @since 1.0.0
97
+ # # @return [Object]
98
+ # # @note This is inherited from {SupportOps::Zendesk::Base#users}
99
+ # # require 'support_ops_zendesk'
100
+ # #
101
+ # # SupportOps::Zendesk::Configuration.configure do |config|
102
+ # # config.url = 'https://gitlab.zendesk.com/api/v2'
103
+ # # config.username = 'jason@example.com'
104
+ # # config.token = 'abc123'
105
+ # # end
106
+ # #
107
+ # # existing_membership = SupportOps::Zendesk::OrganizationMemberships.get!(461)
108
+ # # user = existing_membership.users
109
+ # # pp user.name
110
+ # # # => "Bob"
111
+ # def users; end
112
+ define_attributes :created_at, :default, :id, :organization_id,
113
+ :organization_name, :updated_at, :user_id, :view_tickets
114
+ readonly_attributes :created_at, :id, :updated_at
115
+
116
+ ##
117
+ # Lists organization memberships in the Zendesk system
118
+ #
119
+ # @author Jason Colyer
120
+ # @since 1.0.0
121
+ # @overload list(key: value)
122
+ # @param limit [Integer optional] The limit to the number of
123
+ # organization memberships returned. Default to 0 (i.e. no limit)
124
+ # @return [Array]
125
+ # @see
126
+ # https://developer.zendesk.com/api-reference/ticketing/organizations/organization_memberships/#list-memberships
127
+ # Zendesk API > Organization Memberships > List Memberships
128
+ # @see SupportOps::Zendesk::Configuration Setting up a client
129
+ # @example
130
+ # require 'support_ops_zendesk'
131
+ #
132
+ # SupportOps::Zendesk::Configuration.configure do |config|
133
+ # config.url = 'https://gitlab.zendesk.com/api/v2'
134
+ # config.username = 'jason@example.com'
135
+ # config.token = 'abc123'
136
+ # end
137
+ #
138
+ # memberships = SupportOps::Zendesk::OrganizationMemberships.list(limit: 250)
139
+ # pp memberships.count
140
+ # # => 250
141
+ # pp memberships.last.organization_name
142
+ # # => "I'm the 250th organization"
143
+ def self.list(**args)
144
+ args[:limit] = 0 unless args[:limit]
145
+ items = []
146
+ opts = "page[size]=100&sort=#{args[:sort]}"
147
+ loop do
148
+ response = client.connection.get("organization_memberships?#{opts}")
149
+ body = Oj.load(response.body)
150
+ items += body['organization_memberships'].map { |o| OrganizationMemberships.new(o) }
151
+ break if args[:limit].to_i.positive? && items.count >= args[:limit].to_i
152
+ break unless body['meta']['has_more']
153
+
154
+ opts = body['links']['next'].split('?').last
155
+ end
156
+ return items if args[:limit].to_i.zero?
157
+
158
+ items.first(args[:limit].to_i)
159
+ end
160
+
161
+ ##
162
+ # Locates a specific organization membership in the Zendesk system
163
+ #
164
+ # @author Jason Colyer
165
+ # @since 1.0.0
166
+ # @see
167
+ # https://developer.zendesk.com/api-reference/ticketing/organizations/organization_memberships/#show-membership
168
+ # Zendesk API > Organization Memberships > Show Membership
169
+ # @see SupportOps::Zendesk::Configuration Setting up a client
170
+ # @example
171
+ # require 'support_ops_zendesk'
172
+ #
173
+ # SupportOps::Zendesk::Configuration.configure do |config|
174
+ # config.url = 'https://gitlab.zendesk.com/api/v2'
175
+ # config.username = 'jason@example.com'
176
+ # config.token = 'abc123'
177
+ # end
178
+ #
179
+ # membership = SupportOps::Zendesk::OrganizationMemberships.get(250)
180
+ # pp membership.organization_name
181
+ # # => "I'm the 25th organization"
182
+ def self.get(object)
183
+ if object.is_a? OrganizationMemberships
184
+ OrganizationMemberships.new(id: id).find
185
+ else
186
+ OrganizationMemberships.new(id: object).find
187
+ end
188
+ end
189
+
190
+ ##
191
+ # Locates a specific organization membership in the Zendesk system
192
+ #
193
+ # @author Jason Colyer
194
+ # @since 1.0.0
195
+ # @see
196
+ # https://developer.zendesk.com/api-reference/ticketing/organizations/organization_memberships/#show-membership
197
+ # Zendesk API > Organization Memberships > Show Membership
198
+ # @see SupportOps::Zendesk::Configuration Setting up a client
199
+ # @example
200
+ # require 'support_ops_zendesk'
201
+ #
202
+ # SupportOps::Zendesk::Configuration.configure do |config|
203
+ # config.url = 'https://gitlab.zendesk.com/api/v2'
204
+ # config.username = 'jason@example.com'
205
+ # config.token = 'abc123'
206
+ # end
207
+ #
208
+ # membership = SupportOps::Zendesk::OrganizationMemberships.get!(250)
209
+ # pp membership.organization_name
210
+ # # => "I'm the 25th organization"
211
+ def self.get!(object)
212
+ if object.is_a? OrganizationMemberships
213
+ OrganizationMemberships.new(id: id).find!
214
+ else
215
+ OrganizationMemberships.new(id: object).find!
216
+ end
217
+ end
218
+
219
+ ##
220
+ # Deletes multiple organization memberships via a batch job
221
+ #
222
+ # @author Jason Colyer
223
+ # @since 1.0.0
224
+ # @param membership_ids [Array] An array of organization membership IDs
225
+ # @return [object] A {SupportOps::Zendesk::JobStatuses} instance
226
+ # @see
227
+ # https://developer.zendesk.com/api-reference/ticketing/organizations/organization_memberships/#bulk-delete-memberships
228
+ # Zendesk API > Organization Memberships > Bulk Delete Memberships
229
+ # @example
230
+ # require 'support_ops_zendesk'
231
+ #
232
+ # SupportOps::Zendesk::Configuration.configure do |config|
233
+ # config.url = 'https://gitlab.zendesk.com/api/v2'
234
+ # config.username = 'jason@example.com'
235
+ # config.token = 'abc123'
236
+ # end
237
+ #
238
+ # delete = SupportOps::Zendesk::OrganizationMemberships.delete_many!([123, 456])
239
+ # pp delete.id
240
+ # # => "82de0b044094f0c67893ac9fe64f1a99"
241
+ def self.delete_many!(membership_ids)
242
+ raise 'The parameter must be an Array' unless membership_ids.is_a? Array
243
+ raise 'You can only delete a maximum of 100 organization memberships at a time' if membership_ids.count > 100
244
+
245
+ response = client.connection.delete("organization_memberships/destroy_many?ids=#{membership_ids.join(',')}")
246
+ raise "Failed to delete organization memberships => #{body['details']}" if response.status != 200
247
+ JobStatuses.new(Oj.load(response.body)['job_status'])
248
+ end
249
+
250
+ ##
251
+ # Creates multiple organization memberships via a batch job
252
+ #
253
+ # @author Jason Colyer
254
+ # @since 1.0.0
255
+ # @param memberships [Array] An array of {SupportOps::Zendesk::OrganizationMemberships} instances
256
+ # @return [object] A {SupportOps::Zendesk::JobStatuses} instance
257
+ # @see
258
+ # https://developer.zendesk.com/api-reference/ticketing/organizations/organization_memberships/#create-many-memberships
259
+ # Zendesk API > Organization Memberships > Create Many Memberships
260
+ # @example
261
+ # require 'support_ops_zendesk'
262
+ #
263
+ # SupportOps::Zendesk::Configuration.configure do |config|
264
+ # config.url = 'https://gitlab.zendesk.com/api/v2'
265
+ # config.username = 'jason@example.com'
266
+ # config.token = 'abc123'
267
+ # end
268
+ #
269
+ # org = SupportOps::Zendesk::Organizations.get!(250)
270
+ # user1 = SupportOps::Zendesk::Users.get!(2)
271
+ # user2 = SupportOps::Zendesk::Users.get!(4)
272
+ # membership1 = SupportOps::Zendesk::OrganizationMemberships.new
273
+ # membership1.default = true
274
+ # membership1.organization_id = org.id
275
+ # membership1.user_id = user1.id
276
+ # membership2 = SupportOps::Zendesk::OrganizationMemberships.new
277
+ # membership1.default = false
278
+ # membership1.organization_id = org.id
279
+ # membership1.user_id = user2.id
280
+ #
281
+ # creates = SupportOps::Zendesk::OrganizationMemberships.create_many!([membership1, membership2])
282
+ # pp creates.id
283
+ # # => "82de0b044094f0c67893ac9fe64f1a99"
284
+ def self.create_many!(memberships)
285
+ raise 'The parameter must be an Array' unless memberships.is_a? Array
286
+ raise 'You can only create a maximum of 100 organization memberships at a time' if memberships.count > 100
287
+ raise 'You can only use SupportOps::Zendesk::OrganizationMemberships instances in the Array' unless memberships.reject { |o| o.is_a? SupportOps::Zendesk::OrganizationMemberships }.count.zero?
288
+
289
+ data = { organization_memberships: memberships.map { |o| to_hash(o).compact } }.to_json
290
+ response = client.connection.post('organization_memberships/create_many', data)
291
+ raise "Failed to create organization memberships => #{body['details']}" if response.status != 200
292
+ JobStatuses.new(Oj.load(response.body)['job_status'])
293
+ end
294
+
295
+ private
296
+
297
+ ##
298
+ # @private
299
+ def get_record
300
+ response = self.client.connection.get("organization_memberships/#{self.id}")
301
+ return nil if response.status != 200
302
+
303
+ Oj.load(response.body)['organization_membership']
304
+ end
305
+
306
+ ##
307
+ # @private
308
+ def create_record
309
+ response = self.client.connection.post("organization_memberships", { organization_membership: attributes_for_save }.to_json)
310
+ body = Oj.load(response.body)
311
+ raise "Failed to create organization membership => #{body['details']}" if response.status != 201
312
+ body['organization_membership']
313
+ end
314
+
315
+ ##
316
+ # @private
317
+ def delete_record
318
+ response = self.client.connection.delete("organization_memberships/#{self.id}")
319
+ raise "Failed to delete organization membership => #{body['details']}" if response.status != 204
320
+ true
321
+ end
322
+
323
+ ##
324
+ # @private
325
+ def users_record
326
+ Users.get!(self.user_id)
327
+ end
328
+
329
+ ##
330
+ # @private
331
+ def organizations_record
332
+ Organizations.get!(self.organization_id)
333
+ end
334
+ end
335
+ end
336
+ end