unit_ruby_sdk 1.0.0 → 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: e391082a9b8407e9e7ff1848ef06235d65aa3254b6c52ce5548bd4ad02534485
4
- data.tar.gz: 85d795785020ef391810521d23404e989201943ab4a41ca9ab762b1bad068612
3
+ metadata.gz: bf85eb968fc7cac1337e5093a9c5998a98997ad7f37956e79c45498785b08ffb
4
+ data.tar.gz: e60405762229150510a2e82b76d25aecc547c009c287ca694ef95611e2319c28
5
5
  SHA512:
6
- metadata.gz: 54185c5b5bca29ededcf81ed28d193fcf72c2012206f7a4bf095f3f58d958ec52e0f1c31ea34738ec675f3dcb4e1045f339ca6bb842298a736ae4af784e7bb0e
7
- data.tar.gz: c9b2abeae465e2d34cdcb2c83f48565416fe2874ea983ced5eca080c6ee8b746675d3813e33dd5bb5fdc95d5ef01091360b4c51eedadcaf5760bb9e47d0a355a
6
+ metadata.gz: 91ea490c2a75df07cf37281fc32aef9965767fbbcbe12b035a8caf500e3fd08bd23dc2b8eb5c522eef2491885a13c4053ad9c3b0c906925ea077c42ab27c4452
7
+ data.tar.gz: 4c687d3bd7a49d5c0bf4c113b20aabf42e1fcfec5381165ced6fb5f45825565bd5ab058529c97224d6d3680df936663589f02011de0b2b636429af8174b37d29
data/README.md CHANGED
@@ -110,6 +110,29 @@ card = response.data
110
110
  puts card.id
111
111
  ```
112
112
 
113
+ ### Creating a check deposit
114
+ ```ruby
115
+ response = Unit::CheckDeposit.create_deposit(
116
+ account_id: account_id,
117
+ amount: 50_000,
118
+ description: "test check deposit"
119
+ )
120
+ deposit = response.data
121
+ puts deposit.id
122
+ ```
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
+
113
136
  ### Logging Errors
114
137
 
115
138
  ```ruby
