zendesk_sell 0.1.1
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/.rspec +3 -0
- data/.standard.yml +3 -0
- data/CHANGELOG.md +5 -0
- data/LICENSE.txt +21 -0
- data/README.md +201 -0
- data/Rakefile +10 -0
- data/lib/zendesk_sell/client.rb +103 -0
- data/lib/zendesk_sell/errors.rb +16 -0
- data/lib/zendesk_sell/resources/base_resource.rb +82 -0
- data/lib/zendesk_sell/resources/companies.rb +15 -0
- data/lib/zendesk_sell/resources/contacts.rb +15 -0
- data/lib/zendesk_sell/resources/deals.rb +15 -0
- data/lib/zendesk_sell/resources/leads.rb +15 -0
- data/lib/zendesk_sell/resources/tasks.rb +15 -0
- data/lib/zendesk_sell/resources/users.rb +15 -0
- data/lib/zendesk_sell/version.rb +5 -0
- data/lib/zendesk_sell.rb +20 -0
- data/sig/zendesk_sell.rbs +4 -0
- data/zendesk_sell.gemspec +43 -0
- metadata +66 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 65770f9447275ebe858b49fc9b0301fe368a81b76b14ae290d869988b717ab92
|
4
|
+
data.tar.gz: 7fc85e55b84bd9424c46244e054ba85441e44988b18cb19ea1e8ab1ce47ddb05
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 5a39575e77f3cd46ba99862a3a4682a50c0b2541dcba3259e5ec8fb413db3afa2ec2ad544e8d84157801229f22207d53f749470cb68766d7ffbcc712cd8939b0
|
7
|
+
data.tar.gz: 3cee89cd91cb326a4a5beb4d2bf6a4295eeb56803be98d508adb64171b19d4b68ee618b4006ddb584234a9b6670dcad6a094247d9545c5d27951809bb0d2dd08
|
data/.rspec
ADDED
data/.standard.yml
ADDED
data/CHANGELOG.md
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
The MIT License (MIT)
|
2
|
+
|
3
|
+
Copyright (c) 2025 Eugeniu Tambur
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
13
|
+
all copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
21
|
+
THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,201 @@
|
|
1
|
+
# Zendesk Sell
|
2
|
+
|
3
|
+
**Zendesk Sell** is a Ruby client for the [Zendesk Sell (Sales CRM) API](https://developer.zendesk.com/api-reference/sales-crm/resources/introduction/). This gem provides a robust and modular interface to interact with Zendesk Sell’s resources—such as leads, deals, contacts, companies, tasks, and users—using Faraday for HTTP requests. It supports full CRUD operations and follows best practices for a clean and extensible codebase.
|
4
|
+
|
5
|
+
## Installation
|
6
|
+
|
7
|
+
Add this line to your application's Gemfile:
|
8
|
+
|
9
|
+
```ruby
|
10
|
+
gem 'zendesk_sell'
|
11
|
+
```
|
12
|
+
|
13
|
+
Then execute:
|
14
|
+
|
15
|
+
```bash
|
16
|
+
bundle install
|
17
|
+
```
|
18
|
+
|
19
|
+
Or install it yourself via:
|
20
|
+
|
21
|
+
```bash
|
22
|
+
gem install zendesk_sell
|
23
|
+
```
|
24
|
+
|
25
|
+
## Configuration
|
26
|
+
|
27
|
+
The client uses the SELL_ACCESS_TOKEN environment variable by default. You can also pass the token directly when initializing the client.
|
28
|
+
|
29
|
+
**Using an Environment Variable**
|
30
|
+
|
31
|
+
Set your token in your shell or Rails application configuration:
|
32
|
+
|
33
|
+
```bash
|
34
|
+
export SELL_ACCESS_TOKEN="your_actual_sell_access_token"
|
35
|
+
```
|
36
|
+
|
37
|
+
## Direct Initialization
|
38
|
+
|
39
|
+
```ruby
|
40
|
+
client = ZendeskSell::Client.new(access_token: 'your_actual_sell_access_token')
|
41
|
+
```
|
42
|
+
|
43
|
+
## Available Endpoints
|
44
|
+
|
45
|
+
The `zendesk_sell` gem supports the following API endpoints:
|
46
|
+
|
47
|
+
- **Leads:** Manage potential customers and track leads.
|
48
|
+
- **Deals:** Create, update, and manage business opportunities.
|
49
|
+
- **Contacts:** Access and manage contact information for individuals.
|
50
|
+
- **Companies:** Organize and maintain details about companies or organizations.
|
51
|
+
- **Tasks:** Manage tasks and activities related to your sales process.
|
52
|
+
- **Users:** Retrieve and manage information about users in your Zendesk Sell account.
|
53
|
+
|
54
|
+
## Direct Initialization
|
55
|
+
|
56
|
+
Below are several examples demonstrating how to use the client with various Zendesk Sell resources.
|
57
|
+
|
58
|
+
### 1. Listing Resources
|
59
|
+
|
60
|
+
**List All Leads**
|
61
|
+
|
62
|
+
```ruby
|
63
|
+
client = ZendeskSell::Client.new
|
64
|
+
leads = client.leads.list(page: 1, per_page: 20)
|
65
|
+
puts leads
|
66
|
+
```
|
67
|
+
|
68
|
+
***List All Deals***
|
69
|
+
|
70
|
+
```ruby
|
71
|
+
deals = client.deals.list(page: 1, per_page: 20)
|
72
|
+
puts deals
|
73
|
+
```
|
74
|
+
|
75
|
+
### 2. Retrieving a Single Resource
|
76
|
+
|
77
|
+
**Retrieve a Specific Lead**
|
78
|
+
|
79
|
+
```ruby
|
80
|
+
lead_id = 123
|
81
|
+
lead = client.leads.find(lead_id)
|
82
|
+
puts "Lead Details: #{lead}"
|
83
|
+
```
|
84
|
+
|
85
|
+
**Retrieve a Specific Contact**
|
86
|
+
|
87
|
+
```ruby
|
88
|
+
contact_id = 456
|
89
|
+
contact = client.contacts.find(contact_id)
|
90
|
+
puts "Contact Details: #{contact}"
|
91
|
+
```
|
92
|
+
|
93
|
+
### 3. Creating a New Resource
|
94
|
+
|
95
|
+
**Create a New Lead**
|
96
|
+
|
97
|
+
```ruby
|
98
|
+
new_lead_attributes = {
|
99
|
+
name: "John Doe",
|
100
|
+
email: "john.doe@example.com",
|
101
|
+
phone: "+123456789"
|
102
|
+
}
|
103
|
+
created_lead = client.leads.create(new_lead_attributes)
|
104
|
+
puts "Created Lead: #{created_lead}"
|
105
|
+
```
|
106
|
+
|
107
|
+
**Create a New Deal**
|
108
|
+
|
109
|
+
```ruby
|
110
|
+
new_deal_attributes = {
|
111
|
+
title: "New Business Opportunity",
|
112
|
+
value: 5000,
|
113
|
+
currency: "USD"
|
114
|
+
}
|
115
|
+
created_deal = client.deals.create(new_deal_attributes)
|
116
|
+
puts "Created Deal: #{created_deal}"
|
117
|
+
```
|
118
|
+
|
119
|
+
### 4. Updating a Resource
|
120
|
+
|
121
|
+
**Update an Existing Lead**
|
122
|
+
|
123
|
+
```ruby
|
124
|
+
lead_id = 123
|
125
|
+
updated_attributes = { name: "Jane Doe", phone: "+1987654321" }
|
126
|
+
updated_lead = client.leads.update(lead_id, updated_attributes)
|
127
|
+
puts "Updated Lead: #{updated_lead}"
|
128
|
+
```
|
129
|
+
|
130
|
+
**Update a Company**
|
131
|
+
|
132
|
+
```ruby
|
133
|
+
company_id = 789
|
134
|
+
updated_company_attributes = { name: "Acme Corp", industry: "Technology" }
|
135
|
+
updated_company = client.companies.update(company_id, updated_company_attributes)
|
136
|
+
puts "Updated Company: #{updated_company}"
|
137
|
+
```
|
138
|
+
|
139
|
+
### 5. Deleting a Resource
|
140
|
+
|
141
|
+
**Delete a Lead**
|
142
|
+
|
143
|
+
```ruby
|
144
|
+
lead_id = 123
|
145
|
+
client.leads.delete(lead_id)
|
146
|
+
```
|
147
|
+
|
148
|
+
**Delete a Deal**
|
149
|
+
|
150
|
+
```ruby
|
151
|
+
deal_id = 456
|
152
|
+
client.deals.delete(deal_id)
|
153
|
+
```
|
154
|
+
|
155
|
+
### 6. Error Handling
|
156
|
+
|
157
|
+
|
158
|
+
```ruby
|
159
|
+
begin
|
160
|
+
lead = client.leads.find(9999) # Assuming 9999 is an invalid ID
|
161
|
+
rescue ZendeskSell::Errors::ApiError => e
|
162
|
+
puts "API Error: #{e.message}"
|
163
|
+
rescue ZendeskSell::Errors::ConnectionError => e
|
164
|
+
puts "Connection Error: #{e.message}"
|
165
|
+
end
|
166
|
+
```
|
167
|
+
|
168
|
+
### 7. Search
|
169
|
+
|
170
|
+
```ruby
|
171
|
+
results = client.leads.search(
|
172
|
+
{
|
173
|
+
"filter" => {
|
174
|
+
"filter" => {
|
175
|
+
"attribute" => { "name" => "email" },
|
176
|
+
"parameter" => { "eq" => "john.doe@example.com" }
|
177
|
+
}
|
178
|
+
},
|
179
|
+
"projection" => [
|
180
|
+
{ "name" => "id" },
|
181
|
+
{ "name" => "name" },
|
182
|
+
{ "name" => "email" }
|
183
|
+
]
|
184
|
+
}
|
185
|
+
)
|
186
|
+
```
|
187
|
+
|
188
|
+
### 8. Testing
|
189
|
+
|
190
|
+
```ruby
|
191
|
+
bundle exec rspec
|
192
|
+
```
|
193
|
+
|
194
|
+
|
195
|
+
### Contributing
|
196
|
+
|
197
|
+
Bug reports and pull requests are welcome on GitHub at <https://github.com/RTJ/zendesk_sell>.
|
198
|
+
|
199
|
+
License
|
200
|
+
|
201
|
+
This gem is available as open source under the terms of the MIT License.
|
data/Rakefile
ADDED
@@ -0,0 +1,103 @@
|
|
1
|
+
# lib/zendesk_sell/client.rb
|
2
|
+
require 'uri'
|
3
|
+
require 'net/http'
|
4
|
+
require 'json'
|
5
|
+
|
6
|
+
module ZendeskSell
|
7
|
+
class Client
|
8
|
+
attr_reader :access_token, :base_url, :base_url_v3
|
9
|
+
|
10
|
+
# Initializes the client.
|
11
|
+
# - access_token: Your Zendesk Sell access token (or use ENV['SELL_ACCESS_TOKEN']).
|
12
|
+
# - base_url: The API base URL (default: 'https://api.getbase.com/v2').
|
13
|
+
# - base_url_v3: The API base URL (default: 'https://api.getbase.com/v3').
|
14
|
+
def initialize(access_token: ENV.fetch('SELL_ACCESS_TOKEN'))
|
15
|
+
@access_token = access_token
|
16
|
+
@base_url = "https://api.getbase.com/v2"
|
17
|
+
@base_url_v3 = "https://api.getbase.com/v3"
|
18
|
+
end
|
19
|
+
|
20
|
+
# Performs an HTTP request using Net::HTTP.
|
21
|
+
# - method: Symbol (:get, :post, :put, :patch, :delete).
|
22
|
+
# - path: API endpoint path (e.g. '/leads').
|
23
|
+
# - params: Query parameters (optional).
|
24
|
+
# - payload: Request body payload (optional).
|
25
|
+
def request(method, path, params: {}, payload: nil)
|
26
|
+
headers = default_headers
|
27
|
+
|
28
|
+
# If the path is already an absolute URL, use it directly.
|
29
|
+
uri = if path =~ /\Ahttps?:\/\//
|
30
|
+
URI(path)
|
31
|
+
elsif path.include?('/v2')
|
32
|
+
URI("#{base_url}#{path}")
|
33
|
+
elsif path.include?('/v3/')
|
34
|
+
URI("#{base_url_v3}#{path}")
|
35
|
+
else
|
36
|
+
URI("#{base_url}#{path}")
|
37
|
+
end
|
38
|
+
|
39
|
+
uri.query = URI.encode_www_form(params) if params.any?
|
40
|
+
|
41
|
+
request_obj = case method.to_s.upcase
|
42
|
+
when "GET" then Net::HTTP::Get.new(uri)
|
43
|
+
when "POST" then Net::HTTP::Post.new(uri)
|
44
|
+
when "PATCH" then Net::HTTP::Patch.new(uri)
|
45
|
+
when "PUT" then Net::HTTP::Put.new(uri)
|
46
|
+
when "DELETE" then Net::HTTP::Delete.new(uri)
|
47
|
+
else
|
48
|
+
raise "Unsupported HTTP method: #{method}"
|
49
|
+
end
|
50
|
+
|
51
|
+
headers.each { |key, value| request_obj[key] = value }
|
52
|
+
request_obj.body = payload.to_json if payload
|
53
|
+
|
54
|
+
http = Net::HTTP.new(uri.host, uri.port)
|
55
|
+
http.use_ssl = (uri.scheme == "https")
|
56
|
+
response = http.request(request_obj)
|
57
|
+
|
58
|
+
unless response.is_a?(Net::HTTPSuccess)
|
59
|
+
raise Errors::ApiError.new(response)
|
60
|
+
end
|
61
|
+
|
62
|
+
JSON.parse(response.body)
|
63
|
+
rescue Errors::ApiError => e
|
64
|
+
raise e
|
65
|
+
rescue StandardError => e
|
66
|
+
raise Errors::ConnectionError.new(e.message)
|
67
|
+
end
|
68
|
+
|
69
|
+
# Default headers for requests.
|
70
|
+
def default_headers
|
71
|
+
{
|
72
|
+
'Content-Type' => 'application/json',
|
73
|
+
'Accept' => 'application/json',
|
74
|
+
'Authorization' => "Bearer #{access_token}"
|
75
|
+
}
|
76
|
+
end
|
77
|
+
|
78
|
+
# Resource accessors.
|
79
|
+
def leads
|
80
|
+
@leads ||= Resources::Leads.new(self)
|
81
|
+
end
|
82
|
+
|
83
|
+
def deals
|
84
|
+
@deals ||= Resources::Deals.new(self)
|
85
|
+
end
|
86
|
+
|
87
|
+
def contacts
|
88
|
+
@contacts ||= Resources::Contacts.new(self)
|
89
|
+
end
|
90
|
+
|
91
|
+
def companies
|
92
|
+
@companies ||= Resources::Companies.new(self)
|
93
|
+
end
|
94
|
+
|
95
|
+
def tasks
|
96
|
+
@tasks ||= Resources::Tasks.new(self)
|
97
|
+
end
|
98
|
+
|
99
|
+
def users
|
100
|
+
@users ||= Resources::Users.new(self)
|
101
|
+
end
|
102
|
+
end
|
103
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module ZendeskSell
|
2
|
+
module Errors
|
3
|
+
class ApiError < StandardError
|
4
|
+
attr_reader :code, :body
|
5
|
+
|
6
|
+
def initialize(response)
|
7
|
+
@code = response.code
|
8
|
+
@body = response.body
|
9
|
+
|
10
|
+
super("API Error: #{code} - #{body}")
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
class ConnectionError < StandardError; end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,82 @@
|
|
1
|
+
module ZendeskSell
|
2
|
+
module Resources
|
3
|
+
class BaseResource
|
4
|
+
def initialize(client)
|
5
|
+
@client = client
|
6
|
+
end
|
7
|
+
|
8
|
+
# List all resources (supports optional filtering/pagination).
|
9
|
+
def list(params = {})
|
10
|
+
@client.request(:get, endpoint, params: params)
|
11
|
+
end
|
12
|
+
|
13
|
+
# Retrieve a single resource by its ID.
|
14
|
+
def find(id, params = {})
|
15
|
+
@client.request(:get, "#{endpoint}/#{id}", params: params)
|
16
|
+
end
|
17
|
+
|
18
|
+
# Create a new resource.
|
19
|
+
# The payload structure follows the Zendesk Sell API's expected format.
|
20
|
+
def create(attributes = {})
|
21
|
+
payload = { data: { type: resource_type, attributes: attributes } }
|
22
|
+
@client.request(:post, endpoint, payload: payload)
|
23
|
+
end
|
24
|
+
|
25
|
+
# Update an existing resource by its ID.
|
26
|
+
def update(id, attributes = {})
|
27
|
+
payload = { data: attributes }
|
28
|
+
@client.request(:put, "#{endpoint}/#{id}", payload: payload)
|
29
|
+
end
|
30
|
+
|
31
|
+
# Delete a resource by its ID.
|
32
|
+
def delete(id)
|
33
|
+
@client.request(:delete, "#{endpoint}/#{id}")
|
34
|
+
end
|
35
|
+
|
36
|
+
# Search for resources using the v3 search endpoint.
|
37
|
+
# Accepts a query hash formatted per the v3 Search API.
|
38
|
+
#
|
39
|
+
# Example query for searching a contact by email:
|
40
|
+
# {
|
41
|
+
# "filter": {
|
42
|
+
# "filter": {
|
43
|
+
# "attribute": { "name": "email" },
|
44
|
+
# "parameter": { "eq": "sell@zendesk.com" }
|
45
|
+
# }
|
46
|
+
# },
|
47
|
+
# "projection": [
|
48
|
+
# { "name": "id" },
|
49
|
+
# { "name": "name" },
|
50
|
+
# { "name": "email" }
|
51
|
+
# ]
|
52
|
+
# }
|
53
|
+
def search(query = {}, per_page = 1)
|
54
|
+
payload = {
|
55
|
+
items: [
|
56
|
+
{
|
57
|
+
data: { query: query },
|
58
|
+
per_page: per_page
|
59
|
+
}
|
60
|
+
]
|
61
|
+
}
|
62
|
+
search_url = "#{@client.base_url_v3}#{endpoint}/search"
|
63
|
+
# The client.search_url(endpoint) returns an absolute URL (e.g. "https://api.getbase.com/v3/contacts/search")
|
64
|
+
@client.request(:post, search_url, payload: payload)
|
65
|
+
end
|
66
|
+
|
67
|
+
|
68
|
+
private
|
69
|
+
|
70
|
+
# Must be implemented in subclasses (e.g., '/leads', '/deals', etc.).
|
71
|
+
def endpoint
|
72
|
+
raise NotImplementedError, "You must implement the endpoint method in the subclass"
|
73
|
+
end
|
74
|
+
|
75
|
+
# Must be implemented in subclasses (e.g., 'lead', 'deal', etc.).
|
76
|
+
def resource_type
|
77
|
+
raise NotImplementedError, "You must implement the resource_type method in the subclass"
|
78
|
+
end
|
79
|
+
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
data/lib/zendesk_sell.rb
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "zendesk_sell/version"
|
4
|
+
require 'faraday'
|
5
|
+
require 'json'
|
6
|
+
|
7
|
+
require 'zendesk_sell/client'
|
8
|
+
require 'zendesk_sell/errors'
|
9
|
+
require 'zendesk_sell/resources/base_resource'
|
10
|
+
require 'zendesk_sell/resources/leads'
|
11
|
+
require 'zendesk_sell/resources/deals'
|
12
|
+
require 'zendesk_sell/resources/contacts'
|
13
|
+
require 'zendesk_sell/resources/companies'
|
14
|
+
require 'zendesk_sell/resources/tasks'
|
15
|
+
require 'zendesk_sell/resources/users'
|
16
|
+
|
17
|
+
module ZendeskSell
|
18
|
+
class Error < StandardError; end
|
19
|
+
# Your code goes here...
|
20
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative "lib/zendesk_sell/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |spec|
|
6
|
+
spec.name = "zendesk_sell"
|
7
|
+
spec.version = ZendeskSell::VERSION
|
8
|
+
spec.authors = ["Eugeniu Tambur"]
|
9
|
+
spec.email = ["eugeniu.rtj@gmail.com"]
|
10
|
+
|
11
|
+
spec.summary = "A Ruby client for the Zendesk Sell (Sales CRM) API"
|
12
|
+
spec.description = "The zendesk_sell gem provides a robust and modular Ruby interface for interacting with the Zendesk Sell API. It supports full CRUD operations on resources such as leads, deals, contacts, companies, tasks, and users using the Faraday HTTP client."
|
13
|
+
spec.homepage = "https://github.com/RTJ/zendesk_sell"
|
14
|
+
spec.license = "MIT"
|
15
|
+
spec.required_ruby_version = ">= 2.6.0"
|
16
|
+
|
17
|
+
spec.metadata["allowed_push_host"] = "https://rubygems.org"
|
18
|
+
|
19
|
+
spec.metadata["homepage_uri"] = spec.homepage
|
20
|
+
spec.metadata["source_code_uri"] = "https://github.com/RTJ/zendesk_sell"
|
21
|
+
spec.metadata["changelog_uri"] = "https://github.com/RTJ/zendesk_sell/CHANGELOG.md"
|
22
|
+
|
23
|
+
# Specify which files should be added to the gem when it is released.
|
24
|
+
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
25
|
+
spec.files = Dir.chdir(__dir__) do
|
26
|
+
`git ls-files -z`.split("\x0").reject do |f|
|
27
|
+
(File.expand_path(f) == __FILE__) ||
|
28
|
+
f.start_with?(*%w[bin/ test/ spec/ features/ .git .github appveyor Gemfile]) ||
|
29
|
+
f.end_with?('.gem')
|
30
|
+
end
|
31
|
+
end
|
32
|
+
spec.bindir = "exe"
|
33
|
+
spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
|
34
|
+
spec.require_paths = ["lib"]
|
35
|
+
|
36
|
+
|
37
|
+
# Uncomment to register a new dependency of your gem
|
38
|
+
# spec.add_dependency "example-gem", "~> 1.0"
|
39
|
+
|
40
|
+
# For more information and examples about making a new gem, check out our
|
41
|
+
# guide at: https://bundler.io/guides/creating_gem.html
|
42
|
+
|
43
|
+
end
|
metadata
ADDED
@@ -0,0 +1,66 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: zendesk_sell
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Eugeniu Tambur
|
8
|
+
bindir: exe
|
9
|
+
cert_chain: []
|
10
|
+
date: 2025-02-18 00:00:00.000000000 Z
|
11
|
+
dependencies: []
|
12
|
+
description: The zendesk_sell gem provides a robust and modular Ruby interface for
|
13
|
+
interacting with the Zendesk Sell API. It supports full CRUD operations on resources
|
14
|
+
such as leads, deals, contacts, companies, tasks, and users using the Faraday HTTP
|
15
|
+
client.
|
16
|
+
email:
|
17
|
+
- eugeniu.rtj@gmail.com
|
18
|
+
executables: []
|
19
|
+
extensions: []
|
20
|
+
extra_rdoc_files: []
|
21
|
+
files:
|
22
|
+
- ".rspec"
|
23
|
+
- ".standard.yml"
|
24
|
+
- CHANGELOG.md
|
25
|
+
- LICENSE.txt
|
26
|
+
- README.md
|
27
|
+
- Rakefile
|
28
|
+
- lib/zendesk_sell.rb
|
29
|
+
- lib/zendesk_sell/client.rb
|
30
|
+
- lib/zendesk_sell/errors.rb
|
31
|
+
- lib/zendesk_sell/resources/base_resource.rb
|
32
|
+
- lib/zendesk_sell/resources/companies.rb
|
33
|
+
- lib/zendesk_sell/resources/contacts.rb
|
34
|
+
- lib/zendesk_sell/resources/deals.rb
|
35
|
+
- lib/zendesk_sell/resources/leads.rb
|
36
|
+
- lib/zendesk_sell/resources/tasks.rb
|
37
|
+
- lib/zendesk_sell/resources/users.rb
|
38
|
+
- lib/zendesk_sell/version.rb
|
39
|
+
- sig/zendesk_sell.rbs
|
40
|
+
- zendesk_sell.gemspec
|
41
|
+
homepage: https://github.com/RTJ/zendesk_sell
|
42
|
+
licenses:
|
43
|
+
- MIT
|
44
|
+
metadata:
|
45
|
+
allowed_push_host: https://rubygems.org
|
46
|
+
homepage_uri: https://github.com/RTJ/zendesk_sell
|
47
|
+
source_code_uri: https://github.com/RTJ/zendesk_sell
|
48
|
+
changelog_uri: https://github.com/RTJ/zendesk_sell/CHANGELOG.md
|
49
|
+
rdoc_options: []
|
50
|
+
require_paths:
|
51
|
+
- lib
|
52
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
53
|
+
requirements:
|
54
|
+
- - ">="
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
version: 2.6.0
|
57
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
requirements: []
|
63
|
+
rubygems_version: 3.6.2
|
64
|
+
specification_version: 4
|
65
|
+
summary: A Ruby client for the Zendesk Sell (Sales CRM) API
|
66
|
+
test_files: []
|