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,337 @@
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 The time the group was created
13
+ # @attr [Boolean] default If true, tickets assigned directly to the agent will assume this membership's group
14
+ # @attr [Integer] group_id The id of a group
15
+ # @attr [Integer] id Automatically assigned upon creation
16
+ # @attr [String] updated_at The time of the last update of the group
17
+ # @attr [Integer] user_id The id of an agent
18
+ # @todo List Assignable Memberships => https://developer.zendesk.com/api-reference/ticketing/groups/group_memberships/#list-assignable-memberships
19
+ # @todo users
20
+ # @todo groups
21
+ class GroupMemberships < SupportOps::Zendesk::Base
22
+ # @!parse
23
+ # # Creates a group membership
24
+ # #
25
+ # # @author Jason Colyer
26
+ # # @since 1.0.0
27
+ # # @return [Object] Instance of {SupportOps::Zendesk::OrganizationMemberships}
28
+ # # @note This is inherited from {SupportOps::Zendesk::Base#save!}
29
+ # # @see
30
+ # # https://developer.zendesk.com/api-reference/ticketing/groups/group_memberships/#create-membership
31
+ # # Zendesk API > Group Memberships > Create Membership
32
+ # # @example
33
+ # # require 'support_ops_zendesk'
34
+ # #
35
+ # # SupportOps::Zendesk::Configuration.configure do |config|
36
+ # # config.url = 'https://gitlab.zendesk.com/api/v2'
37
+ # # config.username = 'jason@example.com'
38
+ # # config.token = 'abc123'
39
+ # # end
40
+ # #
41
+ # # new_membership = SupportOps::Zendesk::GroupMemberships.new
42
+ # # new_membership.group_id = 88
43
+ # # new_membership.user_id = 72
44
+ # # new_membership.default = false
45
+ # #
46
+ # # new_membership.save!
47
+ # #
48
+ # # pp new_membership.id
49
+ # # # => 461
50
+ # def save!; end
51
+ # @!parse
52
+ # # Deletes a group membership
53
+ # #
54
+ # # @author Jason Colyer
55
+ # # @since 1.0.0
56
+ # # @return [Boolean]
57
+ # # @note This is inherited from {SupportOps::Zendesk::Base#delete!}
58
+ # # @see
59
+ # # https://developer.zendesk.com/api-reference/ticketing/groups/group_memberships/#delete-membership
60
+ # # Zendesk API > Group Memberships > Delete Membership
61
+ # # @example
62
+ # # require 'support_ops_zendesk'
63
+ # #
64
+ # # SupportOps::Zendesk::Configuration.configure do |config|
65
+ # # config.url = 'https://gitlab.zendesk.com/api/v2'
66
+ # # config.username = 'jason@example.com'
67
+ # # config.token = 'abc123'
68
+ # # end
69
+ # #
70
+ # # existing_membership = SupportOps::Zendesk::GroupMemberships.get!(461)
71
+ # # existing_membership.delete!
72
+ # def delete!; end
73
+ # @!parse
74
+ # # Lists group membership's group
75
+ # #
76
+ # # @author Jason Colyer
77
+ # # @since 1.0.0
78
+ # # @return [Object]
79
+ # # @note This is inherited from {SupportOps::Zendesk::Base#groups}
80
+ # # @example
81
+ # # require 'support_ops_zendesk'
82
+ # #
83
+ # # SupportOps::Zendesk::Configuration.configure do |config|
84
+ # # config.url = 'https://gitlab.zendesk.com/api/v2'
85
+ # # config.username = 'jason@example.com'
86
+ # # config.token = 'abc123'
87
+ # # end
88
+ # #
89
+ # # existing_membership = SupportOps::Zendesk::GroupMemberships.get!(461)
90
+ # # group = existing_membership.groups
91
+ # # pp group.name
92
+ # # # => "My Group"
93
+ # def groups; end
94
+ # @!parse
95
+ # # Lists group membership's user
96
+ # #
97
+ # # @author Jason Colyer
98
+ # # @since 1.0.0
99
+ # # @return [Object]
100
+ # # @note This is inherited from {SupportOps::Zendesk::Base#users}
101
+ # # require 'support_ops_zendesk'
102
+ # #
103
+ # # SupportOps::Zendesk::Configuration.configure do |config|
104
+ # # config.url = 'https://gitlab.zendesk.com/api/v2'
105
+ # # config.username = 'jason@example.com'
106
+ # # config.token = 'abc123'
107
+ # # end
108
+ # #
109
+ # # existing_membership = SupportOps::Zendesk::GroupMemberships.get!(461)
110
+ # # user = existing_membership.users
111
+ # # pp user.name
112
+ # # # => "Bob"
113
+ # def users; end
114
+ define_attributes :created_at, :default, :group_id, :id, :updated_at,
115
+ :user_id
116
+ readonly_attributes :created_at, :id, :updated_at
117
+
118
+ ##
119
+ # Lists group memberships in the Zendesk system
120
+ #
121
+ # @author Jason Colyer
122
+ # @since 1.0.0
123
+ # @overload list(key: value)
124
+ # @param limit [Integer optional] The limit to the number of tickets
125
+ # returned. Default to 0 (i.e. no limit)
126
+ # @return [Array]
127
+ # @see
128
+ # https://developer.zendesk.com/api-reference/ticketing/groups/group_memberships/#list-memberships
129
+ # Zendesk API > Group Memberships > List Memberships
130
+ # @see SupportOps::Zendesk::Configuration Setting up a client
131
+ # @example
132
+ # require 'support_ops_zendesk'
133
+ #
134
+ # SupportOps::Zendesk::Configuration.configure do |config|
135
+ # config.url = 'https://gitlab.zendesk.com/api/v2'
136
+ # config.username = 'jason@example.com'
137
+ # config.token = 'abc123'
138
+ # end
139
+ #
140
+ # memberships = SupportOps::Zendesk::GroupMemberships.list(limit: 25)
141
+ # pp memberships.count
142
+ # # => 25
143
+ # pp memberships.last.user_id
144
+ # # => 1234
145
+ def self.list(**args)
146
+ args[:limit] = 0 unless args[:limit]
147
+ list = []
148
+ opts = 'page[size]=100'
149
+ loop do
150
+ response = client.connection.get("group_memberships?#{opts}")
151
+ body = Oj.load(response.body)
152
+ list += body['group_memberships'].map { |g| GroupMemberships.new(g) }
153
+ break if args[:limit].to_i.positive? && list.count >= args[:limit].to_i
154
+ break unless body['meta']['has_more']
155
+
156
+ opts = body['links']['next'].split('?').last
157
+ end
158
+ return list if args[:limit].to_i.zero?
159
+
160
+ list.first(args[:limit].to_i)
161
+ end
162
+
163
+ ##
164
+ # Locates a specific group membership in the Zendesk system
165
+ #
166
+ # @author Jason Colyer
167
+ # @since 1.0.0
168
+ # @see
169
+ # https://developer.zendesk.com/api-reference/ticketing/groups/group_memberships/#show-membership
170
+ # Zendesk API > Group Memberships > Show Membership
171
+ # @see SupportOps::Zendesk::Configuration Setting up a client
172
+ # @example
173
+ # require 'support_ops_zendesk'
174
+ #
175
+ # SupportOps::Zendesk::Configuration.configure do |config|
176
+ # config.url = 'https://gitlab.zendesk.com/api/v2'
177
+ # config.username = 'jason@example.com'
178
+ # config.token = 'abc123'
179
+ # end
180
+ #
181
+ # membership = SupportOps::Zendesk::GroupMemberships.get(13983927615772)
182
+ # pp membership.user_id
183
+ # # => 1234
184
+ def self.get(object)
185
+ if object.is_a? GroupMemberships
186
+ GroupMemberships.new(id: id).find
187
+ else
188
+ GroupMemberships.new(id: object).find
189
+ end
190
+ end
191
+
192
+ ##
193
+ # Locates a specific group membership in the Zendesk system
194
+ #
195
+ # @author Jason Colyer
196
+ # @since 1.0.0
197
+ # @see
198
+ # https://developer.zendesk.com/api-reference/ticketing/groups/group_memberships/#show-membership
199
+ # Zendesk API > Group Memberships > Show Membership
200
+ # @see SupportOps::Zendesk::Configuration Setting up a client
201
+ # @example
202
+ # require 'support_ops_zendesk'
203
+ #
204
+ # SupportOps::Zendesk::Configuration.configure do |config|
205
+ # config.url = 'https://gitlab.zendesk.com/api/v2'
206
+ # config.username = 'jason@example.com'
207
+ # config.token = 'abc123'
208
+ # end
209
+ #
210
+ # membership = SupportOps::Zendesk::GroupMemberships.get!(13983927615772)
211
+ # pp membership.user_id
212
+ # # => 1234
213
+ def self.get!(object)
214
+ if object.is_a? GroupMemberships
215
+ GroupMemberships.new(id: id).find!
216
+ else
217
+ GroupMemberships.new(id: object).find!
218
+ end
219
+ end
220
+
221
+ ##
222
+ # Creates multiple group memberships via a batch job
223
+ #
224
+ # @author Jason Colyer
225
+ # @since 1.0.0
226
+ # @param memberships [Array] An array of {SupportOps::Zendesk::OrganizationMemberships} instances
227
+ # @return [object] A {SupportOps::Zendesk::JobStatuses} instance
228
+ # @see
229
+ # https://developer.zendesk.com/api-reference/ticketing/groups/group_memberships/#bulk-create-memberships
230
+ # Zendesk API > Group Memberships > Create Many Memberships
231
+ # @example
232
+ # require 'support_ops_zendesk'
233
+ #
234
+ # SupportOps::Zendesk::Configuration.configure do |config|
235
+ # config.url = 'https://gitlab.zendesk.com/api/v2'
236
+ # config.username = 'jason@example.com'
237
+ # config.token = 'abc123'
238
+ # end
239
+ #
240
+ # group = SupportOps::Zendesk::Groups.get!(25)
241
+ # user1 = SupportOps::Zendesk::Users.get!(2)
242
+ # user2 = SupportOps::Zendesk::Users.get!(4)
243
+ # membership1 = SupportOps::Zendesk::GroupMemberships.new
244
+ # membership1.group_id = org.id
245
+ # membership1.user_id = user1.id
246
+ # membership2 = SupportOps::Zendesk::GroupMemberships.new
247
+ # membership1.group_id = org.id
248
+ # membership1.user_id = user2.id
249
+ #
250
+ # creates = SupportOps::Zendesk::GroupMemberships.create_many!([membership1, membership2])
251
+ # pp creates.id
252
+ # # => "82de0b044094f0c67893ac9fe64f1a99"
253
+ def self.create_many!(memberships)
254
+ raise 'The parameter must be an Array' unless memberships.is_a? Array
255
+ raise 'You can only create a maximum of 100 group memberships at a time' if memberships.count > 100
256
+ raise 'You can only use SupportOps::Zendesk::GroupMemberships instances in the Array' unless memberships.reject { |o| o.is_a? SupportOps::Zendesk::GroupMemberships }.count.zero?
257
+
258
+ data = { group_memberships: memberships.map { |o| to_hash(o).compact } }.to_json
259
+ response = client.connection.post('group_memberships/create_many', data)
260
+ raise "Failed to create group memberships => #{body['details']}" if response.status != 200
261
+ JobStatuses.new(Oj.load(response.body)['job_status'])
262
+ end
263
+
264
+ ##
265
+ # Deletes multiple group memberships via a batch job
266
+ #
267
+ # @author Jason Colyer
268
+ # @since 1.0.0
269
+ # @param membership_ids [Array] An array of group membership IDs
270
+ # @return [object] A {SupportOps::Zendesk::JobStatuses} instance
271
+ # @see
272
+ # https://developer.zendesk.com/api-reference/ticketing/groups/group_memberships/#bulk-delete-memberships
273
+ # Zendesk API > Group Memberships > Bulk Delete Memberships
274
+ # @example
275
+ # require 'support_ops_zendesk'
276
+ #
277
+ # SupportOps::Zendesk::Configuration.configure do |config|
278
+ # config.url = 'https://gitlab.zendesk.com/api/v2'
279
+ # config.username = 'jason@example.com'
280
+ # config.token = 'abc123'
281
+ # end
282
+ #
283
+ # delete = SupportOps::Zendesk::GroupMemberships.delete_many!([123, 456])
284
+ # pp delete.id
285
+ # # => "82de0b044094f0c67893ac9fe64f1a99"
286
+ def self.delete_many!(membership_ids)
287
+ raise 'The parameter must be an Array' unless membership_ids.is_a? Array
288
+ raise 'You can only delete a maximum of 100 group memberships at a time' if membership_ids.count > 100
289
+
290
+ response = client.connection.delete("group_memberships/destroy_many?ids=#{membership_ids.join(',')}")
291
+ raise "Failed to delete group 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("group_memberships/#{self.id}")
301
+ return nil if response.status != 200
302
+
303
+ Oj.load(response.body)['group_membership']
304
+ end
305
+
306
+ ##
307
+ # @private
308
+ def create_record
309
+ response = self.client.connection.post("group_memberships", { group_membership: attributes_for_save }.to_json)
310
+ body = Oj.load(response.body)
311
+ raise "Failed to create group membership => #{body}" if response.status != 201
312
+ body['group_membership']
313
+ end
314
+
315
+ ##
316
+ # @private
317
+ def delete_record
318
+ response = self.client.connection.delete("group_memberships/#{self.id}")
319
+ body = Oj.load(response.body)
320
+ raise "Failed to delete group membership => #{body}" if response.status != 204
321
+ true
322
+ end
323
+
324
+ ##
325
+ # @private
326
+ def users_record
327
+ Users.get!(self.user_id)
328
+ end
329
+
330
+ ##
331
+ # @private
332
+ def groups_record
333
+ Groups.get!(self.group_id)
334
+ end
335
+ end
336
+ end
337
+ end