@@ -0,0 +1,81 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "./base_resource"
4
+ require_relative "../utils/http_helper"
5
+ require "json"
6
+ # class for creating requests for check deposits to Unit API and parsing responses
7
+ # @see https://docs.unit.co/check-deposits
8
+ module Unit
9
+ module Resource
10
+ class CheckDepositResource < Unit::Resource::BaseResource
11
+ class << self
12
+ # Create a check deposit by calling Unit's API
13
+ # @param request [CreateCheckDepositRequest]
14
+ # @return [UnitResponse, UnitError]
15
+ def create_deposit(request)
16
+ payload = request.to_json_api
17
+ response = HttpHelper.post("#{api_url}/check-deposits", body: payload, headers: headers)
18
+ response_handler(response)
19
+ end
20
+
21
+ # Get a check deposit by id by calling Unit's API
22
+ # @param params [GetRequest]
23
+ # @return [UnitResponse, UnitError]
24
+ def get(params)
25
+ payload = params.to_hash
26
+ response = HttpHelper.get("#{api_url}/check-deposits/#{params.deposit_id}", params: payload, headers: headers)
27
+ response_handler(response)
28
+ end
29
+
30
+ # Get a list of check deposits by calling Unit's API
31
+ # @param params [ListDepositRequest]
32
+ # @return [UnitResponse, UnitError]
33
+ def list(params = nil)
34
+ response = HttpHelper.get("#{api_url}/check-deposits", params: params.to_hash, headers: headers)
35
+ response_handler(response)
36
+ end
37
+
38
+ # Update a check deposit by id by calling Unit's API
39
+ # @param request [PatchCheckDepositRequest]
40
+ # @return [UnitResponse, UnitError]
41
+ def update(request)
42
+ payload = request.to_json_api
43
+ response = HttpHelper.patch("#{api_url}/check-deposits/#{request.deposit_id}", body: payload, headers: headers)
44
+ response_handler(response)
45
+ end
46
+
47
+ # Upload a check deposit image by calling Unit's API
48
+ # @param request [UploadImageRequest]
49
+ # @return [UnitResponse, UnitError]
50
+ def upload(request)
51
+ side = request.is_front_side ? "/front" : "/back"
52
+
53
+ headers_updated = headers.clone
54
+
55
+ headers_updated["Content-Type"] = "image/jpeg"
56
+
57
+ response = HttpHelper.put("#{api_url}/check-deposits/#{request.deposit_id}#{side}", body: request.file_content, headers: headers_updated)
58
+
59
+ response_handler(response)
60
+ end
61
+
62
+ # Get a check deposit image by calling Unit's API
63
+ # @param request [GetImageRequest]
64
+ # @return [UnitResponse, UnitError]
65
+ def get_image(request)
66
+ side = request.is_front_side ? "front" : "back"
67
+ response = HttpHelper.get("#{api_url}/check-deposits/#{request.deposit_id}/#{side}", headers: headers, response_type: "image")
68
+ file_response_handler(response)
69
+ end
70
+
71
+ # Confirm a check deposit by calling Unit's API
72
+ # @param deposit_id [String]
73
+ # @return [UnitResponse, UnitError]
74
+ def confirm_details(deposit_id)
75
+ response = HttpHelper.post("#{api_url}/check-deposits/#{deposit_id}/confirm", headers: headers)
76
+ response_handler(response)
77
+ end
78
+ end
79
+ end
80
+ end
81
+ end
@@ -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,107 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Unit
4
+ module CheckDeposit
5
+ CHECK_DEPOSIT_LIMIT = 100
6
+ CHECK_DEPOSIT_OFFSET = 0
7
+
8
+ autoload :CreateCheckDepositRequest, "unit/models/check_deposit/create_check_deposit_request"
9
+ autoload :GetRequest, "unit/models/check_deposit/get_request"
10
+ autoload :ListDepositParams, "unit/models/check_deposit/list_deposit_params"
11
+ autoload :UploadImageRequest, "unit/models/check_deposit/upload_image_request"
12
+ autoload :GetImageRequest, "unit/models/check_deposit/get_image_request"
13
+ autoload :PatchDepositRequest, "unit/models/check_deposit/patch_deposit_request"
14
+
15
+ class << self
16
+ # Create a check deposit
17
+ # @see https://docs.unit.co/check-deposits#create-check-deposit
18
+ # @param account_id [String]
19
+ # @param amount [Integer]
20
+ # @param description [String]
21
+ # @param tags [Hash] - optional
22
+ # @param idempotency_key [String] - optional
23
+ def create_deposit(account_id:, amount:, description:, tags: nil, idempotency_key: nil)
24
+ request = CreateCheckDepositRequest.new(account_id, amount, description, tags, idempotency_key)
25
+ Unit::Resource::CheckDepositResource.create_deposit(request)
26
+ end
27
+
28
+ # Get a check deposit by calling Unit's API
29
+ # @see https://docs.unit.co/check-deposits#get-specific-check-deposit
30
+ # @param deposit_id [String]
31
+ # @param include [Array<String>] - optional
32
+ def get_deposit(deposit_id:, include: nil)
33
+ request = GetRequest.new(deposit_id, include)
34
+ Unit::Resource::CheckDepositResource.get(request)
35
+ end
36
+
37
+ # List check deposits
38
+ # @see https://docs.unit.co/check-deposits#list-check-deposits
39
+ # @param limit [Integer] - optional
40
+ # @param offset [Integer] - optional
41
+ # @param account_id [String] - optional
42
+ # @param customer_id [String] - optional
43
+ # @param tags [Hash] - optional
44
+ # @param sort [String] - optional
45
+ # @param include [Array<String>] - optional
46
+ def list_deposit(limit: CHECK_DEPOSIT_LIMIT, offset: CHECK_DEPOSIT_OFFSET, account_id: nil,
47
+ customer_id: nil, tags: nil, sort: nil, include: nil)
48
+ request = ListDepositParams.new(limit, offset, account_id, customer_id, tags, sort, include)
49
+ Unit::Resource::CheckDepositResource.list(request)
50
+ end
51
+
52
+ # Upload an image front side for a check deposit
53
+ # @see https://docs.unit.co/check-deposits#upload-front-side-image
54
+ # @param deposit_id [String]
55
+ # @param file_content [String]
56
+ # @param is_front_side [Boolean] - optional
57
+ def upload_image_front(deposit_id:, file_content:, is_front_side: true)
58
+ request = UploadImageRequest.new(deposit_id, file_content, is_front_side: is_front_side)
59
+ Unit::Resource::CheckDepositResource.upload(request)
60
+ end
61
+
62
+ # Upload an image back side for a check deposit
63
+ # @see https://docs.unit.co/check-deposits#upload-back-side-image
64
+ # @param deposit_id [String]
65
+ # @param file_content [String]
66
+ # @param is_front_side [Boolean] - optional
67
+ def upload_image_back(deposit_id:, file_content:, is_front_side: false)
68
+ request = UploadImageRequest.new(deposit_id, file_content, is_front_side: is_front_side)
69
+ Unit::Resource::CheckDepositResource.upload(request)
70
+ end
71
+
72
+ # Get a check deposit image front side
73
+ # @see https://docs.unit.co/check-deposits#get-specific-check-deposit-front-image
74
+ # @param deposit_id [String]
75
+ # @param is_front_side [Boolean] - optional
76
+ def get_image_front(deposit_id:, is_front_side: true)
77
+ request = GetImageRequest.new(deposit_id, is_front_side: is_front_side)
78
+ Unit::Resource::CheckDepositResource.get_image(request)
79
+ end
80
+
81
+ # Get a check deposit image back side
82
+ # @see https://docs.unit.co/check-deposits#get-specific-check-deposit-back-image
83
+ # @param deposit_id [String]
84
+ # @param is_front_side [Boolean] - optional
85
+ def get_image_back(deposit_id:, is_front_side: false)
86
+ request = GetImageRequest.new(deposit_id, is_front_side: is_front_side)
87
+ Unit::Resource::CheckDepositResource.get_image(request)
88
+ end
89
+
90
+ # Update a check deposit
91
+ # @see https://docs.unit.co/check-deposits#update-check-deposit
92
+ # @param deposit_id [String]
93
+ # @param tags [Hash] - optional
94
+ def update_deposit(deposit_id:, tags:)
95
+ request = PatchDepositRequest.new(deposit_id, tags)
96
+ Unit::Resource::CheckDepositResource.update(request)
97
+ end
98
+
99
+ # Confirm check deposit details
100
+ # @see https://docs.unit.co/check-deposits#confirm-check-deposit-details
101
+ # @param deposit_id [String]
102
+ def confirm_details(deposit_id:)
103
+ Unit::Resource::CheckDepositResource.confirm_details(deposit_id)
104
+ end
105
+ end
106
+ end
107
+ end
@@ -0,0 +1,43 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Request to create check deposit
4
+ # @see https://docs.unit.co/check-deposits#create-check-deposit
5
+ module Unit
6
+ module CheckDeposit
7
+ class CreateCheckDepositRequest
8
+ attr_reader :account_id, :amount, :description, :tags, :idempotency_key
9
+
10
+ # @param account_id [String]
11
+ # @param amount [Integer]
12
+ # @param description [String]
13
+ # @param tags [Hash] - optional
14
+ # @param idempotency_key [String] - optional
15
+ def initialize(account_id, amount, description, tags = nil, idempotency_key = nil)
16
+ @account_id = account_id
17
+ @amount = amount
18
+ @description = description
19
+ @tags = tags
20
+ @idempotency_key = idempotency_key
21
+ end
22
+
23
+ def to_json_api
24
+ payload = {
25
+ "data": {
26
+ "type": "checkDeposit",
27
+ "attributes": {
28
+ amount: amount,
29
+ description: description,
30
+ tags: tags,
31
+ idempotency_key: idempotency_key
32
+ },
33
+ "relationships": {
34
+ "account": Unit::Types::Relationship.new("account", account_id).to_hash
35
+ }
36
+ }
37
+ }
38
+ payload[:data][:attributes].compact!
39
+ payload.to_json
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Request to get a check deposit image
4
+ # @see https://docs.unit.co/check-deposits#get-specific-check-deposit-front-image
5
+ # @see https://docs.unit.co/check-deposits#get-specific-check-deposit-back-image
6
+ module Unit
7
+ module CheckDeposit
8
+ class GetImageRequest
9
+ attr_reader :deposit_id, :is_front_side
10
+
11
+ # @param deposit_id [String]
12
+ # @param is_front_side [Boolean] - optional
13
+ def initialize(deposit_id, is_front_side: true)
14
+ @deposit_id = deposit_id
15
+ @is_front_side = is_front_side
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Request to get check deposit by id
4
+ # @see https://docs.unit.co/check-deposits#get-specific-check-deposit
5
+ module Unit
6
+ module CheckDeposit
7
+ class GetRequest
8
+ attr_reader :deposit_id, :include
9
+
10
+ # @param deposit_id [String]
11
+ # @param include [Array<String>] - optional
12
+ def initialize(deposit_id, include = nil)
13
+ @deposit_id = deposit_id
14
+ @include = include
15
+ end
16
+
17
+ def to_hash
18
+ { include: include&.join(",") }.compact
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,42 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Request to list check deposits
4
+ # @see https://docs.unit.co/check-deposits#list-check-deposits
5
+ module Unit
6
+ module CheckDeposit
7
+ class ListDepositParams
8
+ attr_reader :limit, :offset, :account_id, :customer_id, :tags, :sort, :include
9
+
10
+ # @param limit [Integer] - optional
11
+ # @param offset [Integer] - optional
12
+ # @param account_id [String] - optional
13
+ # @param customer_id [String] - optional
14
+ # @param tags [Hash] - optional
15
+ # @param sort [String] - optional
16
+ # @param include [Array<String>] - optional
17
+ def initialize(limit = CHECK_DEPOSIT_LIMIT, offset = CHECK_DEPOSIT_OFFSET, account_id = nil,
18
+ customer_id = nil, tags = nil, sort = nil, include = nil)
19
+ @limit = limit
20
+ @offset = offset
21
+ @account_id = account_id
22
+ @customer_id = customer_id
23
+ @tags = tags
24
+ @sort = sort
25
+ @include = include
26
+ end
27
+
28
+ def to_hash
29
+ params = {
30
+ "page[limit]": limit,
31
+ "page[offset]": offset,
32
+ "filter[accountId]": account_id,
33
+ "filter[customerId]": customer_id,
34
+ "filter[tags]": tags,
35
+ "sort": sort,
36
+ "include": include&.join(",")
37
+ }
38
+ params.compact
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Request to update check deposit
4
+ # @see https://docs.unit.co/check-deposits#update-check-deposit
5
+ module Unit
6
+ module CheckDeposit
7
+ class PatchDepositRequest
8
+ attr_reader :deposit_id, :tags
9
+
10
+ # @param deposit_id [String]
11
+ # @param tags [Hash] - optional
12
+ def initialize(deposit_id, tags)
13
+ @deposit_id = deposit_id
14
+ @tags = tags
15
+ end
16
+
17
+ def to_json_api
18
+ payload = {
19
+ data: {
20
+ type: "checkDeposit",
21
+ attributes: { tags: tags }
22
+ }
23
+ }
24
+ payload[:data][:attributes].compact!
25
+ payload.to_json
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Request to upload a check deposit image
4
+ # @see https://docs.unit.co/check-deposits#upload-front-side-image
5
+ # @see https://docs.unit.co/check-deposits#upload-back-side-image
6
+
7
+ module Unit
8
+ module CheckDeposit
9
+ class UploadImageRequest
10
+ attr_reader :deposit_id, :file_content, :is_front_side
11
+
12
+ # @param deposit_id [String]
13
+ # @param file_content [String]
14
+ # @param is_front_side [Boolean] - optional
15
+ def initialize(deposit_id, file_content, is_front_side: true)
16
+ @deposit_id = deposit_id
17
+ @file_content = file_content
18
+ @is_front_side = is_front_side
19
+ end
20
+ end
21
+ end
22
+ end
@@ -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
@@ -6,8 +6,9 @@ require "json"
6
6
 
