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.
- checksums.yaml +7 -0
- data/lib/support_ops_zendesk/packages.rb +89 -0
- data/lib/support_ops_zendesk/zendesk/app_installations.rb +62 -0
- data/lib/support_ops_zendesk/zendesk/app_job_statuses.rb +157 -0
- data/lib/support_ops_zendesk/zendesk/apps.rb +476 -0
- data/lib/support_ops_zendesk/zendesk/articles.rb +362 -0
- data/lib/support_ops_zendesk/zendesk/audit_logs.rb +166 -0
- data/lib/support_ops_zendesk/zendesk/automations.rb +390 -0
- data/lib/support_ops_zendesk/zendesk/base.rb +472 -0
- data/lib/support_ops_zendesk/zendesk/brands.rb +172 -0
- data/lib/support_ops_zendesk/zendesk/client.rb +91 -0
- data/lib/support_ops_zendesk/zendesk/comments.rb +37 -0
- data/lib/support_ops_zendesk/zendesk/configuration.rb +138 -0
- data/lib/support_ops_zendesk/zendesk/custom_roles.rb +224 -0
- data/lib/support_ops_zendesk/zendesk/dynamic_content.rb +297 -0
- data/lib/support_ops_zendesk/zendesk/dynamic_content_variants.rb +309 -0
- data/lib/support_ops_zendesk/zendesk/group_memberships.rb +337 -0
- data/lib/support_ops_zendesk/zendesk/groups.rb +385 -0
- data/lib/support_ops_zendesk/zendesk/help_center_categories.rb +332 -0
- data/lib/support_ops_zendesk/zendesk/help_center_content_tags.rb +237 -0
- data/lib/support_ops_zendesk/zendesk/help_center_management_permission_groups.rb +271 -0
- data/lib/support_ops_zendesk/zendesk/help_center_sections.rb +378 -0
- data/lib/support_ops_zendesk/zendesk/help_center_topics.rb +274 -0
- data/lib/support_ops_zendesk/zendesk/help_center_user_segments.rb +279 -0
- data/lib/support_ops_zendesk/zendesk/job_statuses.rb +231 -0
- data/lib/support_ops_zendesk/zendesk/locales.rb +326 -0
- data/lib/support_ops_zendesk/zendesk/macros.rb +407 -0
- data/lib/support_ops_zendesk/zendesk/oauth_clients.rb +186 -0
- data/lib/support_ops_zendesk/zendesk/oauth_tokens.rb +114 -0
- data/lib/support_ops_zendesk/zendesk/organization_fields.rb +282 -0
- data/lib/support_ops_zendesk/zendesk/organization_memberships.rb +336 -0
- data/lib/support_ops_zendesk/zendesk/organizations.rb +568 -0
- data/lib/support_ops_zendesk/zendesk/requester_roles.rb +58 -0
- data/lib/support_ops_zendesk/zendesk/satisfaction_reasons.rb +161 -0
- data/lib/support_ops_zendesk/zendesk/schedule_holidays.rb +27 -0
- data/lib/support_ops_zendesk/zendesk/schedules.rb +192 -0
- data/lib/support_ops_zendesk/zendesk/search.rb +185 -0
- data/lib/support_ops_zendesk/zendesk/sla_policies.rb +302 -0
- data/lib/support_ops_zendesk/zendesk/targets.rb +96 -0
- data/lib/support_ops_zendesk/zendesk/theme_job_statuses.rb +154 -0
- data/lib/support_ops_zendesk/zendesk/themes.rb +328 -0
- data/lib/support_ops_zendesk/zendesk/ticket_field_options.rb +154 -0
- data/lib/support_ops_zendesk/zendesk/ticket_fields.rb +357 -0
- data/lib/support_ops_zendesk/zendesk/ticket_forms.rb +370 -0
- data/lib/support_ops_zendesk/zendesk/ticket_user_types.rb +67 -0
- data/lib/support_ops_zendesk/zendesk/tickets.rb +837 -0
- data/lib/support_ops_zendesk/zendesk/translations.rb +310 -0
- data/lib/support_ops_zendesk/zendesk/trigger_categories.rb +275 -0
- data/lib/support_ops_zendesk/zendesk/triggers.rb +427 -0
- data/lib/support_ops_zendesk/zendesk/user_field_options.rb +153 -0
- data/lib/support_ops_zendesk/zendesk/user_fields.rb +312 -0
- data/lib/support_ops_zendesk/zendesk/users.rb +889 -0
- data/lib/support_ops_zendesk/zendesk/via_types.rb +137 -0
- data/lib/support_ops_zendesk/zendesk/views.rb +636 -0
- data/lib/support_ops_zendesk/zendesk/webhooks.rb +206 -0
- data/lib/support_ops_zendesk/zendesk.rb +66 -0
- data/lib/support_ops_zendesk.rb +29 -0
- metadata +274 -0
@@ -0,0 +1,385 @@
|
|
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 Groups 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 the group is the default one for the account
|
14
|
+
# @attr [Boolean] deleted Deleted groups get marked as such
|
15
|
+
# @attr [String] description The description of the group
|
16
|
+
# @attr [Integer] id Automatically assigned when creating groups
|
17
|
+
# @attr [Boolean] is_public If true, the group is public. If false, the group is private. You can't change a private group to a public group
|
18
|
+
# @attr [String] name The name of the group
|
19
|
+
# @attr [String] updated_at The time of the last update of the group
|
20
|
+
class Groups < SupportOps::Zendesk::Base
|
21
|
+
# @!parse
|
22
|
+
# # Creates/updates a group
|
23
|
+
# #
|
24
|
+
# # @author Jason Colyer
|
25
|
+
# # @since 1.0.0
|
26
|
+
# # @return [Object] Instance of {SupportOps::Zendesk::Groups}
|
27
|
+
# # @note This is inherited from {SupportOps::Zendesk::Base#save!}
|
28
|
+
# # @see
|
29
|
+
# # https://developer.zendesk.com/api-reference/ticketing/groups/groups/#create-group
|
30
|
+
# # Zendesk API > Groups > Create Group
|
31
|
+
# # @see
|
32
|
+
# # https://developer.zendesk.com/api-reference/ticketing/groups/groups/#update-group
|
33
|
+
# # Zendesk API > Groups > Update Group
|
34
|
+
# # @example
|
35
|
+
# # require 'support_ops_zendesk'
|
36
|
+
# #
|
37
|
+
# # SupportOps::Zendesk::Configuration.configure do |config|
|
38
|
+
# # config.url = 'https://gitlab.zendesk.com/api/v2'
|
39
|
+
# # config.username = 'jason@example.com'
|
40
|
+
# # config.token = 'abc123'
|
41
|
+
# # end
|
42
|
+
# #
|
43
|
+
# # new_group = SupportOps::Zendesk::Groups.new
|
44
|
+
# # new_group.name = 'My Group'
|
45
|
+
# #
|
46
|
+
# # new_group.save!
|
47
|
+
# #
|
48
|
+
# # pp new_group.id
|
49
|
+
# # # => 122
|
50
|
+
# # @example
|
51
|
+
# # require 'support_ops_zendesk'
|
52
|
+
# #
|
53
|
+
# # SupportOps::Zendesk::Configuration.configure do |config|
|
54
|
+
# # config.url = 'https://gitlab.zendesk.com/api/v2'
|
55
|
+
# # config.username = 'jason@example.com'
|
56
|
+
# # config.token = 'abc123'
|
57
|
+
# # end
|
58
|
+
# #
|
59
|
+
# # existing_group = SupportOps::Zendesk::Groups.get!(122)
|
60
|
+
# # existing_group.name = 'My Group 2'
|
61
|
+
# #
|
62
|
+
# # existing_group.save!
|
63
|
+
# #
|
64
|
+
# # pp new_group.name
|
65
|
+
# # # => "My Group 2"
|
66
|
+
# def save!; end
|
67
|
+
# @!parse
|
68
|
+
# # Deletes a group
|
69
|
+
# #
|
70
|
+
# # @author Jason Colyer
|
71
|
+
# # @since 1.0.0
|
72
|
+
# # @return [Boolean]
|
73
|
+
# # @note This is inherited from {SupportOps::Zendesk::Base#delete!}
|
74
|
+
# # @see
|
75
|
+
# # https://developer.zendesk.com/api-reference/ticketing/groups/groups/#delete-group
|
76
|
+
# # Zendesk API > Groups > Delete Group
|
77
|
+
# # @example
|
78
|
+
# # require 'support_ops_zendesk'
|
79
|
+
# #
|
80
|
+
# # SupportOps::Zendesk::Configuration.configure do |config|
|
81
|
+
# # config.url = 'https://gitlab.zendesk.com/api/v2'
|
82
|
+
# # config.username = 'jason@example.com'
|
83
|
+
# # config.token = 'abc123'
|
84
|
+
# # end
|
85
|
+
# #
|
86
|
+
# # existing_group = SupportOps::Zendesk::Groups.get!(122)
|
87
|
+
# # existing_group.delete!
|
88
|
+
# def delete!; end
|
89
|
+
# @!parse
|
90
|
+
# # Lists group memberships
|
91
|
+
# #
|
92
|
+
# # @author Jason Colyer
|
93
|
+
# # @since 1.0.0
|
94
|
+
# # @return [Object]
|
95
|
+
# # @note This is inherited from {SupportOps::Zendesk::Base#memberships}
|
96
|
+
# # @see
|
97
|
+
# # https://developer.zendesk.com/api-reference/ticketing/groups/group_memberships/#list-memberships
|
98
|
+
# # Zendesk API > Group Memberships > List Memberships
|
99
|
+
# # @example
|
100
|
+
# # require 'support_ops_zendesk'
|
101
|
+
# #
|
102
|
+
# # SupportOps::Zendesk::Configuration.configure do |config|
|
103
|
+
# # config.url = 'https://gitlab.zendesk.com/api/v2'
|
104
|
+
# # config.username = 'jason@example.com'
|
105
|
+
# # config.token = 'abc123'
|
106
|
+
# # end
|
107
|
+
# #
|
108
|
+
# # existing_group = SupportOps::Zendesk::Groups.get!(122)
|
109
|
+
# # memberships = existing_group.memberships
|
110
|
+
# #
|
111
|
+
# # pp memberships.count
|
112
|
+
# # # => 38
|
113
|
+
# def memberships; end
|
114
|
+
# @!parse
|
115
|
+
# # Lists group users
|
116
|
+
# #
|
117
|
+
# # @author Jason Colyer
|
118
|
+
# # @since 1.0.0
|
119
|
+
# # @return [Object]
|
120
|
+
# # @note This is inherited from {SupportOps::Zendesk::Base#users}
|
121
|
+
# # @example
|
122
|
+
# # require 'support_ops_zendesk'
|
123
|
+
# #
|
124
|
+
# # SupportOps::Zendesk::Configuration.configure do |config|
|
125
|
+
# # config.url = 'https://gitlab.zendesk.com/api/v2'
|
126
|
+
# # config.username = 'jason@example.com'
|
127
|
+
# # config.token = 'abc123'
|
128
|
+
# # end
|
129
|
+
# #
|
130
|
+
# # existing_group = SupportOps::Zendesk::Groups.get!(122)
|
131
|
+
# # users = existing_group.users
|
132
|
+
# #
|
133
|
+
# # pp users.count
|
134
|
+
# # # => 38
|
135
|
+
# def users; end
|
136
|
+
define_attributes :created_at, :default, :deleted, :description, :id,
|
137
|
+
:is_public, :name, :updated_at
|
138
|
+
readonly_attributes :created_at, :id, :updated_at
|
139
|
+
|
140
|
+
##
|
141
|
+
# Lists all groups in the Zendesk system
|
142
|
+
#
|
143
|
+
# @author Jason Colyer
|
144
|
+
# @since 1.0.0
|
145
|
+
# @return [Array]
|
146
|
+
# @see
|
147
|
+
# https://developer.zendesk.com/api-reference/ticketing/groups/groups/#list-groups
|
148
|
+
# Zendesk API > Groups > List Groups
|
149
|
+
# @see SupportOps::Zendesk::Configuration Setting up a client
|
150
|
+
# @example
|
151
|
+
# require 'support_ops_zendesk'
|
152
|
+
#
|
153
|
+
# SupportOps::Zendesk::Configuration.configure do |config|
|
154
|
+
# config.url = 'https://gitlab.zendesk.com/api/v2'
|
155
|
+
# config.username = 'jason@example.com'
|
156
|
+
# config.token = 'abc123'
|
157
|
+
# end
|
158
|
+
#
|
159
|
+
# groups = SupportOps::Zendesk::Groups.list
|
160
|
+
# pp groups.count
|
161
|
+
# # => 25
|
162
|
+
# pp groups.last.name
|
163
|
+
# # => "I'm the 25th group"
|
164
|
+
def self.list
|
165
|
+
response = client.connection.get('groups?page[size]=100')
|
166
|
+
Oj.load(response.body)['groups'].map { |g| Groups.new(g) }
|
167
|
+
end
|
168
|
+
|
169
|
+
##
|
170
|
+
# Lists all assignable groups in the Zendesk system
|
171
|
+
#
|
172
|
+
# @author Jason Colyer
|
173
|
+
# @since 1.0.0
|
174
|
+
# @return [Array]
|
175
|
+
# @see
|
176
|
+
# https://developer.zendesk.com/api-reference/ticketing/groups/groups/#list-assignable-groups
|
177
|
+
# Zendesk API > Assignable Groups > List Groups
|
178
|
+
# @see SupportOps::Zendesk::Configuration Setting up a client
|
179
|
+
# @example
|
180
|
+
# require 'support_ops_zendesk'
|
181
|
+
#
|
182
|
+
# SupportOps::Zendesk::Configuration.configure do |config|
|
183
|
+
# config.url = 'https://gitlab.zendesk.com/api/v2'
|
184
|
+
# config.username = 'jason@example.com'
|
185
|
+
# config.token = 'abc123'
|
186
|
+
# end
|
187
|
+
#
|
188
|
+
# groups = SupportOps::Zendesk::Groups.list_assignable
|
189
|
+
# pp groups.count
|
190
|
+
# # => 20
|
191
|
+
# pp groups.last.name
|
192
|
+
# # => "I'm the 20th group and I'm not deleted"
|
193
|
+
def self.list_assignable
|
194
|
+
response = client.connection.get('groups/assignable?page[size]=100')
|
195
|
+
Oj.load(response.body)['groups'].map { |g| Groups.new(g) }
|
196
|
+
end
|
197
|
+
|
198
|
+
##
|
199
|
+
# Locates a group within Zendesk by name. Can utilize a cache for quicker results
|
200
|
+
#
|
201
|
+
# @author Jason Colyer
|
202
|
+
# @since 1.0.0
|
203
|
+
# @overload find_by_name(key: value)
|
204
|
+
# @param name [String required] The name to search for
|
205
|
+
# @param cache [Array] An Array of SupportOps::Zendesk::Groups to use as a cache
|
206
|
+
# @return [Object] An instance of {SupportOps::Zendesk::Groups}
|
207
|
+
# @example
|
208
|
+
# require 'support_ops_zendesk'
|
209
|
+
#
|
210
|
+
# SupportOps::Zendesk::Configuration.configure do |config|
|
211
|
+
# config.url = 'https://gitlab.zendesk.com/api/v2'
|
212
|
+
# config.username = 'jason@example.com'
|
213
|
+
# config.token = 'abc123'
|
214
|
+
# end
|
215
|
+
#
|
216
|
+
# groups = SupportOps::Zendesk::Groups.list
|
217
|
+
# group = SupportOps::Zendesk::Groups.find_by_name(name: 'Test Group', cache: groups)
|
218
|
+
# pp group.name
|
219
|
+
# # => "Test Group"
|
220
|
+
# pp group.id
|
221
|
+
# # => 123456
|
222
|
+
def self.find_by_name(**args)
|
223
|
+
raise 'You have to provide a name' unless args[:name]
|
224
|
+
if args[:cache]
|
225
|
+
raise 'Provided cache is not an Array' unless args[:cache].is_a? Array
|
226
|
+
groups = args[:cache]
|
227
|
+
else
|
228
|
+
groups = list
|
229
|
+
end
|
230
|
+
groups.detect { |c| c.name.downcase == args[:name].to_s.downcase }
|
231
|
+
end
|
232
|
+
|
233
|
+
##
|
234
|
+
# Returns an approximate count of groups in the account. If the count exceeds 100,000, it is updated every 24 hours.
|
235
|
+
#
|
236
|
+
# @author Jason Colyer
|
237
|
+
# @since 1.0.0
|
238
|
+
# @return [Hash]
|
239
|
+
# @see
|
240
|
+
# https://developer.zendesk.com/api-reference/ticketing/groups/groups/#count-groups
|
241
|
+
# Zendesk API > Groups > Count Groups
|
242
|
+
# @see SupportOps::Zendesk::Configuration Setting up a client
|
243
|
+
# @example
|
244
|
+
# require 'support_ops_zendesk'
|
245
|
+
#
|
246
|
+
# SupportOps::Zendesk::Configuration.configure do |config|
|
247
|
+
# config.url = 'https://gitlab.zendesk.com/api/v2'
|
248
|
+
# config.username = 'jason@example.com'
|
249
|
+
# config.token = 'abc123'
|
250
|
+
# end
|
251
|
+
#
|
252
|
+
# orgs = SupportOps::Zendesk::Groups.count
|
253
|
+
# pp orgs['value']
|
254
|
+
# # => 25
|
255
|
+
def self.count
|
256
|
+
response = client.connection.get('groups/count')
|
257
|
+
Oj.load(response.body)['count']
|
258
|
+
end
|
259
|
+
|
260
|
+
##
|
261
|
+
# Locates a specific group in the Zendesk system
|
262
|
+
#
|
263
|
+
# @author Jason Colyer
|
264
|
+
# @since 1.0.0
|
265
|
+
# @see
|
266
|
+
# https://developer.zendesk.com/api-reference/ticketing/groups/groups/#show-group
|
267
|
+
# Zendesk API > Groups > Show Group
|
268
|
+
# @see SupportOps::Zendesk::Configuration Setting up a client
|
269
|
+
# @example
|
270
|
+
# require 'support_ops_zendesk'
|
271
|
+
#
|
272
|
+
# SupportOps::Zendesk::Configuration.configure do |config|
|
273
|
+
# config.url = 'https://gitlab.zendesk.com/api/v2'
|
274
|
+
# config.username = 'jason@example.com'
|
275
|
+
# config.token = 'abc123'
|
276
|
+
# end
|
277
|
+
#
|
278
|
+
# groups = SupportOps::Zendesk::Groups.get(123456)
|
279
|
+
# pp groups.name
|
280
|
+
# # => "Test Group"
|
281
|
+
def self.get(object)
|
282
|
+
if object.is_a? Groups
|
283
|
+
Groups.new(id: id).find
|
284
|
+
else
|
285
|
+
Groups.new(id: object).find
|
286
|
+
end
|
287
|
+
end
|
288
|
+
|
289
|
+
##
|
290
|
+
# Locates a specific group in the Zendesk system
|
291
|
+
#
|
292
|
+
# @author Jason Colyer
|
293
|
+
# @since 1.0.0
|
294
|
+
# @see
|
295
|
+
# https://developer.zendesk.com/api-reference/ticketing/groups/groups/#show-group
|
296
|
+
# Zendesk API > Groups > Show Group
|
297
|
+
# @see SupportOps::Zendesk::Configuration Setting up a client
|
298
|
+
# @example
|
299
|
+
# require 'support_ops_zendesk'
|
300
|
+
#
|
301
|
+
# SupportOps::Zendesk::Configuration.configure do |config|
|
302
|
+
# config.url = 'https://gitlab.zendesk.com/api/v2'
|
303
|
+
# config.username = 'jason@example.com'
|
304
|
+
# config.token = 'abc123'
|
305
|
+
# end
|
306
|
+
#
|
307
|
+
# groups = SupportOps::Zendesk::Groups.get!(123456)
|
308
|
+
# pp groups.name
|
309
|
+
# # => "Test Group"
|
310
|
+
def self.get!(object)
|
311
|
+
if object.is_a? Groups
|
312
|
+
Groups.new(id: id).find!
|
313
|
+
else
|
314
|
+
Groups.new(id: object).find!
|
315
|
+
end
|
316
|
+
end
|
317
|
+
|
318
|
+
private
|
319
|
+
|
320
|
+
##
|
321
|
+
# @private
|
322
|
+
def get_record
|
323
|
+
response = self.client.connection.get("groups/#{self.id}")
|
324
|
+
return nil if response.status != 200
|
325
|
+
|
326
|
+
Oj.load(response.body)['group']
|
327
|
+
end
|
328
|
+
|
329
|
+
##
|
330
|
+
# @private
|
331
|
+
def create_record
|
332
|
+
response = self.client.connection.post("groups", { group: attributes_for_save }.to_json)
|
333
|
+
body = Oj.load(response.body)
|
334
|
+
raise "Failed to create group => #{body['details']}" if response.status != 201
|
335
|
+
body['group']
|
336
|
+
end
|
337
|
+
|
338
|
+
##
|
339
|
+
# @private
|
340
|
+
def update_record
|
341
|
+
raise "Failed to update group => You didn't change anything in the object" if attributes_for_save.keys == [:id]
|
342
|
+
response = self.client.connection.put("groups/#{self.id}", { group: attributes_for_save }.to_json)
|
343
|
+
body = Oj.load(response.body)
|
344
|
+
raise "Failed to update group #{self.id} => #{body['details']}" if response.status != 200
|
345
|
+
body['group']
|
346
|
+
end
|
347
|
+
|
348
|
+
##
|
349
|
+
# @private
|
350
|
+
def delete_record
|
351
|
+
response = self.client.connection.delete("groups/#{self.id}")
|
352
|
+
raise "Failed to delete group => #{body['details']}" if response.status != 204
|
353
|
+
true
|
354
|
+
end
|
355
|
+
|
356
|
+
##
|
357
|
+
# @private
|
358
|
+
def memberships_record
|
359
|
+
memberships_list = []
|
360
|
+
opts = 'page[size]=100'
|
361
|
+
loop do
|
362
|
+
response = client.connection.get("groups/#{self.id}/memberships?#{opts}")
|
363
|
+
body = Oj.load(response.body)
|
364
|
+
memberships_list += body['group_memberships'].map { |o| GroupMemberships.new(o) }
|
365
|
+
break unless body['meta']['has_more']
|
366
|
+
|
367
|
+
opts = body['links']['next'].split('?').last
|
368
|
+
end
|
369
|
+
memberships_list
|
370
|
+
end
|
371
|
+
|
372
|
+
##
|
373
|
+
# @private
|
374
|
+
def users_record
|
375
|
+
user_list = []
|
376
|
+
group_memberships = self.memberships
|
377
|
+
user_list
|
378
|
+
memberships.each do |m|
|
379
|
+
user_list.push(Users.get!(m.user_id))
|
380
|
+
end
|
381
|
+
user_list
|
382
|
+
end
|
383
|
+
end
|
384
|
+
end
|
385
|
+
end
|