paperdrive 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (49) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +12 -0
  3. data/.rspec +3 -0
  4. data/.rubocop.yml +18 -0
  5. data/.travis.yml +9 -0
  6. data/CHANGELOG.md +29 -0
  7. data/Gemfile +8 -0
  8. data/Gemfile.lock +75 -0
  9. data/README.md +120 -0
  10. data/Rakefile +8 -0
  11. data/bin/console +15 -0
  12. data/bin/setup +8 -0
  13. data/lib/paperdrive/client/activities.rb +92 -0
  14. data/lib/paperdrive/client/activity_fields.rb +36 -0
  15. data/lib/paperdrive/client/activity_types.rb +77 -0
  16. data/lib/paperdrive/client/currencies.rb +26 -0
  17. data/lib/paperdrive/client/deal_fields.rb +87 -0
  18. data/lib/paperdrive/client/deals.rb +335 -0
  19. data/lib/paperdrive/client/filters.rb +87 -0
  20. data/lib/paperdrive/client/global_messages.rb +38 -0
  21. data/lib/paperdrive/client/mail_messages.rb +26 -0
  22. data/lib/paperdrive/client/mail_threads.rb +75 -0
  23. data/lib/paperdrive/client/note_fields.rb +25 -0
  24. data/lib/paperdrive/client/notes.rb +74 -0
  25. data/lib/paperdrive/client/organization_fields.rb +87 -0
  26. data/lib/paperdrive/client/organization_relationships.rb +75 -0
  27. data/lib/paperdrive/client/organizations.rb +233 -0
  28. data/lib/paperdrive/client/permission_sets.rb +89 -0
  29. data/lib/paperdrive/client/person_fields.rb +87 -0
  30. data/lib/paperdrive/client/persons.rb +258 -0
  31. data/lib/paperdrive/client/pipelines.rb +111 -0
  32. data/lib/paperdrive/client/product_fields.rb +87 -0
  33. data/lib/paperdrive/client/products.rb +160 -0
  34. data/lib/paperdrive/client/recents.rb +27 -0
  35. data/lib/paperdrive/client/roles.rb +149 -0
  36. data/lib/paperdrive/client/search_results.rb +39 -0
  37. data/lib/paperdrive/client/stages.rb +98 -0
  38. data/lib/paperdrive/client/user_connections.rb +26 -0
  39. data/lib/paperdrive/client/user_settings.rb +26 -0
  40. data/lib/paperdrive/client/users.rb +235 -0
  41. data/lib/paperdrive/client/webhooks.rb +50 -0
  42. data/lib/paperdrive/client.rb +122 -0
  43. data/lib/paperdrive/error.rb +42 -0
  44. data/lib/paperdrive/parameters.rb +34 -0
  45. data/lib/paperdrive/response.rb +42 -0
  46. data/lib/paperdrive/version.rb +6 -0
  47. data/lib/paperdrive.rb +7 -0
  48. data/paperdrive.gemspec +33 -0
  49. metadata +203 -0