7
7
  module HttpHelper
8
8
  VALUES = [:"filter[searchRadius]"].freeze
9
- def self.get(url, headers:, params: nil)
10
- make_request(Net::HTTP::Get, url, headers, params: params)
9
+ RESPONSE_TYPES = %w[delete image].freeze
10
+ def self.get(url, headers:, params: nil, response_type: nil)
11
+ make_request(Net::HTTP::Get, url, headers, params: params, response_type: response_type)
11
12
  end
12
13
 
13
14
  def self.post(url, headers:, body: nil)
@@ -22,11 +23,11 @@ module HttpHelper
22
23
  make_request(Net::HTTP::Patch, url, headers, body: body)
23
24
  end
24
25
 
25
- def self.delete(url, headers:, body: nil)
26
- make_request(Net::HTTP::Delete, url, headers, body: body)
26
+ def self.delete(url, headers:, body: nil, response_type: nil)
27
+ make_request(Net::HTTP::Delete, url, headers, body: body, response_type: response_type)
27
28
  end
28
29
 
29
- def self.make_request(net_http, url, headers, body: nil, params: nil)
30
+ def self.make_request(net_http, url, headers, body: nil, params: nil, response_type: nil)
30
31
  uri = params.nil? ? URI(url) : URI("#{url}?#{encode(params)}")
