zendesk_support_api 0.1.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/.gitlab-ci.yml +13 -0
- data/.yardoc/checksums +5 -0
- data/.yardoc/complete +0 -0
- data/.yardoc/object_types +0 -0
- data/.yardoc/objects/root.dat +0 -0
- data/.yardoc/proxy_types +0 -0
- data/README.md +39 -0
- data/lib/zendesk_support_api.rb +10 -0
- data/lib/zendesk_support_api/client.rb +88 -0
- data/lib/zendesk_support_api/jobs.rb +42 -0
- data/lib/zendesk_support_api/users.rb +297 -0
- data/lib/zendesk_support_api/version.rb +7 -0
- data/zendesk_support_api.gemspec +21 -0
- metadata +83 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 35ce4e3e27845ca77e9d5436ce5cc053f0430a74ca9765ec708425ce19549f18
|
4
|
+
data.tar.gz: b0ac9059cbd6aa2ee599d91025d43f89e1b687dbb3f982ab1f32f7ec41f8105a
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 753387da38749fd018d1c70370ff0f48112b5b287b91339f59f042e9db8c2bd9106b4c481a3ae6d450d858ff3b07db2cc307c26953991fb9b25890ecaeb190b8
|
7
|
+
data.tar.gz: fdad54556055bc06e87c0a9bb5bcc62fbbcc73891ba26ad0b9716528cad3cfb754c7e3f6543be14af788137c292a7c7b7513836a033f8cfcab2d5290fd422e2d
|
data/.gitlab-ci.yml
ADDED
data/.yardoc/checksums
ADDED
@@ -0,0 +1,5 @@
|
|
1
|
+
lib/zendesk_support_api.rb fee89f019b11ec8feb844644e000cec6cad6a695
|
2
|
+
lib/zendesk_support_api/jobs.rb 21241d490bcb750ab702dc07e0d98b194ced2632
|
3
|
+
lib/zendesk_support_api/users.rb bac3de0bac0a04cbe8cd1d338357470ddbca3bb6
|
4
|
+
lib/zendesk_support_api/client.rb 157b67cde7b4e66ccdcbcda67d5a34bc9c3b8572
|
5
|
+
lib/zendesk_support_api/version.rb f929e8c6d528a2522ca83288be610db1c9064a10
|
data/.yardoc/complete
ADDED
File without changes
|
Binary file
|
Binary file
|
data/.yardoc/proxy_types
ADDED
Binary file
|
data/README.md
ADDED
@@ -0,0 +1,39 @@
|
|
1
|
+
# ZendeskSupportAPI
|
2
|
+
|
3
|
+
|
4
|
+
## Documentation
|
5
|
+
|
6
|
+
Documentation (generated via yard) can be found [here](https://reyloc.gitlab.io/zendesk_support_api/)
|
7
|
+
|
8
|
+
## Installation
|
9
|
+
|
10
|
+
The gem can be installed either via rubygems or bundler:
|
11
|
+
|
12
|
+
### Rubygems
|
13
|
+
|
14
|
+
```bash
|
15
|
+
gem install zendesk_support_api
|
16
|
+
```
|
17
|
+
|
18
|
+
### Bundler
|
19
|
+
|
20
|
+
```ruby
|
21
|
+
gem "zendesk_support_api"
|
22
|
+
```
|
23
|
+
|
24
|
+
The current requirements for the gem are:
|
25
|
+
|
26
|
+
* 'faraday', '~>1.0.0'
|
27
|
+
* 'oj', '~>3.10.6'
|
28
|
+
|
29
|
+
## Configuration
|
30
|
+
|
31
|
+
Configuration is done through the creation of a `ZendeskSupportAPI::Client`
|
32
|
+
instance:
|
33
|
+
|
34
|
+
```ruby
|
35
|
+
require 'zendesk_support_api'
|
36
|
+
|
37
|
+
client = ZendeskSupportAPI::Client.new('user@example.com', '123abc', 'https://zendesk.com/api/v2')
|
38
|
+
```
|
39
|
+
|
@@ -0,0 +1,10 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'faraday'
|
4
|
+
require 'oj'
|
5
|
+
|
6
|
+
# ZendeskSupportAPI - https://developer.zendesk.com/rest_api/docs/support/introduction
|
7
|
+
module ZendeskSupportAPI
|
8
|
+
require 'zendesk_support_api/client'
|
9
|
+
require 'zendesk_support_api/version'
|
10
|
+
end
|
@@ -0,0 +1,88 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module ZendeskSupportAPI
|
4
|
+
# Client class - https://developer.zendesk.com/rest_api/docs/support/introduction#security-and-authentication
|
5
|
+
class Client
|
6
|
+
require 'zendesk_support_api/jobs'
|
7
|
+
require 'zendesk_support_api/users'
|
8
|
+
|
9
|
+
# Create a new instance of Client
|
10
|
+
#
|
11
|
+
# @param user [String] - The API username to use
|
12
|
+
# @param token [String] - The API token to use
|
13
|
+
# @param url [String] - The API URL to use
|
14
|
+
#
|
15
|
+
# @example
|
16
|
+
# ZendeskSupportAPI::Client.new('user', '123', 'zendesk.com/api')
|
17
|
+
# #=> #<ZendeskSupportAPI::Client:0x00007f88779cb330 @user="user",
|
18
|
+
# #=> @token="123", @url="zendesk.com/api">
|
19
|
+
def initialize(user, token, url)
|
20
|
+
@user = user
|
21
|
+
@token = token
|
22
|
+
@url = url
|
23
|
+
end
|
24
|
+
|
25
|
+
# Make a request to the Zendesk Support API
|
26
|
+
#
|
27
|
+
# @param http_method [Symbol] The HTTP method to utilize
|
28
|
+
# @param endpoint [String] The endpoint to hit
|
29
|
+
# @param params [Hash] Parameters for the request
|
30
|
+
# @return [Hash]
|
31
|
+
#
|
32
|
+
# @example
|
33
|
+
# client = ZendeskSupportAPI::Client.new('user', '123', 'zendesk.com/api')
|
34
|
+
# client.response(:get, 'users.json')
|
35
|
+
# #=> {users:[{user1},{user2}...{user100}]}
|
36
|
+
|
37
|
+
def request(http_method, endpoint, params = {})
|
38
|
+
response = client.public_send(http_method, endpoint, params)
|
39
|
+
Oj.load(response.body)
|
40
|
+
end
|
41
|
+
|
42
|
+
# Outputs a spinner symbol
|
43
|
+
#
|
44
|
+
# @param string [String] The string to output at the beginning
|
45
|
+
# @param num [Integer] The index of the iteration
|
46
|
+
# @return [String]
|
47
|
+
#
|
48
|
+
# @example
|
49
|
+
# ZendeskSupportAPI::Client.spinner('users', 1) #=> Grabbing users... \
|
50
|
+
# ZendeskSupportAPI::Client.spinner('groups', 3) #=> /
|
51
|
+
|
52
|
+
def spinner(string, num)
|
53
|
+
print "Grabbing #{string}... " if num.to_i == 1
|
54
|
+
symbols = ['-', '\\', '|', '/']
|
55
|
+
print symbols[num.to_i % 4]
|
56
|
+
print "\b"
|
57
|
+
end
|
58
|
+
|
59
|
+
# Handles responses that create jobs
|
60
|
+
#
|
61
|
+
# @param job [Hash] - The output from a request that created a job
|
62
|
+
# @return [Hash]
|
63
|
+
|
64
|
+
def handle_job(job)
|
65
|
+
print 'Checking job'
|
66
|
+
while job['job_status']['status'] != 'completed'
|
67
|
+
print '.'
|
68
|
+
job = ZendeskSupportAPI::Jobs.show(self, job['job_status']['id'])
|
69
|
+
end
|
70
|
+
puts 'completed'
|
71
|
+
job['job_status']['results']
|
72
|
+
end
|
73
|
+
|
74
|
+
private
|
75
|
+
|
76
|
+
# Creates a new Faraday instance
|
77
|
+
#
|
78
|
+
# @return [ZendeskSupportAPI::Client]
|
79
|
+
|
80
|
+
def client
|
81
|
+
@client ||= Faraday.new(@url) do |c|
|
82
|
+
c.request :url_encoded
|
83
|
+
c.adapter Faraday.default_adapter
|
84
|
+
c.basic_auth "#{@user}/token", @token
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module ZendeskSupportAPI
|
4
|
+
# Jobs class - https://developer.zendesk.com/rest_api/docs/support/job_statuses
|
5
|
+
class Jobs
|
6
|
+
# Make a request to show the job status
|
7
|
+
#
|
8
|
+
# @param client [ZendeskSupportAPI::Client] The client instance
|
9
|
+
# @param id [String] The id of the job to check
|
10
|
+
# @return [Hash]
|
11
|
+
#
|
12
|
+
# @example
|
13
|
+
# client = ZendeskSupportAPI::Client.new('user', '123', 'zendesk.com/api')
|
14
|
+
# ZendeskSupportAPI::Jobs.show(client, 'abc123')
|
15
|
+
# #=> {
|
16
|
+
# #=> "job_status"=> {
|
17
|
+
# #=> "id"=>"abc123",
|
18
|
+
# #=> "url"=>"abc123.json",
|
19
|
+
# #=> "total"=>2,
|
20
|
+
# #=> "progress"=>2,
|
21
|
+
# #=> "status"=>"completed",
|
22
|
+
# #=> "message"=>"Completed at 2020-04-29 13:26:40 +0000",
|
23
|
+
# #=> "results"=> [
|
24
|
+
# #=> {
|
25
|
+
# #=> "id"=>369731992959,
|
26
|
+
# #=> "status"=>"Updated",
|
27
|
+
# #=> "email"=>"test@example.com"
|
28
|
+
# #=> },
|
29
|
+
# #=> {
|
30
|
+
# #=> "id"=>369728778639,
|
31
|
+
# #=> "status"=>"Updated",
|
32
|
+
# #=> "email"=>"test2@example.com"
|
33
|
+
# #=> }
|
34
|
+
# #=> ]
|
35
|
+
# #=> }
|
36
|
+
# #=> }
|
37
|
+
|
38
|
+
def self.show(client, id)
|
39
|
+
client.request(:get, "job_statuses/#{id}.json")
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,297 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module ZendeskSupportAPI
|
4
|
+
# Users class - https://developer.zendesk.com/rest_api/docs/support/users
|
5
|
+
class Users
|
6
|
+
# Function to return a string that side-loads organizations
|
7
|
+
#
|
8
|
+
# @return [String]
|
9
|
+
|
10
|
+
def self.included
|
11
|
+
'include=organizations'
|
12
|
+
end
|
13
|
+
|
14
|
+
# Maps users into user_objects
|
15
|
+
#
|
16
|
+
# @param users [Array] The Array of users to map
|
17
|
+
# @param orgs [Array] The Array of orgs to use in mapping
|
18
|
+
# @return [Hash]
|
19
|
+
|
20
|
+
def self.user_map(users, orgs)
|
21
|
+
users.map { |u| user_object(u, orgs) }
|
22
|
+
end
|
23
|
+
|
24
|
+
# Returns the string of the next_page for pagination
|
25
|
+
#
|
26
|
+
# @param res [Hash] The Hash containing the response from a request
|
27
|
+
# @return [nil|String]
|
28
|
+
#
|
29
|
+
# @example
|
30
|
+
# ZendeskSupportAPI::Users.next_page(response) #=> nil
|
31
|
+
# ZendeskSupportAPI::Users.next_page(response)
|
32
|
+
# #=> "users.json?include=organizations&page=56
|
33
|
+
|
34
|
+
def self.next_page(res)
|
35
|
+
(res['next_page'].nil? ? nil : res['next_page'].split('/').last)
|
36
|
+
end
|
37
|
+
|
38
|
+
# Lists out users (first 100)
|
39
|
+
#
|
40
|
+
# @param client [ZendeskSupportAPI::Client] The client instance to use
|
41
|
+
# @return [Hash]
|
42
|
+
#
|
43
|
+
# @example
|
44
|
+
# ZendeskSupportAPI::Users.list(client)
|
45
|
+
# #=> {users:[{user1},{user2}...{user100}]}
|
46
|
+
|
47
|
+
def self.list(client)
|
48
|
+
res = client.request(:get, "users.json?#{included}")
|
49
|
+
res['users'].map { |u| user_object(u, res['organizations']) }
|
50
|
+
res['users']
|
51
|
+
end
|
52
|
+
|
53
|
+
# Lists out all users (paginates over every page)
|
54
|
+
#
|
55
|
+
# @param client [ZendeskSupportAPI::Client] The client instance to use
|
56
|
+
# @return [Hash]
|
57
|
+
#
|
58
|
+
# @example
|
59
|
+
# ZendeskSupportAPI::Users.all(client)
|
60
|
+
# #=> Grabbing users... / ...done
|
61
|
+
# #=> {users:[{user1},{user2}...{user201520}]}
|
62
|
+
|
63
|
+
def self.all(client)
|
64
|
+
users = []
|
65
|
+
page = "users.json?#{included}&page=1"
|
66
|
+
until page.nil?
|
67
|
+
res = client.request(:get, page)
|
68
|
+
client.spinner("users (total: #{res['count']})", page.split('=').last)
|
69
|
+
users += user_map(res['users'], res['organizations'])
|
70
|
+
page = next_page(res)
|
71
|
+
end
|
72
|
+
puts ' ...done'
|
73
|
+
users
|
74
|
+
end
|
75
|
+
|
76
|
+
# Grabs a specific user
|
77
|
+
#
|
78
|
+
# @param client [ZendeskSupportAPI::Client] The client instance to use
|
79
|
+
# @param id [Integer] The User's ID to use
|
80
|
+
# @return [Hash]
|
81
|
+
#
|
82
|
+
# @example
|
83
|
+
# ZendeskSupportAPI::Users.show(client, 123)
|
84
|
+
# #=> {
|
85
|
+
# #=> "id"=>123,
|
86
|
+
# #=> "url"=>"https://zendesk.com/api/users/123.json",
|
87
|
+
# #=> "name"=>"Test User",
|
88
|
+
# #=> "email"=>"test@example.com",
|
89
|
+
# #=> "created_at"=>"2020-04-28T13:45:54Z",
|
90
|
+
# #=> "updated_at"=>"2020-04-28T13:45:54Z",
|
91
|
+
# #=> "time_zone"=>"Eastern Time (US & Canada)",
|
92
|
+
# #=> "iana_time_zone"=>"America/New_York",
|
93
|
+
# #=> "phone"=>nil,
|
94
|
+
# #=> "shared_phone_number"=>nil,
|
95
|
+
# #=> "photo"=>nil,
|
96
|
+
# #=> "locale_id"=>1,
|
97
|
+
# #=> "locale"=>"en-US",
|
98
|
+
# #=> "organization_id"=>nil,
|
99
|
+
# #=> "role"=>"end-user",
|
100
|
+
# #=> "verified"=>false,
|
101
|
+
# #=> "external_id"=>nil,
|
102
|
+
# #=> "tags"=>[],
|
103
|
+
# #=> "alias"=>nil,
|
104
|
+
# #=> "active"=>true,
|
105
|
+
# #=> "shared"=>false,
|
106
|
+
# #=> "shared_agent"=>false,
|
107
|
+
# #=> "last_login_at"=>nil,
|
108
|
+
# #=> "two_factor_auth_enabled"=>false,
|
109
|
+
# #=> "signature"=>nil,
|
110
|
+
# #=> "details"=>nil,
|
111
|
+
# #=> "notes"=>nil,
|
112
|
+
# #=> "role_type"=>nil,
|
113
|
+
# #=> "custom_role_id"=>nil,
|
114
|
+
# #=> "moderator"=>false,
|
115
|
+
# #=> "ticket_restriction"=>"requested",
|
116
|
+
# #=> "only_private_comments"=>false,
|
117
|
+
# #=> "restricted_agent"=>true,
|
118
|
+
# #=> "suspended"=>false,
|
119
|
+
# #=> "chat_only"=>false,
|
120
|
+
# #=> "default_group_id"=>nil,
|
121
|
+
# #=> "report_csv"=>false,
|
122
|
+
# #=> "organization"=>[]}
|
123
|
+
|
124
|
+
def self.show(client, id)
|
125
|
+
res = client.request(:get, "users/#{id}.json?#{included}")
|
126
|
+
user_object(res['user'], res['organizations'])
|
127
|
+
end
|
128
|
+
|
129
|
+
# Shows many users
|
130
|
+
#
|
131
|
+
# @param client [ZendeskSupportAPI::Client] The client instance to use
|
132
|
+
# @param ids [Array] An array of User IDs to use
|
133
|
+
# @return [Array]
|
134
|
+
#
|
135
|
+
# @example
|
136
|
+
# ZendeskSupportAPI::Users.show_many(client, [123, 456, 789])
|
137
|
+
# #=> [{user123},{user456},{user789}]
|
138
|
+
|
139
|
+
def self.show_many(client, ids)
|
140
|
+
ids = ids.join(',')
|
141
|
+
res = client.request(:get, "users/show_many.json?#{included}&ids=#{ids}")
|
142
|
+
res['users'].map { |u| user_object(u, res['organizations']) }
|
143
|
+
res['users']
|
144
|
+
end
|
145
|
+
|
146
|
+
# Creates a user hash (for mapping the org into the user Hash)
|
147
|
+
#
|
148
|
+
# @param user [Hash] The user details to use
|
149
|
+
# @param orgs [Array] The Array of orgs to use
|
150
|
+
# @return [Hash]
|
151
|
+
|
152
|
+
def self.user_object(user, orgs)
|
153
|
+
oid = 'organization_id'
|
154
|
+
user['organization'] = orgs.select { |o| o['id'] == user[oid] }
|
155
|
+
user
|
156
|
+
end
|
157
|
+
|
158
|
+
# Creates a user
|
159
|
+
#
|
160
|
+
# @param client [ZendeskSupportAPI::Client] The client instance to use
|
161
|
+
# @param user [Hash] The user to create
|
162
|
+
# @return [Hash|String] Either the user details or the error
|
163
|
+
#
|
164
|
+
# @example
|
165
|
+
# ZendeskSupportAPI::User.create(client, user)
|
166
|
+
# #=> {user}
|
167
|
+
# ZendeskSupportAPI::User.create(client, user)
|
168
|
+
# #=> Creation failed: => "Creation failed: {\"email\"=>[{\"description\"
|
169
|
+
# #=> =>\"Email: test@example.com is already being used by another user\",
|
170
|
+
# #=> \"error\"=>\"DuplicateValue\"}]}"
|
171
|
+
|
172
|
+
def self.create(client, user)
|
173
|
+
res = client.request(:post, 'users.json', user: user)
|
174
|
+
return "Creation failed: #{res['details']}" if res['error']
|
175
|
+
|
176
|
+
res
|
177
|
+
end
|
178
|
+
|
179
|
+
# Creates many users
|
180
|
+
#
|
181
|
+
# @param client [ZendeskSupportAPI::Client] The client instance to use
|
182
|
+
# @param users [Array] The users to create
|
183
|
+
# @return [ZendeskSupportAPI::Client.handle_job] Either the user details or the error
|
184
|
+
|
185
|
+
def self.create_many(client, users)
|
186
|
+
res = client.request(:post, 'users/create_many.json', users: users)
|
187
|
+
client.handle_job(res)
|
188
|
+
end
|
189
|
+
|
190
|
+
# Creates or updates a user
|
191
|
+
#
|
192
|
+
# @param client [ZendeskSupportAPI::Client] The client instance to use
|
193
|
+
# @param user [Hash] The user to create/update
|
194
|
+
# @return [Hash|String] Either the user details or the error
|
195
|
+
#
|
196
|
+
# @example
|
197
|
+
# ZendeskSupportAPI::User.create_or_update(client, user)
|
198
|
+
# #=> {user}
|
199
|
+
|
200
|
+
def self.create_or_update(client, user)
|
201
|
+
res = client.request(:post, 'users/create_or_update.json', user: user)
|
202
|
+
return "Create/Update failed: #{res['description']}" if res['error']
|
203
|
+
|
204
|
+
res
|
205
|
+
end
|
206
|
+
|
207
|
+
# Creates or updates many users
|
208
|
+
#
|
209
|
+
# @param client [ZendeskSupportAPI::Client] The client instance to use
|
210
|
+
# @param users [Array] The users to create/update
|
211
|
+
# @return [ZendeskSupportAPI::Client.handle_job] Either the user details or the error
|
212
|
+
|
213
|
+
def self.create_or_update_many(client, users)
|
214
|
+
res = client.request(:post,
|
215
|
+
'users/create_or_update_many.json',
|
216
|
+
users: users)
|
217
|
+
client.handle_job(res)
|
218
|
+
end
|
219
|
+
|
220
|
+
# Updates a user
|
221
|
+
#
|
222
|
+
# @param client [ZendeskSupportAPI::Client] The client instance to use
|
223
|
+
# @param uid [Integer] The User's ID
|
224
|
+
# @param user [Hash] The user details to update
|
225
|
+
# @return [Hash|String] Either the user details or the error
|
226
|
+
#
|
227
|
+
# @example
|
228
|
+
# ZendeskSupportAPI::User.update(client, 123, user)
|
229
|
+
# #=> {user}
|
230
|
+
|
231
|
+
def self.update(client, uid, user)
|
232
|
+
res = client.request(:put, "users/#{uid}.json", user: user)
|
233
|
+
return "Update of #{uid} failed: #{res['error']}" if res['error']
|
234
|
+
|
235
|
+
res
|
236
|
+
end
|
237
|
+
|
238
|
+
# Updates many users
|
239
|
+
#
|
240
|
+
# @param client [ZendeskSupportAPI::Client] The client instance to use
|
241
|
+
# @param users [Array] The users to update
|
242
|
+
# @return [ZendeskSupportAPI::Client.handle_job] Either the user details or the error
|
243
|
+
|
244
|
+
def self.update_many(client, users)
|
245
|
+
res = client.request(:put, 'users/update_many.json', users: users)
|
246
|
+
client.handle_job(res)
|
247
|
+
end
|
248
|
+
|
249
|
+
# Deletes a user
|
250
|
+
#
|
251
|
+
# @param client [ZendeskSupportAPI::Client] The client instance to use
|
252
|
+
# @param uid [Integer] The User ID to delete
|
253
|
+
# @return [String]
|
254
|
+
#
|
255
|
+
# @example
|
256
|
+
# ZendeskSupportAPI::Users.delete(client, 123)
|
257
|
+
# #=> User 123 has been deleted
|
258
|
+
# ZendeskSupportAPI::Users.delete(client, 123)
|
259
|
+
# #=> "Deletion of 123 failed: RecordNotFound"
|
260
|
+
|
261
|
+
def self.delete(client, uid)
|
262
|
+
res = client.request(:delete, "users/#{uid}.json")
|
263
|
+
return "Deletion of #{uid} failed: #{res['error']}" if res['error']
|
264
|
+
|
265
|
+
"User #{uid} has been deleted"
|
266
|
+
end
|
267
|
+
|
268
|
+
# Deletes many users
|
269
|
+
#
|
270
|
+
# @param client [ZendeskSupportAPI::Client] The client instance to use
|
271
|
+
# @param ids [Array] The array of User IDs to delete
|
272
|
+
# @return [ZendeskSupportAPI::Client.handle_job] Either the user details or the error
|
273
|
+
|
274
|
+
def self.delete_many(client, ids)
|
275
|
+
ids = ids.join(',')
|
276
|
+
res = client.request(:delete, "users/destroy_many.json?ids=#{ids}")
|
277
|
+
client.handle_job(res)
|
278
|
+
end
|
279
|
+
|
280
|
+
# Suspends a user
|
281
|
+
#
|
282
|
+
# @param client [ZendeskSupportAPI::Client] The client instance to use
|
283
|
+
# @param id [Integer] The User ID to suspend
|
284
|
+
# @return [String] Either a success message or an error
|
285
|
+
#
|
286
|
+
# @example
|
287
|
+
# ZendeskSupportAPI::Users.suspend(client, 123)
|
288
|
+
# #=> User 123 is suspended
|
289
|
+
|
290
|
+
def self.suspend(client, id)
|
291
|
+
res = client.request(:put, "users/#{id}.json", user: { suspended: true })
|
292
|
+
return "Suspension of #{id} failed: #{res['error']}" if res['error']
|
293
|
+
|
294
|
+
"User #{id} suspended" if res['user']['suspended']
|
295
|
+
end
|
296
|
+
end
|
297
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
lib = File.expand_path('../lib', __FILE__)
|
2
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
3
|
+
require 'zendesk_support_api/version'
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = 'zendesk_support_api'
|
7
|
+
s.version = ZendeskSupportAPI::VERSION
|
8
|
+
s.date = '2020-04-28'
|
9
|
+
s.summary = 'Zendesk Support API wrapper gem'
|
10
|
+
s.description = 'TBD'
|
11
|
+
s.authors = ['Jason Colyer']
|
12
|
+
s.email = 'jcolyer2007@gmail.com'
|
13
|
+
s.homepage = 'https://gitlab.com/reyloc/zendesk_support_api'
|
14
|
+
s.files = Dir.chdir(File.expand_path('..', __FILE__)) do
|
15
|
+
`git ls-files -z`.split("\x0").reject { |f| f.match(%r(^(test|spec|features)/)) }
|
16
|
+
end
|
17
|
+
# s.homepage = 'TBD'
|
18
|
+
s.license = 'MIT'
|
19
|
+
s.add_dependency 'faraday', '~>1.0.0'
|
20
|
+
s.add_dependency 'oj', '~>3.10.6'
|
21
|
+
end
|
metadata
ADDED
@@ -0,0 +1,83 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: zendesk_support_api
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Jason Colyer
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2020-04-28 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: faraday
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 1.0.0
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 1.0.0
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: oj
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 3.10.6
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 3.10.6
|
41
|
+
description: TBD
|
42
|
+
email: jcolyer2007@gmail.com
|
43
|
+
executables: []
|
44
|
+
extensions: []
|
45
|
+
extra_rdoc_files: []
|
46
|
+
files:
|
47
|
+
- ".gitlab-ci.yml"
|
48
|
+
- ".yardoc/checksums"
|
49
|
+
- ".yardoc/complete"
|
50
|
+
- ".yardoc/object_types"
|
51
|
+
- ".yardoc/objects/root.dat"
|
52
|
+
- ".yardoc/proxy_types"
|
53
|
+
- README.md
|
54
|
+
- lib/zendesk_support_api.rb
|
55
|
+
- lib/zendesk_support_api/client.rb
|
56
|
+
- lib/zendesk_support_api/jobs.rb
|
57
|
+
- lib/zendesk_support_api/users.rb
|
58
|
+
- lib/zendesk_support_api/version.rb
|
59
|
+
- zendesk_support_api.gemspec
|
60
|
+
homepage: https://gitlab.com/reyloc/zendesk_support_api
|
61
|
+
licenses:
|
62
|
+
- MIT
|
63
|
+
metadata: {}
|
64
|
+
post_install_message:
|
65
|
+
rdoc_options: []
|
66
|
+
require_paths:
|
67
|
+
- lib
|
68
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
69
|
+
requirements:
|
70
|
+
- - ">="
|
71
|
+
- !ruby/object:Gem::Version
|
72
|
+
version: '0'
|
73
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
74
|
+
requirements:
|
75
|
+
- - ">="
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
78
|
+
requirements: []
|
79
|
+
rubygems_version: 3.0.3
|
80
|
+
signing_key:
|
81
|
+
specification_version: 4
|
82
|
+
summary: Zendesk Support API wrapper gem
|
83
|
+
test_files: []
|