gitlab_support_readiness 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_readiness/client.rb +108 -0
- data/lib/support_readiness/gitlab/client.rb +64 -0
- data/lib/support_readiness/gitlab/configuration.rb +46 -0
- data/lib/support_readiness/gitlab/groups.rb +180 -0
- data/lib/support_readiness/gitlab/issues.rb +410 -0
- data/lib/support_readiness/gitlab/namespaces.rb +190 -0
- data/lib/support_readiness/gitlab/projects.rb +510 -0
- data/lib/support_readiness/gitlab/repositories.rb +267 -0
- data/lib/support_readiness/gitlab/users.rb +488 -0
- data/lib/support_readiness/gitlab.rb +19 -0
- data/lib/support_readiness/pagerduty/client.rb +66 -0
- data/lib/support_readiness/pagerduty/configuration.rb +43 -0
- data/lib/support_readiness/pagerduty/escalation_policies.rb +123 -0
- data/lib/support_readiness/pagerduty/schedules.rb +223 -0
- data/lib/support_readiness/pagerduty/services.rb +132 -0
- data/lib/support_readiness/pagerduty.rb +16 -0
- data/lib/support_readiness/redis.rb +90 -0
- data/lib/support_readiness/zendesk/articles.rb +210 -0
- data/lib/support_readiness/zendesk/automations.rb +304 -0
- data/lib/support_readiness/zendesk/client.rb +84 -0
- data/lib/support_readiness/zendesk/configuration.rb +49 -0
- data/lib/support_readiness/zendesk/group_memberships.rb +256 -0
- data/lib/support_readiness/zendesk/groups.rb +249 -0
- data/lib/support_readiness/zendesk/job_statuses.rb +188 -0
- data/lib/support_readiness/zendesk/macros.rb +267 -0
- data/lib/support_readiness/zendesk/organization_fields.rb +233 -0
- data/lib/support_readiness/zendesk/organization_memberships.rb +257 -0
- data/lib/support_readiness/zendesk/organizations.rb +515 -0
- data/lib/support_readiness/zendesk/roles.rb +194 -0
- data/lib/support_readiness/zendesk/search.rb +159 -0
- data/lib/support_readiness/zendesk/sla_policies.rb +232 -0
- data/lib/support_readiness/zendesk/ticket_fields.rb +222 -0
- data/lib/support_readiness/zendesk/ticket_forms.rb +290 -0
- data/lib/support_readiness/zendesk/tickets.rb +854 -0
- data/lib/support_readiness/zendesk/triggers.rb +269 -0
- data/lib/support_readiness/zendesk/users.rb +946 -0
- data/lib/support_readiness/zendesk/views.rb +469 -0
- data/lib/support_readiness/zendesk.rb +31 -0
- data/lib/support_readiness.rb +29 -0
- metadata +215 -0
@@ -0,0 +1,233 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Defines the module Readiness.
|
4
|
+
module Readiness
|
5
|
+
# Defines the module Zendesk
|
6
|
+
module Zendesk
|
7
|
+
##
|
8
|
+
# Defines the class OrganizationFields within the module {Readiness::Zendesk}.
|
9
|
+
#
|
10
|
+
# @author Jason Colyer
|
11
|
+
# @since 1.0.0
|
12
|
+
class OrganizationFields < Readiness::Client
|
13
|
+
attr_accessor :active, :custom_field_options, :description, :id, :key, :position, :regexp_for_validation, :title, :type
|
14
|
+
|
15
|
+
##
|
16
|
+
# Creates a new {Readiness::Zendesk::OrganizationFields} instance
|
17
|
+
#
|
18
|
+
# @author Jason Colyer
|
19
|
+
# @since 1.0.0
|
20
|
+
# @param object [Object] An instance of {Readiness::Zendesk::OrganizationFields}
|
21
|
+
# @example
|
22
|
+
# require 'support_readiness'
|
23
|
+
# Readiness::Zendesk::OrganizationFields.new
|
24
|
+
def initialize(object = {})
|
25
|
+
@active = object['active']
|
26
|
+
@custom_field_options = object['custom_field_options']
|
27
|
+
@description = object['description']
|
28
|
+
@id = object['id']
|
29
|
+
@key = object['key']
|
30
|
+
@position = object['position']
|
31
|
+
@regexp_for_validation = object['regexp_for_validation']
|
32
|
+
@title = object['title']
|
33
|
+
@type = object['type']
|
34
|
+
end
|
35
|
+
|
36
|
+
##
|
37
|
+
# Lists all organization fields
|
38
|
+
#
|
39
|
+
# @author Jason Colyer
|
40
|
+
# @since 1.0.0
|
41
|
+
# @param client [Object] An instance of {Readiness::Zendesk::Client}
|
42
|
+
# @return [Array]
|
43
|
+
# @see https://developer.zendesk.com/api-reference/ticketing/organizations/organization_fields/#list-organization-fields Zendesk API > Organization Fields > List Organization Fields
|
44
|
+
# @example
|
45
|
+
# require 'support_readiness'
|
46
|
+
# config = Readiness::Zendesk::Configuration.new
|
47
|
+
# config.username = 'alice@example.com'
|
48
|
+
# config.token = 'test123abc'
|
49
|
+
# config.url = 'https://example.zendesk.com/api/v2'
|
50
|
+
# client = Readiness::Zendesk::Client.new(config)
|
51
|
+
# fields = Readiness::Zendesk::OrganizationFields.list(client)
|
52
|
+
# pp fields.first.id
|
53
|
+
# # => 7
|
54
|
+
def self.list(client, limit = 0, sort = 'id')
|
55
|
+
array = []
|
56
|
+
opts = "page[size]=100"
|
57
|
+
loop do
|
58
|
+
response = client.connection.get("organization_fields?#{opts}")
|
59
|
+
handle_request_error(0, 'Zendesk', response.status) unless response.status == 200
|
60
|
+
body = Oj.load(response.body)
|
61
|
+
array += body['organization_fields'].map { |f| OrganizationFields.new(f) }
|
62
|
+
break if limit != 0 && array.count >= (limit * 100)
|
63
|
+
break unless body['meta']['has_more']
|
64
|
+
|
65
|
+
opts = body['links'] ['next'].split('?').last
|
66
|
+
end
|
67
|
+
array
|
68
|
+
end
|
69
|
+
|
70
|
+
##
|
71
|
+
# Locates an organization field within Zendesk. This will not exit on error (except Authentication errors)
|
72
|
+
#
|
73
|
+
# @author Jason Colyer
|
74
|
+
# @since 1.0.0
|
75
|
+
# @param client [Object] An instance of {Readiness::Zendesk::Client}
|
76
|
+
# @param fid [Integer] The organization field ID to find
|
77
|
+
# @return [Hash]
|
78
|
+
# @see https://developer.zendesk.com/api-reference/ticketing/organizations/organization_fields/#show-organization-field > Organization Fields > Show Organization Field
|
79
|
+
# @example
|
80
|
+
# require 'support_readiness'
|
81
|
+
# config = Readiness::Zendesk::Configuration.new
|
82
|
+
# config.username = 'alice@example.com'
|
83
|
+
# config.token = 'test123abc'
|
84
|
+
# config.url = 'https://example.zendesk.com/api/v2'
|
85
|
+
# client = Readiness::Zendesk::Client.new(config)
|
86
|
+
# field = Readiness::Zendesk::OrganizationFields.find(client, 8)
|
87
|
+
# pp field.title
|
88
|
+
# # => "Custom Field 1"
|
89
|
+
def self.find(client, fid)
|
90
|
+
response = client.connection.get("organization_fields/#{fid}")
|
91
|
+
handle_request_error(0, 'Zendesk', response.status, { action: 'get', id: fid }) unless response.status == 200
|
92
|
+
return OrganizationFields.new(Oj.load(response.body)['organization_field']) if response.status == 200
|
93
|
+
|
94
|
+
Oj.load(response.body)
|
95
|
+
end
|
96
|
+
|
97
|
+
##
|
98
|
+
# Locates an organization field within Zendesk. This will exit on error
|
99
|
+
#
|
100
|
+
# @author Jason Colyer
|
101
|
+
# @since 1.0.0
|
102
|
+
# @param client [Object] An instance of {Readiness::Zendesk::Client}
|
103
|
+
# @param fid [Integer] The organization field ID to find
|
104
|
+
# @return [Object] An instance of {Readiness::Zendesk::OrganizationFields}
|
105
|
+
# @see https://developer.zendesk.com/api-reference/ticketing/organizations/organization_fields/#show-organization-field > Organization Fields > Show Organization Field
|
106
|
+
# @example
|
107
|
+
# require 'support_readiness'
|
108
|
+
# config = Readiness::Zendesk::Configuration.new
|
109
|
+
# config.username = 'alice@example.com'
|
110
|
+
# config.token = 'test123abc'
|
111
|
+
# config.url = 'https://example.zendesk.com/api/v2'
|
112
|
+
# client = Readiness::Zendesk::Client.new(config)
|
113
|
+
# field = Readiness::Zendesk::OrganizationFields.find!(client, 8)
|
114
|
+
# pp field.title
|
115
|
+
# # => "Custom Field 1"
|
116
|
+
def self.find!(client, fid)
|
117
|
+
response = client.connection.get("organization_fields/#{fid}")
|
118
|
+
handle_request_error(1, 'Zendesk', response.status, { action: 'Find organization field', id: fid }) unless response.status == 200
|
119
|
+
OrganizationFields.new(Oj.load(response.body)['organization_field'])
|
120
|
+
end
|
121
|
+
|
122
|
+
##
|
123
|
+
# Creates an organization field. Will exit if unsuccessful
|
124
|
+
#
|
125
|
+
# @author Jason Colyer
|
126
|
+
# @since 1.0.0
|
127
|
+
# @param client [Object] An instance of {Readiness::Zendesk::Client}
|
128
|
+
# @param field [Object] An instance of {Readiness::Zendesk::OrganizationFields}
|
129
|
+
# @return [Object] An instance of {Readiness::Zendesk::OrganizationFields}
|
130
|
+
# @see https://developer.zendesk.com/api-reference/ticketing/organizations/organization_fields/#create-organization-field Zendesk API > Organization Fields > Create Organization Field
|
131
|
+
# @example
|
132
|
+
# require 'support_readiness'
|
133
|
+
# config = Readiness::Zendesk::Configuration.new
|
134
|
+
# config.username = 'alice@example.com'
|
135
|
+
# config.token = 'test123abc'
|
136
|
+
# config.url = 'https://example.zendesk.com/api/v2'
|
137
|
+
# client = Readiness::Zendesk::Client.new(config)
|
138
|
+
# field = Readiness::Zendesk::OrganizationFields.new
|
139
|
+
# field.type = 'text'
|
140
|
+
# field.title = 'Support desc'
|
141
|
+
# field.description = 'This field describes the support plan this organization has'
|
142
|
+
# field.position: 0
|
143
|
+
# field.active = true
|
144
|
+
# field.key = 'support_description'
|
145
|
+
# create = Readiness::Zendesk::OrganizationFields.create!(client, field)
|
146
|
+
# pp create.id
|
147
|
+
# # => 75
|
148
|
+
def self.create!(client, field)
|
149
|
+
response = client.connection.post 'organization_fields', to_clean_json_with_key(field, 'organization_field')
|
150
|
+
handle_request_error(1, 'Zendesk', response.status, { action: 'Create organization field', message: Oj.load(response.body)}) unless response.status == 201
|
151
|
+
OrganizationFields.new(Oj.load(response.body)['organization_field'])
|
152
|
+
end
|
153
|
+
|
154
|
+
##
|
155
|
+
# Updates an organization field. Will exit if unsuccessful
|
156
|
+
#
|
157
|
+
# @author Jason Colyer
|
158
|
+
# @since 1.0.0
|
159
|
+
# @param client [Object] An instance of {Readiness::Zendesk::Client}
|
160
|
+
# @param field [Object] An instance of {Readiness::Zendesk::OrganizationFields}
|
161
|
+
# @return [Object] An instance of {Readiness::Zendesk::OrganizationFields}
|
162
|
+
# @see https://developer.zendesk.com/api-reference/ticketing/organizations/organization_fields/#update-organization-field Zendesk API > Organization Fields > Update Organization Field
|
163
|
+
# @example
|
164
|
+
# require 'support_readiness'
|
165
|
+
# config = Readiness::Zendesk::Configuration.new
|
166
|
+
# config.username = 'alice@example.com'
|
167
|
+
# config.token = 'test123abc'
|
168
|
+
# config.url = 'https://example.zendesk.com/api/v2'
|
169
|
+
# client = Readiness::Zendesk::Client.new(config)
|
170
|
+
# field = Readiness::Zendesk::OrganizationFields.find!(client, 75)
|
171
|
+
# field.title = 'Support description'
|
172
|
+
# update = Readiness::Zendesk::OrganizationFields.update!(client, field)
|
173
|
+
# pp create.title
|
174
|
+
# # => "Support description"
|
175
|
+
def self.update!(client, field)
|
176
|
+
response = client.connection.put "organization_fields/#{field.id}", to_clean_json_with_key(field, 'ticket_field')
|
177
|
+
handle_request_error(1, 'Zendesk', response.status, { action: 'Update organization field', message: Oj.load(response.body)}) unless response.status == 200
|
178
|
+
OrganizationFields.new(Oj.load(response.body)['organization_field'])
|
179
|
+
end
|
180
|
+
|
181
|
+
##
|
182
|
+
# Deletes an organization field. Will exit if unsuccessful
|
183
|
+
#
|
184
|
+
# @author Jason Colyer
|
185
|
+
# @since 1.0.0
|
186
|
+
# @param client [Object] An instance of {Readiness::Zendesk::Client}
|
187
|
+
# @param field [Object] An instance of {Readiness::Zendesk::OrganizationFields}
|
188
|
+
# @return [Boolean]
|
189
|
+
# @see https://developer.zendesk.com/api-reference/ticketing/organizations/organization_fields/#delete-organization-field Zendesk API > Organization Fields > Delete Organization Field
|
190
|
+
# @example
|
191
|
+
# require 'support_readiness'
|
192
|
+
# config = Readiness::Zendesk::Configuration.new
|
193
|
+
# config.username = 'alice@example.com'
|
194
|
+
# config.token = 'test123abc'
|
195
|
+
# config.url = 'https://example.zendesk.com/api/v2'
|
196
|
+
# client = Readiness::Zendesk::Client.new(config)
|
197
|
+
# field = Readiness::Zendesk::OrganizationFields.find!(client, 75)
|
198
|
+
# delete = Readiness::Zendesk::OrganizationFields.delete!(client, field)
|
199
|
+
# pp delete
|
200
|
+
# # => true
|
201
|
+
def self.delete!(client, field)
|
202
|
+
response = client.connection.delete "organization_fields/#{field.id}"
|
203
|
+
handle_request_error(1, 'Zendesk', response.status, { action: 'Delete an organization field', id: field.id, message: Oj.load(response.body)}) unless response.status == 204
|
204
|
+
true
|
205
|
+
end
|
206
|
+
|
207
|
+
##
|
208
|
+
# Reorders organization fields. Will exit if unsuccessful
|
209
|
+
#
|
210
|
+
# @author Jason Colyer
|
211
|
+
# @since 1.0.0
|
212
|
+
# @param client [Object] An instance of {Readiness::Zendesk::Client}
|
213
|
+
# @param fids [Array] An Array of field IDs (order is important)
|
214
|
+
# @return [Boolean]
|
215
|
+
# @see https://developer.zendesk.com/api-reference/ticketing/organizations/organization_fields/#reorder-organization-field Zendesk API > Organization Fields > Reorder Organization Field
|
216
|
+
# @example
|
217
|
+
# require 'support_readiness'
|
218
|
+
# config = Readiness::Zendesk::Configuration.new
|
219
|
+
# config.username = 'alice@example.com'
|
220
|
+
# config.token = 'test123abc'
|
221
|
+
# config.url = 'https://example.zendesk.com/api/v2'
|
222
|
+
# client = Readiness::Zendesk::Client.new(config)
|
223
|
+
# reorder = Readiness::Zendesk::OrganizationFields.reorder!(client, [4, 5, 2, 8])
|
224
|
+
# pp reorder
|
225
|
+
# # => true
|
226
|
+
def self.reorder!(client, fids)
|
227
|
+
response = client.connection.put 'organization_fields/reorder', { organization_field_ids: fids }.to_json
|
228
|
+
handle_request_error(1, 'Zendesk', response.status, { action: 'Reorder organization fields', id: fids, message: Oj.load(response.body)}) unless response.status == 200
|
229
|
+
true
|
230
|
+
end
|
231
|
+
end
|
232
|
+
end
|
233
|
+
end
|
@@ -0,0 +1,257 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Defines the module Readiness.
|
4
|
+
module Readiness
|
5
|
+
# Defines the module Zendesk
|
6
|
+
module Zendesk
|
7
|
+
##
|
8
|
+
# Defines the class OrganizationMemberships within the module {Readiness::Zendesk}.
|
9
|
+
#
|
10
|
+
# @author Jason Colyer
|
11
|
+
# @since 1.0.0
|
12
|
+
class OrganizationMemberships < Readiness::Client
|
13
|
+
attr_accessor :id, :default, :organization_id, :organization_name, :user_id, :view_tickets
|
14
|
+
|
15
|
+
##
|
16
|
+
# Creates a new {Readiness::Zendesk::OrganizationMemberships} instance
|
17
|
+
#
|
18
|
+
# @author Jason Colyer
|
19
|
+
# @since 1.0.0
|
20
|
+
# @param object [Object] An instance of {Readiness::Zendesk::OrganizationMemberships}
|
21
|
+
# @example
|
22
|
+
# require 'support_readiness'
|
23
|
+
# Readiness::Zendesk::OrganizationMemberships.new
|
24
|
+
def initialize(object = {})
|
25
|
+
@id = object['id']
|
26
|
+
@default = object['default']
|
27
|
+
@organization_id = object['organization_id']
|
28
|
+
@organization_name = object['organization_name']
|
29
|
+
@user_id = object['user_id']
|
30
|
+
@view_tickets = object['view_tickets']
|
31
|
+
end
|
32
|
+
|
33
|
+
##
|
34
|
+
# Lists the first 100 organization memberships
|
35
|
+
#
|
36
|
+
# @author Jason Colyer
|
37
|
+
# @since 1.0.0
|
38
|
+
# @param client [Object] An instance of {Readiness::Zendesk::Client}
|
39
|
+
# @return [Array]
|
40
|
+
# @see https://developer.zendesk.com/api-reference/ticketing/organizations/organization_memberships/#list-memberships Zendesk API > Organization Memberships > List Memberships
|
41
|
+
# @example
|
42
|
+
# require 'support_readiness'
|
43
|
+
# config = Readiness::Zendesk::Configuration.new
|
44
|
+
# config.username = 'alice@example.com'
|
45
|
+
# config.token = 'test123abc'
|
46
|
+
# config.url = 'https://example.zendesk.com/api/v2'
|
47
|
+
# client = Readiness::Zendesk::Client.new(config)
|
48
|
+
# memberships = Readiness::Zendesk::OrganizationMemberships.list(client)
|
49
|
+
# pp memberships.first.id
|
50
|
+
# # => 4
|
51
|
+
def self.list(client)
|
52
|
+
response = client.connection.get("organization_memberships?page[size]=100")
|
53
|
+
handle_request_error(0, 'Zendesk', response.status) unless response.status == 200
|
54
|
+
Oj.load(response.body)['organization_memberships'].map { |m| OrganizationMemberships.new(m) }
|
55
|
+
end
|
56
|
+
|
57
|
+
##
|
58
|
+
# Lists many organization memberships. Does not stop until it ends or the page limit is hit.
|
59
|
+
# This method can take a long time to run depending on the parameters used.
|
60
|
+
#
|
61
|
+
# @author Jason Colyer
|
62
|
+
# @since 1.0.0
|
63
|
+
# @param client [Object] An instance of {Readiness::Zendesk::Client}
|
64
|
+
# @param limit [Integer] The number of pages to stop at. Using 0 means to list all.
|
65
|
+
# @return [Array]
|
66
|
+
# @see https://developer.zendesk.com/api-reference/ticketing/organizations/organization_memberships/#list-memberships Zendesk API > Organization Memberships > List Memberships
|
67
|
+
# @example
|
68
|
+
# require 'support_readiness'
|
69
|
+
# config = Readiness::Zendesk::Configuration.new
|
70
|
+
# config.username = 'alice@example.com'
|
71
|
+
# config.token = 'test123abc'
|
72
|
+
# config.url = 'https://example.zendesk.com/api/v2'
|
73
|
+
# client = Readiness::Zendesk::Client.new(config)
|
74
|
+
# memberships = Readiness::Zendesk::OrganizationMemberships.list_many(client, 2)
|
75
|
+
# pp memberships.count
|
76
|
+
# # => 200
|
77
|
+
def self.list_many(client, limit = 0)
|
78
|
+
array = []
|
79
|
+
opts = "page[size]=100"
|
80
|
+
loop do
|
81
|
+
response = client.connection.get("organization_memberships?#{opts}")
|
82
|
+
handle_request_error(0, 'Zendesk', response.status) unless response.status == 200
|
83
|
+
body = Oj.load(response.body)
|
84
|
+
array += body['organization_memberships'].map { |o| OrganizationMemberships.new(o) }
|
85
|
+
break if limit != 0 && array.count >= (limit * 100)
|
86
|
+
break unless body['meta']['has_more']
|
87
|
+
|
88
|
+
opts = body['links'] ['next'].split('?').last
|
89
|
+
end
|
90
|
+
array
|
91
|
+
end
|
92
|
+
|
93
|
+
##
|
94
|
+
# Locates an organization membership within Zendesk. This will not exit on error (except Authentication errors)
|
95
|
+
#
|
96
|
+
# @author Jason Colyer
|
97
|
+
# @since 1.0.0
|
98
|
+
# @param client [Object] An instance of {Readiness::Zendesk::Client}
|
99
|
+
# @param oid [Integer] The organization membership ID to find
|
100
|
+
# @return [Hash]
|
101
|
+
# @see https://developer.zendesk.com/api-reference/ticketing/organizations/organization_memberships/#show-membership Zendesk API > Organization Memberships > Show Membership
|
102
|
+
# @example
|
103
|
+
# require 'support_readiness'
|
104
|
+
# config = Readiness::Zendesk::Configuration.new
|
105
|
+
# config.username = 'alice@example.com'
|
106
|
+
# config.token = 'test123abc'
|
107
|
+
# config.url = 'https://example.zendesk.com/api/v2'
|
108
|
+
# client = Readiness::Zendesk::Client.new(config)
|
109
|
+
# membership = Readiness::Zendesk::OrganizationMemberships.find(client, 4)
|
110
|
+
# pp membership.user_id
|
111
|
+
# # => 29
|
112
|
+
def self.find(client, oid)
|
113
|
+
response = client.connection.get("organization_memberships/#{oid}")
|
114
|
+
handle_request_error(0, 'Zendesk', response.status, { action: 'get', id: oid }) unless response.status == 200
|
115
|
+
return OrganizationMemberships.new(Oj.load(response.body)['organization_membership']) if response.status == 200
|
116
|
+
|
117
|
+
Oj.load(response.body)
|
118
|
+
end
|
119
|
+
|
120
|
+
##
|
121
|
+
# Locates an organization membership within Zendesk. This will exit on error
|
122
|
+
#
|
123
|
+
# @author Jason Colyer
|
124
|
+
# @since 1.0.0
|
125
|
+
# @param client [Object] An instance of {Readiness::Zendesk::Client}
|
126
|
+
# @param oid [Integer] The organization membership ID to find
|
127
|
+
# @return [Hash]
|
128
|
+
# @see https://developer.zendesk.com/api-reference/ticketing/organizations/organization_memberships/#show-membership Zendesk API > Organization Memberships > Show Membership
|
129
|
+
# @example
|
130
|
+
# require 'support_readiness'
|
131
|
+
# config = Readiness::Zendesk::Configuration.new
|
132
|
+
# config.username = 'alice@example.com'
|
133
|
+
# config.token = 'test123abc'
|
134
|
+
# config.url = 'https://example.zendesk.com/api/v2'
|
135
|
+
# client = Readiness::Zendesk::Client.new(config)
|
136
|
+
# membership = Readiness::Zendesk::OrganizationMemberships.find!(client, 4)
|
137
|
+
# pp membership.user_id
|
138
|
+
# # => 29
|
139
|
+
def self.find!(client, oid)
|
140
|
+
response = client.connection.get("organization_memberships/#{oid}")
|
141
|
+
handle_request_error(1, 'Zendesk', response.status, { action: 'Find organization membership', id: oid }) unless response.status == 200
|
142
|
+
OrganizationMemberships.new(Oj.load(response.body)['organization_membership'])
|
143
|
+
end
|
144
|
+
|
145
|
+
##
|
146
|
+
# Creates an organization membership. Will exit if unsuccessful
|
147
|
+
#
|
148
|
+
# @author Jason Colyer
|
149
|
+
# @since 1.0.0
|
150
|
+
# @param client [Object] An instance of {Readiness::Zendesk::Client}
|
151
|
+
# @param membership [Object] An instance of {Readiness::Zendesk::OrganizationMemberships}
|
152
|
+
# @return [Object] An instance of {Readiness::Zendesk::OrganizationMemberships}
|
153
|
+
# @see https://developer.zendesk.com/api-reference/ticketing/organizations/organization_memberships/#create-membership Zendesk API > Organization Memberships > Create Membership
|
154
|
+
# @example
|
155
|
+
# require 'support_readiness'
|
156
|
+
# config = Readiness::Zendesk::Configuration.new
|
157
|
+
# config.username = 'alice@example.com'
|
158
|
+
# config.token = 'test123abc'
|
159
|
+
# config.url = 'https://example.zendesk.com/api/v2'
|
160
|
+
# client = Readiness::Zendesk::Client.new(config)
|
161
|
+
# membership = Readiness::Zendesk::OrganizationMemberships.new
|
162
|
+
# membership.user_id = 72
|
163
|
+
# membership.organization_id = 88
|
164
|
+
# create = Readiness::Zendesk::OrganizationMemberships.create!(client, membership)
|
165
|
+
# pp create.id
|
166
|
+
# # => 461
|
167
|
+
def self.create!(client, membership)
|
168
|
+
response = client.connection.post 'organization_memberships', to_clean_json_with_key(membership, 'organization_membership')
|
169
|
+
handle_request_error(1, 'Zendesk', response.status, { action: 'Create organization membership', message: Oj.load(response.body)}) unless response.status == 201
|
170
|
+
OrganizationMemberships.new(Oj.load(response.body)['organization_membership'])
|
171
|
+
end
|
172
|
+
|
173
|
+
##
|
174
|
+
# Creates multiple organization memberships via a batch job
|
175
|
+
#
|
176
|
+
# @author Jason Colyer
|
177
|
+
# @since 1.0.0
|
178
|
+
# @param client [Object] An instance of {Readiness::Zendesk::Client}
|
179
|
+
# @param memberships [Array] An array of {Readiness::Zendesk::OrganizationMemberships} instances
|
180
|
+
# @return [object] A {Readiness::Zendesk::JobStatuses} instance
|
181
|
+
# @see https://developer.zendesk.com/api-reference/ticketing/organizations/organization_memberships/#create-many-memberships Zendesk API > Organization Memberships > Create Many Memberships
|
182
|
+
# @example
|
183
|
+
# require 'support_readiness'
|
184
|
+
# config = Readiness::Zendesk::Configuration.new
|
185
|
+
# config.username = 'alice@example.com'
|
186
|
+
# config.token = 'test123abc'
|
187
|
+
# config.url = 'https://example.zendesk.com/api/v2'
|
188
|
+
# client = Readiness::Zendesk::Client.new(config)
|
189
|
+
# membership1 = Readiness::Zendesk::OrganizationMemberships.new
|
190
|
+
# membership1.user_id = 72
|
191
|
+
# membership1.organization_id = 88
|
192
|
+
# membership2 = Readiness::Zendesk::OrganizationMemberships.new
|
193
|
+
# membership2.user_id = 27
|
194
|
+
# membership2.organization_id = 88
|
195
|
+
# creates = Readiness::Zendesk::OrganizationMemberships.create_many!(client, membership)
|
196
|
+
# pp creates.id
|
197
|
+
# # => "8b726e606741012ffc2d782bcb7848fe"
|
198
|
+
def self.create_many!(client, memberships)
|
199
|
+
data = { organization_memberships: memberships.map { |t| to_hash(t).compact } }.to_json
|
200
|
+
response = client.connection.post('organization_memberships/create_many', data)
|
201
|
+
handle_request_error(1, 'Zendesk', response.status, { action: 'Create many organization memberships', message: Oj.load(response.body)}) unless response.status == 200
|
202
|
+
JobStatuses.new(Oj.load(response.body)['job_status'])
|
203
|
+
end
|
204
|
+
|
205
|
+
##
|
206
|
+
# Deletes an organization membership. Will exit if unsuccessful
|
207
|
+
#
|
208
|
+
# @author Jason Colyer
|
209
|
+
# @since 1.0.0
|
210
|
+
# @param client [Object] An instance of {Readiness::Zendesk::Client}
|
211
|
+
# @param membership [Object] An instance of {Readiness::Zendesk::OrganizationMemberships}
|
212
|
+
# @return [Boolean]
|
213
|
+
# @see hhttps://developer.zendesk.com/api-reference/ticketing/organizations/organization_memberships/#delete-membership Zendesk API > Organization Memberships > Delete Membership
|
214
|
+
# @example
|
215
|
+
# require 'support_readiness'
|
216
|
+
# config = Readiness::Zendesk::Configuration.new
|
217
|
+
# config.username = 'alice@example.com'
|
218
|
+
# config.token = 'test123abc'
|
219
|
+
# config.url = 'https://example.zendesk.com/api/v2'
|
220
|
+
# client = Readiness::Zendesk::Client.new(config)
|
221
|
+
# membership = Readiness::Zendesk::OrganizationMemberships.find!(client, 461)
|
222
|
+
# delete = Readiness::Zendesk::OrganizationMemberships.delete!(client, membership)
|
223
|
+
# pp delete
|
224
|
+
# # => true
|
225
|
+
def self.delete!(client, membership)
|
226
|
+
response = client.connection.delete "organization_memberships/#{membership.id}"
|
227
|
+
handle_request_error(1, 'Zendesk', response.status, { action: 'Delete organization membership', message: Oj.load(response.body)}) unless response.status == 204
|
228
|
+
true
|
229
|
+
end
|
230
|
+
|
231
|
+
##
|
232
|
+
# Deletes multiple organization memberships via a batch job
|
233
|
+
#
|
234
|
+
# @author Jason Colyer
|
235
|
+
# @since 1.0.0
|
236
|
+
# @param client [Object] An instance of {Readiness::Zendesk::Client}
|
237
|
+
# @param mids [Array] An array of organization memberships IDs
|
238
|
+
# @return [object] A {Readiness::Zendesk::JobStatuses} instance
|
239
|
+
# @see https://developer.zendesk.com/api-reference/ticketing/organizations/organization_memberships/#bulk-delete-memberships Zendesk API > Organization Memberships > Bulk Delete Memberships
|
240
|
+
# @example
|
241
|
+
# require 'support_readiness'
|
242
|
+
# config = Readiness::Zendesk::Configuration.new
|
243
|
+
# config.username = 'alice@example.com'
|
244
|
+
# config.token = 'test123abc'
|
245
|
+
# config.url = 'https://example.zendesk.com/api/v2'
|
246
|
+
# client = Readiness::Zendesk::Client.new(config)
|
247
|
+
# deletes = Readiness::Zendesk::OrganizationMemberships.delete!(client, [461, 462])
|
248
|
+
# pp deletes.id
|
249
|
+
# # => "82de0b044094f0c67893ac9fe64f1a99"
|
250
|
+
def self.delete_many(client, mids)
|
251
|
+
response = client.connection.delete("organization_memberships/destroy_many?ids=#{mids.join(',')}")
|
252
|
+
handle_request_error(1, 'Zendesk', response.status, { action: 'Delete many organization memberships', message: Oj.load(response.body)}) unless response.status == 200
|
253
|
+
JobStatuses.new(Oj.load(response.body)['job_status'])
|
254
|
+
end
|
255
|
+
end
|
256
|
+
end
|
257
|
+
end
|