basecrm 1.2.3 → 1.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 +4 -4
- data/README.md +70 -1
- data/lib/basecrm.rb +57 -1
- data/lib/basecrm/models/deal.rb +15 -3
- data/lib/basecrm/models/deal_source.rb +25 -0
- data/lib/basecrm/models/lead_source.rb +25 -0
- data/lib/basecrm/models/line_item.rb +43 -0
- data/lib/basecrm/models/order.rb +22 -0
- data/lib/basecrm/models/price.rb +13 -0
- data/lib/basecrm/models/product.rb +43 -0
- data/lib/basecrm/services/deal_sources_service.rb +133 -0
- data/lib/basecrm/services/deals_service.rb +21 -20
- data/lib/basecrm/services/lead_sources_service.rb +133 -0
- data/lib/basecrm/services/line_items_service.rb +111 -0
- data/lib/basecrm/services/orders_service.rb +129 -0
- data/lib/basecrm/services/products_service.rb +136 -0
- data/lib/basecrm/version.rb +1 -1
- data/spec/factories/deal_source.rb +11 -0
- data/spec/factories/lead_source.rb +11 -0
- data/spec/factories/line_item.rb +18 -0
- data/spec/factories/order.rb +12 -0
- data/spec/factories/product.rb +19 -0
- data/spec/services/deal_sources_service_spec.rb +58 -0
- data/spec/services/deals_service_spec.rb +2 -2
- data/spec/services/lead_sources_service_spec.rb +58 -0
- data/spec/services/line_items_service_spec.rb +62 -0
- data/spec/services/orders_service_spec.rb +64 -0
- data/spec/services/products_service_spec.rb +58 -0
- data/spec/support/client_helpers.rb +2 -2
- metadata +57 -26
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b8926293016d60459867e6e9ebf95d981b4c05b1
|
4
|
+
data.tar.gz: b1893e2462cd97f6133945ac6ee2bea1586317b6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 27725431587ba2b68687a559ad14efdcb7bd64d45232102e26708cbd967983c2d5612cf88f486db172071fdee1675f2a20f224185f05cf58ac53e0b76f157b5f
|
7
|
+
data.tar.gz: e86129dcf65d434cfecbd98a664e36e9125d84356efc2b8ebbfe979fe2256dfc832ef9455d8dfbc59d33fcd7348783e3253a62c43b420747597e3760a3dc1178
|
data/README.md
CHANGED
@@ -216,6 +216,20 @@ You should not be using floats as it may result in precision loss.
|
|
216
216
|
deal.value = 1000.98
|
217
217
|
```
|
218
218
|
|
219
|
+
### DealSource
|
220
|
+
|
221
|
+
```ruby
|
222
|
+
client = BaseCRM::Client.new(access_token: "<YOUR_PERSONAL_ACCESS_TOKEN>")
|
223
|
+
client.deal_sources # => BaseCRM::DealSourcesService
|
224
|
+
```
|
225
|
+
|
226
|
+
Actions:
|
227
|
+
* Retrieve all sources - `client.deal_sources.all`
|
228
|
+
* Create a new source - `client.deal_sources.create`
|
229
|
+
* Retrieve a single source - `client.deal_sources.find`
|
230
|
+
* Update a source - `client.deal_sources.update`
|
231
|
+
* Delete a source - `client.deal_sources.destroy`
|
232
|
+
|
219
233
|
### Lead
|
220
234
|
|
221
235
|
```ruby
|
@@ -230,6 +244,33 @@ Actions:
|
|
230
244
|
* Update a lead - `client.leads.update`
|
231
245
|
* Delete a lead - `client.leads.destroy`
|
232
246
|
|
247
|
+
### LeadSource
|
248
|
+
|
249
|
+
```ruby
|
250
|
+
client = BaseCRM::Client.new(access_token: "<YOUR_PERSONAL_ACCESS_TOKEN>")
|
251
|
+
client.lead_sources # => BaseCRM::LeadSourcesService
|
252
|
+
```
|
253
|
+
|
254
|
+
Actions:
|
255
|
+
* Retrieve all sources - `client.lead_sources.all`
|
256
|
+
* Create a new source - `client.lead_sources.create`
|
257
|
+
* Retrieve a single source - `client.lead_sources.find`
|
258
|
+
* Update a source - `client.lead_sources.update`
|
259
|
+
* Delete a source - `client.lead_sources.destroy`
|
260
|
+
|
261
|
+
### LineItem
|
262
|
+
|
263
|
+
```ruby
|
264
|
+
client = BaseCRM::Client.new(access_token: "<YOUR_PERSONAL_ACCESS_TOKEN>")
|
265
|
+
client.line_items # => BaseCRM::LineItemsService
|
266
|
+
```
|
267
|
+
|
268
|
+
Actions:
|
269
|
+
* Retrieve order's line items - `client.line_items.all`
|
270
|
+
* Create a line item - `client.line_items.create`
|
271
|
+
* Retrieve a single line item - `client.line_items.find`
|
272
|
+
* Delete a line item - `client.line_items.destroy`
|
273
|
+
|
233
274
|
### LossReason
|
234
275
|
|
235
276
|
```ruby
|
@@ -258,6 +299,20 @@ Actions:
|
|
258
299
|
* Update a note - `client.notes.update`
|
259
300
|
* Delete a note - `client.notes.destroy`
|
260
301
|
|
302
|
+
### Order
|
303
|
+
|
304
|
+
```ruby
|
305
|
+
client = BaseCRM::Client.new(access_token: "<YOUR_PERSONAL_ACCESS_TOKEN>")
|
306
|
+
client.orders # => BaseCRM::OrdersService
|
307
|
+
```
|
308
|
+
|
309
|
+
Actions:
|
310
|
+
* Retrieve all orders - `client.orders.all`
|
311
|
+
* Create an order - `client.orders.create`
|
312
|
+
* Retrieve a single order - `client.orders.find`
|
313
|
+
* Update an order - `client.orders.update`
|
314
|
+
* Delete an order - `client.orders.destroy`
|
315
|
+
|
261
316
|
### Pipeline
|
262
317
|
|
263
318
|
```ruby
|
@@ -268,7 +323,21 @@ client.pipelines # => BaseCRM::PipelinesService
|
|
268
323
|
Actions:
|
269
324
|
* Retrieve all pipelines - `client.pipelines.all`
|
270
325
|
|
271
|
-
###
|
326
|
+
### Product
|
327
|
+
|
328
|
+
```ruby
|
329
|
+
client = BaseCRM::Client.new(access_token: "<YOUR_PERSONAL_ACCESS_TOKEN>")
|
330
|
+
client.products # => BaseCRM::ProductsService
|
331
|
+
```
|
332
|
+
|
333
|
+
Actions:
|
334
|
+
* Retrieve all products - `client.products.all`
|
335
|
+
* Create a product - `client.products.create`
|
336
|
+
* Retrieve a single product - `client.products.find`
|
337
|
+
* Update a product - `client.products.update`
|
338
|
+
* Delete a product - `client.products.destroy`
|
339
|
+
|
340
|
+
### Source (Deprecated, use LeadSource or DealSource instead)
|
272
341
|
|
273
342
|
```ruby
|
274
343
|
client = BaseCRM::Client.new(access_token: "<YOUR_PERSONAL_ACCESS_TOKEN>")
|
data/lib/basecrm.rb
CHANGED
@@ -7,7 +7,7 @@ require 'basecrm/envelope'
|
|
7
7
|
require 'basecrm/configuration'
|
8
8
|
require 'basecrm/http_client'
|
9
9
|
|
10
|
-
require 'basecrm/utils/coercion
|
10
|
+
require 'basecrm/utils/coercion'
|
11
11
|
|
12
12
|
require 'basecrm/model'
|
13
13
|
require 'basecrm/models/meta'
|
@@ -16,10 +16,16 @@ require 'basecrm/models/address'
|
|
16
16
|
require 'basecrm/models/associated_contact'
|
17
17
|
require 'basecrm/models/contact'
|
18
18
|
require 'basecrm/models/deal'
|
19
|
+
require 'basecrm/models/deal_source'
|
19
20
|
require 'basecrm/models/lead'
|
21
|
+
require 'basecrm/models/lead_source'
|
22
|
+
require 'basecrm/models/line_item'
|
20
23
|
require 'basecrm/models/loss_reason'
|
21
24
|
require 'basecrm/models/note'
|
25
|
+
require 'basecrm/models/order'
|
22
26
|
require 'basecrm/models/pipeline'
|
27
|
+
require 'basecrm/models/price'
|
28
|
+
require 'basecrm/models/product'
|
23
29
|
require 'basecrm/models/source'
|
24
30
|
require 'basecrm/models/stage'
|
25
31
|
require 'basecrm/models/tag'
|
@@ -34,10 +40,15 @@ require 'basecrm/services/accounts_service'
|
|
34
40
|
require 'basecrm/services/associated_contacts_service'
|
35
41
|
require 'basecrm/services/contacts_service'
|
36
42
|
require 'basecrm/services/deals_service'
|
43
|
+
require 'basecrm/services/deal_sources_service'
|
37
44
|
require 'basecrm/services/leads_service'
|
45
|
+
require 'basecrm/services/lead_sources_service'
|
46
|
+
require 'basecrm/services/line_items_service'
|
38
47
|
require 'basecrm/services/loss_reasons_service'
|
39
48
|
require 'basecrm/services/notes_service'
|
49
|
+
require 'basecrm/services/orders_service'
|
40
50
|
require 'basecrm/services/pipelines_service'
|
51
|
+
require 'basecrm/services/products_service'
|
41
52
|
require 'basecrm/services/sources_service'
|
42
53
|
require 'basecrm/services/stages_service'
|
43
54
|
require 'basecrm/services/tags_service'
|
@@ -111,6 +122,15 @@ module BaseCRM
|
|
111
122
|
@deals ||= DealsService.new(@http_client)
|
112
123
|
end
|
113
124
|
|
125
|
+
# Access all DealSources related actions.
|
126
|
+
# @see DealSourcesService
|
127
|
+
# @see DealSource
|
128
|
+
#
|
129
|
+
# @return [DealSourcesService] Service object for resources.
|
130
|
+
def deal_sources
|
131
|
+
@deal_sources ||= DealSourcesService.new(@http_client)
|
132
|
+
end
|
133
|
+
|
114
134
|
# Access all Leads related actions.
|
115
135
|
# @see LeadsService
|
116
136
|
# @see Lead
|
@@ -120,6 +140,24 @@ module BaseCRM
|
|
120
140
|
@leads ||= LeadsService.new(@http_client)
|
121
141
|
end
|
122
142
|
|
143
|
+
# Access all LeadSources related actions.
|
144
|
+
# @see LeadSourcesService
|
145
|
+
# @see LeadSource
|
146
|
+
#
|
147
|
+
# @return [LeadSourcesService] Service object for resources.
|
148
|
+
def lead_sources
|
149
|
+
@lead_sources ||= LeadSourcesService.new(@http_client)
|
150
|
+
end
|
151
|
+
|
152
|
+
# Access all LineItems related actions.
|
153
|
+
# @see LineItemsService
|
154
|
+
# @see LineItem
|
155
|
+
#
|
156
|
+
# @return [LineItemsService] Service object for resources.
|
157
|
+
def line_items
|
158
|
+
@line_items ||= LineItemsService.new(@http_client)
|
159
|
+
end
|
160
|
+
|
123
161
|
# Access all LossReasons related actions.
|
124
162
|
# @see LossReasonsService
|
125
163
|
# @see LossReason
|
@@ -138,6 +176,15 @@ module BaseCRM
|
|
138
176
|
@notes ||= NotesService.new(@http_client)
|
139
177
|
end
|
140
178
|
|
179
|
+
# Access all Orders related actions.
|
180
|
+
# @see OrdersService
|
181
|
+
# @see Order
|
182
|
+
#
|
183
|
+
# @return [OrdersService] Service object for resources.
|
184
|
+
def orders
|
185
|
+
@orders ||= OrdersService.new(@http_client)
|
186
|
+
end
|
187
|
+
|
141
188
|
# Access all Pipelines related actions.
|
142
189
|
# @see PipelinesService
|
143
190
|
# @see Pipeline
|
@@ -147,6 +194,15 @@ module BaseCRM
|
|
147
194
|
@pipelines ||= PipelinesService.new(@http_client)
|
148
195
|
end
|
149
196
|
|
197
|
+
# Access all Products related actions.
|
198
|
+
# @see ProductsService
|
199
|
+
# @see Product
|
200
|
+
#
|
201
|
+
# @return [ProductsService] Service object for resources.
|
202
|
+
def products
|
203
|
+
@products ||= ProductsService.new(@http_client)
|
204
|
+
end
|
205
|
+
|
150
206
|
# Access all Sources related actions.
|
151
207
|
# @see SourcesService
|
152
208
|
# @see Source
|
data/lib/basecrm/models/deal.rb
CHANGED
@@ -8,9 +8,18 @@ module BaseCRM
|
|
8
8
|
# @!attribute [r] creator_id
|
9
9
|
# @return [Integer] Unique identifier of the user who created the deal.
|
10
10
|
# attr_reader :creator_id
|
11
|
+
# @!attribute [r] dropbox_email
|
12
|
+
# @return [String] Dropbox email connected with the deal.
|
13
|
+
# attr_reader :dropbox_email
|
11
14
|
# @!attribute [r] id
|
12
15
|
# @return [Integer] Unique identifier of the deal.
|
13
16
|
# attr_reader :id
|
17
|
+
# @!attribute [r] last_stage_change_at
|
18
|
+
# @return [DateTime] Date and time when the deal was moved into the current stage in UTC (ISO8601 format).
|
19
|
+
# attr_reader :last_stage_change_at
|
20
|
+
# @!attribute [r] last_stage_change_by_id
|
21
|
+
# @return [Integer] Unique identifier of the user who moved the deal into the current stage.
|
22
|
+
# attr_reader :last_stage_change_by_id
|
14
23
|
# @!attribute [r] organization_id
|
15
24
|
# @return [Integer] Unique identifier of an organization.
|
16
25
|
# attr_reader :organization_id
|
@@ -27,9 +36,12 @@ module BaseCRM
|
|
27
36
|
# @!attribute [rw] custom_fields
|
28
37
|
# @return [Hash] Custom fields are key-value data attached to a deal. See more at [Custom Fields](/docs/rest/articles/requests#custom_fields).
|
29
38
|
# attr_accessor :custom_fields
|
30
|
-
# @!attribute [rw]
|
31
|
-
# @return [
|
32
|
-
# attr_accessor :
|
39
|
+
# @!attribute [rw] customized_win_likelihood
|
40
|
+
# @return [Integer] User-provided win likelihood with value range 0–100.
|
41
|
+
# attr_accessor :customized_win_likelihood
|
42
|
+
# @!attribute [rw] estimated_close_date
|
43
|
+
# @return [String] Estimated close date of the deal
|
44
|
+
# attr_accessor :estimated_close_date
|
33
45
|
# @!attribute [rw] hot
|
34
46
|
# @return [Boolean] Indicator of whether or not the deal is hot.
|
35
47
|
# attr_accessor :hot
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# WARNING: This code is auto-generated from the BaseCRM API Discovery JSON Schema
|
2
|
+
|
3
|
+
module BaseCRM
|
4
|
+
class DealSource < Model
|
5
|
+
# @!attribute [r] created_at
|
6
|
+
# @return [String] Date and time of creation in UTC (ISO 8601 format).
|
7
|
+
# attr_reader :created_at
|
8
|
+
# @!attribute [r] creator_id
|
9
|
+
# @return [Integer] Unique identifier of the user that created the source.
|
10
|
+
# attr_reader :creator_id
|
11
|
+
# @!attribute [r] id
|
12
|
+
# @return [Integer] Unique identifier of the deal source.
|
13
|
+
# attr_reader :id
|
14
|
+
# @!attribute [r] updated_at
|
15
|
+
# @return [String] Date and time of the last update in UTC (ISO 8601 format).
|
16
|
+
# attr_reader :updated_at
|
17
|
+
|
18
|
+
# @!attribute [rw] name
|
19
|
+
# @return [String] Name of the source.
|
20
|
+
# attr_accessor :name
|
21
|
+
# @!attribute [rw] resource_type
|
22
|
+
# @return [String] Type name of the resource the source is attached to. Possible values: deal
|
23
|
+
# attr_accessor :resource_type
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# WARNING: This code is auto-generated from the BaseCRM API Discovery JSON Schema
|
2
|
+
|
3
|
+
module BaseCRM
|
4
|
+
class LeadSource < Model
|
5
|
+
# @!attribute [r] created_at
|
6
|
+
# @return [String] Date and time of creation in UTC (ISO 8601 format).
|
7
|
+
# attr_reader :created_at
|
8
|
+
# @!attribute [r] creator_id
|
9
|
+
# @return [Integer] Unique identifier of the user that created the source.
|
10
|
+
# attr_reader :creator_id
|
11
|
+
# @!attribute [r] id
|
12
|
+
# @return [Integer] Unique identifier of the lead source.
|
13
|
+
# attr_reader :id
|
14
|
+
# @!attribute [r] updated_at
|
15
|
+
# @return [String] Date and time of the last update in UTC (ISO 8601 format).
|
16
|
+
# attr_reader :updated_at
|
17
|
+
|
18
|
+
# @!attribute [rw] name
|
19
|
+
# @return [String] Name of the source.
|
20
|
+
# attr_accessor :name
|
21
|
+
# @!attribute [rw] resource_type
|
22
|
+
# @return [String] Type name of the resource the source is attached to. Possible values: lead
|
23
|
+
# attr_accessor :resource_type
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
# WARNING: This code is auto-generated from the BaseCRM API Discovery JSON Schema
|
2
|
+
|
3
|
+
module BaseCRM
|
4
|
+
class LineItem < Model
|
5
|
+
# @!attribute [r] id
|
6
|
+
# @return [Integer] Unique identifier of the line item.
|
7
|
+
# attr_reader :id
|
8
|
+
# @!attribute [r] name
|
9
|
+
# @return [String] Name of the product. Value is copied from the product.
|
10
|
+
# attr_reader :name
|
11
|
+
# @!attribute [r] sku
|
12
|
+
# @return [String] Stock Keeping Unit identification code. Value is copied from the product.
|
13
|
+
# attr_reader :sku
|
14
|
+
# @!attribute [r] description
|
15
|
+
# @return [String] Description of the product. Value is copied from the product.
|
16
|
+
# attr_reader :description
|
17
|
+
# @!attribute [r] created_at
|
18
|
+
# @return [DateTime] Date and time that the line item was created in UTC (ISO8601 format).
|
19
|
+
# attr_reader :created_at
|
20
|
+
# @!attribute [r] updated_at
|
21
|
+
# @return [DateTime] Date and time of the last update on the line item in UTC (ISO8601 format).
|
22
|
+
# attr_reader :updated_at
|
23
|
+
|
24
|
+
# @!attribute [rw] product_id
|
25
|
+
# @return [Integer] Unique identifier of the product based on which line item is created. It is not available after creation.
|
26
|
+
# attr_accessor :product_id
|
27
|
+
# @!attribute [rw] value
|
28
|
+
# @return [Integer] Value of one unit of the product. It is product’s price after applying markup.
|
29
|
+
# attr_accessor :value
|
30
|
+
# @!attribute [rw] variation
|
31
|
+
# @return [Integer] Variation of the product’s price for this line item. Value of 5 means that 5% markup is added, -10 means there is a 10% discount.
|
32
|
+
# attr_accessor :variation
|
33
|
+
# @!attribute [rw] currency
|
34
|
+
# @return [String] Currency of value and price, specified in 3-character currency code (ISO4217) format.
|
35
|
+
# attr_accessor :currency
|
36
|
+
# @!attribute [rw] quantity
|
37
|
+
# @return [Integer] Quantity of the product included in this line item. Default value is 1.
|
38
|
+
# attr_accessor :quantity
|
39
|
+
# @!attribute [rw] price
|
40
|
+
# @return [Integer] Price of one unit of the product. Value is copied from the product.
|
41
|
+
# attr_accessor :price
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# WARNING: This code is auto-generated from the BaseCRM API Discovery JSON Schema
|
2
|
+
|
3
|
+
module BaseCRM
|
4
|
+
class Order < Model
|
5
|
+
# @!attribute [r] id
|
6
|
+
# @return [Integer] Unique identifier of the order.
|
7
|
+
# attr_reader :id
|
8
|
+
# @!attribute [r] created_at
|
9
|
+
# @return [DateTime] Date and time that the order was created in UTC (ISO8601 format).
|
10
|
+
# attr_reader :created_at
|
11
|
+
# @!attribute [r] updated_at
|
12
|
+
# @return [DateTime] Date and time of the last update on the order in UTC (ISO8601 format).
|
13
|
+
# attr_reader :updated_at
|
14
|
+
|
15
|
+
# @!attribute [rw] deal_id
|
16
|
+
# @return [Integer] ID of the deal the order is associated to.
|
17
|
+
# attr_accessor :deal_id
|
18
|
+
# @!attribute [rw] discount
|
19
|
+
# @return [Integer] Discount on the whole order in percents.
|
20
|
+
# attr_accessor :discount
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
# WARNING: This code is auto-generated from the BaseCRM API Discovery JSON Schema
|
2
|
+
|
3
|
+
module BaseCRM
|
4
|
+
class Price < Model
|
5
|
+
|
6
|
+
# @!attribute [rw] amount
|
7
|
+
# @return [Integer] Price amount
|
8
|
+
# attr_accessor :amount
|
9
|
+
# @!attribute [rw] currency
|
10
|
+
# @return [String] Price currency
|
11
|
+
# attr_accessor :currency
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
# WARNING: This code is auto-generated from the BaseCRM API Discovery JSON Schema
|
2
|
+
|
3
|
+
module BaseCRM
|
4
|
+
class Product < Model
|
5
|
+
# @!attribute [r] id
|
6
|
+
# @return [Integer] Unique identifier of the product.
|
7
|
+
# attr_reader :id
|
8
|
+
# @!attribute [r] created_at
|
9
|
+
# @return [DateTime] Date and time that the product was created in UTC (ISO8601 format).
|
10
|
+
# attr_reader :created_at
|
11
|
+
# @!attribute [r] updated_at
|
12
|
+
# @return [DateTime] Date and time of the last update on the product in UTC (ISO8601 format).
|
13
|
+
# attr_reader :updated_at
|
14
|
+
|
15
|
+
# @!attribute [rw] name
|
16
|
+
# @return [String] Name of the product.
|
17
|
+
# attr_accessor :name
|
18
|
+
# @!attribute [rw] description
|
19
|
+
# @return [String] Description of the product.
|
20
|
+
# attr_accessor :description
|
21
|
+
# @!attribute [rw] sku
|
22
|
+
# @return [String] Stock Keeping Unit identification code.
|
23
|
+
# attr_accessor :sku
|
24
|
+
# @!attribute [rw] active
|
25
|
+
# @return [Boolean] Indicator of whether the product is active. Line items cannot be created from inactive products.
|
26
|
+
# attr_accessor :active
|
27
|
+
# @!attribute [rw] max_discount
|
28
|
+
# @return [Integer] Maximum discount that can be applied to the product in percents.
|
29
|
+
# attr_accessor :max_discount
|
30
|
+
# @!attribute [rw] max_markup
|
31
|
+
# @return [Integer] Maximum markup that can be applied to the product in percents.
|
32
|
+
# attr_accessor :max_markup
|
33
|
+
# @!attribute [rw] cost
|
34
|
+
# @return [Integer] Cost of the product. Visible only to account administrators.
|
35
|
+
# attr_accessor :cost
|
36
|
+
# @!attribute [rw] cost_currency
|
37
|
+
# @return [String] Currency of the product cost, specified in 3-character currency code (ISO4217) format. Visible only to account administrators.
|
38
|
+
# attr_accessor :cost_currency
|
39
|
+
# @!attribute [rw] prices
|
40
|
+
# @return [Array<Price>] Array specifying products prices in different currencies.
|
41
|
+
# attr_accessor :prices
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,133 @@
|
|
1
|
+
# WARNING: This code is auto-generated from the BaseCRM API Discovery JSON Schema
|
2
|
+
|
3
|
+
module BaseCRM
|
4
|
+
class DealSourcesService
|
5
|
+
OPTS_KEYS_TO_PERSIST = Set[:name, :resource_type]
|
6
|
+
|
7
|
+
def initialize(client)
|
8
|
+
@client = client
|
9
|
+
end
|
10
|
+
|
11
|
+
# Retrieve all sources
|
12
|
+
#
|
13
|
+
# get '/deal_sources'
|
14
|
+
#
|
15
|
+
# If you want to use filtering or sorting (see #where).
|
16
|
+
# @return [Enumerable] Paginated resource you can use to iterate over all the resources.
|
17
|
+
def all
|
18
|
+
PaginatedResource.new(self)
|
19
|
+
end
|
20
|
+
|
21
|
+
# Retrieve all sources
|
22
|
+
#
|
23
|
+
# get '/deal_sources'
|
24
|
+
#
|
25
|
+
# Returns all deal sources available to the user according to the parameters provided
|
26
|
+
#
|
27
|
+
# @param options [Hash] Search options
|
28
|
+
# @option options [String] :ids Comma-separated list of deal source IDs to be returned in a request.
|
29
|
+
# @option options [String] :name Name of the source to search for. This parameter is used in a strict sense.
|
30
|
+
# @option options [Integer] :page (1) Page number to start from. Page numbering starts at 1, and omitting the `page` parameter will return the first page.
|
31
|
+
# @option options [Integer] :per_page (25) Number of records to return per page. The default limit is *25* and the maximum number that can be returned is *100*.
|
32
|
+
# @option options [String] :sort_by (id:asc) A field to sort by. The **default** ordering is **ascending**. If you want to change the sort order to descending, append `:desc` to the field e.g. `sort_by=name:desc`.
|
33
|
+
# @return [Array<DealSource>] The list of DealSources for the first page, unless otherwise specified.
|
34
|
+
def where(options = {})
|
35
|
+
_, _, root = @client.get("/deal_sources", options)
|
36
|
+
|
37
|
+
root[:items].map{ |item| DealSource.new(item[:data]) }
|
38
|
+
end
|
39
|
+
|
40
|
+
|
41
|
+
# Create a new source
|
42
|
+
#
|
43
|
+
# post '/deal_sources'
|
44
|
+
#
|
45
|
+
# Creates a new source
|
46
|
+
# <figure class="notice">
|
47
|
+
# Source's name **must** be unique
|
48
|
+
# </figure>
|
49
|
+
#
|
50
|
+
# @param deal_source [DealSource, Hash] Either object of the DealSource type or Hash. This object's attributes describe the object to be created.
|
51
|
+
# @return [DealSource] The resulting object represting created resource.
|
52
|
+
def create(deal_source)
|
53
|
+
validate_type!(deal_source)
|
54
|
+
|
55
|
+
attributes = sanitize(deal_source)
|
56
|
+
_, _, root = @client.post("/deal_sources", attributes)
|
57
|
+
|
58
|
+
DealSource.new(root[:data])
|
59
|
+
end
|
60
|
+
|
61
|
+
|
62
|
+
# Retrieve a single source
|
63
|
+
#
|
64
|
+
# get '/deal_sources/{id}'
|
65
|
+
#
|
66
|
+
# Returns a single source available to the user by the provided id
|
67
|
+
# If a source with the supplied unique identifier does not exist it returns an error
|
68
|
+
#
|
69
|
+
# @param id [Integer] Unique identifier of a DealSource
|
70
|
+
# @return [DealSource] Searched resource object.
|
71
|
+
def find(id)
|
72
|
+
_, _, root = @client.get("/deal_sources/#{id}")
|
73
|
+
|
74
|
+
DealSource.new(root[:data])
|
75
|
+
end
|
76
|
+
|
77
|
+
|
78
|
+
# Update a source
|
79
|
+
#
|
80
|
+
# put '/deal_sources/{id}'
|
81
|
+
#
|
82
|
+
# Updates source information
|
83
|
+
# If the specified source does not exist, the request will return an error
|
84
|
+
# <figure class="notice">
|
85
|
+
# If you want to update a source, you **must** make sure source's name is unique
|
86
|
+
# </figure>
|
87
|
+
#
|
88
|
+
# @param deal_source [DealSource, Hash] Either object of the DealSource type or Hash. This object's attributes describe the object to be updated.
|
89
|
+
# @return [DealSource] The resulting object represting updated resource.
|
90
|
+
def update(deal_source)
|
91
|
+
validate_type!(deal_source)
|
92
|
+
params = extract_params!(deal_source, :id)
|
93
|
+
id = params[:id]
|
94
|
+
|
95
|
+
attributes = sanitize(deal_source)
|
96
|
+
_, _, root = @client.put("/deal_sources/#{id}", attributes)
|
97
|
+
|
98
|
+
DealSource.new(root[:data])
|
99
|
+
end
|
100
|
+
|
101
|
+
|
102
|
+
# Delete a source
|
103
|
+
#
|
104
|
+
# delete '/deal_sources/{id}'
|
105
|
+
#
|
106
|
+
# Delete an existing source
|
107
|
+
# If the specified source does not exist, the request will return an error
|
108
|
+
# This operation cannot be undone
|
109
|
+
#
|
110
|
+
# @param id [Integer] Unique identifier of a DealSource
|
111
|
+
# @return [Boolean] Status of the operation.
|
112
|
+
def destroy(id)
|
113
|
+
status, _, _ = @client.delete("/deal_sources/#{id}")
|
114
|
+
status == 204
|
115
|
+
end
|
116
|
+
|
117
|
+
|
118
|
+
private
|
119
|
+
def validate_type!(deal_source)
|
120
|
+
raise TypeError unless deal_source.is_a?(DealSource) || deal_source.is_a?(Hash)
|
121
|
+
end
|
122
|
+
|
123
|
+
def extract_params!(deal_source, *args)
|
124
|
+
params = deal_source.to_h.select{ |k, _| args.include?(k) }
|
125
|
+
raise ArgumentError, "one of required attributes is missing. Expected: #{args.join(',')}" if params.count != args.length
|
126
|
+
params
|
127
|
+
end
|
128
|
+
|
129
|
+
def sanitize(deal_source)
|
130
|
+
deal_source.to_h.select { |k, _| OPTS_KEYS_TO_PERSIST.include?(k) }
|
131
|
+
end
|
132
|
+
end
|
133
|
+
end
|