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,222 @@
|
|
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 TicketFields within the module {Readiness::Zendesk}.
|
9
|
+
#
|
10
|
+
# @author Jason Colyer
|
11
|
+
# @since 1.0.0
|
12
|
+
# @todo List ticket field options
|
13
|
+
# @todo Show ticket field option
|
14
|
+
# @todo Create or update ticket field option
|
15
|
+
# @todo Delete ticket field option
|
16
|
+
# @todo Reorder ticket fields
|
17
|
+
class TicketFields < Readiness::Client
|
18
|
+
attr_accessor :active, :agent_description, :collapsed_for_agents, :custom_field_options, :description, :editable_in_portal, :id, :key, :position, :regexp_for_validation, :removable, :required, :system_field_options, :tag, :title, :title_in_portal, :type, :visible_in_portal
|
19
|
+
|
20
|
+
##
|
21
|
+
# Creates a new {Readiness::Zendesk::TicketFields} instance
|
22
|
+
#
|
23
|
+
# @author Jason Colyer
|
24
|
+
# @since 1.0.0
|
25
|
+
# @param object [Object] An instance of {Readiness::Zendesk::TicketFields}
|
26
|
+
# @example
|
27
|
+
# require 'support_readiness'
|
28
|
+
# Readiness::Zendesk::TicketFields.new
|
29
|
+
def initialize(object = {})
|
30
|
+
@active = object['active']
|
31
|
+
@agent_description = object['agent_description']
|
32
|
+
@collapsed_for_agents = object['collapsed_for_agents']
|
33
|
+
@custom_field_options = object['custom_field_options']
|
34
|
+
@description = object['description']
|
35
|
+
@editable_in_portal = object['editable_in_portal']
|
36
|
+
@id = object['id']
|
37
|
+
@key = object['key']
|
38
|
+
@position = object['position']
|
39
|
+
@regexp_for_validation = object['regexp_for_validation']
|
40
|
+
@removable = object['removable']
|
41
|
+
@required = object['required']
|
42
|
+
@system_field_options = object['system_field_options']
|
43
|
+
@tag = object['tag']
|
44
|
+
@title = object['title']
|
45
|
+
@title_in_portal = object['title_in_portal']
|
46
|
+
@type = object['type']
|
47
|
+
@visible_in_portal = object['visible_in_portal']
|
48
|
+
end
|
49
|
+
|
50
|
+
##
|
51
|
+
# Lists all ticket fields.
|
52
|
+
#
|
53
|
+
# @author Jason Colyer
|
54
|
+
# @since 1.0.0
|
55
|
+
# @param client [Object] An instance of {Readiness::Zendesk::Client}
|
56
|
+
# @return [Array]
|
57
|
+
# @see https://developer.zendesk.com/api-reference/ticketing/tickets/ticket_fields/#list-ticket-fields Zendesk API > Ticket Fields > List Ticket Fields
|
58
|
+
# @example
|
59
|
+
# require 'support_readiness'
|
60
|
+
# config = Readiness::Zendesk::Configuration.new
|
61
|
+
# config.username = 'alice@example.com'
|
62
|
+
# config.token = 'test123abc'
|
63
|
+
# config.url = 'https://example.zendesk.com/api/v2'
|
64
|
+
# client = Readiness::Zendesk::Client.new(config)
|
65
|
+
# fields = Readiness::Zendesk::TicketFields.list(client, 2)
|
66
|
+
# pp fields.count
|
67
|
+
# # => 200
|
68
|
+
def self.list(client, limit = 0, sort = 'id')
|
69
|
+
array = []
|
70
|
+
opts = "page[size]=100"
|
71
|
+
loop do
|
72
|
+
response = client.connection.get("ticket_fields?#{opts}")
|
73
|
+
handle_request_error(0, 'Zendesk', response.status) unless response.status == 200
|
74
|
+
body = Oj.load(response.body)
|
75
|
+
array += body['ticket_fields'].map { |f| TicketFields.new(f) }
|
76
|
+
break if limit != 0 && array.count >= (limit * 100)
|
77
|
+
break unless body['meta']['has_more']
|
78
|
+
|
79
|
+
opts = body['links'] ['next'].split('?').last
|
80
|
+
end
|
81
|
+
array
|
82
|
+
end
|
83
|
+
|
84
|
+
##
|
85
|
+
# Locates a ticket field within Zendesk. This will not exit on error (except Authentication errors)
|
86
|
+
#
|
87
|
+
# @author Jason Colyer
|
88
|
+
# @since 1.0.0
|
89
|
+
# @param client [Object] An instance of {Readiness::Zendesk::Client}
|
90
|
+
# @param fid [Integer] The ticket field ID to find
|
91
|
+
# @return [Hash]
|
92
|
+
# @see https://developer.zendesk.com/api-reference/ticketing/tickets/ticket_fields/#show-ticket-field Zendesk API > Ticket Fields > Show Ticket Field
|
93
|
+
# @example
|
94
|
+
# require 'support_readiness'
|
95
|
+
# config = Readiness::Zendesk::Configuration.new
|
96
|
+
# config.username = 'alice@example.com'
|
97
|
+
# config.token = 'test123abc'
|
98
|
+
# config.url = 'https://example.zendesk.com/api/v2'
|
99
|
+
# client = Readiness::Zendesk::Client.new(config)
|
100
|
+
# field = Readiness::Zendesk::TicketFields.find(client, 89)
|
101
|
+
# pp field.title
|
102
|
+
# # => "Age"
|
103
|
+
def self.find(client, fid)
|
104
|
+
response = client.connection.get("ticket_fields/#{fid}")
|
105
|
+
handle_request_error(0, 'Zendesk', response.status, { action: 'get', id: fid }) unless response.status == 200
|
106
|
+
return TicketFields.new(Oj.load(response.body)['ticket_field']) if response.status == 200
|
107
|
+
|
108
|
+
Oj.load(response.body)
|
109
|
+
end
|
110
|
+
|
111
|
+
##
|
112
|
+
# Locates a ticket field within Zendesk. This will exit on error
|
113
|
+
#
|
114
|
+
# @author Jason Colyer
|
115
|
+
# @since 1.0.0
|
116
|
+
# @param client [Object] An instance of {Readiness::Zendesk::Client}
|
117
|
+
# @param fid [Integer] The ticket field ID to find
|
118
|
+
# @return [Hash]
|
119
|
+
# @see https://developer.zendesk.com/api-reference/ticketing/tickets/ticket_fields/#show-ticket-field Zendesk API > Ticket Fields > Show Ticket Field
|
120
|
+
# @example
|
121
|
+
# require 'support_readiness'
|
122
|
+
# config = Readiness::Zendesk::Configuration.new
|
123
|
+
# config.username = 'alice@example.com'
|
124
|
+
# config.token = 'test123abc'
|
125
|
+
# config.url = 'https://example.zendesk.com/api/v2'
|
126
|
+
# client = Readiness::Zendesk::Client.new(config)
|
127
|
+
# field = Readiness::Zendesk::TicketFields.find!(client, 89)
|
128
|
+
# pp field.title
|
129
|
+
# # => "Age"
|
130
|
+
def self.find!(client, fid)
|
131
|
+
response = client.connection.get("ticket_fields/#{fid}")
|
132
|
+
handle_request_error(1, 'Zendesk', response.status, { action: 'Find ticket field', id: fid }) unless response.status == 200
|
133
|
+
TicketFields.new(Oj.load(response.body)['ticket_field'])
|
134
|
+
end
|
135
|
+
|
136
|
+
##
|
137
|
+
# Creates a ticket field. Will exit if unsuccessful
|
138
|
+
#
|
139
|
+
# @author Jason Colyer
|
140
|
+
# @since 1.0.0
|
141
|
+
# @param client [Object] An instance of {Readiness::Zendesk::Client}
|
142
|
+
# @param field [Object] An instance of {Readiness::Zendesk::TicketFields}
|
143
|
+
# @return [Object] An instance of {Readiness::Zendesk::TicketFields}
|
144
|
+
# @see https://developer.zendesk.com/api-reference/ticketing/tickets/ticket_fields/#create-ticket-field Zendesk API > Ticket Fields > Create Ticket Field
|
145
|
+
# @example
|
146
|
+
# require 'support_readiness'
|
147
|
+
# config = Readiness::Zendesk::Configuration.new
|
148
|
+
# config.username = 'alice@example.com'
|
149
|
+
# config.token = 'test123abc'
|
150
|
+
# config.url = 'https://example.zendesk.com/api/v2'
|
151
|
+
# client = Readiness::Zendesk::Client.new(config)
|
152
|
+
# field = Readiness::Zendesk::TicketFields.new
|
153
|
+
# field.type = 'text'
|
154
|
+
# field.title = 'Age'
|
155
|
+
# create = Readiness::Zendesk::TicketFields.create!(client, field)
|
156
|
+
# pp create.id
|
157
|
+
# # => 89
|
158
|
+
def self.create!(client, field)
|
159
|
+
response = client.connection.post 'ticket_fields', to_clean_json_with_key(field, 'ticket_field')
|
160
|
+
handle_request_error(1, 'Zendesk', response.status, { action: 'Create ticket field', message: Oj.load(response.body)}) unless response.status == 201
|
161
|
+
TicketFields.new(Oj.load(response.body)['ticket_field'])
|
162
|
+
end
|
163
|
+
|
164
|
+
##
|
165
|
+
# Updates a ticket field. Will exit if unsuccessful
|
166
|
+
#
|
167
|
+
# @author Jason Colyer
|
168
|
+
# @since 1.0.0
|
169
|
+
# @param client [Object] An instance of {Readiness::Zendesk::Client}
|
170
|
+
# @param field [Object] An instance of {Readiness::Zendesk::TicketFields}
|
171
|
+
# @return [Object] An instance of {Readiness::Zendesk::TicketFields}
|
172
|
+
# @see https://developer.zendesk.com/api-reference/ticketing/tickets/ticket_fields/#update-ticket-field Zendesk API > Ticket Fields > Update Ticket Field
|
173
|
+
# @example
|
174
|
+
# require 'support_readiness'
|
175
|
+
# config = Readiness::Zendesk::Configuration.new
|
176
|
+
# config.username = 'alice@example.com'
|
177
|
+
# config.token = 'test123abc'
|
178
|
+
# config.url = 'https://example.zendesk.com/api/v2'
|
179
|
+
# client = Readiness::Zendesk::Client.new(config)
|
180
|
+
# field = Readiness::Zendesk::TicketFields.find!(client, 21938362)
|
181
|
+
# field.title = 'Pies'
|
182
|
+
# field.custom_field_options = [
|
183
|
+
# { name: 'Apple Pie', value: 'apple' },
|
184
|
+
# { name: 'Pecan Pie', value: 'pecan' }
|
185
|
+
# ]
|
186
|
+
# update = Readiness::Zendesk::TicketFields.update!(client, field)
|
187
|
+
# pp update.title
|
188
|
+
# # => "Pies"
|
189
|
+
def self.update!(client, field)
|
190
|
+
response = client.connection.put "ticket_fields/#{field.id}", to_clean_json_with_key(field, 'ticket_field')
|
191
|
+
handle_request_error(1, 'Zendesk', response.status, { action: 'Update ticket field', message: Oj.load(response.body)}) unless response.status == 200
|
192
|
+
TicketFields.new(Oj.load(response.body)['ticket_field'])
|
193
|
+
end
|
194
|
+
|
195
|
+
##
|
196
|
+
# Deletes a ticket field. Will exit if unsuccessful
|
197
|
+
#
|
198
|
+
# @author Jason Colyer
|
199
|
+
# @since 1.0.0
|
200
|
+
# @param client [Object] An instance of {Readiness::Zendesk::Client}
|
201
|
+
# @param field [Object] An instance of {Readiness::Zendesk::TicketFields}
|
202
|
+
# @return [Boolean]
|
203
|
+
# @see https://developer.zendesk.com/api-reference/ticketing/tickets/ticket_fields/#delete-ticket-field Zendesk API > Ticket Fields > Delete Ticket Field
|
204
|
+
# @example
|
205
|
+
# require 'support_readiness'
|
206
|
+
# config = Readiness::Zendesk::Configuration.new
|
207
|
+
# config.username = 'alice@example.com'
|
208
|
+
# config.token = 'test123abc'
|
209
|
+
# config.url = 'https://example.zendesk.com/api/v2'
|
210
|
+
# client = Readiness::Zendesk::Client.new(config)
|
211
|
+
# field = Readiness::Zendesk::TicketFields.find!(client, 34)
|
212
|
+
# delete = Readiness::Zendesk::TicketFields.delete!(client, field)
|
213
|
+
# pp delete
|
214
|
+
# # => true
|
215
|
+
def self.delete!(client, field)
|
216
|
+
response = client.connection.delete "ticket_fields/#{field.id}"
|
217
|
+
handle_request_error(1, 'Zendesk', response.status, { action: 'Delete a ticket field', id: field.id, message: Oj.load(response.body)}) unless response.status == 204
|
218
|
+
true
|
219
|
+
end
|
220
|
+
end
|
221
|
+
end
|
222
|
+
end
|
@@ -0,0 +1,290 @@
|
|
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 TicketForms within the module {Readiness::Zendesk}.
|
9
|
+
#
|
10
|
+
# @author Jason Colyer
|
11
|
+
# @since 1.0.0
|
12
|
+
class TicketForms < Readiness::Client
|
13
|
+
attr_accessor :active, :agent_conditions, :default, :display_name, :end_user_conditions, :end_user_visible, :id, :in_all_brands, :name, :position, :restricted_brand_ids, :ticket_field_ids
|
14
|
+
|
15
|
+
##
|
16
|
+
# Creates a new {Readiness::Zendesk::TicketForms} instance
|
17
|
+
#
|
18
|
+
# @author Jason Colyer
|
19
|
+
# @since 1.0.0
|
20
|
+
# @param object [Object] An instance of {Readiness::Zendesk::TicketForms}
|
21
|
+
# @example
|
22
|
+
# require 'support_readiness'
|
23
|
+
# Readiness::Zendesk::TicketForms.new
|
24
|
+
def initialize(object = {})
|
25
|
+
@active = object['active']
|
26
|
+
@agent_conditions = object['agent_conditions']
|
27
|
+
@default = object['default']
|
28
|
+
@display_name = object['display_name']
|
29
|
+
@end_user_conditions = object['end_user_conditions']
|
30
|
+
@end_user_visible = object['end_user_visible']
|
31
|
+
@id = object['id']
|
32
|
+
@in_all_brands = object['in_all_brands']
|
33
|
+
@name = object['name']
|
34
|
+
@position = object['position']
|
35
|
+
@restricted_brand_ids = object['restricted_brand_ids']
|
36
|
+
@ticket_field_ids = object['ticket_field_ids']
|
37
|
+
end
|
38
|
+
|
39
|
+
##
|
40
|
+
# Lists the first 100 ticket forms
|
41
|
+
#
|
42
|
+
# @author Jason Colyer
|
43
|
+
# @since 1.0.0
|
44
|
+
# @param client [Object] An instance of {Readiness::Zendesk::Client}
|
45
|
+
# @return [Array]
|
46
|
+
# @see https://developer.zendesk.com/api-reference/ticketing/tickets/ticket_forms/#list-ticket-forms Zendesk API > Ticket Forms > List Ticket Forms
|
47
|
+
# @example
|
48
|
+
# require 'support_readiness'
|
49
|
+
# config = Readiness::Zendesk::Configuration.new
|
50
|
+
# config.username = 'alice@example.com'
|
51
|
+
# config.token = 'test123abc'
|
52
|
+
# config.url = 'https://example.zendesk.com/api/v2'
|
53
|
+
# client = Readiness::Zendesk::Client.new(config)
|
54
|
+
# forms = Readiness::Zendesk::TicketForms.list(client)
|
55
|
+
# pp forms.first.id
|
56
|
+
# # => 47
|
57
|
+
def self.list(client)
|
58
|
+
response = client.connection.get('ticket_forms')
|
59
|
+
handle_request_error(0, 'Zendesk', response.status) unless response.status == 200
|
60
|
+
Oj.load(response.body)['ticket_forms'].map { |f| TicketForms.new(f) }
|
61
|
+
end
|
62
|
+
|
63
|
+
##
|
64
|
+
# Locates a ticket form within Zendesk. This will not exit on error (except Authentication errors)
|
65
|
+
#
|
66
|
+
# @author Jason Colyer
|
67
|
+
# @since 1.0.0
|
68
|
+
# @param client [Object] An instance of {Readiness::Zendesk::Client}
|
69
|
+
# @param fid [Integer] The ticket form ID to find
|
70
|
+
# @return [Hash]
|
71
|
+
# @see https://developer.zendesk.com/api-reference/ticketing/tickets/ticket_forms/#show-ticket-form Zendesk API > Ticket Forms > Show Ticket Form
|
72
|
+
# @example
|
73
|
+
# require 'support_readiness'
|
74
|
+
# config = Readiness::Zendesk::Configuration.new
|
75
|
+
# config.username = 'alice@example.com'
|
76
|
+
# config.token = 'test123abc'
|
77
|
+
# config.url = 'https://example.zendesk.com/api/v2'
|
78
|
+
# client = Readiness::Zendesk::Client.new(config)
|
79
|
+
# form = Readiness::Zendesk::TicketForms.find(client, 47)
|
80
|
+
# pp form.name
|
81
|
+
# # => "Snowboard Problem"
|
82
|
+
def self.find(client, fid)
|
83
|
+
response = client.connection.get("ticket_forms/#{fid}")
|
84
|
+
handle_request_error(0, 'Zendesk', response.status, { action: 'get', id: oid }) unless response.status == 200
|
85
|
+
return TicketForms.new(Oj.load(response.body)['ticket_form']) if response.status == 200
|
86
|
+
|
87
|
+
Oj.load(response.body)
|
88
|
+
end
|
89
|
+
|
90
|
+
##
|
91
|
+
# Locates aa ticket form within Zendesk. This will exit on error
|
92
|
+
#
|
93
|
+
# @author Jason Colyer
|
94
|
+
# @since 1.0.0
|
95
|
+
# @param client [Object] An instance of {Readiness::Zendesk::Client}
|
96
|
+
# @param fid [Integer] The ticket form ID to find
|
97
|
+
# @return [Hash]
|
98
|
+
# @see https://developer.zendesk.com/api-reference/ticketing/tickets/ticket_forms/#show-ticket-form Zendesk API > Ticket Forms > Show Ticket Form
|
99
|
+
# @example
|
100
|
+
# require 'support_readiness'
|
101
|
+
# config = Readiness::Zendesk::Configuration.new
|
102
|
+
# config.username = 'alice@example.com'
|
103
|
+
# config.token = 'test123abc'
|
104
|
+
# config.url = 'https://example.zendesk.com/api/v2'
|
105
|
+
# client = Readiness::Zendesk::Client.new(config)
|
106
|
+
# form = Readiness::Zendesk::TicketForms.find!(client, 47)
|
107
|
+
# pp form.name
|
108
|
+
# # => "Snowboard Problem"
|
109
|
+
def self.find!(client, fid)
|
110
|
+
response = client.connection.get("ticket_forms/#{fid}")
|
111
|
+
handle_request_error(1, 'Zendesk', response.status, { action: 'Find ticket form', id: fid }) unless response.status == 200
|
112
|
+
TicketForms.new(Oj.load(response.body)['ticket_form'])
|
113
|
+
end
|
114
|
+
|
115
|
+
##
|
116
|
+
# Locates up to 100 ticket forms within Zendesk.
|
117
|
+
#
|
118
|
+
# @author Jason Colyer
|
119
|
+
# @since 1.0.0
|
120
|
+
# @param client [Object] An instance of {Readiness::Zendesk::Client}
|
121
|
+
# @param fids [Array] The tikcet form IDs to find
|
122
|
+
# @return [Array]
|
123
|
+
# @see https://developer.zendesk.com/api-reference/ticketing/tickets/ticket_forms/#show-many-ticket-forms Zendesk API > Ticket Forms > Show Many Ticket Forms
|
124
|
+
# @example
|
125
|
+
# require 'support_readiness'
|
126
|
+
# config = Readiness::Zendesk::Configuration.new
|
127
|
+
# config.username = 'alice@example.com'
|
128
|
+
# config.token = 'test123abc'
|
129
|
+
# config.url = 'https://example.zendesk.com/api/v2'
|
130
|
+
# client = Readiness::Zendesk::Client.new(config)
|
131
|
+
# forms = Readiness::Zendesk::TicketForms.find!(client, [47, 50, 52])
|
132
|
+
# pp forms.first.name
|
133
|
+
# # => "Snowboard Problem"
|
134
|
+
def self.find_many(client, fids)
|
135
|
+
response = client.connection.get("ticket_forms/show_many?ids=#{fids.join(',')}")
|
136
|
+
handle_request_error(0, 'Zendesk', response.status, { action: 'get', id: fids }) unless response.status == 200
|
137
|
+
Oj.load(response.body)['ticket_forms'].map { |f| TicketForms.new(f) }
|
138
|
+
end
|
139
|
+
|
140
|
+
##
|
141
|
+
# Creates a ticket form. Will exit if unsuccessful
|
142
|
+
#
|
143
|
+
# @author Jason Colyer
|
144
|
+
# @since 1.0.0
|
145
|
+
# @param client [Object] An instance of {Readiness::Zendesk::Client}
|
146
|
+
# @param form [Object] An instance of {Readiness::Zendesk::TicketForms}
|
147
|
+
# @return [Object] An instance of {Readiness::Zendesk::TicketForms}
|
148
|
+
# @see https://developer.zendesk.com/api-reference/ticketing/tickets/ticket_forms/#create-ticket-form Zendesk API > Ticket Forms > Create Ticket Form
|
149
|
+
# @example
|
150
|
+
# require 'support_readiness'
|
151
|
+
# config = Readiness::Zendesk::Configuration.new
|
152
|
+
# config.username = 'alice@example.com'
|
153
|
+
# config.token = 'test123abc'
|
154
|
+
# config.url = 'https://example.zendesk.com/api/v2'
|
155
|
+
# client = Readiness::Zendesk::Client.new(config)
|
156
|
+
# form = Readiness::Zendesk::TicketForms.new
|
157
|
+
# form.name = 'Snowboard Problem'
|
158
|
+
# form.end_user_visible = true
|
159
|
+
# form.display_name = 'Snowboard Damage'
|
160
|
+
# form.position = 9999
|
161
|
+
# form.active = true
|
162
|
+
# form.in_all_brands = false
|
163
|
+
# form.restricted_brand_ids = [1, 4, 6, 12, 34]
|
164
|
+
# form.ticket_field_ids = [2, 3, 4, 32, 33]
|
165
|
+
# form.agent_conditions = []
|
166
|
+
# form.end_user_conditions = []
|
167
|
+
# form.default = false
|
168
|
+
# create = Readiness::Zendesk::TicketForms.create!(client, form)
|
169
|
+
# pp create.id
|
170
|
+
# # => 47
|
171
|
+
def self.create!(client, form)
|
172
|
+
response = client.connection.post 'ticket_forms', to_clean_json_with_key(form, 'ticket_form')
|
173
|
+
handle_request_error(1, 'Zendesk', response.status, { action: 'Create ticket form', message: Oj.load(response.body)}) unless response.status == 201
|
174
|
+
TicketForms.new(Oj.load(response.body)['ticket_form'])
|
175
|
+
end
|
176
|
+
|
177
|
+
##
|
178
|
+
# Updates a ticket form. Will exit if unsuccessful
|
179
|
+
#
|
180
|
+
# @author Jason Colyer
|
181
|
+
# @since 1.0.0
|
182
|
+
# @param client [Object] An instance of {Readiness::Zendesk::Client}
|
183
|
+
# @param form [Object] An instance of {Readiness::Zendesk::TicketForms}
|
184
|
+
# @return [Object] An instance of {Readiness::Zendesk::TicketForms}
|
185
|
+
# @see https://developer.zendesk.com/api-reference/ticketing/tickets/ticket_forms/#update-ticket-form Zendesk API > Ticket Forms > Update Ticket Form
|
186
|
+
# @example
|
187
|
+
# require 'support_readiness'
|
188
|
+
# config = Readiness::Zendesk::Configuration.new
|
189
|
+
# config.username = 'alice@example.com'
|
190
|
+
# config.token = 'test123abc'
|
191
|
+
# config.url = 'https://example.zendesk.com/api/v2'
|
192
|
+
# client = Readiness::Zendesk::Client.new(config)
|
193
|
+
# form = Readiness::Zendesk::TicketForms.find!(client, 47)
|
194
|
+
# form.name = 'Snowboard Fixed'
|
195
|
+
# form.display_name = 'Snowboard has been fixed'
|
196
|
+
# form.position = 9999
|
197
|
+
# form.active = true
|
198
|
+
# form.in_all_brands = true
|
199
|
+
# form.restricted_brand_ids = []
|
200
|
+
# form.agent_conditions = []
|
201
|
+
# form.end_user_conditions = []
|
202
|
+
# update = Readiness::Zendesk::TicketForms.update!(client, form)
|
203
|
+
# pp update.name
|
204
|
+
# # => "Snowboard Fixed"
|
205
|
+
def self.update!(client, form)
|
206
|
+
response = client.connection.put "ticket_forms/#{form.id}", to_clean_json_with_key(form, 'ticket_form')
|
207
|
+
handle_request_error(1, 'Zendesk', response.status, { action: 'Update ticket form', message: Oj.load(response.body)}) unless response.status == 200
|
208
|
+
TicketForms.new(Oj.load(response.body)['ticket_form'])
|
209
|
+
end
|
210
|
+
|
211
|
+
##
|
212
|
+
# Deletes a ticket form. Will exit if unsuccessful
|
213
|
+
#
|
214
|
+
# @author Jason Colyer
|
215
|
+
# @since 1.0.0
|
216
|
+
# @param client [Object] An instance of {Readiness::Zendesk::Client}
|
217
|
+
# @param form [Object] An instance of {Readiness::Zendesk::TicketForms}
|
218
|
+
# @return [Object] An instance of {Readiness::Zendesk::TicketForms}
|
219
|
+
# @see https://developer.zendesk.com/api-reference/ticketing/tickets/ticket_forms/#update-ticket-form Zendesk API > Ticket Forms > Delete Ticket Form
|
220
|
+
# @example
|
221
|
+
# require 'support_readiness'
|
222
|
+
# config = Readiness::Zendesk::Configuration.new
|
223
|
+
# config.username = 'alice@example.com'
|
224
|
+
# config.token = 'test123abc'
|
225
|
+
# config.url = 'https://example.zendesk.com/api/v2'
|
226
|
+
# client = Readiness::Zendesk::Client.new(config)
|
227
|
+
# form = Readiness::Zendesk::TicketForms.find!(client, 47)
|
228
|
+
# delete = Readiness::Zendesk::TicketForms.delete!(client, form)
|
229
|
+
# pp delete
|
230
|
+
# # => true
|
231
|
+
def self.delete!(client, form)
|
232
|
+
response = client.connection.delete "ticket_forms/#{form.id}"
|
233
|
+
handle_request_error(1, 'Zendesk', response.status, { action: 'Delete a ticket form', id: form.id, message: Oj.load(response.body)}) unless response.status == 204
|
234
|
+
true
|
235
|
+
end
|
236
|
+
|
237
|
+
##
|
238
|
+
# Clones a ticket form. Will exit if unsuccessful
|
239
|
+
#
|
240
|
+
# @author Jason Colyer
|
241
|
+
# @since 1.0.0
|
242
|
+
# @param client [Object] An instance of {Readiness::Zendesk::Client}
|
243
|
+
# @param form [Object] An instance of {Readiness::Zendesk::TicketForms}
|
244
|
+
# @return [Object] An instance of {Readiness::Zendesk::TicketForms}
|
245
|
+
# @see https://developer.zendesk.com/api-reference/ticketing/tickets/ticket_forms/#clone-an-already-existing-ticket-form Zendesk API > Ticket Forms > Clone an Already Existing Ticket Form
|
246
|
+
# @example
|
247
|
+
# require 'support_readiness'
|
248
|
+
# config = Readiness::Zendesk::Configuration.new
|
249
|
+
# config.username = 'alice@example.com'
|
250
|
+
# config.token = 'test123abc'
|
251
|
+
# config.url = 'https://example.zendesk.com/api/v2'
|
252
|
+
# client = Readiness::Zendesk::Client.new(config)
|
253
|
+
# form = Readiness::Zendesk::TicketForms.find!(client, 47)
|
254
|
+
# clone = Readiness::Zendesk::TicketForms.clone!(client, form)
|
255
|
+
# pp clone.id
|
256
|
+
# # => 48
|
257
|
+
def self.clone!(client, form)
|
258
|
+
response = client.connection.post "ticket_forms/#{form.id}/clone", { prepend_clone_title: true }.to_json
|
259
|
+
handle_request_error(1, 'Zendesk', response.status, { action: 'Clone a ticket form', id: form.id, message: Oj.load(response.body)}) unless response.status == 200
|
260
|
+
TicketForms.new(Oj.load(response.body)['ticket_form'])
|
261
|
+
end
|
262
|
+
|
263
|
+
##
|
264
|
+
# Reorders the ticket forms. Will exit if unsuccessful
|
265
|
+
#
|
266
|
+
# @author Jason Colyer
|
267
|
+
# @since 1.0.0
|
268
|
+
# @param client [Object] An instance of {Readiness::Zendesk::Client}
|
269
|
+
# @param fids [Array] The ticket form IDs to reorder (order in Array is important)
|
270
|
+
# @return [Array]
|
271
|
+
# @see https://developer.zendesk.com/api-reference/ticketing/tickets/ticket_forms/#reorder-ticket-forms Zendesk API > Ticket Forms > Reorder Ticket Forms
|
272
|
+
# @example
|
273
|
+
# require 'support_readiness'
|
274
|
+
# config = Readiness::Zendesk::Configuration.new
|
275
|
+
# config.username = 'alice@example.com'
|
276
|
+
# config.token = 'test123abc'
|
277
|
+
# config.url = 'https://example.zendesk.com/api/v2'
|
278
|
+
# client = Readiness::Zendesk::Client.new(config)
|
279
|
+
# form = Readiness::Zendesk::TicketForms.find!(client, 47)
|
280
|
+
# reorder = Readiness::Zendesk::TicketForms.reorder!(client, [2, 23, 46, 50])
|
281
|
+
# pp reorder.count
|
282
|
+
# # => 4
|
283
|
+
def self.reorder(client, fids)
|
284
|
+
response = client.connection.put 'ticket_forms/reorder', { ticket_form_ids: fids }.to_json
|
285
|
+
handle_request_error(1, 'Zendesk', response.status, { action: 'Clone a ticket form', id: form.id, message: Oj.load(response.body)}) unless response.status == 200
|
286
|
+
Oj.load(response.body)['ticket_form'].map { |f| TicketForms.new(f) }
|
287
|
+
end
|
288
|
+
end
|
289
|
+
end
|
290
|
+
end
|