zendesk_support_api 0.3.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 +7 -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 +55 -0
- data/lib/zendesk_support_api.rb +10 -0
- data/lib/zendesk_support_api/client.rb +90 -0
- data/lib/zendesk_support_api/groups.rb +178 -0
- data/lib/zendesk_support_api/jobs.rb +95 -0
- data/lib/zendesk_support_api/search.rb +115 -0
- data/lib/zendesk_support_api/users.rb +317 -0
- data/lib/zendesk_support_api/version.rb +7 -0
- data/zendesk_support_api.gemspec +21 -0
- metadata +85 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: 4914120c422052e97716f808fe888ec810bee8977f4fcd9d275cc6b1705c4ca0
|
|
4
|
+
data.tar.gz: 4cded8d95430a510322e44f0310f18ce9c01a5776a4dac4ab476eaee487fbecf
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: 0065aa4ea3865fd6169a1650ed126d1748e290190dd5a5755c72fda7e37f6f365599e1f73fe178c07d68aa6ed2fed202cad6f6768fec91567c86dd2dafc2817a
|
|
7
|
+
data.tar.gz: 89c5da1d7258032fe2c56369a7d31e69131137012ada8573618b61693be110ac8a5e0b5bb196afa4cdca0ad1a1e20c21b7ddaa4c51da58f4ddda62e1aef7f162
|
data/.gitlab-ci.yml
ADDED
data/.yardoc/checksums
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
lib/zendesk_support_api.rb fee89f019b11ec8feb844644e000cec6cad6a695
|
|
2
|
+
lib/zendesk_support_api/jobs.rb 15e3db660bb16f1a2bc580ce17a9368f81fc9d0e
|
|
3
|
+
lib/zendesk_support_api/users.rb eb4f8d81f6f9ccf779679f7bfe354c0cc6be8d0c
|
|
4
|
+
lib/zendesk_support_api/client.rb f73dc3643644c6bf5f1a82593971b78a47b384fc
|
|
5
|
+
lib/zendesk_support_api/groups.rb bcc2a0b1af5bf3552c7838d80f339efbf8636e53
|
|
6
|
+
lib/zendesk_support_api/search.rb e741717c61809c578afbcd44f9b8e8f18a8c0363
|
|
7
|
+
lib/zendesk_support_api/version.rb e6591152418f6cbe5b2a2ff5d68799f735ed597d
|
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,55 @@
|
|
|
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
|
+
|
|
40
|
+
## Usage
|
|
41
|
+
|
|
42
|
+
Soon to come
|
|
43
|
+
|
|
44
|
+
## Changelog
|
|
45
|
+
|
|
46
|
+
* v0.1.0
|
|
47
|
+
* Initial creation of gem
|
|
48
|
+
* v0.2.0
|
|
49
|
+
* Added Search functions
|
|
50
|
+
* Fixed some yard syntax/formatting
|
|
51
|
+
* Changed version number
|
|
52
|
+
* v0.3.0
|
|
53
|
+
* Changed version number
|
|
54
|
+
* Added Group functions
|
|
55
|
+
* Added User.groups function
|
|
@@ -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,90 @@
|
|
|
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/groups'
|
|
7
|
+
require 'zendesk_support_api/jobs'
|
|
8
|
+
require 'zendesk_support_api/search'
|
|
9
|
+
require 'zendesk_support_api/users'
|
|
10
|
+
|
|
11
|
+
# Create a new instance of Client
|
|
12
|
+
#
|
|
13
|
+
# @param user [String] - The API username to use
|
|
14
|
+
# @param token [String] - The API token to use
|
|
15
|
+
# @param url [String] - The API URL to use
|
|
16
|
+
#
|
|
17
|
+
# @example
|
|
18
|
+
# ZendeskSupportAPI::Client.new('user', '123', 'zendesk.com/api')
|
|
19
|
+
# #=> #<ZendeskSupportAPI::Client:0x00007f88779cb330 @user="user",
|
|
20
|
+
# #=> @token="123", @url="zendesk.com/api">
|
|
21
|
+
def initialize(user, token, url)
|
|
22
|
+
@user = user
|
|
23
|
+
@token = token
|
|
24
|
+
@url = url
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
# Make a request to the Zendesk Support API
|
|
28
|
+
#
|
|
29
|
+
# @param http_method [Symbol] The HTTP method to utilize
|
|
30
|
+
# @param endpoint [String] The endpoint to hit
|
|
31
|
+
# @param params [Hash] Parameters for the request
|
|
32
|
+
# @return [Hash]
|
|
33
|
+
#
|
|
34
|
+
# @example
|
|
35
|
+
# client = ZendeskSupportAPI::Client.new('user', '123', 'zendesk.com/api')
|
|
36
|
+
# client.response(:get, 'users.json')
|
|
37
|
+
# #=> {users:[{user1},{user2}...{user100}]}
|
|
38
|
+
|
|
39
|
+
def request(http_method, endpoint, params = {})
|
|
40
|
+
response = client.public_send(http_method, endpoint, params)
|
|
41
|
+
Oj.load(response.body)
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
# Outputs a spinner symbol
|
|
45
|
+
#
|
|
46
|
+
# @param string [String] The string to output at the beginning
|
|
47
|
+
# @param num [Integer] The index of the iteration
|
|
48
|
+
# @return [String]
|
|
49
|
+
#
|
|
50
|
+
# @example
|
|
51
|
+
# ZendeskSupportAPI::Client.spinner('users', 1) #=> Grabbing users... \
|
|
52
|
+
# ZendeskSupportAPI::Client.spinner('groups', 3) #=> /
|
|
53
|
+
|
|
54
|
+
def spinner(string, num)
|
|
55
|
+
print "Grabbing #{string}... " if num.to_i == 1
|
|
56
|
+
symbols = ['-', '\\', '|', '/']
|
|
57
|
+
print symbols[num.to_i % 4]
|
|
58
|
+
print "\b"
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
# Handles responses that create jobs
|
|
62
|
+
#
|
|
63
|
+
# @param job [Hash] - The output from a request that created a job
|
|
64
|
+
# @return [Hash]
|
|
65
|
+
|
|
66
|
+
def handle_job(job)
|
|
67
|
+
print 'Checking job'
|
|
68
|
+
while job['job_status']['status'] != 'completed'
|
|
69
|
+
print '.'
|
|
70
|
+
job = ZendeskSupportAPI::Jobs.show(self, job['job_status']['id'])
|
|
71
|
+
end
|
|
72
|
+
puts 'completed'
|
|
73
|
+
job['job_status']['results']
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
private
|
|
77
|
+
|
|
78
|
+
# Creates a new Faraday instance
|
|
79
|
+
#
|
|
80
|
+
# @return [ZendeskSupportAPI::Client]
|
|
81
|
+
|
|
82
|
+
def client
|
|
83
|
+
@client ||= Faraday.new(@url) do |c|
|
|
84
|
+
c.request :url_encoded
|
|
85
|
+
c.adapter Faraday.default_adapter
|
|
86
|
+
c.basic_auth "#{@user}/token", @token
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
end
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module ZendeskSupportAPI
|
|
4
|
+
# Groups class - https://developer.zendesk.com/rest_api/docs/support/groups
|
|
5
|
+
class Groups
|
|
6
|
+
# Function to return a string that side-loads users
|
|
7
|
+
#
|
|
8
|
+
# @return [String]
|
|
9
|
+
|
|
10
|
+
def self.user_map(groups, users)
|
|
11
|
+
groups.map { |g| group_object(g, users) }
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
# Creates a group hash (for mappping the user into the group Hash)
|
|
15
|
+
#
|
|
16
|
+
# @param group [Hash] The group details to use
|
|
17
|
+
# @param users [Array] The Array of users to use
|
|
18
|
+
# @return [Hash]
|
|
19
|
+
|
|
20
|
+
def self.group_object(group, users)
|
|
21
|
+
group['user'] = users.select { |u| u['id'] == group['user_id'] }
|
|
22
|
+
group
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
# Returns the string of the next_page for pagination
|
|
26
|
+
#
|
|
27
|
+
# @param res [Hash] The Hash containing the response from a request
|
|
28
|
+
# @return [nil|String]
|
|
29
|
+
#
|
|
30
|
+
# @example
|
|
31
|
+
# ZendeskSupportAPI::Users.next_page(response) #=> nil
|
|
32
|
+
# ZendeskSupportAPI::Users.next_page(response)
|
|
33
|
+
# #=> "memberships.json?include=users&page=3
|
|
34
|
+
|
|
35
|
+
def self.next_page(res)
|
|
36
|
+
(res['next_page'].nil? ? nil : res['next_page'].split('/').last)
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
# Lists groups (first 100)
|
|
40
|
+
#
|
|
41
|
+
# @param client [ZendeskSupportAPI::Client] The client instance to use
|
|
42
|
+
# @return [Array]
|
|
43
|
+
#
|
|
44
|
+
# @example
|
|
45
|
+
# ZendeskSupportAPI::Groups.list(client)
|
|
46
|
+
# #=> [
|
|
47
|
+
# #=> {
|
|
48
|
+
# #=> "name": "DJs",
|
|
49
|
+
# #=> "created_at": "2009-05-13T00:07:08Z",
|
|
50
|
+
# #=> "updated_at": "2011-07-22T00:11:12Z",
|
|
51
|
+
# #=> "id": 211
|
|
52
|
+
# #=> },
|
|
53
|
+
# #=> {
|
|
54
|
+
# #=> "name": "MCs",
|
|
55
|
+
# #=> "created_at": "2009-08-26T00:07:08Z",
|
|
56
|
+
# #=> "updated_at": "2010-05-13T00:07:08Z",
|
|
57
|
+
# #=> "id": 122
|
|
58
|
+
# #=> }
|
|
59
|
+
# #=> ]
|
|
60
|
+
|
|
61
|
+
def self.list(client)
|
|
62
|
+
client.request(:get, 'groups.json')['groups']
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
# Shows assignable groups (first 100)
|
|
66
|
+
#
|
|
67
|
+
# @param client [ZendeskSupportAPI::Client] The client instance to use
|
|
68
|
+
# @return [Array]
|
|
69
|
+
#
|
|
70
|
+
# @example
|
|
71
|
+
# ZendeskSupportAPI::Groups.assignable(client)
|
|
72
|
+
# #=> [
|
|
73
|
+
# #=> {
|
|
74
|
+
# #=> "name": "DJs",
|
|
75
|
+
# #=> "created_at": "2009-05-13T00:07:08Z",
|
|
76
|
+
# #=> "updated_at": "2011-07-22T00:11:12Z",
|
|
77
|
+
# #=> "id": 211
|
|
78
|
+
# #=> },
|
|
79
|
+
# #=> {
|
|
80
|
+
# #=> "name": "MCs",
|
|
81
|
+
# #=> "created_at": "2009-08-26T00:07:08Z",
|
|
82
|
+
# #=> "updated_at": "2010-05-13T00:07:08Z",
|
|
83
|
+
# #=> "id": 122
|
|
84
|
+
# #=> }
|
|
85
|
+
# #=> ]
|
|
86
|
+
|
|
87
|
+
def self.assignable(client)
|
|
88
|
+
client.request(:get, 'assignable.json')['groups']
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
# Shows info about a specific group
|
|
92
|
+
#
|
|
93
|
+
# @param client [ZendeskSupportAPI::Client] The client instance to use
|
|
94
|
+
# @param gid [Integer] The Group ID
|
|
95
|
+
# @return [Hash]
|
|
96
|
+
#
|
|
97
|
+
# @example
|
|
98
|
+
# ZendeskSupportAPI::Groups.show(client, 122)
|
|
99
|
+
# #=> {
|
|
100
|
+
# #=> "name": "MCs",
|
|
101
|
+
# #=> "created_at": "2009-08-26T00:07:08Z",
|
|
102
|
+
# #=> "updated_at": "2010-05-13T00:07:08Z",
|
|
103
|
+
# #=> "id": 122
|
|
104
|
+
# #=> }
|
|
105
|
+
|
|
106
|
+
def self.show(client, gid)
|
|
107
|
+
client.request(:get, "groups/#{gid}.json")['group']
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
# Create a group
|
|
111
|
+
#
|
|
112
|
+
# @param client [ZendeskSupportAPI::Client] The client instance to use
|
|
113
|
+
# @param group [Hash] The group details to use
|
|
114
|
+
# @return [String|Hash]
|
|
115
|
+
#
|
|
116
|
+
# @example
|
|
117
|
+
# group = {
|
|
118
|
+
# name: 'Test Group'
|
|
119
|
+
# }
|
|
120
|
+
# ZendeskSupportAPI::Groups.create(client, group)
|
|
121
|
+
# #=> {
|
|
122
|
+
# #=> "name": "Test Group",
|
|
123
|
+
# #=> "created_at": "2011-04-20T17:49:00Z",
|
|
124
|
+
# #=> "updated_at": "2011-04-20T17:49:00Z",
|
|
125
|
+
# #=> "id": 123
|
|
126
|
+
# #=> }
|
|
127
|
+
|
|
128
|
+
def self.create(client, group)
|
|
129
|
+
res = client.request(:post, 'groups.json', group: group)
|
|
130
|
+
return "Creation failed: #{res['details']}" if res['error']
|
|
131
|
+
|
|
132
|
+
res
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
# Updates a group
|
|
136
|
+
#
|
|
137
|
+
# @param client [ZendeskSupportAPI::Client] The client instance to use
|
|
138
|
+
# @param gid [Integer] The group ID to use
|
|
139
|
+
# @param group [Hash] The group details to use
|
|
140
|
+
# @return [String|Hash]
|
|
141
|
+
#
|
|
142
|
+
# @example
|
|
143
|
+
# group = {
|
|
144
|
+
# name: 'Test Group - defunct'
|
|
145
|
+
# }
|
|
146
|
+
# ZendeskSupportAPI::Groups.update(client, 123, group)
|
|
147
|
+
# #=> {
|
|
148
|
+
# #=> "name": "Test Group - defunct",
|
|
149
|
+
# #=> "created_at": "2011-04-20T17:49:00Z",
|
|
150
|
+
# #=> "updated_at": "2011-07-20T17:49:00Z",
|
|
151
|
+
# #=> "id": 123
|
|
152
|
+
# #=> }
|
|
153
|
+
|
|
154
|
+
def self.update(client, gid, group)
|
|
155
|
+
res = client.request(:post, "groups/#{gid}.json", group: group)
|
|
156
|
+
return "Update failed: #{res['details']}" if res['error']
|
|
157
|
+
|
|
158
|
+
res
|
|
159
|
+
end
|
|
160
|
+
|
|
161
|
+
# Deletes a group
|
|
162
|
+
#
|
|
163
|
+
# @param client [ZendeskSupportAPI::Client] The client instance to use
|
|
164
|
+
# @param gid [Integer] The group ID to use
|
|
165
|
+
# @return [String]
|
|
166
|
+
#
|
|
167
|
+
# @example
|
|
168
|
+
# ZendeskSupportAPI::Groups.delete(client, 123)
|
|
169
|
+
# #=> Group 123 has been deleted
|
|
170
|
+
|
|
171
|
+
def self.delete(client, gid)
|
|
172
|
+
res = client.request(:delete, "groups/#{gid}.json")
|
|
173
|
+
return "Deletion of #{gid} failed: #{res['error']}" if res['error']
|
|
174
|
+
|
|
175
|
+
"Group #{gid} has been deleted"
|
|
176
|
+
end
|
|
177
|
+
end
|
|
178
|
+
end
|
|
@@ -0,0 +1,95 @@
|
|
|
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 to use
|
|
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
|
+
|
|
42
|
+
# Make a request to show all job statuses
|
|
43
|
+
#
|
|
44
|
+
# @param client [ZendeskSupportAPI::Client] The client instance to use
|
|
45
|
+
# @return [Hash]
|
|
46
|
+
#
|
|
47
|
+
# @example
|
|
48
|
+
# ZendeskSupportAPI::Jobs.show_many(client, ['abc123', 'def456'])
|
|
49
|
+
# #=> {
|
|
50
|
+
# #=> "job_statuses": [
|
|
51
|
+
# #=> {
|
|
52
|
+
# #=> "id": "abc123",
|
|
53
|
+
# #=> "status": "completed",
|
|
54
|
+
# #=> ...
|
|
55
|
+
# #=> },
|
|
56
|
+
# #=> {
|
|
57
|
+
# #=> "id": "def456",
|
|
58
|
+
# #=> "status": "completed",
|
|
59
|
+
# #=> ...
|
|
60
|
+
# #=> }
|
|
61
|
+
# #=> ]
|
|
62
|
+
# #=> }
|
|
63
|
+
|
|
64
|
+
def self.list(client)
|
|
65
|
+
client.request(:get, 'job_statuses.json')['job_statuses']
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
# Show many job statuses
|
|
69
|
+
#
|
|
70
|
+
# @param client [ZendeskSupportAPI::Client] The client instance to use
|
|
71
|
+
# @param ids [Array] An Array of job IDs to show
|
|
72
|
+
# @return [Hash]
|
|
73
|
+
#
|
|
74
|
+
# @example
|
|
75
|
+
# ZendeskSupportAPI::Jobs.show_many(client, ['abc123', 'def456'])
|
|
76
|
+
# #=> {
|
|
77
|
+
# #=> "job_statuses": [
|
|
78
|
+
# #=> {
|
|
79
|
+
# #=> "id": "abc123",
|
|
80
|
+
# #=> "status": "completed",
|
|
81
|
+
# #=> ...
|
|
82
|
+
# #=> },
|
|
83
|
+
# #=> {
|
|
84
|
+
# #=> "id": "def456",
|
|
85
|
+
# #=> "status": "completed",
|
|
86
|
+
# #=> ...
|
|
87
|
+
# #=> }
|
|
88
|
+
# #=> ]
|
|
89
|
+
# #=> }
|
|
90
|
+
|
|
91
|
+
def self.show_many(client, ids)
|
|
92
|
+
client.request(:get, "job_statuses/show_many.json?ids=#{ids.join(',')}")
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
end
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module ZendeskSupportAPI
|
|
4
|
+
# Search class - https://developer.zendesk.com/rest_api/docs/support/search
|
|
5
|
+
class Search
|
|
6
|
+
# Perform a search and list results (first 100)
|
|
7
|
+
#
|
|
8
|
+
# @param client [ZendeskSupportAPI::Client] The client instance to use
|
|
9
|
+
# @param query [String] The query to use
|
|
10
|
+
# @param sort [String] The sorting method to use (defaults to revelance)
|
|
11
|
+
# @param order [String] The order to use (defaults to desc)
|
|
12
|
+
# @return [Array]
|
|
13
|
+
#
|
|
14
|
+
# @example
|
|
15
|
+
# ZendeskSupportAPI::Search.list(client, 'bob')
|
|
16
|
+
# #=> [
|
|
17
|
+
# #=> {
|
|
18
|
+
# #=> "name": "Bob McBob",
|
|
19
|
+
# #=> "created_at": "2009-05-13T00:07:08Z",
|
|
20
|
+
# #=> "updated_at": "2011-07-22T00:11:12Z",
|
|
21
|
+
# #=> "id": 211,
|
|
22
|
+
# #=> "result_type": "user"
|
|
23
|
+
# #=> "url": "https://zendesk.com/api/v2/users/211.json"
|
|
24
|
+
# #=> },
|
|
25
|
+
# #=> {
|
|
26
|
+
# #=> "name": "Bob's Company",
|
|
27
|
+
# #=> "created_at": "2009-08-26T00:07:08Z",
|
|
28
|
+
# #=> "updated_at": "2010-05-13T00:07:08Z",
|
|
29
|
+
# #=> "id": 122,
|
|
30
|
+
# #=> "result_type": "group"
|
|
31
|
+
# #=> "url": "https://zendesk.com/api/v2/groups/122.json"
|
|
32
|
+
# #=> },
|
|
33
|
+
# #=> ...
|
|
34
|
+
# #=> ]
|
|
35
|
+
|
|
36
|
+
def self.list(client, query, sort = '', order = 'desc')
|
|
37
|
+
return bad_search("invalid sort - #{sort}") unless sort_valid?(sort)
|
|
38
|
+
return bad_search("invalid order - #{order}") unless order_valid?(order)
|
|
39
|
+
|
|
40
|
+
sort_order = sort_order_string(sort, order)
|
|
41
|
+
client.request(:get, "search.json?query=#{query}#{sort_order}")['results']
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
# Determines if a given sort string is valid
|
|
45
|
+
#
|
|
46
|
+
# @param sort [String] The sort string to check
|
|
47
|
+
# @return [Boolean]
|
|
48
|
+
#
|
|
49
|
+
# @example
|
|
50
|
+
# ZendeskSupportAPI::Search.sort_valid? 'updated_at'
|
|
51
|
+
# #=> true
|
|
52
|
+
# ZendeskSupportAPI::Search.sort_valid? 'ticket_type'
|
|
53
|
+
# #=> true
|
|
54
|
+
# ZendeskSupportAPI::Search.sort_valid? 'random'
|
|
55
|
+
# #=> false
|
|
56
|
+
|
|
57
|
+
def self.sort_valid?(sort)
|
|
58
|
+
return true if sort.empty?
|
|
59
|
+
|
|
60
|
+
valid = %w[updated_at created_at priority status ticket_type]
|
|
61
|
+
valid.include? sort
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
# Determines if a given order string is valid
|
|
65
|
+
#
|
|
66
|
+
# @param order [String] The order string to check
|
|
67
|
+
# @return [Boolean]
|
|
68
|
+
#
|
|
69
|
+
# @example
|
|
70
|
+
# ZendeskSupportAPI::Search.order_valid? 'asc'
|
|
71
|
+
# #=> true
|
|
72
|
+
# ZendeskSupportAPI::Search.order_valid? 'desc'
|
|
73
|
+
# #=> true
|
|
74
|
+
# ZendeskSupportAPI::Search.order_valid? 'random'
|
|
75
|
+
# #=> false
|
|
76
|
+
|
|
77
|
+
def self.order_valid?(order)
|
|
78
|
+
valid = %w[asc desc]
|
|
79
|
+
valid.include? order
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
# Prints out an error message
|
|
83
|
+
#
|
|
84
|
+
# @param string [String] The error that occurred
|
|
85
|
+
# @return [String]
|
|
86
|
+
#
|
|
87
|
+
# @example
|
|
88
|
+
# ZendeskSupportAPI::Search.bad_search('invalid sort - name')
|
|
89
|
+
# #=> "Search cannot be completed: invalid sort - name"
|
|
90
|
+
|
|
91
|
+
def self.bad_search(string)
|
|
92
|
+
"Search cannot be completed: #{string}"
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
# Determines the sort and order to use in the query
|
|
96
|
+
#
|
|
97
|
+
# @param sort [String] The sort string to use
|
|
98
|
+
# @param order [String] The order string to use
|
|
99
|
+
# @return [String]
|
|
100
|
+
#
|
|
101
|
+
# @example
|
|
102
|
+
# ZendeskSupportAPI::Search.sort_order_string('', 'asc')
|
|
103
|
+
# #=> "&order_by=asc"
|
|
104
|
+
# ZendeskSupportAPI::Search.sort_order_string('priority', 'desc')
|
|
105
|
+
# #=> "&sort_by=priority"
|
|
106
|
+
# ZendeskSupportAPI::Search.sort_order_string('updated_at', 'asc')
|
|
107
|
+
# #=> "&sort_by=updated_at&order_by=asc"
|
|
108
|
+
|
|
109
|
+
def self.sort_order_string(sort, order)
|
|
110
|
+
sort = (sort.empty? ? '' : "&sort_by=#{sort}")
|
|
111
|
+
order = (order == 'desc' ? '' : '&order_by=asc')
|
|
112
|
+
"#{sort}#{order}"
|
|
113
|
+
end
|
|
114
|
+
end
|
|
115
|
+
end
|
|
@@ -0,0 +1,317 @@
|
|
|
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 (total: 215336)... / ...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
|
+
# #=> ...
|
|
89
|
+
# #=> }
|
|
90
|
+
|
|
91
|
+
def self.show(client, id)
|
|
92
|
+
res = client.request(:get, "users/#{id}.json?#{included}")
|
|
93
|
+
user_object(res['user'], res['organizations'])
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
# Shows many users
|
|
97
|
+
#
|
|
98
|
+
# @param client [ZendeskSupportAPI::Client] The client instance to use
|
|
99
|
+
# @param ids [Array] An array of User IDs to use
|
|
100
|
+
# @return [Array]
|
|
101
|
+
#
|
|
102
|
+
# @example
|
|
103
|
+
# ZendeskSupportAPI::Users.show_many(client, [123, 456])
|
|
104
|
+
# #=> [
|
|
105
|
+
# #=> {
|
|
106
|
+
# #=> "id": 123,
|
|
107
|
+
# #=> "name": "Johnny Appleseed",
|
|
108
|
+
# #=> ...
|
|
109
|
+
# #=> },
|
|
110
|
+
# #=> {
|
|
111
|
+
# #=> "id": 456,
|
|
112
|
+
# #=> "name": "Rupert Root",
|
|
113
|
+
# #=> ...
|
|
114
|
+
# #=> }
|
|
115
|
+
# #=> ]
|
|
116
|
+
|
|
117
|
+
def self.show_many(client, ids)
|
|
118
|
+
ids = ids.join(',')
|
|
119
|
+
res = client.request(:get, "users/show_many.json?#{included}&ids=#{ids}")
|
|
120
|
+
res['users'].map { |u| user_object(u, res['organizations']) }
|
|
121
|
+
res['users']
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
# Creates a user hash (for mapping the org into the user Hash)
|
|
125
|
+
#
|
|
126
|
+
# @param user [Hash] The user details to use
|
|
127
|
+
# @param orgs [Array] The Array of orgs to use
|
|
128
|
+
# @return [Hash]
|
|
129
|
+
|
|
130
|
+
def self.user_object(user, orgs)
|
|
131
|
+
oid = 'organization_id'
|
|
132
|
+
user['organization'] = orgs.select { |o| o['id'] == user[oid] }
|
|
133
|
+
user
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
# Creates a user
|
|
137
|
+
#
|
|
138
|
+
# @param client [ZendeskSupportAPI::Client] The client instance to use
|
|
139
|
+
# @param user [Hash] The user to create
|
|
140
|
+
# @return [Hash|String] Either the user details or the error
|
|
141
|
+
#
|
|
142
|
+
# @example
|
|
143
|
+
# user = {name: 'Roger Wilco', email: 'rw@example.com'}
|
|
144
|
+
# ZendeskSupportAPI::Users.create(client, user)
|
|
145
|
+
# #=> {
|
|
146
|
+
# #=> "user": {
|
|
147
|
+
# #=> "id": 9873843,
|
|
148
|
+
# #=> "name": "Roger Wilco",
|
|
149
|
+
# #=> "email": "rw@example.com"
|
|
150
|
+
# #=> ...
|
|
151
|
+
# #=> }
|
|
152
|
+
# #=> }
|
|
153
|
+
# ZendeskSupportAPI::User.create(client, user)
|
|
154
|
+
# #=> Creation failed: => "Creation failed: {\"email\"=>[{\"description\"
|
|
155
|
+
# #=> =>\"Email: rw@example.com is already being used by another user\",
|
|
156
|
+
# #=> \"error\"=>\"DuplicateValue\"}]}"
|
|
157
|
+
|
|
158
|
+
def self.create(client, user)
|
|
159
|
+
res = client.request(:post, 'users.json', user: user)
|
|
160
|
+
return "Creation failed: #{res['details']}" if res['error']
|
|
161
|
+
|
|
162
|
+
res
|
|
163
|
+
end
|
|
164
|
+
|
|
165
|
+
# Creates many users
|
|
166
|
+
#
|
|
167
|
+
# @param client [ZendeskSupportAPI::Client] The client instance to use
|
|
168
|
+
# @param users [Array] The users to create
|
|
169
|
+
# @return [ZendeskSupportAPI::Client.handle_job]
|
|
170
|
+
|
|
171
|
+
def self.create_many(client, users)
|
|
172
|
+
res = client.request(:post, 'users/create_many.json', users: users)
|
|
173
|
+
client.handle_job(res)
|
|
174
|
+
end
|
|
175
|
+
|
|
176
|
+
# Creates or updates a user
|
|
177
|
+
#
|
|
178
|
+
# @param client [ZendeskSupportAPI::Client] The client instance to use
|
|
179
|
+
# @param user [Hash] The user to create/update
|
|
180
|
+
# @return [Hash|String] Either the user details or the error
|
|
181
|
+
#
|
|
182
|
+
# @example
|
|
183
|
+
# ZendeskSupportAPI::User.create_or_update(client, user)
|
|
184
|
+
# #=> {
|
|
185
|
+
# #=> "user": {
|
|
186
|
+
# #=> "id": 9873843,
|
|
187
|
+
# #=> "name": "Roger Wilco",
|
|
188
|
+
# #=> "email": "rw@example.com"
|
|
189
|
+
# #=> ...
|
|
190
|
+
# #=> }
|
|
191
|
+
# #=> }
|
|
192
|
+
|
|
193
|
+
def self.create_or_update(client, user)
|
|
194
|
+
res = client.request(:post, 'users/create_or_update.json', user: user)
|
|
195
|
+
return "Create/Update failed: #{res['description']}" if res['error']
|
|
196
|
+
|
|
197
|
+
res
|
|
198
|
+
end
|
|
199
|
+
|
|
200
|
+
# Creates or updates many users
|
|
201
|
+
#
|
|
202
|
+
# @param client [ZendeskSupportAPI::Client] The client instance to use
|
|
203
|
+
# @param users [Array] The users to create/update
|
|
204
|
+
# @return [ZendeskSupportAPI::Client.handle_job]
|
|
205
|
+
|
|
206
|
+
def self.create_or_update_many(client, users)
|
|
207
|
+
res = client.request(:post,
|
|
208
|
+
'users/create_or_update_many.json',
|
|
209
|
+
users: users)
|
|
210
|
+
client.handle_job(res)
|
|
211
|
+
end
|
|
212
|
+
|
|
213
|
+
# Updates a user
|
|
214
|
+
#
|
|
215
|
+
# @param client [ZendeskSupportAPI::Client] The client instance to use
|
|
216
|
+
# @param uid [Integer] The User's ID
|
|
217
|
+
# @param user [Hash] The user details to update
|
|
218
|
+
# @return [Hash|String] Either the user details or the error
|
|
219
|
+
#
|
|
220
|
+
# @example
|
|
221
|
+
# ZendeskSupportAPI::User.update(client, 123, user)
|
|
222
|
+
# #=> {user}
|
|
223
|
+
|
|
224
|
+
def self.update(client, uid, user)
|
|
225
|
+
res = client.request(:put, "users/#{uid}.json", user: user)
|
|
226
|
+
return "Update of #{uid} failed: #{res['error']}" if res['error']
|
|
227
|
+
|
|
228
|
+
res
|
|
229
|
+
end
|
|
230
|
+
|
|
231
|
+
# Updates many users
|
|
232
|
+
#
|
|
233
|
+
# @param client [ZendeskSupportAPI::Client] The client instance to use
|
|
234
|
+
# @param users [Array] The users to update
|
|
235
|
+
# @return [ZendeskSupportAPI::Client.handle_job]
|
|
236
|
+
|
|
237
|
+
def self.update_many(client, users)
|
|
238
|
+
res = client.request(:put, 'users/update_many.json', users: users)
|
|
239
|
+
client.handle_job(res)
|
|
240
|
+
end
|
|
241
|
+
|
|
242
|
+
# Deletes a user
|
|
243
|
+
#
|
|
244
|
+
# @param client [ZendeskSupportAPI::Client] The client instance to use
|
|
245
|
+
# @param uid [Integer] The User ID to delete
|
|
246
|
+
# @return [String]
|
|
247
|
+
#
|
|
248
|
+
# @example
|
|
249
|
+
# ZendeskSupportAPI::Users.delete(client, 123)
|
|
250
|
+
# #=> User 123 has been deleted
|
|
251
|
+
# ZendeskSupportAPI::Users.delete(client, 123)
|
|
252
|
+
# #=> "Deletion of 123 failed: RecordNotFound"
|
|
253
|
+
|
|
254
|
+
def self.delete(client, uid)
|
|
255
|
+
res = client.request(:delete, "users/#{uid}.json")
|
|
256
|
+
return "Deletion of #{uid} failed: #{res['error']}" if res['error']
|
|
257
|
+
|
|
258
|
+
"User #{uid} has been deleted"
|
|
259
|
+
end
|
|
260
|
+
|
|
261
|
+
# Deletes many users
|
|
262
|
+
#
|
|
263
|
+
# @param client [ZendeskSupportAPI::Client] The client instance to use
|
|
264
|
+
# @param ids [Array] The array of User IDs to delete
|
|
265
|
+
# @return [ZendeskSupportAPI::Client.handle_job]
|
|
266
|
+
|
|
267
|
+
def self.delete_many(client, ids)
|
|
268
|
+
ids = ids.join(',')
|
|
269
|
+
res = client.request(:delete, "users/destroy_many.json?ids=#{ids}")
|
|
270
|
+
client.handle_job(res)
|
|
271
|
+
end
|
|
272
|
+
|
|
273
|
+
# Suspends a user
|
|
274
|
+
#
|
|
275
|
+
# @param client [ZendeskSupportAPI::Client] The client instance to use
|
|
276
|
+
# @param id [Integer] The User ID to suspend
|
|
277
|
+
# @return [String] Either a success message or an error
|
|
278
|
+
#
|
|
279
|
+
# @example
|
|
280
|
+
# ZendeskSupportAPI::Users.suspend(client, 123)
|
|
281
|
+
# #=> User 123 is suspended
|
|
282
|
+
|
|
283
|
+
def self.suspend(client, id)
|
|
284
|
+
res = client.request(:put, "users/#{id}.json", user: { suspended: true })
|
|
285
|
+
return "Suspension of #{id} failed: #{res['error']}" if res['error']
|
|
286
|
+
|
|
287
|
+
"User #{id} suspended" if res['user']['suspended']
|
|
288
|
+
end
|
|
289
|
+
|
|
290
|
+
# Shows a users groups
|
|
291
|
+
#
|
|
292
|
+
# @param client [ZendeskSupportAPI::Client] The client instance to use
|
|
293
|
+
# @param uid [Integer] The User ID to use
|
|
294
|
+
# @return [Array]
|
|
295
|
+
#
|
|
296
|
+
# @example
|
|
297
|
+
# ZendeskSupportAPI::Users.groups(client, 1234)
|
|
298
|
+
# #=> [
|
|
299
|
+
# #=> {
|
|
300
|
+
# #=> "name": "DJs",
|
|
301
|
+
# #=> "created_at": "2009-05-13T00:07:08Z",
|
|
302
|
+
# #=> "updated_at": "2011-07-22T00:11:12Z",
|
|
303
|
+
# #=> "id": 211
|
|
304
|
+
# #=> },
|
|
305
|
+
# #=> {
|
|
306
|
+
# #=> "name": "MCs",
|
|
307
|
+
# #=> "created_at": "2009-08-26T00:07:08Z",
|
|
308
|
+
# #=> "updated_at": "2010-05-13T00:07:08Z",
|
|
309
|
+
# #=> "id": 122
|
|
310
|
+
# #=> }
|
|
311
|
+
# #=> ]
|
|
312
|
+
|
|
313
|
+
def self.groups(client, uid)
|
|
314
|
+
client.request(:get, "users/#{uid}/groups.json")['groups']
|
|
315
|
+
end
|
|
316
|
+
end
|
|
317
|
+
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,85 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: zendesk_support_api
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.3.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/groups.rb
|
|
57
|
+
- lib/zendesk_support_api/jobs.rb
|
|
58
|
+
- lib/zendesk_support_api/search.rb
|
|
59
|
+
- lib/zendesk_support_api/users.rb
|
|
60
|
+
- lib/zendesk_support_api/version.rb
|
|
61
|
+
- zendesk_support_api.gemspec
|
|
62
|
+
homepage: https://gitlab.com/reyloc/zendesk_support_api
|
|
63
|
+
licenses:
|
|
64
|
+
- MIT
|
|
65
|
+
metadata: {}
|
|
66
|
+
post_install_message:
|
|
67
|
+
rdoc_options: []
|
|
68
|
+
require_paths:
|
|
69
|
+
- lib
|
|
70
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
71
|
+
requirements:
|
|
72
|
+
- - ">="
|
|
73
|
+
- !ruby/object:Gem::Version
|
|
74
|
+
version: '0'
|
|
75
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
76
|
+
requirements:
|
|
77
|
+
- - ">="
|
|
78
|
+
- !ruby/object:Gem::Version
|
|
79
|
+
version: '0'
|
|
80
|
+
requirements: []
|
|
81
|
+
rubygems_version: 3.0.3
|
|
82
|
+
signing_key:
|
|
83
|
+
specification_version: 4
|
|
84
|
+
summary: Zendesk Support API wrapper gem
|
|
85
|
+
test_files: []
|