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,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
|