unit_ruby_sdk 1.0.2 → 1.0.3

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