31
32
  host = uri.host.to_s
32
33
  port = uri.port
@@ -36,13 +37,13 @@ module HttpHelper
36
37
  request = net_http.new uri, headers
37
38
  request.body = body unless body.nil?
38
39
  response = http.request request
39
- response.body = response_check(response)
40
+ response.body = response_check(response, response_type)
40
41
  response
41
42
  end
42
43
  end
43
44
 
44
- def self.response_check(response)
45
- if response.body.include?("html") || response.body.include?("PDF")
45
+ def self.response_check(response, response_type = nil)
46
+ if RESPONSE_TYPES.include?(response_type) || response.body.include?("html") || response.body.include?("PDF")
46
47
  response.body
47
48
  else
48
49
  JSON.parse(response.body)
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.0"
4
+ VERSION = "1.0.3"
5
5
  end
data/lib/unit_ruby_sdk.rb CHANGED
@@ -12,6 +12,9 @@ module Unit
12
12
  autoload :Card, "unit/models/card/card"
13
13
  autoload :Statement, "unit/models/statement/statement"
14
14
  autoload :AtmLocation, "unit/models/atm_location/atm_location"
15
+ autoload :CheckDeposit, "unit/models/check_deposit/check_deposit"
16
+ autoload :Counterparty, "unit/models/counterparty/counterparty"
17
+
15
18
  module Resource
