unit_ruby_sdk 1.0.2 → 1.0.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ebccfab4c5a1935e6155ab1778b6c8beb123e7a4171b14ea6fcb2617d84d9da0
4
- data.tar.gz: 195fe66d952a385323e750b19abca9940843645252771462efbefc75dc3a1e68
3
+ metadata.gz: bf85eb968fc7cac1337e5093a9c5998a98997ad7f37956e79c45498785b08ffb
4
+ data.tar.gz: e60405762229150510a2e82b76d25aecc547c009c287ca694ef95611e2319c28
5
5
  SHA512:
6
- metadata.gz: 92662a6367cb982b8fe77577b729e28139a9da4b78da5518ea99e32c064fbfede80106477569380a2b68c4816e1e2e4641b4911d38f63cd608ca8f9abb8c9dc4
7
- data.tar.gz: a80e9f7bb02d93e24adafa4c0f1d792ad7fa9ee9bcf64a421c5d06a45366e90ed5a909fa68271ccd026c287ef2ecf4167cddf436563a6738d66a0042688602b7
6
+ metadata.gz: 91ea490c2a75df07cf37281fc32aef9965767fbbcbe12b035a8caf500e3fd08bd23dc2b8eb5c522eef2491885a13c4053ad9c3b0c906925ea077c42ab27c4452
7
+ data.tar.gz: 4c687d3bd7a49d5c0bf4c113b20aabf42e1fcfec5381165ced6fb5f45825565bd5ab058529c97224d6d3680df936663589f02011de0b2b636429af8174b37d29
data/README.md CHANGED
@@ -121,6 +121,18 @@ deposit = response.data
121
121
  puts deposit.id
122
122
  ```
123
123
 
124
+ ### Creating a counterparty with a plaid token
125
+ ```ruby
126
+ response = Unit::Counterparty.create_with_plaid_token(
127
+ customer_id: "823139",
128
+ type: "Business",
129
+ name: "Jo Joel",
130
+ plaid_processor_token: "processor-sandbox-plaid-token")
131
+
132
+ counterparty = response.data
133
+ puts counterparty.id
134
+ ```
135
+
124
136
  ### Logging Errors
125
137
 
126
138
  ```ruby
@@ -0,0 +1,65 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "./base_resource"
4
+ require_relative "../utils/http_helper"
5
+ require "json"
6
+
7
+ # class for creating requests for counterparties to Unit API and parsing responses
8
+ # @see https://docs.unit.co/payments-counterparties
9
+ module Unit
10
+ module Resource
11
+ class CounterpartyResource < Unit::Resource::BaseResource
12
+ class << self
13
+ # Create a counterparty by calling Unit's API
14
+ # @param request [CreateCounterpartyRequest, CreateWithPlaidTokenRequest]
15
+ # @return [UnitResponse, UnitError]
16
+ def create_counterparty(request)
17
+ payload = request.to_json_api
18
+ response = HttpHelper.post("#{api_url}/counterparties", body: payload, headers: headers)
19
+ response_handler(response)
20
+ end
21
+
22
+ # Update counterparty by calling Unit's API
23
+ # @param request [UpdateCounterpartyRequest]
24
+ # @return [UnitResponse, UnitError]
25
+ def update_counterparty(request)
26
+ payload = request.to_json_api
27
+ response = HttpHelper.patch("#{api_url}/counterparties/#{request.counterparty_id}", body: payload, headers: headers)
28
+ response_handler(response)
29
+ end
30
+
31
+ # Delete counterparty by calling Unit's API
32
+ # @param counterparty_id String
33
+ # @return [UnitResponse, UnitError]
34
+ def delete(counterparty_id)
35
+ response = HttpHelper.delete("#{api_url}/counterparties/#{counterparty_id}", headers: headers, response_type: "delete")
36
+ file_response_handler(response)
37
+ end
38
+
39
+ # Get counterparty by id by calling Unit's API
40
+ # @param counterparty_id String
41
+ # @return [UnitResponse, UnitError]
42
+ def get_counterparty(counterparty_id)
43
+ response = HttpHelper.get("#{api_url}/counterparties/#{counterparty_id}", headers: headers)
44
+ response_handler(response)
45
+ end
46
+
47
+ # Get counterparty balance
48
+ # @param counterparty_id String
49
+ # @return [UnitResponse, UnitError]
50
+ def get_counterparty_balance(counterparty_id)
51
+ response = HttpHelper.get("#{api_url}/counterparties/#{counterparty_id}/balance", headers: headers)
52
+ response_handler(response)
53
+ end
54
+
55
+ # List counterparties
56
+ # @param params [ListCounterpartyParams]
57
+ # @return [UnitResponse, UnitError]
58
+ def list(params = nil)
59
+ response = HttpHelper.get("#{api_url}/counterparties", params: params.to_hash, headers: headers)
60
+ response_handler(response)
61
+ end
62
+ end
63
+ end
64
+ end
65
+ end
@@ -34,8 +34,8 @@ module Unit
34
34
  # @param reason [String]
