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