zendesk_support_api 0.4.0 → 0.5.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 +4 -4
- data/.yardoc/checksums +5 -3
- data/.yardoc/object_types +0 -0
- data/.yardoc/objects/root.dat +0 -0
- data/README.md +3 -3
- data/lib/zendesk_support_api/client.rb +2 -0
- data/lib/zendesk_support_api/deleted_tickets.rb +130 -0
- data/lib/zendesk_support_api/organizations.rb +1 -1
- data/lib/zendesk_support_api/tickets.rb +335 -0
- data/lib/zendesk_support_api/version.rb +1 -1
- metadata +3 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bcf45ecf6e738bc42b2b2843be87308fd0ac25eec6bdc6f7f05f63dbd2e382a7
|
4
|
+
data.tar.gz: 7649928f9e3b6701d14aa93252dab9c641b71935d7461142f5e1d5130612971d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3b6057b660110d703092126a67180c69d989c67078cfc50b0edf6b2543f2efc26b209687fbd162257bc7f9cdd89e2b3174f92d3dadeae1cfc9146704f063ff9d
|
7
|
+
data.tar.gz: 987270880751bad257469be25b4ddf975f622a4a438533d04b89a66bbd093f7db54b291be4b22df02855d39be05b3b47b614622fd11d9ad7c2e23d0c39004d68
|
data/.yardoc/checksums
CHANGED
@@ -1,8 +1,10 @@
|
|
1
1
|
lib/zendesk_support_api.rb fee89f019b11ec8feb844644e000cec6cad6a695
|
2
2
|
lib/zendesk_support_api/jobs.rb 15e3db660bb16f1a2bc580ce17a9368f81fc9d0e
|
3
3
|
lib/zendesk_support_api/users.rb eb4f8d81f6f9ccf779679f7bfe354c0cc6be8d0c
|
4
|
-
lib/zendesk_support_api/client.rb
|
4
|
+
lib/zendesk_support_api/client.rb a9aedf0641e4160b66414e76854e40dd245df1a7
|
5
5
|
lib/zendesk_support_api/groups.rb bcc2a0b1af5bf3552c7838d80f339efbf8636e53
|
6
6
|
lib/zendesk_support_api/search.rb e741717c61809c578afbcd44f9b8e8f18a8c0363
|
7
|
-
lib/zendesk_support_api/
|
8
|
-
lib/zendesk_support_api/
|
7
|
+
lib/zendesk_support_api/tickets.rb 938c32872eeb5459d8d8dae5bb5a9361cb5968d8
|
8
|
+
lib/zendesk_support_api/version.rb 4a0944e207874b5ca81f14ae285d645d6d562928
|
9
|
+
lib/zendesk_support_api/organizations.rb 9e677997416275c0bbccd5aafc1e1f0b7f0bb4c3
|
10
|
+
lib/zendesk_support_api/deleted_tickets.rb 1c58c500e8adf19a910cc02bc7e18650e9751080
|
data/.yardoc/object_types
CHANGED
Binary file
|
data/.yardoc/objects/root.dat
CHANGED
Binary file
|
data/README.md
CHANGED
@@ -47,13 +47,13 @@ Soon to come
|
|
47
47
|
* v0.2.0 - Added Search functions, Fixed some yard syntax/formatting, Changed version number
|
48
48
|
* v0.3.0 - Changed version number, Added Group functions, Added User.groups function
|
49
49
|
* v0.4.0 - Added Organization functions, Changed version number
|
50
|
+
* v0.5.0 - Added DeletedTickets functions, Added Tickets functions, Yard synx fixes, updated version number
|
50
51
|
|
51
52
|
## Upcoming changes
|
52
53
|
|
53
|
-
* v0.
|
54
|
-
* v0.6.0 - Tickets
|
54
|
+
* v0.6.0 - Satisfaction
|
55
55
|
* v0.7.0 - Attachments?
|
56
|
-
* v0.8.0 -
|
56
|
+
* v0.8.0 - Requests
|
57
57
|
* v0.9.0 - Sessions
|
58
58
|
* v0.10.0 - Tags
|
59
59
|
* v0.11.0 - Views
|
@@ -3,10 +3,12 @@
|
|
3
3
|
module ZendeskSupportAPI
|
4
4
|
# Client class - https://developer.zendesk.com/rest_api/docs/support/introduction#security-and-authentication
|
5
5
|
class Client
|
6
|
+
require 'zendesk_support_api/deleted_tickets'
|
6
7
|
require 'zendesk_support_api/groups'
|
7
8
|
require 'zendesk_support_api/jobs'
|
8
9
|
require 'zendesk_support_api/organizations'
|
9
10
|
require 'zendesk_support_api/search'
|
11
|
+
require 'zendesk_support_api/tickets'
|
10
12
|
require 'zendesk_support_api/users'
|
11
13
|
|
12
14
|
# Create a new instance of Client
|
@@ -0,0 +1,130 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module ZendeskSupportAPI
|
4
|
+
# Tickets class - https://developer.zendesk.com/rest_api/docs/support/tickets
|
5
|
+
class DeletedTickets
|
6
|
+
# Determines if given string is a valid order function
|
7
|
+
#
|
8
|
+
# @param order [String] The order string to use
|
9
|
+
# @return [Boolean]
|
10
|
+
#
|
11
|
+
# @example
|
12
|
+
# ZendeskSupportAPI::DeletedTickets.order_valid? 'desc' #=> true
|
13
|
+
# ZendeskSupportAPI::DeletedTickets.order_valid? 'random' #=> false
|
14
|
+
|
15
|
+
def self.order_valid?(order)
|
16
|
+
%w[desc asc].include? order
|
17
|
+
end
|
18
|
+
|
19
|
+
# Prints out the sort_by and order_by string for the url
|
20
|
+
#
|
21
|
+
# @param sort [String] The sort string to use
|
22
|
+
# @param order [String] The order string to use
|
23
|
+
# @return [String]
|
24
|
+
#
|
25
|
+
# @example
|
26
|
+
# ZendeskSupportAPI::DeletedTickets.sort_order('id', 'desc')
|
27
|
+
# #=> '&sort_by=id&order_by=desc'
|
28
|
+
|
29
|
+
def self.sort_order(sort, order)
|
30
|
+
"&sort_by=#{sort}&order_by=#{order}"
|
31
|
+
end
|
32
|
+
|
33
|
+
# Returns the string of the next_page for pagination
|
34
|
+
#
|
35
|
+
# @param res [Hash] The Hash containing the response from a request
|
36
|
+
# @return [nil|String]
|
37
|
+
|
38
|
+
def self.next_page(res)
|
39
|
+
(res['next_page'].nil? ? nil : res['next_page'].split('/').last)
|
40
|
+
end
|
41
|
+
|
42
|
+
# Prints out organization_id
|
43
|
+
#
|
44
|
+
# @return [String]
|
45
|
+
#
|
46
|
+
# @example
|
47
|
+
# ZendeskSupportAPI::DeletedTickets.org_id #=> 'organization_id'
|
48
|
+
|
49
|
+
def self.org_id
|
50
|
+
'organization_id'
|
51
|
+
end
|
52
|
+
|
53
|
+
# Selects an object from an array based on a user ID
|
54
|
+
#
|
55
|
+
# @param array [Array] An array of to look in
|
56
|
+
# @param id [Integer] The ID to use
|
57
|
+
# @return [Hash]
|
58
|
+
|
59
|
+
def self.select_obj(array, id)
|
60
|
+
array.select { |a| a['id'] == id }.first
|
61
|
+
end
|
62
|
+
|
63
|
+
# Determines if sort value is valid for delete requests
|
64
|
+
#
|
65
|
+
# @param sort [String] The string to check
|
66
|
+
# @return [Boolean]
|
67
|
+
|
68
|
+
def self.deleted_sort_valid?(sort)
|
69
|
+
%w[id subject deleted_at].includes?(sort)
|
70
|
+
end
|
71
|
+
|
72
|
+
# Lists deleted tickets (first 100)
|
73
|
+
#
|
74
|
+
# @param client [ZendeskSupportAPI::Client] The client instance to use
|
75
|
+
# @param sort [String] The sort string to use
|
76
|
+
# @param order [String] The order string to use
|
77
|
+
# @return [Array]
|
78
|
+
|
79
|
+
def self.list_deleted(client, sort = 'id', order = 'asc')
|
80
|
+
return "Invalid sort '#{sort}'" unless delete_sort_valid?(sort)
|
81
|
+
return "Invalid order '#{order}'" unless order_valid?(order)
|
82
|
+
|
83
|
+
url = "deleted_tickets.json?#{sort_order(sort, order)}"
|
84
|
+
client.request(:get, url)['deleted_tickets']
|
85
|
+
end
|
86
|
+
|
87
|
+
# Lists all deleted tickets
|
88
|
+
#
|
89
|
+
# @param client [ZendeskSupportAPI::Client] The client instance to use
|
90
|
+
# @return [Array]
|
91
|
+
|
92
|
+
def self.list_all_deleted(client)
|
93
|
+
tickets = []
|
94
|
+
page = 'deleted_tickets.json?page=1'
|
95
|
+
until page.nil?
|
96
|
+
res = client.request(:get, page)
|
97
|
+
client.spinner("tickets (total: #{res['count']})", page.split('=').last)
|
98
|
+
tickets += res['tickets']
|
99
|
+
page = next_page(res)
|
100
|
+
end
|
101
|
+
puts ' ...done'
|
102
|
+
tickets
|
103
|
+
end
|
104
|
+
|
105
|
+
# Restores a deleted ticket
|
106
|
+
#
|
107
|
+
# @param client [ZendeskSupportAPI::Client] The client instance to use
|
108
|
+
# @param tid [Integer] The ticket ID to use
|
109
|
+
# @return [nil|String]
|
110
|
+
|
111
|
+
def self.restore(client, tid)
|
112
|
+
res = client.request(:put, "deleted_tickets/#{tid}/restore.json")
|
113
|
+
return "Restore of #{tid} failed: #{res['error']}" if res['error']
|
114
|
+
|
115
|
+
res
|
116
|
+
end
|
117
|
+
|
118
|
+
# Restores several deleted tickets
|
119
|
+
#
|
120
|
+
# @param client [ZendeskSupportAPI::Client] The client instance to use
|
121
|
+
# @param tids [Array] Array of ticket IDs to use
|
122
|
+
# @return [ZendeskSupportAPI::Client.handle_job]
|
123
|
+
|
124
|
+
def self.restore_many(client, tids)
|
125
|
+
url = "deleted_tickets/restore_many?ids=#{tids.join(',')}"
|
126
|
+
res = client.request(:put, url)
|
127
|
+
client.handle_job(res)
|
128
|
+
end
|
129
|
+
end
|
130
|
+
end
|
@@ -113,7 +113,7 @@ module ZendeskSupportAPI
|
|
113
113
|
# Creates many organizations
|
114
114
|
#
|
115
115
|
# @param client [ZendeskSupportAPI::Client] The client instance to use
|
116
|
-
# @param
|
116
|
+
# @param orgs [Array] The organizations to create
|
117
117
|
# @return [ZendeskSupportAPI::Client.handle_job]
|
118
118
|
|
119
119
|
def self.create_many(client, orgs)
|
@@ -0,0 +1,335 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module ZendeskSupportAPI
|
4
|
+
# Tickets class - https://developer.zendesk.com/rest_api/docs/support/tickets
|
5
|
+
class Tickets
|
6
|
+
# Determines if given string is a valid sort function
|
7
|
+
#
|
8
|
+
# @param sort [String] The sort string to use
|
9
|
+
# @return [Boolean]
|
10
|
+
#
|
11
|
+
# @example
|
12
|
+
# ZendeskSupportAPI::Tickets.sort_valid? 'assignee' #=> true
|
13
|
+
# ZendeskSupportAPI::Tickets.sort_valid? 'blah' #=> false
|
14
|
+
|
15
|
+
def self.sort_valid?(sort)
|
16
|
+
valid = %w[assignee assignee_name created_at group id locale requester
|
17
|
+
requester.name status subject updated_at]
|
18
|
+
valid.include?(sort)
|
19
|
+
end
|
20
|
+
|
21
|
+
# Prints out the include string
|
22
|
+
#
|
23
|
+
# @return [String]
|
24
|
+
#
|
25
|
+
# @example
|
26
|
+
# ZendeskSupportAPI::Tickets.includes
|
27
|
+
# #=> '?include=users,organizations,ticket_forms,comment_count'
|
28
|
+
|
29
|
+
def self.includes
|
30
|
+
'?include=users,organizations,ticket_forms,comment_count'
|
31
|
+
end
|
32
|
+
|
33
|
+
# Prints out the sort_by and order_by string for the url
|
34
|
+
#
|
35
|
+
# @param sort [String] The sort string to use
|
36
|
+
# @param order [String] The order string to use
|
37
|
+
# @return [String]
|
38
|
+
#
|
39
|
+
# @example
|
40
|
+
# ZendeskSupportAPI::Tickets.sort_order('id', 'desc')
|
41
|
+
# #=> '&sort_by=id&order_by=desc'
|
42
|
+
|
43
|
+
def self.sort_order(sort, order)
|
44
|
+
"&sort_by=#{sort}&order_by=#{order}"
|
45
|
+
end
|
46
|
+
|
47
|
+
# Maps users into user_objects
|
48
|
+
#
|
49
|
+
# @param tickets [Array] The Array of tickets to map
|
50
|
+
# @param res [Hash] The has containing the response from a request
|
51
|
+
# @return [Hash]
|
52
|
+
|
53
|
+
def self.ticket_map(tickets, res)
|
54
|
+
tickets.map { |t| ticket_object(t, res) }
|
55
|
+
end
|
56
|
+
|
57
|
+
# Returns the string of the next_page for pagination
|
58
|
+
#
|
59
|
+
# @param res [Hash] The Hash containing the response from a request
|
60
|
+
# @return [nil|String]
|
61
|
+
|
62
|
+
def self.next_page(res)
|
63
|
+
(res['next_page'].nil? ? nil : res['next_page'].split('/').last)
|
64
|
+
end
|
65
|
+
|
66
|
+
# Prints out organization_id
|
67
|
+
#
|
68
|
+
# @return [String]
|
69
|
+
#
|
70
|
+
# @example
|
71
|
+
# ZendeskSupportAPI::Tickets.org_id #=> 'organization_id'
|
72
|
+
|
73
|
+
def self.org_id
|
74
|
+
'organization_id'
|
75
|
+
end
|
76
|
+
|
77
|
+
# Creates a ticket object
|
78
|
+
#
|
79
|
+
# @param ticket [Hash] The ticket Hash to use
|
80
|
+
# @param res [Array] The response to use for mapping
|
81
|
+
# @return [Hash]
|
82
|
+
|
83
|
+
def self.ticket_object(ticket, res)
|
84
|
+
ticket.merge(
|
85
|
+
organization: select_obj(res['organizations'], ticket[org_id]),
|
86
|
+
form: select_obj(res['ticket_forms'], ticket['form_id']),
|
87
|
+
requester: select_obj(res['users'], ticket['requester_id']),
|
88
|
+
assignee: select_obj(res['users'], ticket['assignee_id'])
|
89
|
+
)
|
90
|
+
end
|
91
|
+
|
92
|
+
# Selects an object from an array based on a user ID
|
93
|
+
#
|
94
|
+
# @param array [Array] An array of to look in
|
95
|
+
# @param id [Integer] The ID to use
|
96
|
+
# @return [Hash]
|
97
|
+
|
98
|
+
def self.select_obj(array, id)
|
99
|
+
array.select { |a| a['id'] == id }.first
|
100
|
+
end
|
101
|
+
|
102
|
+
# List out tickets (first 100)
|
103
|
+
#
|
104
|
+
# @param client [ZendeskSupportAPI::Client] The client instance to use
|
105
|
+
# @param sort [String] The sort method to use
|
106
|
+
# @param order [String] The order method to use
|
107
|
+
# @return [Array]
|
108
|
+
#
|
109
|
+
# @example
|
110
|
+
# ZendeskSupportAPI::Tickets.list(client)
|
111
|
+
# #=> [
|
112
|
+
# #=> {
|
113
|
+
# #=> "id": 35436,
|
114
|
+
# #=> "subject": "Help I need somebody!",
|
115
|
+
# #=> ...
|
116
|
+
# #=> },
|
117
|
+
# #=> {
|
118
|
+
# #=> "id": 20057623,
|
119
|
+
# #=> "subject": "Not just anybody!",
|
120
|
+
# #=> ...
|
121
|
+
# #=> },
|
122
|
+
# #=> ...
|
123
|
+
# #=> ]
|
124
|
+
|
125
|
+
def self.list(client, sort = 'id', order = 'asc')
|
126
|
+
return "Invalid sort '#{sort}'" unless sort_valid?(sort)
|
127
|
+
return "Invalid order '#{order}'" unless %w[asc desc].include?(order)
|
128
|
+
|
129
|
+
url = "tickets.json#{includes}#{sort_order(sort, order)}"
|
130
|
+
res = client.request(:get, url)
|
131
|
+
res['tickets'].map { |t| ticket_object(t, res) }
|
132
|
+
end
|
133
|
+
|
134
|
+
# Lists out all tickets (paginates over every page)
|
135
|
+
#
|
136
|
+
# @param client [ZendeskSupportAPI::Client] The client instance to use
|
137
|
+
# @return [Array]
|
138
|
+
#
|
139
|
+
# @example
|
140
|
+
# ZendeskSupportAPI::Tickets.all(client)
|
141
|
+
# #=> Grabbing tickets (total: 215336)... / ...done
|
142
|
+
# #=> [{ticket1},{ticket2}...{ticket215336}]
|
143
|
+
|
144
|
+
def self.all(client)
|
145
|
+
tickets = []
|
146
|
+
page = "tickets.json#{includes}&page=1"
|
147
|
+
until page.nil?
|
148
|
+
res = client.request(:get, page)
|
149
|
+
client.spinner("tickets (total: #{res['count']})", page.split('=').last)
|
150
|
+
tickets += ticket_map(res['tickets'], res)
|
151
|
+
page = next_page(res)
|
152
|
+
end
|
153
|
+
puts ' ...done'
|
154
|
+
tickets
|
155
|
+
end
|
156
|
+
|
157
|
+
# Shows details about a specific ticket
|
158
|
+
#
|
159
|
+
# @param client [ZendeskSupportAPI::Client] The client instance to use
|
160
|
+
# @param tid [Integer] The Ticket ID to use
|
161
|
+
# @return [Hash]
|
162
|
+
#
|
163
|
+
# @example
|
164
|
+
# ZendeskSupportAPI::Tickets.show(client, 35436)
|
165
|
+
# #=> {
|
166
|
+
# #=> "id": 35436,
|
167
|
+
# #=> "subject": "My printer is on fire!",
|
168
|
+
# #=> ...
|
169
|
+
# #=> }
|
170
|
+
|
171
|
+
def self.show(client, tid)
|
172
|
+
url = "tickets/#{tid}.json#{includes}"
|
173
|
+
res = client.request(:get, url)
|
174
|
+
res['ticket'].map { |t| ticket_object(t, res) }
|
175
|
+
end
|
176
|
+
|
177
|
+
# Show details about many tickets
|
178
|
+
#
|
179
|
+
# @param client [ZendeskSupportAPI::Client] The client instance to use
|
180
|
+
# @param tids [Array] An array of ticket IDs
|
181
|
+
# @return [Array]
|
182
|
+
|
183
|
+
def self.show_many(client, tids)
|
184
|
+
url = "tickets/show_many.json#{includes}&ids=#{tids.join(',')}"
|
185
|
+
res = client.request(:get, url)
|
186
|
+
res['tickets'].map { |t| ticket_object(t, res) }
|
187
|
+
end
|
188
|
+
|
189
|
+
# Create a ticket
|
190
|
+
#
|
191
|
+
# @param client [ZendeskSupportAPI::Client] The client instance to use
|
192
|
+
# @param ticket [Hash] The ticket hash to use for creation
|
193
|
+
# @return [Hash|String]
|
194
|
+
#
|
195
|
+
# @example
|
196
|
+
# ticket = {
|
197
|
+
# subject: "This is a test ticket",
|
198
|
+
# followers: [
|
199
|
+
# { user_email: 'albert@example.com', action: 'put' },
|
200
|
+
# { user_id: 123, action: 'put' }
|
201
|
+
# ],
|
202
|
+
# comment: {
|
203
|
+
# body: "This goes into the test ticket body!"
|
204
|
+
# },
|
205
|
+
# tags: ["free_user", "ignore"]
|
206
|
+
# }
|
207
|
+
# ZendeskSupportAPI::Tickets.create(client, ticket)
|
208
|
+
# #=> {
|
209
|
+
# #=> "id": 1,
|
210
|
+
# #=> "subject": "This is a test ticket",
|
211
|
+
# #=> ...
|
212
|
+
# #=> }
|
213
|
+
|
214
|
+
def self.create(client, ticket)
|
215
|
+
res = client.request(:post, 'tickets.json', ticket: ticket)
|
216
|
+
return "Creation failed: #{res['details']}" if res['error']
|
217
|
+
|
218
|
+
res
|
219
|
+
end
|
220
|
+
|
221
|
+
# Creates many tickets
|
222
|
+
#
|
223
|
+
# @param client [ZendeskSupportAPI::Client] The client instance to use
|
224
|
+
# @param tickets [Array] The array of ticket hashes to use for creation
|
225
|
+
# @return [ZendeskSupportAPI::Client.handle_job]
|
226
|
+
|
227
|
+
def self.create_many(client, tickets)
|
228
|
+
res = client.request(:post, 'tickets/create_many.json', tickets: tickets)
|
229
|
+
client.handle_job(res)
|
230
|
+
end
|
231
|
+
|
232
|
+
# Updates a ticket
|
233
|
+
#
|
234
|
+
# @param client [ZendeskSupportAPI::Client] The client instance to use
|
235
|
+
# @param tid [Integer] The ticket ID to update
|
236
|
+
# @param ticket [Hash] The ticket hash to use
|
237
|
+
# @return [Hash|String]
|
238
|
+
|
239
|
+
def self.update(client, tid, ticket)
|
240
|
+
res = client.request(:put, "tickets/#{tid}.json", ticket: ticket)
|
241
|
+
return "Update of #{tid} failed: #{res['error']}" if res['error']
|
242
|
+
|
243
|
+
res
|
244
|
+
end
|
245
|
+
|
246
|
+
# Updates many tickets
|
247
|
+
#
|
248
|
+
# @param client [ZendeskSupportAPI::Client] The client instance to use
|
249
|
+
# @param tickets [Array] The array of ticket hashes to use for updates
|
250
|
+
# @return [ZendeskSupportAPI::Client.handle_job]
|
251
|
+
#
|
252
|
+
# @example
|
253
|
+
# tickets = [
|
254
|
+
# {
|
255
|
+
# id: 123,
|
256
|
+
# tags: ['ultimate', 'urgent']
|
257
|
+
# },
|
258
|
+
# {
|
259
|
+
# id: 124,
|
260
|
+
# followers: [
|
261
|
+
# { user_id: 123, action: 'delete' }
|
262
|
+
# ]
|
263
|
+
# },
|
264
|
+
# {
|
265
|
+
# id: 125,
|
266
|
+
# subject: 'Staging Instance having issues'
|
267
|
+
# }
|
268
|
+
# ]
|
269
|
+
# ZendeskSupportAPI::Tickets.update_many(client, tickets)
|
270
|
+
|
271
|
+
def self.update_many(client, tickets)
|
272
|
+
res = client.request(:put, 'tickets/update_many.json', tickets: tickets)
|
273
|
+
client.handle_job(res)
|
274
|
+
end
|
275
|
+
|
276
|
+
# Mark a ticket as spam and suspend the user
|
277
|
+
#
|
278
|
+
# @param client [ZendeskSupportAPI::Client] The client instance to use
|
279
|
+
# @param tid [Integer] The ticket ID to use
|
280
|
+
# @return [String]
|
281
|
+
|
282
|
+
def self.mark_as_spam(client, tid)
|
283
|
+
res = client.request(:put, "tickets/#{tid}/mark_as_spam.json")
|
284
|
+
return "Unable to mark ticket as spam: #{res['error']}" if res['error']
|
285
|
+
|
286
|
+
"Ticket #{tid} marked as spam"
|
287
|
+
end
|
288
|
+
|
289
|
+
# Mark many tickets as spam and suspend their users
|
290
|
+
#
|
291
|
+
# @param client [ZendeskSupportAPI::Client] The client instance to use
|
292
|
+
# @param tids [Array] The ticket IDs to use
|
293
|
+
# @return [ZendeskSupportAPI::Client.handle_job]
|
294
|
+
|
295
|
+
def self.mark_many_as_spam(client, tids)
|
296
|
+
url = "tickets/mark_many_as_spam.json?ids=#{tids.join(',')}"
|
297
|
+
res = client.request(:put, url)
|
298
|
+
client.handle_job(res)
|
299
|
+
end
|
300
|
+
|
301
|
+
# Merge Tickets into Target Ticket
|
302
|
+
#
|
303
|
+
# @param client [ZendeskSupportAPI::Client] The client instance to use
|
304
|
+
# @param tid [Integer] The Ticket ID to merge into
|
305
|
+
# @param hash [Hash] The Hash to use for the merge (see example)
|
306
|
+
# @return [ZendeskSupportAPI::Client.handle_job]
|
307
|
+
#
|
308
|
+
# @example
|
309
|
+
# merge_hash = {
|
310
|
+
# ids: [112, 113, 114],
|
311
|
+
# source_comment: "Closing in favor of #111",
|
312
|
+
# target_comment: "Merging #112, #113, and #114 into this ticket"
|
313
|
+
# }
|
314
|
+
# ZendeskSupportAPI::Tickets.merge(client, 111, merge_hash)
|
315
|
+
|
316
|
+
def self.merge(client, tid, hash)
|
317
|
+
res = client.request(:post, "tickets/#{tid}/merge.json", hash)
|
318
|
+
client.handle_job(res)
|
319
|
+
end
|
320
|
+
|
321
|
+
# List followers of a ticket
|
322
|
+
#
|
323
|
+
# @param client [ZendeskSupportAPI::Client] The client instance to use
|
324
|
+
# @param tid [Integer] The Ticket ID to use
|
325
|
+
# @return [Array]
|
326
|
+
|
327
|
+
def self.list_followers(client, tid)
|
328
|
+
res = client.request(:get, "tickets/#{tid}/followers")['users']
|
329
|
+
res['users'].each do |user|
|
330
|
+
user['organization'] = select_obj(res['organizations'], user[org_id])
|
331
|
+
end
|
332
|
+
res['users']
|
333
|
+
end
|
334
|
+
end
|
335
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: zendesk_support_api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jason Colyer
|
@@ -53,10 +53,12 @@ files:
|
|
53
53
|
- README.md
|
54
54
|
- lib/zendesk_support_api.rb
|
55
55
|
- lib/zendesk_support_api/client.rb
|
56
|
+
- lib/zendesk_support_api/deleted_tickets.rb
|
56
57
|
- lib/zendesk_support_api/groups.rb
|
57
58
|
- lib/zendesk_support_api/jobs.rb
|
58
59
|
- lib/zendesk_support_api/organizations.rb
|
59
60
|
- lib/zendesk_support_api/search.rb
|
61
|
+
- lib/zendesk_support_api/tickets.rb
|
60
62
|
- lib/zendesk_support_api/users.rb
|
61
63
|
- lib/zendesk_support_api/version.rb
|
62
64
|
- zendesk_support_api.gemspec
|