35
35
  # @param fraud_reason [String] - optional
36
36
  # @return [UnitResponse, UnitError]
37
- def close_deposit_account(account_id:, reason:)
38
- request = CloseDepositAccountRequest.new(account_id, reason)
37
+ def close_deposit_account(account_id:, reason:, fraud_reason: nil)
38
+ request = CloseDepositAccountRequest.new(account_id, reason, fraud_reason)
39
39
  Unit::Resource::AccountResource.close_account(request)
40
40
  end
41
41
 
@@ -0,0 +1,93 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Unit
4
+ module Counterparty
5
+ COUNTER_PARTY_LIMIT = 100
6
+ COUNTER_PARTY_OFFSET = 0
7
+
8
+ autoload :CreateCounterpartyRequest, "unit/models/counterparty/create_counterparty_request"
9
+ autoload :CreateWithPlaidTokenRequest, "unit/models/counterparty/create_with_plaid_token_request"
10
+ autoload :ListCounterpartyParams, "unit/models/counterparty/list_counterparty_params"
11
+ autoload :UpdateCounterpartyRequest, "unit/models/counterparty/update_counterparty_request"
12
+
13
+ class << self
14
+ # Create counterparty by calling Unit's API
15
+ # @see https://docs.unit.co/payments-counterparties/#create-counterparty
16
+ # @param customer_id [String]
17
+ # @param name [String]
18
+ # @param routing_number [String]
19
+ # @param account_number [String]
20
+ # @param account_type [String]
21
+ # @param type [String]
22
+ # @param tags [Hash] - optional
23
+ # @param permissions [String] - optional
24
+ # @param idempotency_key [String] - optional
25
+ def create_counterparty(customer_id:, name:, routing_number:, account_number:, account_type:, type:, tags: nil, permissions: nil, idempotency_key: nil)
26
+ request = CreateCounterpartyRequest.new(customer_id, name, routing_number, account_number, account_type, type, tags, permissions, idempotency_key)
27
+ Unit::Resource::CounterpartyResource.create_counterparty(request)
28
+ end
29
+
30
+ # Create counterparty with plaid token
31
+ # @see https://docs.unit.co/payments-counterparties/#create-counterparty-with-plaid-token
32
+ # @param customer_id [String]
33
+ # @param type [String]
34
+ # @param name [String]
35
+ # @param plaid_processor_token [String]
36
+ # @param verify_name [Boolean] - optional
37
+ # @param permissions [String] - optional
38
+ # @param tags [Hash] - optional
39
+ # @param idempotency_key [String] - optional
40
+ def create_with_plaid_token(customer_id:, type:, name:, plaid_processor_token:, verify_name: nil, permissions: nil, tags: nil, idempotency_key: nil)
41
+ request = CreateWithPlaidTokenRequest.new(customer_id, type, name, plaid_processor_token, verify_name, permissions, tags, idempotency_key)
42
+ Unit::Resource::CounterpartyResource.create_counterparty(request)
43
+ end
44
+
45
+ # List counterparties
46
+ # @see https://docs.unit.co/payments-counterparties/#list-counterparties
47
+ # @param limit [Integer] - optional
48
+ # @param offset [Integer] - optional
49
+ # @param customer_id [String] - optional
50
+ # @param account_number [String] - optional
51
+ # @param routing_number [String] - optional
52
+ # @param tags [Hash] - optional
53
+ # @param permissions [Array<String>] - optional
54
+ def list_counterparty(limit: COUNTER_PARTY_LIMIT, offset: COUNTER_PARTY_OFFSET, customer_id: nil, account_number: nil, routing_number: nil, tags: nil, permissions: nil)
55
+ params = ListCounterpartyParams.new(limit, offset, customer_id, account_number, routing_number, tags, permissions)
56
+ Unit::Resource::CounterpartyResource.list(params)
57
+ end
58
+
59
+ # Get counterparty by id
60
+ # @param counterparty_id [String]
61
+ # @see https://docs.unit.co/payments-counterparties/#get-one-counterparty
62
+ def get_counterparty(counterparty_id:)
63
+ Unit::Resource::CounterpartyResource.get_counterparty(counterparty_id)
64
+ end
65
+
66
+ # Get counterparty balance
67
+ # @param counterparty_id [String]
68
+ # @see https://docs.unit.co/payments-counterparties/#get-counterparty-balance
69
+ def get_counterparty_balance(counterparty_id:)
70
+ Unit::Resource::CounterpartyResource.get_counterparty_balance(counterparty_id)
71
+ end
72
+
73
+ # Update counterparty
74
+ # @see https://docs.unit.co/payments-counterparties/#list-counterparties
75
+ # @param counterparty_id [String]
76
+ # @param plaid_processor_token [String]
77
+ # @param verify_name [Boolean] - optional
78
+ # @param permissions [String] - optional
79
+ # @param tags [Hash] - optional
80
+ def update_counterparty(counterparty_id:, plaid_processor_token: nil, verify_name: nil, permissions: nil, tags: nil)
81
+ request = UpdateCounterpartyRequest.new(counterparty_id, plaid_processor_token, verify_name, permissions, tags)
82
+ Unit::Resource::CounterpartyResource.update_counterparty(request)
83
+ end
84
+
85
+ # Delete counterparty
86
+ # @param counterparty_id [String]
87
+ # @see https://docs.unit.co/payments-counterparties/#get-one-counterparty
88
+ def delete_counterparty(counterparty_id:)
89
+ Unit::Resource::CounterpartyResource.delete(counterparty_id)
90
+ end
91
+ end
92
+ end
93
+ end
@@ -0,0 +1,56 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Request to create a counterparty
4
+ # @see https://docs.unit.co/payments-counterparties/#create-counterparty
5
+ module Unit
6
+ module Counterparty
7
+ class CreateCounterpartyRequest
8
+ attr_reader :customer_id, :name, :routing_number, :account_number, :account_type,
9
+ :type, :tags, :permissions, :idempotency_key
10
+
11
+ # @param customer_id [String]
12
+ # @param name [String]
13
+ # @param routing_number [String]
14
+ # @param account_number [String]
15
+ # @param account_type [String]
16
+ # @param type [String]
17
+ # @param tags [Hash] - optional
18
+ # @param permissions [String] - optional
19
+ # @param idempotency_key [String] - optional
20
+ def initialize(customer_id, name, routing_number, account_number, account_type, type, tags = nil, permissions = nil, idempotency_key = nil)
21
+ @customer_id = customer_id
22
+ @name = name
23
+ @routing_number = routing_number
24
+ @account_number = account_number
25
+ @account_type = account_type
26
+ @type = type
27
+ @tags = tags
28
+ @permissions = permissions
29
+ @idempotency_key = idempotency_key
30
+ end
31
+
32
+ def to_json_api
33
+ payload = {
34
+ "data": {
35
+ "type": "achCounterparty",
36
+ "attributes": {
37
+ name: name,
38
+ routingNumber: routing_number,
39
+ accountNumber: account_number,
40
+ accountType: account_type,
41
+ type: type,
42
+ tags: tags,
43
+ permissions: permissions,
44
+ idempotencyKey: idempotency_key
45
+ },
46
+ "relationships": {
47
+ customer: Unit::Types::Relationship.new("customer", customer_id).to_hash
48
+ }
49
+ }
50
+ }
51
+ payload[:data][:attributes].compact!
52
+ payload.to_json
53
+ end
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,53 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Request to create a counterparty with plaid token
4
+ # @see https://docs.unit.co/payments-counterparties/#create-counterparty-with-plaid-token
5
+ module Unit
6
+ module Counterparty
7
+ class CreateWithPlaidTokenRequest
8
+ attr_reader :customer_id, :type, :name, :plaid_processor_token,
9
+ :verify_name, :permissions, :tags, :idempotency_key
10
+
11
+ # @param customer_id [String]
12
+ # @param type [String]
13
+ # @param name [String]
14
+ # @param plaid_processor_token [String]
15
+ # @param verify_name [Boolean] - optional
16
+ # @param permissions [String] - optional
17
+ # @param tags [Hash] - optional
18
+ # @param idempotency_key [String] - optional
19
+ def initialize(customer_id, type, name, plaid_processor_token, verify_name = nil, permissions = nil, tags = nil, idempotency_key = nil)
20
+ @customer_id = customer_id
21
+ @type = type
22
+ @name = name
23
+ @plaid_processor_token = plaid_processor_token
24
+ @verify_name = verify_name
25
+ @permissions = permissions
26
+ @tags = tags
27
+ @idempotency_key = idempotency_key
28
+ end
29
+
30
+ def to_json_api
31
+ payload = {
32
+ "data": {
33
+ "type": "achCounterparty",
34
+ "attributes": {
35
+ type: type,
36
+ name: name,
37
+ plaidProcessorToken: plaid_processor_token,
38
+ verifyName: verify_name,
39
+ permissions: permissions,
40
+ tags: tags,
41
+ idempotencyKey: idempotency_key
42
+ },
43
+ "relationships": {
44
+ customer: Unit::Types::Relationship.new("customer", customer_id).to_hash
45
+ }
46
+ }
47
+ }
48
+ payload[:data][:attributes].compact!
49
+ payload.to_json
50
+ end
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,45 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Request to list counterparties
4
+ # @see https://docs.unit.co/payments-counterparties/#list-counterparties
5
+ module Unit
6
+ module Counterparty
7
+ class ListCounterpartyParams
8
+ attr_reader :limit, :offset, :customer_id, :account_number, :routing_number, :tags, :permissions
9
+
10
+ # @param limit [Integer] - optional
11
+ # @param offset [Integer] - optional
12
+ # @param customer_id [String] - optional
13
+ # @param account_number [String] - optional
14
+ # @param routing_number [String] - optional
15
+ # @param tags [Hash] - optional
16
+ # @param permissions [Array<String>] - optional
17
+ def initialize(limit = COUNTER_PARTY_LIMIT, offset = COUNTER_PARTY_OFFSET, customer_id = nil,
18
+ account_number = nil, routing_number = nil, tags = nil, permissions = nil)
19
+ @limit = limit
20
+ @offset = offset
21
+ @customer_id = customer_id
22
+ @account_number = account_number
23
+ @routing_number = routing_number
24
+ @tags = tags
25
+ @permissions = permissions
26
+ end
27
+
28
+ def to_hash
29
+ params =
30
+ {
31
+ "page[limit]": limit,
32
+ "page[offset]": offset,
33
+ "filter[customerId]": customer_id,
34
+ "filter[accountNumber]": account_number,
35
+ "filter[routingNumber]": routing_number,
36
+ "filter[tags]": tags
37
+ }
38
+ permissions&.each_with_index&.map do |val, index|
39
+ params.merge!({ "filter[permissions][#{index}]": val })
40
+ end
41
+ params.compact
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,40 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Request to update a counterparty
4
+ # @see https://docs.unit.co/payments-counterparties/#list-counterparties
5
+ module Unit
6
+ module Counterparty
7
+ class UpdateCounterpartyRequest
8
+ attr_reader :counterparty_id, :plaid_processor_token, :verify_name, :permissions, :tags
9
+
10
+ # @param counterparty_id [String]
11
+ # @param plaid_processor_token [String]
12
+ # @param verify_name [Boolean] - optional
13
+ # @param permissions [String] - optional
14
+ # @param tags [Hash] - optional
15
+ def initialize(counterparty_id, plaid_processor_token, verify_name = nil, permissions = nil, tags = nil)
16
+ @counterparty_id = counterparty_id
17
+ @plaid_processor_token = plaid_processor_token
18
+ @verify_name = verify_name
19
+ @permissions = permissions
20
+ @tags = tags
21
+ end
22
+
23
+ def to_json_api
24
+ payload = {
25
+ "data": {
26
+ "type": "counterparty",
27
+ attributes: {
28
+ plaidProcessorToken: plaid_processor_token,
29
+ verifyName: verify_name,
30
+ permissions: permissions,
31
+ tags: tags
32
+ }
33
+ }
34
+ }
35
+ payload[:data][:attributes].compact!
36
+ payload.to_json
37
+ end
38
+ end
39
+ end
40
+ end
data/lib/unit/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Unit
4
- VERSION = "1.0.2"
4
+ VERSION = "1.0.3"
5
5
  end