16
19
  autoload :ApplicationResource, "unit/api_resources/application_resource"
17
20
  autoload :CustomerResource, "unit/api_resources/customer_resource"
@@ -22,6 +25,8 @@ module Unit
22
25
  autoload :CardResource, "unit/api_resources/card_resource"
23
26
  autoload :StatementResource, "unit/api_resources/statement_resource"
24
27
  autoload :AtmLocationResource, "unit/api_resources/atm_location_resource"
28
+ autoload :CheckDepositResource, "unit/api_resources/check_deposit_resource"
29
+ autoload :CounterpartyResource, "unit/api_resources/counterparty_resource"
25
30
  end
26
31
 
27
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.0
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-01-22 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
@@ -100,6 +100,8 @@ files:
100
100
  - lib/unit/api_resources/atm_location_resource.rb
101
101
  - lib/unit/api_resources/base_resource.rb
102
102
  - lib/unit/api_resources/card_resource.rb
103
+ - lib/unit/api_resources/check_deposit_resource.rb
104
+ - lib/unit/api_resources/counterparty_resource.rb
103
105
  - lib/unit/api_resources/customer_resource.rb
104
106
  - lib/unit/api_resources/payment_resource.rb
105
107
  - lib/unit/api_resources/statement_resource.rb
@@ -136,6 +138,18 @@ files:
136
138
  - lib/unit/models/card/create_individual_virtual_card_request.rb
137
139
  - lib/unit/models/card/list_card_params.rb
138
140
  - lib/unit/models/card/replace_card_request.rb
141
+ - lib/unit/models/check_deposit/check_deposit.rb
142
+ - lib/unit/models/check_deposit/create_check_deposit_request.rb
143
+ - lib/unit/models/check_deposit/get_image_request.rb
144
+ - lib/unit/models/check_deposit/get_request.rb
145
+ - lib/unit/models/check_deposit/list_deposit_params.rb
146
+ - lib/unit/models/check_deposit/patch_deposit_request.rb
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
139
153
  - lib/unit/models/customer/add_authorized_users_request.rb
140
154
  - lib/unit/models/customer/archive_customer_request.rb
141
155
  - lib/unit/models/customer/customer.rb