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
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 9e70d62d8272e1fb31e8f490c696daf0aee9e6b24fdd2166dc89a50d377027cf
4
+ data.tar.gz: 027bd41cf1cd3ecbda7fa80bc0b377c175f95e6800fb61937ed0bda8dded5b0e
5
+ SHA512:
6
+ metadata.gz: 6aff1139b7d433fc1fcb52350e8ca1ba3eab0f90b1886ea468d991179d0a627de3c8d94bd7a331487d42d28f2ea1f68c88766b07cdd6b9f22ae20a71c1d28e17
7
+ data.tar.gz: 83e4f629d87bbb641d30e69a9c98a7e9b2a4d8a1d3a829257c30318ba63c2f95ee4916a6827f021be2f010cffb94272c0790a6e785ef99dddcd027acbde345d1
data/.gitignore ADDED
@@ -0,0 +1,12 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /_yardoc/
4
+ /coverage/
5
+ /doc/
6
+ /pkg/
7
+ /spec/reports/
8
+ /tmp/
9
+ /vendor/
10
+
11
+ # rspec failure tracking
12
+ .rspec_status
data/.rspec ADDED
@@ -0,0 +1,3 @@
1
+ --format documentation
2
+ --color
3
+ --require spec_helper
data/.rubocop.yml ADDED
@@ -0,0 +1,18 @@
1
+ AllCops:
2
+ DisplayCopNames: true
3
+ TargetRubyVersion: 2.3
4
+ LineLength:
5
+ Enabled: false
6
+ Layout/EmptyLineAfterMagicComment:
7
+ StyleGuide: '#separate-magic-comments-from-code'
8
+ Enabled: true
9
+ Metrics/AbcSize:
10
+ Enabled: false
11
+ Style/StructInheritance:
12
+ Enabled: false
13
+ Style/Documentation:
14
+ Enabled: false
15
+ Style/RedundantFreeze:
16
+ Enabled: true
17
+ Metrics:
18
+ Enabled: false
data/.travis.yml ADDED
@@ -0,0 +1,9 @@
1
+ sudo: false
2
+ language: ruby
3
+ rvm:
4
+ - 2.6.0
5
+ - 2.5.0
6
+ - 2.4.3
7
+ - 2.3.4
8
+ before_install: gem install bundler
9
+ script: bundle exec rake spec
data/CHANGELOG.md ADDED
@@ -0,0 +1,29 @@
1
+ # Change Log
2
+ All notable changes to this project will be documented in this file.
3
+
4
+ The format is maybe based on [Keep a Changelog](http://keepachangelog.com/)
5
+
6
+ ## [0.0.5] - 2019-01-26
7
+ ### Changed
8
+ - changed the gem name from 'Paperdrive' to 'paperdrive'.
9
+
10
+ ## [0.0.4] - 2019-01-16
11
+ ### Added
12
+ - add many PaperDrive::Client::XXXXs
13
+
14
+ ## [0.0.3] - 2019-01-15
15
+ ### Added
16
+ - add many PaperDrive::Client::XXXXs
17
+
18
+ ## [0.0.2] - 2019-01-15
19
+ ### Added
20
+ - CHANGELOG.md
21
+ - PaperDrive::Client::Activities
22
+ - PaperDrive::Client::Notes
23
+
24
+ ### Changed
25
+ - Drastically changed the architecture
26
+
27
+ ## 0.0.1 - 2019-01-08 [yanked]
28
+ ### Added
29
+ - Released!
data/Gemfile ADDED
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ source 'https://rubygems.org'
4
+
5
+ git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
6
+
7
+ # Specify your gem's dependencies in paperdrive.gemspec
8
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,75 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ Paperdrive (0.0.4)
5
+ activesupport
6
+ faraday (~> 0.15.4)
7
+ faraday_middleware (~> 0.12.2)
8
+
9
+ GEM
10
+ remote: https://rubygems.org/
11
+ specs:
12
+ activesupport (5.2.2)
13
+ concurrent-ruby (~> 1.0, >= 1.0.2)
14
+ i18n (>= 0.7, < 2)
15
+ minitest (~> 5.1)
16
+ tzinfo (~> 1.1)
17
+ ast (2.4.0)
18
+ concurrent-ruby (1.1.4)
19
+ diff-lcs (1.3)
20
+ faraday (0.15.4)
21
+ multipart-post (>= 1.2, < 3)
22
+ faraday_middleware (0.12.2)
23
+ faraday (>= 0.7.4, < 1.0)
24
+ i18n (1.5.2)
25
+ concurrent-ruby (~> 1.0)
26
+ jaro_winkler (1.5.2)
27
+ minitest (5.11.3)
28
+ multipart-post (2.0.0)
29
+ parallel (1.12.1)
30
+ parser (2.5.3.0)
31
+ ast (~> 2.4.0)
32
+ powerpack (0.1.2)
33
+ rainbow (3.0.0)
34
+ rake (10.5.0)
35
+ rspec (3.7.0)
36
+ rspec-core (~> 3.7.0)
37
+ rspec-expectations (~> 3.7.0)
38
+ rspec-mocks (~> 3.7.0)
39
+ rspec-core (3.7.1)
40
+ rspec-support (~> 3.7.0)
41
+ rspec-expectations (3.7.0)
42
+ diff-lcs (>= 1.2.0, < 2.0)
43
+ rspec-support (~> 3.7.0)
44
+ rspec-mocks (3.7.0)
45
+ diff-lcs (>= 1.2.0, < 2.0)
46
+ rspec-support (~> 3.7.0)
47
+ rspec-support (3.7.1)
48
+ rubocop (0.62.0)
49
+ jaro_winkler (~> 1.5.1)
50
+ parallel (~> 1.10)
51
+ parser (>= 2.5, != 2.5.1.1)
52
+ powerpack (~> 0.1)
53
+ rainbow (>= 2.2.2, < 4.0)
54
+ ruby-progressbar (~> 1.7)
55
+ unicode-display_width (~> 1.4.0)
56
+ ruby-progressbar (1.10.0)
57
+ thread_safe (0.3.6)
58
+ tzinfo (1.2.5)
59
+ thread_safe (~> 0.1)
60
+ unicode-display_width (1.4.1)
61
+ yard (0.9.16)
62
+
63
+ PLATFORMS
64
+ ruby
65
+
66
+ DEPENDENCIES
67
+ Paperdrive!
68
+ bundler (~> 1.16)
69
+ rake (~> 10.0)
70
+ rspec (~> 3.0)
71
+ rubocop (~> 0.62.0)
72
+ yard
73
+
74
+ BUNDLED WITH
75
+ 1.16.1
data/README.md ADDED
@@ -0,0 +1,120 @@
1
+ # Paperdrive
2
+
3
+ Paperdrive is the unofficial [Pipedrive](https://www.pipedrive.com/) API wrapper gem.
4
+ [![](https://img.shields.io/travis/rnitta/Paperdrive/master.svg?style=popout-square)](https://travis-ci.org/rnitta/Paperdrive)
5
+ [![](https://img.shields.io/gem/v/Paperdrive.svg?style=popout-square)](https://rubygems.org/gems/Paperdrive)
6
+
7
+ ## Installation
8
+
9
+ Add this line to your application's Gemfile (Recommended):
10
+
11
+ ```ruby
12
+ gem 'paperdrive'
13
+ ```
14
+
15
+ ```shell
16
+ $ bundle install
17
+ ```
18
+
19
+ ---
20
+
21
+ Or install it on your global:
22
+
23
+ ```shell
24
+ $ gem install paperdrive
25
+ ```
26
+
27
+ ## Document
28
+ [YARD doc](https://paperdrive-doc.netlify.com/)
29
+
30
+ ## Usage
31
+
32
+ First, you should get API Token from Pipedrive dashboard.
33
+
34
+ Then,
35
+
36
+ ```ruby
37
+ require 'paperdrive'
38
+
39
+ client = Paperdrive::Client.new(token: 'your_token_here')
40
+ # or setting token to ENV['PAPERDRIVE_TOKEN'] and you can initialize with `Paperdrive::Client.new`.
41
+
42
+ response = client.all_activities(user_id: 1, done: 1)
43
+ # => #<Paperdrive::Response>
44
+
45
+ pp response
46
+ # =>
47
+ # #<Paperdrive::Response:0x00007ff811221b70
48
+ # @body=
49
+ # {"success"=>true,
50
+ # "data"=>
51
+ # [{"id"=>0,
52
+ # "company_id"=>000000,
53
+ # "user_id"=>000000,
54
+ # "done"=>false,
55
+ # "type"=>"call",
56
+ # "reference_type"=>nil,
57
+ # "reference_id"=>nil,
58
+ # "due_date"=>"2019-01-08",
59
+ # "due_time"=>"",
60
+ # "duration"=>"",
61
+ # "add_time"=>"2019-01-08 20:28:31",
62
+ # "marked_as_done_time"=>"",
63
+ # "last_notification_time"=>nil,
64
+ # "last_notification_user_id"=>nil,
65
+ # "notification_language_id"=>nil,
66
+ # "subject"=>"Call",
67
+ # ...
68
+
69
+ response.success? #=> true
70
+
71
+ ```
72
+
73
+ See `Paperdrive::Client` instance methods list [here (document)](https://paperdrive-doc.netlify.com/paperdrive/client)
74
+
75
+
76
+ ## Development
77
+
78
+ Now developing, I appreciate your help.
79
+
80
+
81
+ ### TODO
82
+ There are few APIs (mainly related to uploading files) still not wrapped.
83
+
84
+ - ~~Activities~~ (implemented)
85
+ - ~~ActivityFields~~ (implemented)
86
+ - ~~ActivityTypes~~ (implemented)
87
+ - Authorizations
88
+ - ~~Currencies~~ (implemented)
89
+ - ~~Deals~~ (implemented)
90
+ - ~~DealFields~~ (implemented)
91
+ - Files
92
+ - ~~Filters~~ (implemented)
93
+ - ~~GlobalMessages~~ (implemented)
94
+ - ~~MailMessages~~ (implemented)
95
+ - ~~MailThreads~~ (implemented)
96
+ - ~~Notes~~ (implemented)
97
+ - ~~NoteFields~~ (implemented)
98
+ - ~~OrganizationFields~~ (implemented)
99
+ - ~~Organizations~~ (implemented)
100
+ - ~~OrganizationRelationships~~ (implemented)
101
+ - ~~PermissionSets~~ (implemented)
102
+ - Persons (almost implemented)
103
+ - ~~PersonFields~~ (implemented)
104
+ - ~~Pipelines~~ (implemented)
105
+ - ~~Products~~ (implemented)
106
+ - ~~ProductFields~~ (implemented)
107
+ - ~~Recents~~ (implemented)
108
+ - ~~Roles~~ (implemented)
109
+ - ~~SearchResults~~ (implemented)
110
+ - ~~Stages~~ (implemented)
111
+ - ~~Users~~ (implemented)
112
+ - ~~UserConnections~~ (implemented)
113
+ - ~~UserSettings~~ (implemented)
114
+ - ~~Webhooks~~ (implemented)
115
+
116
+ - specs
117
+
118
+ ## Contributing
119
+
120
+ Issue/Pull Request Please
data/Rakefile ADDED
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'bundler/gem_tasks'
4
+ require 'rspec/core/rake_task'
5
+
6
+ RSpec::Core::RakeTask.new(:spec)
7
+
8
+ task default: :spec
data/bin/console ADDED
@@ -0,0 +1,15 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ require 'bundler/setup'
5
+ require 'paperdrive'
6
+
7
+ # You can add fixtures and/or initialization code here to make experimenting
8
+ # with your gem easier. You can also use a different console, if you like.
9
+
10
+ # (If you use this, don't forget to add pry to your Gemfile!)
11
+ # require "pry"
12
+ # Pry.start
13
+
14
+ require 'irb'
15
+ IRB.start(__FILE__)
data/bin/setup ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
@@ -0,0 +1,92 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'paperdrive/parameters'
4
+
5
+ module Paperdrive
6
+ class Client
7
+ # Instance methods related to Activities to embed into Paperdrive::Client<br>
8
+ # arguments are compatible with the Pipedribe API.
9
+ #
10
+ # @see https://developers.pipedrive.com/docs/api/v1/#!/Activities
11
+ module Activities
12
+ include Paperdrive::Parameters
13
+
14
+ # [GET] fetch Activities list
15
+ #
16
+ # @example
17
+ # client.all_activities(type: 'task', start_date: '2020-05-01', done: 0)
18
+ #
19
+ # @see https://developers.pipedrive.com/docs/api/v1/#!/Activities/get_activities
20
+ # @return [Paperdrive::Response]
21
+ def all_activities(**args)
22
+ params = parameters(args) do
23
+ optional_params :user_id, :filter_id, :type, :start, :limit, :start_date, :end_date, :done
24
+ end
25
+ request(:get, 'activities', params)
26
+ end
27
+
28
+ # [GET] fetch a single activity
29
+ #
30
+ # @param [integer] id: ID of the activity to fetch
31
+ # @see https://developers.pipedrive.com/docs/api/v1/#!/Activities/get_activities_id
32
+ # @return [Paperdrive::Response]
33
+ def activity_detail(id:, **args)
34
+ params = parameters(args) do
35
+ optional_params
36
+ end
37
+ request(:get, "activities/#{id}", params)
38
+ end
39
+
40
+ # [POST] create a single activity
41
+ #
42
+ # @see https://developers.pipedrive.com/docs/api/v1/#!/Activities/post_activities
43
+ # @return [Paperdrive::Response]
44
+ def create_activity(**args)
45
+ params = parameters(args) do
46
+ required_params :subject, :type
47
+ optional_params :subject, :type, :done, :due_date, :due_time, :duration, :user_id, :deal_id, :person_id, :participants, :org_id, :note
48
+ end
49
+ request(:post, 'activities', params)
50
+ end
51
+
52
+ # [PUT] update a single activity
53
+ #
54
+ # @param [integer] id: ID of the actibity to update
55
+ # @see https://developers.pipedrive.com/docs/api/v1/#!/Activities/put_activities_id
56
+ # @return [Paperdrive::Response]
57
+ def edit_activity(id:, **args)
58
+ params = parameters(args) do
59
+ optional_params :subject, :type, :done, :due_date, :due_time, :duration, :user_id, :deal_id, :person_id, :participants, :org_id, :note
60
+ end
61
+ request(:put, "activities/#{id}", params)
62
+ end
63
+
64
+ # [DELETE] delete multiple activities
65
+ #
66
+ # @example Delete activities whose IDs are 1,2,3,4,5,6,7,8,9,10
67
+ # client.delete_activities(ids: [*(1..10)])
68
+ # @see https://developers.pipedrive.com/docs/api/v1/#!/Activities/delete_activities
69
+ # @return [Paperdrive::Response]
70
+ def delete_activities(**args)
71
+ params = parameters(args) do
72
+ required_params :ids
73
+ optional_params :ids
74
+ end
75
+ request(:delete, 'activities', params)
76
+ end
77
+
78
+ # [DELETE] delete a single activity
79
+ #
80
+ # @example Delete the actibity whose id = 1
81
+ # client.delete_activities(id: 1)
82
+ # @see https://developers.pipedrive.com/docs/api/v1/#!/Activities/delete_activities_id
83
+ # @return [Paperdrive::Response]
84
+ def delete_activity(id:, **args)
85
+ params = parameters(args) do
86
+ optional_params
87
+ end
88
+ request(:delete, "activities/#{id}", params)
89
+ end
90
+ end
91
+ end
92
+ end
@@ -0,0 +1,36 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'paperdrive/parameters'
4
+
5
+ module Paperdrive
6
+ class Client
7
+ # Instance methods related to ActivityFields to embed into Paperdrive::Client
8
+ #
9
+ # @see https://developers.pipedrive.com/docs/api/v1/#!/ActivityFields
10
+ module ActivityFields
11
+ include Paperdrive::Parameters
12
+
13
+ # [GET] fetch all fields for activity.
14
+ #
15
+ # @example
16
+ # client.activity_fields.body
17
+ # #=> {
18
+ # "success": true,
19
+ # "data": [
20
+ # {
21
+ # "id": 1,
22
+ # "key": "id",
23
+ # "name": "ID",
24
+ # ....
25
+ #
26
+ # @see https://developers.pipedrive.com/docs/api/v1/#!/ActivityFields/get_activityFields
27
+ # @return [Paperdrive::Response]
28
+ def all_activities(**args)
29
+ params = parameters(args) do
30
+ optional_params
31
+ end
32
+ request(:get, 'activityFields', params)
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,77 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'paperdrive/parameters'
4
+
5
+ module Paperdrive
6
+ class Client
7
+ # Instance methods related to ActivityTypes to embed into Paperdrive::Client<br>
8
+ # arguments are compatible with the Pipedribe API.
9
+ #
10
+ # @see https://developers.pipedrive.com/docs/api/v1/#!/ActivityTypes
11
+ module ActivityTypes
12
+ include Paperdrive::Parameters
13
+
14
+ # [GET] fetch activity types list
15
+ #
16
+ # @see https://developers.pipedrive.com/docs/api/v1/#!/ActivityTypes/get_activityTypes
17
+ # @return [Paperdrive::Response]
18
+ def all_activity_types(**args)
19
+ params = parameters(args) do
20
+ optional_params
21
+ end
22
+ request(:get, 'activityTypes', params)
23
+ end
24
+
25
+ # [POST] create an activity type
26
+ #
27
+ # @see https://developers.pipedrive.com/docs/api/v1/#!/ActivityTypes/post_activityTypes
28
+ # @return [Paperdrive::Response]
29
+ def create_activity_type(**args)
30
+ params = parameters(args) do
31
+ required_params :name, :icon_key
32
+ optional_params :name, :icon_key, :color
33
+ end
34
+ request(:post, 'activityTypes', params)
35
+ end
36
+
37
+ # [PUT] update an activity type
38
+ #
39
+ # @param [integer] id: ID of the activity type to update
40
+ # @see https://developers.pipedrive.com/docs/api/v1/#!/ActivityTypes/put_activityTypes_id
41
+ # @return [Paperdrive::Response]
42
+ def edit_activity_type(id:, **args)
43
+ params = parameters(args) do
44
+ optional_params :name, :icon_key, :color, :order_nr
45
+ end
46
+ request(:put, "activityTypes/#{id}", params)
47
+ end
48
+
49
+ # [DELETE] delete multiple activity types
50
+ #
51
+ # @example Delete activity types whose IDs are 1,2,3,4,5,6,7,8,9,10
52
+ # client.delete_activity_types(ids: [*(1..10)])
53
+ # @see https://developers.pipedrive.com/docs/api/v1/#!/ActivityTypes/delete_activityTypes
54
+ # @return [Paperdrive::Response]
55
+ def delete_activitiy_types(**args)
56
+ params = parameters(args) do
57
+ required_params :ids
58
+ optional_params :ids
59
+ end
60
+ request(:delete, 'activityTypes', params)
61
+ end
62
+
63
+ # [DELETE] delete an activity type
64
+ #
65
+ # @example Delete the activity type whose id = 1
66
+ # client.delete_activity_types(id: 1)
67
+ # @see https://developers.pipedrive.com/docs/api/v1/#!/ActivityTypes/delete_activityTypes_id
68
+ # @return [Paperdrive::Response]
69
+ def delete_activity_type(id:, **args)
70
+ params = parameters(args) do
71
+ optional_params
72
+ end
73
+ request(:delete, "activityTypes/#{id}", params)
74
+ end
75
+ end
76
+ end
77
+ end
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'paperdrive/parameters'
4
+
5
+ module Paperdrive
6
+ class Client
7
+ # Instance methods related to Currencies to embed into Paperdrive::Client<br>
8
+ # arguments are compatible with the Pipedribe API.
9
+ #
10
+ # @see https://developers.pipedrive.com/docs/api/v1/#!/Currencies
11
+ module Currencies
12
+ include Paperdrive::Parameters
13
+
14
+ # [GET] fetch all supported currencies
15
+ #
16
+ # @see https://developers.pipedrive.com/docs/api/v1/#!/Currencies/get_currencies
17
+ # @return [Paperdrive::Response]
18
+ def all_currencies(**args)
19
+ params = parameters(args) do
20
+ optional_params :term
21
+ end
22
+ request(:get, 'currencies', params)
23
+ end
24
+ end
25
+ end
26
+ 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 DealFields to embed into Paperdrive::Client<br>
8
+ # arguments are compatible with the Pipedribe API.
9
+ #
10
+ # @see https://developers.pipedrive.com/docs/api/v1/#!/DealFields
11
+ module DealFields
12
+ include Paperdrive::Parameters
13
+
14
+ # [GET] Get all deal fields
15
+ #
16
+ # @see https://developers.pipedrive.com/docs/api/v1/#!/DealFields/get_dealFields
17
+ # @return [Paperdrive::Response]
18
+ def all_deal_fields(**args)
19
+ params = parameters(args) do
20
+ optional_params :start, :limit
21
+ end
22
+ request(:get, 'dealFields', params)
23
+ end
24
+
25
+ # [GET] Get one deal field
26
+ #
27
+ # @param [integer] id:
28
+ # @see https://developers.pipedrive.com/docs/api/v1/#!/DealFields/get_dealFields_id
29
+ # @return [Paperdrive::Response]
30
+ def deal_field(id:, **args)
31
+ params = parameters(args) do
32
+ optional_params
33
+ end
34
+ request(:get, "dealFields/#{id}", params)
35
+ end
36
+
37
+ # [POST] Add a new deal field
38
+ #
39
+ # @see https://developers.pipedrive.com/docs/api/v1/#!/DealFields/post_dealFields
40
+ # @return [Paperdrive::Response]
41
+ def create_deal_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, 'dealFields', params)
47
+ end
48
+
49
+ # [PUT] Update a deal field
50
+ #
51
+ # @param [integer] id:
52
+ # @see https://developers.pipedrive.com/docs/api/v1/#!/DealFields/put_dealFields_id
53
+ # @return [Paperdrive::Response]
54
+ def update_deal_field(id:, **args)
55
+ params = parameters(args) do
56
+ required_params :name
57
+ optional_params :name, :options
58
+ end
59
+ request(:put, "dealFields/#{id}", params)
60
+ end
61
+
62
+ # [DELETE] Delete multiple deal fields in bulk
63
+ #
64
+ # @see https://developers.pipedrive.com/docs/api/v1/#!/DealFields/delete_dealFields
65
+ # @return [Paperdrive::Response]
66
+ def delete_deal_fields(**args)
67
+ params = parameters(args) do
68
+ required_params :ids
69
+ optional_params :ids
70
+ end
71
+ request(:delete, 'dealFields', params)
72
+ end
73
+
74
+ # [DELETE] Delete a deal field
75
+ #
76
+ # @param [integer] id:
77
+ # @see https://developers.pipedrive.com/docs/api/v1/#!/DealFields/delete_dealFields_id
78
+ # @return [Paperdrive::Response]
79
+ def delete_deal_field(id:, **args)
80
+ params = parameters(args) do
81
+ optional_params
82
+ end
83
+ request(:delete, "dealFields/#{id}", params)
84
+ end
85
+ end
86
+ end
87
+ end