data/lib/unit_ruby_sdk.rb CHANGED
@@ -13,6 +13,8 @@ module Unit
13
13
  autoload :Statement, "unit/models/statement/statement"
14
14
  autoload :AtmLocation, "unit/models/atm_location/atm_location"
15
15
  autoload :CheckDeposit, "unit/models/check_deposit/check_deposit"
16
+ autoload :Counterparty, "unit/models/counterparty/counterparty"
17
+
16
18
  module Resource
17
19
  autoload :ApplicationResource, "unit/api_resources/application_resource"
18
20
  autoload :CustomerResource, "unit/api_resources/customer_resource"
@@ -24,6 +26,7 @@ module Unit
24
26
  autoload :StatementResource, "unit/api_resources/statement_resource"
25
27
  autoload :AtmLocationResource, "unit/api_resources/atm_location_resource"
26
28
  autoload :CheckDepositResource, "unit/api_resources/check_deposit_resource"
29
+ autoload :CounterpartyResource, "unit/api_resources/counterparty_resource"
27
30
  end
28
31
 
29
32
  module Types
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: unit_ruby_sdk
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Unit
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-02-01 00:00:00.000000000 Z
11
+ date: 2023-02-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: factory_bot_rails
@@ -101,6 +101,7 @@ files:
101
101
  - lib/unit/api_resources/base_resource.rb
102
102
  - lib/unit/api_resources/card_resource.rb
103
103
  - lib/unit/api_resources/check_deposit_resource.rb
104
+ - lib/unit/api_resources/counterparty_resource.rb
104
105
  - lib/unit/api_resources/customer_resource.rb
105
106
  - lib/unit/api_resources/payment_resource.rb
106
107
  - lib/unit/api_resources/statement_resource.rb
@@ -144,6 +145,11 @@ files:
144
145
  - lib/unit/models/check_deposit/list_deposit_params.rb
145
146
  - lib/unit/models/check_deposit/patch_deposit_request.rb
146
147
  - lib/unit/models/check_deposit/upload_image_request.rb
148
+ - lib/unit/models/counterparty/counterparty.rb
149
+ - lib/unit/models/counterparty/create_counterparty_request.rb
150
+ - lib/unit/models/counterparty/create_with_plaid_token_request.rb
151
+ - lib/unit/models/counterparty/list_counterparty_params.rb
152
+ - lib/unit/models/counterparty/update_counterparty_request.rb
147
153
  - lib/unit/models/customer/add_authorized_users_request.rb
148
154
  - lib/unit/models/customer/archive_customer_request.rb
149
155
  - lib/unit/models/customer/customer.rb