plaid 3.0.0 → 4.0.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/CONTRIBUTING.md +7 -1
- data/Gemfile +0 -1
- data/LICENSE.txt +21 -0
- data/README.md +233 -206
- data/Rakefile +1 -2
- data/bin/console +8 -7
- data/circle.yml +3 -0
- data/lib/plaid.rb +15 -60
- data/lib/plaid/client.rb +120 -52
- data/lib/plaid/connect.rb +75 -0
- data/lib/plaid/errors.rb +60 -24
- data/lib/plaid/products/accounts.rb +60 -0
- data/lib/plaid/products/auth.rb +29 -0
- data/lib/plaid/products/categories.rb +18 -0
- data/lib/plaid/products/credit_details.rb +21 -0
- data/lib/plaid/products/identity.rb +20 -0
- data/lib/plaid/products/income.rb +20 -0
- data/lib/plaid/products/institutions.rb +51 -0
- data/lib/plaid/products/item.rb +230 -0
- data/lib/plaid/products/processor.rb +48 -0
- data/lib/plaid/products/sandbox.rb +32 -0
- data/lib/plaid/products/transactions.rb +74 -0
- data/lib/plaid/version.rb +1 -1
- data/plaid.gemspec +13 -8
- metadata +21 -61
- data/CHANGELOG.md +0 -34
- data/LICENSE +0 -20
- data/UPGRADING.md +0 -60
- data/lib/plaid/account.rb +0 -144
- data/lib/plaid/category.rb +0 -62
- data/lib/plaid/connector.rb +0 -172
- data/lib/plaid/income.rb +0 -106
- data/lib/plaid/info.rb +0 -65
- data/lib/plaid/institution.rb +0 -253
- data/lib/plaid/risk.rb +0 -34
- data/lib/plaid/transaction.rb +0 -128
- data/lib/plaid/user.rb +0 -507
- data/lib/plaid/webhook.rb +0 -153
@@ -0,0 +1,48 @@
|
|
1
|
+
module Plaid
|
2
|
+
# Public: Class used to call the BankAccountToken sub-product.
|
3
|
+
class BankAccountToken
|
4
|
+
def initialize(client)
|
5
|
+
@client = client
|
6
|
+
end
|
7
|
+
|
8
|
+
# Public: Creates a Stripe bank account token from an access_token.
|
9
|
+
#
|
10
|
+
# Does a POST /processor/stripe/bank_account_token/create call which can
|
11
|
+
# be used to generate a Stripe bank account token for a given account ID.
|
12
|
+
#
|
13
|
+
# access_token - access_token to create a public token for
|
14
|
+
# account_id - ID of the account to create a bank account token for
|
15
|
+
#
|
16
|
+
# Returns a parsed JSON containing a Stripe bank account token
|
17
|
+
def create(access_token, account_id)
|
18
|
+
payload = { access_token: access_token,
|
19
|
+
account_id: account_id }
|
20
|
+
@client.post_with_auth('processor/stripe/bank_account_token/create',
|
21
|
+
payload)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
# Public: Class used to call the Stripe sub-product.
|
26
|
+
class Stripe
|
27
|
+
# Public: Memoized class instance to make requests from Plaid::BankAccountToken
|
28
|
+
def bank_account_token
|
29
|
+
@bank_account_token ||= Plaid::BankAccountToken.new(@client)
|
30
|
+
end
|
31
|
+
|
32
|
+
def initialize(client)
|
33
|
+
@client = client
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
# Public: Class used to call the Processor product.
|
38
|
+
class Processor
|
39
|
+
# Public: Memoized class instance to make requests from Plaid::Stripe
|
40
|
+
def stripe
|
41
|
+
@stripe ||= Plaid::Stripe.new(@client)
|
42
|
+
end
|
43
|
+
|
44
|
+
def initialize(client)
|
45
|
+
@client = client
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module Plaid
|
2
|
+
# Public: Class used to call the SandboxItem sub-product.
|
3
|
+
class SandboxItem
|
4
|
+
def initialize(client)
|
5
|
+
@client = client
|
6
|
+
end
|
7
|
+
|
8
|
+
# Public: Resets sandbox item login
|
9
|
+
#
|
10
|
+
# Does a POST /sandbox/item/reset_login call
|
11
|
+
#
|
12
|
+
# access_token - access_token who's item to reset login for
|
13
|
+
#
|
14
|
+
# Returns a parsed JSON of response
|
15
|
+
def reset_login(access_token)
|
16
|
+
payload = { access_token: access_token }
|
17
|
+
@client.post_with_auth('sandbox/item/reset_login', payload)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
# Public: Class used to call the Sandbox product.
|
22
|
+
class Sandbox
|
23
|
+
# Public: Memoized class instance to make requests from Plaid::SandboxItem
|
24
|
+
def sandbox_item
|
25
|
+
@sandbox_item ||= Plaid::SandboxItem.new(@client)
|
26
|
+
end
|
27
|
+
|
28
|
+
def initialize(client)
|
29
|
+
@client = client
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,74 @@
|
|
1
|
+
require 'date'
|
2
|
+
|
3
|
+
module Plaid
|
4
|
+
# Internal: Converts date objects to strings if needed
|
5
|
+
#
|
6
|
+
# Takes in a string or a Date object and performs necessary operations to return a
|
7
|
+
# string representation of the Date
|
8
|
+
#
|
9
|
+
# date - Date in Date object form or string form (YYYY-MM-DD)
|
10
|
+
#
|
11
|
+
# Returns a string representing a date needed for transaction start and end dates
|
12
|
+
def self.convert_to_date_string(date)
|
13
|
+
case date
|
14
|
+
when String
|
15
|
+
date
|
16
|
+
else
|
17
|
+
date.to_date.strftime('%Y-%m-%d')
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
# Public: Class used to call the Transactions product.
|
22
|
+
class Transactions
|
23
|
+
def initialize(client)
|
24
|
+
@client = client
|
25
|
+
end
|
26
|
+
|
27
|
+
# Public: Get information about transactions
|
28
|
+
#
|
29
|
+
# Does a POST /transactions/get call which gives you high level account data along
|
30
|
+
# with transactions from all accounts contained in the access_token's item
|
31
|
+
#
|
32
|
+
# access_token - access_token who's item to fetch transactions for
|
33
|
+
# start_date - Start of query for transactions
|
34
|
+
# end_date - End of query for transactions
|
35
|
+
# account_ids - Specific account ids to fetch balances for (optional)
|
36
|
+
# count - Amount of transactions to pull (optional)
|
37
|
+
# offset - Offset to start pulling transactions (optional)
|
38
|
+
# options - Additional options to merge into API request
|
39
|
+
#
|
40
|
+
# Returns a parsed JSON listing information on transactions
|
41
|
+
def get(access_token,
|
42
|
+
start_date,
|
43
|
+
end_date,
|
44
|
+
account_ids: nil,
|
45
|
+
count: nil,
|
46
|
+
offset: nil,
|
47
|
+
options: nil)
|
48
|
+
options_payload = {}
|
49
|
+
options_payload[:account_ids] = account_ids unless account_ids.nil?
|
50
|
+
options_payload[:count] = count unless count.nil?
|
51
|
+
options_payload[:offset] = offset unless offset.nil?
|
52
|
+
options_payload = options_payload.merge(options) unless options.nil?
|
53
|
+
|
54
|
+
payload = { access_token: access_token,
|
55
|
+
start_date: Plaid.convert_to_date_string(start_date),
|
56
|
+
end_date: Plaid.convert_to_date_string(end_date),
|
57
|
+
options: options_payload }
|
58
|
+
@client.post_with_auth('transactions/get', payload)
|
59
|
+
end
|
60
|
+
|
61
|
+
# Public: Deactivate transactions for given access_token.
|
62
|
+
#
|
63
|
+
# Does a POST /transactions/deactivate call which deactivates the transaction product
|
64
|
+
# for a given access_token
|
65
|
+
#
|
66
|
+
# access_token - access_token to deactivate transactions for
|
67
|
+
#
|
68
|
+
# Returns a parsed JSON containing a message describing deactivation success.
|
69
|
+
def deactivate(access_token)
|
70
|
+
payload = { access_token: access_token }
|
71
|
+
@client.post_with_auth('transactions/deactivate', payload)
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
data/lib/plaid/version.rb
CHANGED
data/plaid.gemspec
CHANGED
@@ -6,16 +6,25 @@ require 'plaid/version'
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
7
|
spec.name = 'plaid'
|
8
8
|
spec.version = Plaid::VERSION
|
9
|
-
spec.authors = ['
|
10
|
-
spec.email = ['
|
9
|
+
spec.authors = ['Edmund Loo']
|
10
|
+
spec.email = ['eloo@plaid.com']
|
11
11
|
|
12
12
|
spec.summary = 'Ruby bindings for Plaid'
|
13
13
|
spec.description = 'Ruby gem wrapper for the Plaid API. Read more at the ' \
|
14
14
|
'homepage, the wiki, or in the Plaid documentation.'
|
15
|
-
spec.homepage = 'https://
|
15
|
+
spec.homepage = 'https://plaid.com/'
|
16
16
|
spec.license = 'MIT'
|
17
17
|
|
18
|
-
|
18
|
+
# Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
|
19
|
+
# to allow pushing to a single host or delete this section to allow pushing to any host.
|
20
|
+
if spec.respond_to?(:metadata)
|
21
|
+
spec.metadata['allowed_push_host'] = "https://rubygems.org"
|
22
|
+
else
|
23
|
+
raise 'RubyGems 2.0 or newer is required to protect against ' \
|
24
|
+
'public gem pushes.'
|
25
|
+
end
|
26
|
+
|
27
|
+
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
19
28
|
f.match(%r{^(test/|\.gitignore|\.travis)})
|
20
29
|
end
|
21
30
|
|
@@ -25,12 +34,8 @@ Gem::Specification.new do |spec|
|
|
25
34
|
|
26
35
|
spec.required_ruby_version = '>= 2.0.0'
|
27
36
|
|
28
|
-
spec.add_dependency 'multi_json', '~> 1.0'
|
29
|
-
|
30
37
|
spec.add_development_dependency 'bundler', '~> 1.7'
|
31
38
|
spec.add_development_dependency 'rake', '~> 10.0'
|
32
39
|
spec.add_development_dependency 'sdoc', '~> 0.4.1'
|
33
|
-
spec.add_development_dependency 'pry', '~> 0.10.3'
|
34
|
-
spec.add_development_dependency 'webmock', '~> 2.0.0'
|
35
40
|
spec.add_development_dependency 'minitest', '~> 5.8'
|
36
41
|
end
|
metadata
CHANGED
@@ -1,29 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: plaid
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 4.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
-
|
7
|
+
- Edmund Loo
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-03-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
-
- !ruby/object:Gem::Dependency
|
14
|
-
name: multi_json
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - "~>"
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '1.0'
|
20
|
-
type: :runtime
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - "~>"
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: '1.0'
|
27
13
|
- !ruby/object:Gem::Dependency
|
28
14
|
name: bundler
|
29
15
|
requirement: !ruby/object:Gem::Requirement
|
@@ -66,34 +52,6 @@ dependencies:
|
|
66
52
|
- - "~>"
|
67
53
|
- !ruby/object:Gem::Version
|
68
54
|
version: 0.4.1
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: pry
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
72
|
-
requirements:
|
73
|
-
- - "~>"
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version: 0.10.3
|
76
|
-
type: :development
|
77
|
-
prerelease: false
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
79
|
-
requirements:
|
80
|
-
- - "~>"
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
version: 0.10.3
|
83
|
-
- !ruby/object:Gem::Dependency
|
84
|
-
name: webmock
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
86
|
-
requirements:
|
87
|
-
- - "~>"
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
version: 2.0.0
|
90
|
-
type: :development
|
91
|
-
prerelease: false
|
92
|
-
version_requirements: !ruby/object:Gem::Requirement
|
93
|
-
requirements:
|
94
|
-
- - "~>"
|
95
|
-
- !ruby/object:Gem::Version
|
96
|
-
version: 2.0.0
|
97
55
|
- !ruby/object:Gem::Dependency
|
98
56
|
name: minitest
|
99
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -111,39 +69,41 @@ dependencies:
|
|
111
69
|
description: Ruby gem wrapper for the Plaid API. Read more at the homepage, the wiki,
|
112
70
|
or in the Plaid documentation.
|
113
71
|
email:
|
114
|
-
-
|
72
|
+
- eloo@plaid.com
|
115
73
|
executables: []
|
116
74
|
extensions: []
|
117
75
|
extra_rdoc_files: []
|
118
76
|
files:
|
119
|
-
- CHANGELOG.md
|
120
77
|
- CONTRIBUTING.md
|
121
78
|
- Gemfile
|
122
|
-
- LICENSE
|
79
|
+
- LICENSE.txt
|
123
80
|
- README.md
|
124
81
|
- Rakefile
|
125
|
-
- UPGRADING.md
|
126
82
|
- bin/console
|
127
83
|
- bin/setup
|
84
|
+
- circle.yml
|
128
85
|
- lib/plaid.rb
|
129
|
-
- lib/plaid/account.rb
|
130
|
-
- lib/plaid/category.rb
|
131
86
|
- lib/plaid/client.rb
|
132
|
-
- lib/plaid/
|
87
|
+
- lib/plaid/connect.rb
|
133
88
|
- lib/plaid/errors.rb
|
134
|
-
- lib/plaid/
|
135
|
-
- lib/plaid/
|
136
|
-
- lib/plaid/
|
137
|
-
- lib/plaid/
|
138
|
-
- lib/plaid/
|
139
|
-
- lib/plaid/
|
89
|
+
- lib/plaid/products/accounts.rb
|
90
|
+
- lib/plaid/products/auth.rb
|
91
|
+
- lib/plaid/products/categories.rb
|
92
|
+
- lib/plaid/products/credit_details.rb
|
93
|
+
- lib/plaid/products/identity.rb
|
94
|
+
- lib/plaid/products/income.rb
|
95
|
+
- lib/plaid/products/institutions.rb
|
96
|
+
- lib/plaid/products/item.rb
|
97
|
+
- lib/plaid/products/processor.rb
|
98
|
+
- lib/plaid/products/sandbox.rb
|
99
|
+
- lib/plaid/products/transactions.rb
|
140
100
|
- lib/plaid/version.rb
|
141
|
-
- lib/plaid/webhook.rb
|
142
101
|
- plaid.gemspec
|
143
|
-
homepage: https://
|
102
|
+
homepage: https://plaid.com/
|
144
103
|
licenses:
|
145
104
|
- MIT
|
146
|
-
metadata:
|
105
|
+
metadata:
|
106
|
+
allowed_push_host: https://rubygems.org
|
147
107
|
post_install_message:
|
148
108
|
rdoc_options: []
|
149
109
|
require_paths:
|
data/CHANGELOG.md
DELETED
@@ -1,34 +0,0 @@
|
|
1
|
-
# 3.0.0. 17-Jan-2017
|
2
|
-
|
3
|
-
* Add `/institutions/all` and `/institutions/all/search` endpoints, see [UPGRADING.md](UPGRADING.md#upgrading-from-2xx-to-300)
|
4
|
-
|
5
|
-
# 2.2.0. 03-Nov-2016
|
6
|
-
|
7
|
-
* Add `Transaction#reference_number` (@ericbirdsall).
|
8
|
-
* Fix webhook codes and add risk and income webhooks.
|
9
|
-
|
10
|
-
# 2.1.0. 19-Oct-2016
|
11
|
-
|
12
|
-
* Documentation fixes (@ishmael).
|
13
|
-
* Fix `Transaction#to_s` behavior (@michel-tricot).
|
14
|
-
* PATCH `/:product/step` flow.
|
15
|
-
* Use the same client in `User#upgrade` (@betesh).
|
16
|
-
* Webhook object (@zshannon).
|
17
|
-
* `processor_token` access in `User.exchange_token` (@gylaz).
|
18
|
-
* Raise `ServerError` in case server returned an empty response body.
|
19
|
-
|
20
|
-
# 2.0.0. 24-May-2016
|
21
|
-
|
22
|
-
* Use `~> 1.0` spec for multi_json dependency.
|
23
|
-
* Support `stripe_bank_account_token` in `User.exchange_token`.
|
24
|
-
|
25
|
-
# 2.0.0.alpha.2. 14-May-2016
|
26
|
-
|
27
|
-
* Use `:production` instead of `:api` to signify production environment
|
28
|
-
in `Plaid::Client#env=`.
|
29
|
-
* `User#mfa_step` allows to specify options now (thanks @gcweeks).
|
30
|
-
* Implemented `User#update_webhook`.
|
31
|
-
|
32
|
-
# 2.0.0.alpha. 06-May-2016
|
33
|
-
|
34
|
-
* Rewrite everything.
|
data/LICENSE
DELETED
@@ -1,20 +0,0 @@
|
|
1
|
-
The MIT License (MIT)
|
2
|
-
|
3
|
-
Copyright (c) 2016 Plaid Technologies, Inc.
|
4
|
-
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
6
|
-
this software and associated documentation files (the "Software"), to deal in
|
7
|
-
the Software without restriction, including without limitation the rights to
|
8
|
-
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
9
|
-
the Software, and to permit persons to whom the Software is furnished to do so,
|
10
|
-
subject to the following conditions:
|
11
|
-
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
13
|
-
copies or substantial portions of the Software.
|
14
|
-
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
17
|
-
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
18
|
-
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
19
|
-
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
20
|
-
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/UPGRADING.md
DELETED
@@ -1,60 +0,0 @@
|
|
1
|
-
## Upgrading from 2.x.x to 3.0.0
|
2
|
-
|
3
|
-
Version 3.0.0 makes `Plaid::Institution` use new `institutions/all` endpoint
|
4
|
-
of Plaid API which unites "native" and "long tail" institutions.
|
5
|
-
`Plaid::LongTailInstitution` class is removed, its functionality is
|
6
|
-
concentrated in `Plaid::Institution`.
|
7
|
-
|
8
|
-
Use `Plaid::Institution.all` instead of `Plaid::LongTailInstitution.all` (the
|
9
|
-
semantics is the same, with added products param).
|
10
|
-
|
11
|
-
Use `Plaid::Institution.search` instead of `Plaid::LongTailInstitution.search`.
|
12
|
-
|
13
|
-
Use `Plaid::Institution.search_by_id` instead of `Plaid::LongTailInstitution.get`.
|
14
|
-
|
15
|
-
|
16
|
-
## Upgrading from 1.x to 2.0.0
|
17
|
-
|
18
|
-
Make sure you use Ruby 2.0 or higher.
|
19
|
-
|
20
|
-
Update the `Plaid.config` block:
|
21
|
-
|
22
|
-
```ruby
|
23
|
-
Plaid.config do |p|
|
24
|
-
p.client_id = '<<< Plaid provided client ID >>>' # WAS: customer_id
|
25
|
-
p.secret = '<<< Plaid provided secret key >>>' # No change
|
26
|
-
p.env = :tartan # or :api for production # WAS: environment_location
|
27
|
-
end
|
28
|
-
```
|
29
|
-
|
30
|
-
Use `Plaid::User.create` instead of `Plaid.add_user` (**NOTE**: parameter order has changed!)
|
31
|
-
|
32
|
-
Use `Plaid::User.load` instead of `Plaid.set_user` (**NOTE**: parameter order has changed!)
|
33
|
-
|
34
|
-
Use `Plaid::User.exchange_token` instead of `Plaid.exchange_token` (**NOTE**: parameter list has changed!)
|
35
|
-
|
36
|
-
Use `Plaid::User.create` or (`.load`) and `Plaid::User#transactions` instead of `Plaid.transactions`.
|
37
|
-
|
38
|
-
Use `Plaid::Institution.all` and `Plaid::Institution.get` instead of `Plaid.institution`.
|
39
|
-
|
40
|
-
Use `Plaid::Category.all` and `Plaid::Category.get` instead of `Plaid.category`.
|
41
|
-
|
42
|
-
`Plaid::Account#institution_type` was renamed to `Plaid::Account#institution`.
|
43
|
-
|
44
|
-
`Plaid::Transaction#account` was renamed to `Plaid::Transaction#account_id`.
|
45
|
-
|
46
|
-
`Plaid::Transaction#date` is a Date, not a String object now.
|
47
|
-
|
48
|
-
`Plaid::Transaction#cat` was removed. Use `Plaid::Transaction#category_hierarchy` and `Plaid::Transaction#category_id` directly.
|
49
|
-
|
50
|
-
`Plaid::Transaction#category` was renamed to `Plaid::Transaction#category_hierarchy`.
|
51
|
-
|
52
|
-
`Plaid::Transaction#pending_transaction` was renamed to `Plaid::Transaction#pending_transaction_id`.
|
53
|
-
|
54
|
-
Use `Plaid::User#mfa_step` instead of `Plaid::User#select_mfa_method` and `Plaid::User#mfa_authentication`.
|
55
|
-
|
56
|
-
`Plaid::User#permit?` was removed. You don't need this.
|
57
|
-
|
58
|
-
`Plaid::User.delete_user` was renamed to `Plaid::User.delete`.
|
59
|
-
|
60
|
-
**NOTE** that Symbols are now consistently used instead of Strings as product names, keys in hashes, etc. Look at the docs, they have all the examples.
|