paperdrive 0.0.5

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.
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