@@ -0,0 +1,258 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'paperdrive/parameters'
4
+
5
+ module Paperdrive
6
+ class Client
7
+ # Instance methods related to Persons to embed into Paperdrive::Client<br>
8
+ # arguments are compatible with the Pipedribe API.
9
+ #
10
+ # @see https://developers.pipedrive.com/docs/api/v1/#!/Persons
11
+ module Persons
12
+ include Paperdrive::Parameters
13
+
14
+ # [GET] Get all persons
15
+ #
16
+ # @see https://developers.pipedrive.com/docs/api/v1/#!/Persons/get_persons
17
+ # @return [Paperdrive::Response]
18
+ def all_persons(**args)
19
+ params = parameters(args) do
20
+ optional_params :user_id, :filter_id, :first_char, :start, :limit, :sort
21
+ end
22
+ request(:get, 'persons', params)
23
+ end
24
+
25
+ # [GET] Find persons by name
26
+ #
27
+ # @see https://developers.pipedrive.com/docs/api/v1/#!/Persons/get_persons_find
28
+ # @return [Paperdrive::Response]
29
+ def find_persons_by_name(**args)
30
+ params = parameters(args) do
31
+ required_params :term
32
+ optional_params :term, :org_id, :start, :limit, :search_by_email
33
+ end
34
+ request(:get, 'persons/find', params)
35
+ end
36
+
37
+ # [GET] Get details of a person
38
+ #
39
+ # @param [integer] id:
40
+ # @see https://developers.pipedrive.com/docs/api/v1/#!/Persons/get_persons_id
41
+ # @return [Paperdrive::Response]
42
+ def person(id:, **args)
43
+ params = parameters(args) do
44
+ optional_params
45
+ end
46
+ request(:get, "persons/#{id}", params)
47
+ end
48
+
49
+ # [GET] List activities associated with a person
50
+ #
51
+ # @param [integer] id:
52
+ # @see https://developers.pipedrive.com/docs/api/v1/#!/Persons/get_persons_id_activities
53
+ # @return [Paperdrive::Response]
54
+ def person_activities(id:, **args)
55
+ params = parameters(args) do
56
+ optional_params :start, :limit, :done, :exclude
57
+ end
58
+ request(:get, "persons/#{id}/activities", params)
59
+ end
60
+
61
+ # [GET] List deals associated with a person
62
+ #
63
+ # @param [integer] id:
64
+ # @see https://developers.pipedrive.com/docs/api/v1/#!/Persons/get_persons_id_deals
65
+ # @return [Paperdrive::Response]
66
+ def person_deals(id:, **args)
67
+ params = parameters(args) do
68
+ optional_params :start, :limit, :status, :sort
69
+ end
70
+ request(:get, "persons/#{id}/deals", params)
71
+ end
72
+
73
+ # [GET] List files attached to a person
74
+ #
75
+ # @param [integer] id:
76
+ # @see https://developers.pipedrive.com/docs/api/v1/#!/Persons/get_persons_id_files
77
+ # @return [Paperdrive::Response]
78
+ def person_files(id:, **args)
79
+ params = parameters(args) do
80
+ optional_params :start, :limit, :include_deleted_files, :sort
81
+ end
82
+ request(:get, "persons/#{id}/files", params)
83
+ end
84
+
85
+ # [GET] List updates about a person
86
+ #
87
+ # @param [integer] id:
88
+ # @see https://developers.pipedrive.com/docs/api/v1/#!/Persons/get_persons_id_flow
89
+ # @return [Paperdrive::Response]
90
+ def person_updates(id:, **args)
91
+ params = parameters(args) do
92
+ optional_params :start, :limit
93
+ end
94
+ request(:get, "persons/#{id}/flow", params)
95
+ end
96
+
97
+ # [GET] List followers of a person
98
+ #
99
+ # @param [integer] id:
100
+ # @see https://developers.pipedrive.com/docs/api/v1/#!/Persons/get_persons_id_followers
101
+ # @return [Paperdrive::Response]
102
+ def person_followers(id:, **args)
103
+ params = parameters(args) do
104
+ optional_params
105
+ end
106
+ request(:get, "persons/#{id}/followers", params)
107
+ end
108
+
109
+ # [GET] List mail messages associated with a person
110
+ #
111
+ # @param [integer] id:
112
+ # @see https://developers.pipedrive.com/docs/api/v1/#!/Persons/get_persons_id_mailMessages
113
+ # @return [Paperdrive::Response]
114
+ def person_mail_messages(id:, **args)
115
+ params = parameters(args) do
116
+ optional_params :start, :limit
117
+ end
118
+ request(:get, "persons/#{id}/mailMessages", params)
119
+ end
120
+
121
+ # [GET] List permitted users
122
+ #
123
+ # @param [integer] id:
124
+ # @see https://developers.pipedrive.com/docs/api/v1/#!/Persons/get_persons_id_permittedUsers
125
+ # @return [Paperdrive::Response]
126
+ def person_permitted_users(id:, **args)
127
+ params = parameters(args) do
128
+ optional_params :access_level
129
+ end
130
+ request(:get, "persons/#{id}/permittedUsers", params)
131
+ end
132
+
133
+ # [GET] List products associated with a person
134
+ #
135
+ # @param [integer] id:
136
+ # @see https://developers.pipedrive.com/docs/api/v1/#!/Persons/get_persons_id_products
137
+ # @return [Paperdrive::Response]
138
+ def person_products(id:, **args)
139
+ params = parameters(args) do
140
+ optional_params :start, :limit
141
+ end
142
+ request(:get, "persons/#{id}/products", params)
143
+ end
144
+
145
+ # [POST] Add a person
146
+ #
147
+ # @see https://developers.pipedrive.com/docs/api/v1/#!/Persons/post_persons
148
+ # @return [Paperdrive::Response]
149
+ def create_person(**args)
150
+ params = parameters(args) do
151
+ required_params :name
152
+ optional_params :name, :owner_id, :org_id, :email, :phone, :visible_to, :add_time
153
+ end
154
+ request(:post, 'persons', params)
155
+ end
156
+
157
+ # [POST] Add a follower to a person
158
+ #
159
+ # @param [integer] id:
160
+ # @see https://developers.pipedrive.com/docs/api/v1/#!/Persons/post_persons_id_followers
161
+ # @return [Paperdrive::Response]
162
+ def create_person_follower(id:, **args)
163
+ params = parameters(args) do
164
+ required_params :user_id
165
+ optional_params :user_id
166
+ end
167
+ request(:post, "persons/#{id}/followers", params)
168
+ end
169
+
170
+ # [POST] Add person picture
171
+ #
172
+ # @param [integer] id:
173
+ # @see https://developers.pipedrive.com/docs/api/v1/#!/Persons/post_persons_id_picture
174
+ # @return [Paperdrive::Response]
175
+ # def create_person_picture(id:, **args)
176
+ # params = parameters(args) do
177
+ # required_params :file
178
+ # optional_params :file, :crop_x, :crop_y, :crop_width, :crop_height
179
+ # end
180
+ # request(:post, "persons/#{id}/picture", params)
181
+ # end
182
+
183
+ # [PUT] Update a person
184
+ #
185
+ # @param [integer] id:
186
+ # @see https://developers.pipedrive.com/docs/api/v1/#!/Persons/put_persons_id
187
+ # @return [Paperdrive::Response]
188
+ def update_person(id:, **args)
189
+ params = parameters(args) do
190
+ optional_params :name, :owner_id, :org_id, :email, :phone, :visible_to
191
+ end
192
+ request(:put, "persons/#{id}", params)
193
+ end
194
+
195
+ # [PUT] Merge two persons
196
+ #
197
+ # @param [integer] id:
198
+ # @see https://developers.pipedrive.com/docs/api/v1/#!/Persons/put_persons_id_merge
199
+ # @return [Paperdrive::Response]
200
+ def merge_persons(id:, **args)
201
+ params = parameters(args) do
202
+ required_params :merge_with_id
203
+ optional_params :merge_with_id
204
+ end
205
+ request(:put, "persons/#{id}/merge", params)
206
+ end
207
+
208
+ # [DELETE] Delete multiple persons in bulk
209
+ #
210
+ # @see https://developers.pipedrive.com/docs/api/v1/#!/Persons/delete_persons
211
+ # @return [Paperdrive::Response]
212
+ def delete_persons(**args)
213
+ params = parameters(args) do
214
+ required_params :ids
215
+ optional_params :ids
216
+ end
217
+ request(:delete, 'persons', params)
218
+ end
219
+
220
+ # [DELETE] Delete a person
221
+ #
222
+ # @param [integer] id:
223
+ # @see https://developers.pipedrive.com/docs/api/v1/#!/Persons/delete_persons_id
224
+ # @return [Paperdrive::Response]
225
+ def delete_person(id:, **args)
226
+ params = parameters(args) do
227
+ optional_params
228
+ end
229
+ request(:delete, "persons/#{id}", params)
230
+ end
231
+
232
+ # [DELETE] Delete a follower from a person
233
+ #
234
+ # @param [integer] id:
235
+ # @param [integer] follower_id:
236
+ # @see https://developers.pipedrive.com/docs/api/v1/#!/Persons/delete_persons_id_followers_follower_id
237
+ # @return [Paperdrive::Response]
238
+ def delete_person_follower(id:, follower_id:, **args)
239
+ params = parameters(args) do
240
+ optional_params
241
+ end
242
+ request(:delete, "persons/#{id}/followers/#{follower_id}", params)
243
+ end
244
+
245
+ # [DELETE] Delete person picture
246
+ #
247
+ # @param [integer] id:
248
+ # @see https://developers.pipedrive.com/docs/api/v1/#!/Persons/delete_persons_id_picture
249
+ # @return [Paperdrive::Response]
250
+ def delete_person_picture(id:, **args)
251
+ params = parameters(args) do
252
+ optional_params
253
+ end
254
+ request(:delete, "persons/#{id}/picture", params)
255
+ end
256
+ end
257
+ end
258
+ end
@@ -0,0 +1,111 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'paperdrive/parameters'
4
+
5
+ module Paperdrive
6
+ class Client
7
+ # Instance methods related to Pipelines to embed into Paperdrive::Client<br>
8
+ # arguments are compatible with the Pipedribe API.
9
+ #
10
+ # @see https://developers.pipedrive.com/docs/api/v1/#!/Pipelines
11
+ module Pipelines
12
+ include Paperdrive::Parameters
13
+
14
+ # [GET] Get all pipelines
15
+ #
16
+ # @see https://developers.pipedrive.com/docs/api/v1/#!/Pipelines/get_pipelines
17
+ # @return [Paperdrive::Response]
18
+ def all_pipelines(**args)
19
+ params = parameters(args) do
20
+ optional_params
21
+ end
22
+ request(:get, 'pipelines', params)
23
+ end
24
+
25
+ # [GET] Get one pipeline
26
+ #
27
+ # @param [integer] id:
28
+ # @see https://developers.pipedrive.com/docs/api/v1/#!/Pipelines/get_pipelines_id
29
+ # @return [Paperdrive::Response]
30
+ def pipeline(id:, **args)
31
+ params = parameters(args) do
32
+ optional_params :totals_convert_currency
33
+ end
34
+ request(:get, "pipelines/#{id}", params)
35
+ end
36
+
37
+ # [GET] Get deals conversion rates in pipeline
38
+ #
39
+ # @param [integer] id:
40
+ # @see https://developers.pipedrive.com/docs/api/v1/#!/Pipelines/get_pipelines_id_conversion_statistics
41
+ # @return [Paperdrive::Response]
42
+ def pipeline_deals_cvr(id:, **args)
43
+ params = parameters(args) do
44
+ required_params :start_date, :end_date
45
+ optional_params :start_date, :end_date, :user_id
46
+ end
47
+ request(:get, "pipelines/#{id}/conversion_statistics", params)
48
+ end
49
+
50
+ # [GET] Get deals in a pipeline
51
+ #
52
+ # @param [integer] id:
53
+ # @see https://developers.pipedrive.com/docs/api/v1/#!/Pipelines/get_pipelines_id_deals
54
+ # @return [Paperdrive::Response]
55
+ def pipeline_deals(id:, **args)
56
+ params = parameters(args) do
57
+ optional_params :filter_id, :user_id, :everyone, :stage_id, :start, :limit, :get_summary, :totals_convert_currency
58
+ end
59
+ request(:get, "pipelines/#{id}/deals", params)
60
+ end
61
+
62
+ # [GET] Get deals movements in pipeline
63
+ #
64
+ # @param [integer] id:
65
+ # @see https://developers.pipedrive.com/docs/api/v1/#!/Pipelines/get_pipelines_id_movement_statistics
66
+ # @return [Paperdrive::Response]
67
+ def pipeline_deals_movements(id:, **args)
68
+ params = parameters(args) do
69
+ required_params :start_date, :end_date
70
+ optional_params :start_date, :end_date, :user_id
71
+ end
72
+ request(:get, "pipelines/#{id}/movement_statistics", params)
73
+ end
74
+
75
+ # [POST] Add a new pipeline
76
+ #
77
+ # @see https://developers.pipedrive.com/docs/api/v1/#!/Pipelines/post_pipelines
78
+ # @return [Paperdrive::Response]
79
+ def create_pipeline(**args)
80
+ params = parameters(args) do
81
+ optional_params :name, :deal_probability, :order_nr, :active
82
+ end
83
+ request(:post, 'pipelines', params)
84
+ end
85
+
86
+ # [PUT] Edit a pipeline
87
+ #
88
+ # @param [integer] id:
89
+ # @see https://developers.pipedrive.com/docs/api/v1/#!/Pipelines/put_pipelines_id
90
+ # @return [Paperdrive::Response]
91
+ def update_pipeline(id:, **args)
92
+ params = parameters(args) do
93
+ optional_params :name, :deal_probability, :order_nr, :active
94
+ end
95
+ request(:put, "pipelines/#{id}", params)
96
+ end
97
+
98
+ # [DELETE] Delete a pipeline
99
+ #
100
+ # @param [integer] id:
101
+ # @see https://developers.pipedrive.com/docs/api/v1/#!/Pipelines/delete_pipelines_id
102
+ # @return [Paperdrive::Response]
103
+ def delete_pipeline(id:, **args)
104
+ params = parameters(args) do
105
+ optional_params
106
+ end
107
+ request(:delete, "pipelines/#{id}", params)
108
+ end
109
+ end
110
+ end
111
+ end
@@ -0,0 +1,87 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'paperdrive/parameters'
4
+
5
+ module Paperdrive
6
+ class Client
7
+ # Instance methods related to ProductFields to embed into Paperdrive::Client<br>
8
+ # arguments are compatible with the Pipedribe API.
9
+ #
10
+ # @see https://developers.pipedrive.com/docs/api/v1/#!/ProductFields
11
+ module ProductFields
12
+ include Paperdrive::Parameters
13
+
14
+ # [GET] Get all product fields
15
+ #
16
+ # @see https://developers.pipedrive.com/docs/api/v1/#!/ProductFields/get_productFields
17
+ # @return [Paperdrive::Response]
18
+ def all_product_fields(**args)
19
+ params = parameters(args) do
20
+ optional_params
21
+ end
22
+ request(:get, 'productFields', params)
23
+ end
24
+
25
+ # [GET] Get one product field
26
+ #
27
+ # @param [integer] id:
28
+ # @see https://developers.pipedrive.com/docs/api/v1/#!/ProductFields/get_productFields_id
29
+ # @return [Paperdrive::Response]
30
+ def product_field(id:, **args)
31
+ params = parameters(args) do
32
+ optional_params
33
+ end
34
+ request(:get, "productFields/#{id}", params)
35
+ end
36
+
37
+ # [POST] Add a new product field
38
+ #
39
+ # @see https://developers.pipedrive.com/docs/api/v1/#!/ProductFields/post_productFields
40
+ # @return [Paperdrive::Response]
41
+ def create_product_field(**args)
42
+ params = parameters(args) do
43
+ required_params :name, :field_type
44
+ optional_params :name, :field_type, :options
45
+ end
46
+ request(:post, 'productFields', params)
47
+ end
48
+
49
+ # [PUT] Update a product field
50
+ #
51
+ # @param [integer] id:
52
+ # @see https://developers.pipedrive.com/docs/api/v1/#!/ProductFields/put_productFields_id
53
+ # @return [Paperdrive::Response]
54
+ def update_product_field(id:, **args)
55
+ params = parameters(args) do
56
+ required_params :name
57
+ optional_params :name, :options
58
+ end
59
+ request(:put, "productFields/#{id}", params)
60
+ end
61
+
62
+ # [DELETE] Delete multiple product fields in bulk
63
+ #
64
+ # @see https://developers.pipedrive.com/docs/api/v1/#!/ProductFields/delete_productFields
65
+ # @return [Paperdrive::Response]
66
+ def delete_product_fields(**args)
67
+ params = parameters(args) do
68
+ required_params :ids
69
+ optional_params :ids
70
+ end
71
+ request(:delete, 'productFields', params)
72
+ end
73
+
74
+ # [DELETE] Delete a product field
75
+ #
76
+ # @param [integer] id:
77
+ # @see https://developers.pipedrive.com/docs/api/v1/#!/ProductFields/delete_productFields_id
78
+ # @return [Paperdrive::Response]
79
+ def delete_product_field(id:, **args)
80
+ params = parameters(args) do
81
+ optional_params
82
+ end
83
+ request(:delete, "productFields/#{id}", params)
84
+ end
85
+ end
86
+ end
87
+ end
@@ -0,0 +1,160 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'paperdrive/parameters'
4
+
5
+ module Paperdrive
6
+ class Client
7
+ # Instance methods related to Products to embed into Paperdrive::Client<br>
8
+ # arguments are compatible with the Pipedribe API.
9
+ #
10
+ # @see https://developers.pipedrive.com/docs/api/v1/#!/Products
11
+ module Products
12
+ include Paperdrive::Parameters
13
+
14
+ # [GET] Get all products
15
+ #
16
+ # @see https://developers.pipedrive.com/docs/api/v1/#!/Products/get_products
17
+ # @return [Paperdrive::Response]
18
+ def all_products(**args)
19
+ params = parameters(args) do
20
+ optional_params :user_id, :filter_id, :first_char, :start, :limit
21
+ end
22
+ request(:get, 'products', params)
23
+ end
24
+
25
+ # [GET] Find products by name
26
+ #
27
+ # @see https://developers.pipedrive.com/docs/api/v1/#!/Products/get_products_find
28
+ # @return [Paperdrive::Response]
29
+ def find_products_by_name(**args)
30
+ params = parameters(args) do
31
+ required_params :term
32
+ optional_params :term, :currency, :start, :limit
33
+ end
34
+ request(:get, 'products/find', params)
35
+ end
36
+
37
+ # [GET] Get one product
38
+ #
39
+ # @param [integer] id:
40
+ # @see https://developers.pipedrive.com/docs/api/v1/#!/Products/get_products_id
41
+ # @return [Paperdrive::Response]
42
+ def product(id:, **args)
43
+ params = parameters(args) do
44
+ optional_params
45
+ end
46
+ request(:get, "products/#{id}", params)
47
+ end
48
+
49
+ # [GET] Get deals where a product is attached to
50
+ #
51
+ # @param [integer] id:
52
+ # @see https://developers.pipedrive.com/docs/api/v1/#!/Products/get_products_id_deals
53
+ # @return [Paperdrive::Response]
54
+ def product_deals(id:, **args)
55
+ params = parameters(args) do
56
+ optional_params :start, :limit, :status
57
+ end
58
+ request(:get, "products/#{id}/deals", params)
59
+ end
60
+
61
+ # [GET] List files attached to a product
62
+ #
63
+ # @param [integer] id:
64
+ # @see https://developers.pipedrive.com/docs/api/v1/#!/Products/get_products_id_files
65
+ # @return [Paperdrive::Response]
66
+ def product_files(id:, **args)
67
+ params = parameters(args) do
68
+ optional_params :start, :limit, :include_deleted_files, :sort
69
+ end
70
+ request(:get, "products/#{id}/files", params)
71
+ end
72
+
73
+ # [GET] List followers of a product
74
+ #
75
+ # @param [integer] id:
76
+ # @see https://developers.pipedrive.com/docs/api/v1/#!/Products/get_products_id_followers
77
+ # @return [Paperdrive::Response]
78
+ def product_followers(id:, **args)
79
+ params = parameters(args) do
80
+ optional_params
81
+ end
82
+ request(:get, "products/#{id}/followers", params)
83
+ end
84
+
85
+ # [GET] List permitted users
86
+ #
87
+ # @param [integer] id:
88
+ # @see https://developers.pipedrive.com/docs/api/v1/#!/Products/get_products_id_permittedUsers
89
+ # @return [Paperdrive::Response]
90
+ def product_permitted_users(id:, **args)
91
+ params = parameters(args) do
92
+ optional_params :access_level
93
+ end
94
+ request(:get, "products/#{id}/permittedUsers", params)
95
+ end
96
+
97
+ # [POST] Add a product
98
+ #
99
+ # @see https://developers.pipedrive.com/docs/api/v1/#!/Products/post_products
100
+ # @return [Paperdrive::Response]
101
+ def create_product(**args)
102
+ params = parameters(args) do
103
+ required_params :name
104
+ optional_params :name, :code, :unit, :tax, :active_flag, :visible_to, :owner_id, :prices
105
+ end
106
+ request(:post, 'products', params)
107
+ end
108
+
109
+ # [POST] Add a follower to a product
110
+ #
111
+ # @param [integer] id:
112
+ # @see https://developers.pipedrive.com/docs/api/v1/#!/Products/post_products_id_followers
113
+ # @return [Paperdrive::Response]
114
+ def create_product_follower(id:, **args)
115
+ params = parameters(args) do
116
+ required_params :user_id
117
+ optional_params :user_id
118
+ end
119
+ request(:post, "products/#{id}/followers", params)
120
+ end
121
+
122
+ # [PUT] Update a product
123
+ #
124
+ # @param [integer] id:
125
+ # @see https://developers.pipedrive.com/docs/api/v1/#!/Products/put_products_id
126
+ # @return [Paperdrive::Response]
127
+ def update_product(id:, **args)
128
+ params = parameters(args) do
129
+ optional_params :name, :code, :unit, :tax, :active_flag, :visible_to, :owner_id, :prices
130
+ end
131
+ request(:put, "products/#{id}", params)
132
+ end
133
+
134
+ # [DELETE] Delete a product
135
+ #
136
+ # @param [integer] id:
137
+ # @see https://developers.pipedrive.com/docs/api/v1/#!/Products/delete_products_id
138
+ # @return [Paperdrive::Response]
139
+ def delete_product(id:, **args)
140
+ params = parameters(args) do
141
+ optional_params
142
+ end
143
+ request(:delete, "products/#{id}", params)
144
+ end
145
+
146
+ # [DELETE] Delete a follower from a product
147
+ #
148
+ # @param [integer] id:
149
+ # @param [integer] follower_id:
150
+ # @see https://developers.pipedrive.com/docs/api/v1/#!/Products/delete_products_id_followers_follower_id
151
+ # @return [Paperdrive::Response]
152
+ def delete_product_follower(id:, follower_id:, **args)
153
+ params = parameters(args) do
154
+ optional_params
155
+ end
156
+ request(:delete, "products/#{id}/followers/#{follower_id}", params)
157
+ end
158
+ end
159
+ end
160
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'paperdrive/parameters'
4
+
5
+ module Paperdrive
6
+ class Client
7
+ # Instance methods related to Recents to embed into Paperdrive::Client<br>
8
+ # arguments are compatible with the Pipedribe API.
9
+ #
10
+ # @see https://developers.pipedrive.com/docs/api/v1/#!/Recents
11
+ module Recents
12
+ include Paperdrive::Parameters
13
+
14
+ # [GET] Get recents
15
+ #
16
+ # @see https://developers.pipedrive.com/docs/api/v1/#!/Recents/get_recents
17
+ # @return [Paperdrive::Response]
18
+ def recents(**args)
19
+ params = parameters(args) do
20
+ required_params :since_timestamp
21
+ optional_params :since_timestamp, :items, :start, :limit
22
+ end
23
+ request(:get, 'recents', params)
24
+ end
25
+ end
26
+ end
27
+ end