unit_ruby_sdk 1.0.2 → 1.0.4

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 (34) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +60 -0
  3. data/lib/unit/api_resources/account_resource.rb +1 -1
  4. data/lib/unit/api_resources/counterparty_resource.rb +65 -0
  5. data/lib/unit/api_resources/payment_resource.rb +24 -5
  6. data/lib/unit/api_resources/transaction_resource.rb +9 -0
  7. data/lib/unit/models/account/account.rb +110 -2
  8. data/lib/unit/models/account/credit/balance_history_request.rb +39 -0
  9. data/lib/unit/models/account/credit/close_account_request.rb +36 -0
  10. data/lib/unit/models/account/credit/create_account_request.rb +44 -0
  11. data/lib/unit/models/account/credit/freeze_account_request.rb +36 -0
  12. data/lib/unit/models/account/credit/list_account_params.rb +51 -0
  13. data/lib/unit/models/account/credit/patch_account_request.rb +36 -0
  14. data/lib/unit/models/counterparty/counterparty.rb +93 -0
  15. data/lib/unit/models/counterparty/create_counterparty_request.rb +56 -0
  16. data/lib/unit/models/counterparty/create_with_plaid_token_request.rb +53 -0
  17. data/lib/unit/models/counterparty/list_counterparty_params.rb +45 -0
  18. data/lib/unit/models/counterparty/update_counterparty_request.rb +40 -0
  19. data/lib/unit/models/payment/create_ach_payment_inline_request.rb +60 -0
  20. data/lib/unit/models/payment/create_payment_linked_request.rb +65 -0
  21. data/lib/unit/models/payment/create_wire_payment_request.rb +44 -0
  22. data/lib/unit/models/payment/create_with_plaid_token_request.rb +69 -0
  23. data/lib/unit/models/payment/get_request.rb +22 -0
  24. data/lib/unit/models/payment/list_payment_params.rb +79 -0
  25. data/lib/unit/models/payment/patch_ach_payment_request.rb +31 -0
  26. data/lib/unit/models/payment/payment.rb +142 -1
  27. data/lib/unit/models/transaction/patch_book_transaction_request.rb +39 -0
  28. data/lib/unit/models/transaction/patch_chargeback_transaction_request.rb +39 -0
  29. data/lib/unit/models/transaction/transaction.rb +24 -0
  30. data/lib/unit/types/counterparty.rb +31 -0
  31. data/lib/unit/types/wire_counterparty.rb +31 -0
  32. data/lib/unit/version.rb +1 -1
  33. data/lib/unit_ruby_sdk.rb +5 -0
  34. metadata +25 -2
@@ -2,9 +2,17 @@
2
2
 
3
3
  module Unit
4
4
  module Payment
5
+ PAYMENT_LIMIT = 100
6
+ PAYMENT_OFFSET = 0
5
7
  autoload :CreateBookPaymentRequest, "unit/models/payment/create_book_payment_request"
6
8
  autoload :PatchBookPaymentRequest, "unit/models/payment/patch_book_payment_request"
7
-
9
+ autoload :CreateAchPaymentInlineRequest, "unit/models/payment/create_ach_payment_inline_request"
10
+ autoload :CreatePaymentLinkedRequest, "unit/models/payment/create_payment_linked_request"
11
+ autoload :CreateWithPlaidTokenRequest, "unit/models/payment/create_with_plaid_token_request"
12
+ autoload :PatchReceivedPaymentRequest, "unit/models/payment/patch_received_payment_request"
13
+ autoload :CreateWirePaymentRequest, "unit/models/payment/create_wire_payment_request"
14
+ autoload :ListPaymentParams, "unit/models/payment/list_payment_params"
15
+ autoload :GetRequest, "unit/models/payment/get_request"
8
16
  class << self
9
17
  # Create a new book payment by calling Unit's API
10
18
  # @see https://docs.unit.co/book-payments#book-payments
@@ -32,6 +40,139 @@ module Unit
32
40
  request = Unit::Payment::PatchBookPaymentRequest.new(payment_id, tags)
33
41
  Unit::Resource::PaymentResource.update_payment(request)
34
42
  end
43
+
44
+ # Create a new ach payment to inline counterparty by calling Unit's API
45
+ # @see https://docs.unit.co/ach-origination#payment-inline-counterparty
46
+ # @param account_id [String]
47
+ # @param amount [Integer]
48
+ # @param direction [String]
49
+ # @param counterparty [Counterparty]
50
+ # @param description [String]
51
+ # @param addenda [String] - optional
52
+ # @param idempotency_key [String] - optional
53
+ # @param tags [Hash] - optional
54
+ # @param same_day [Boolean] - optional
55
+ # @param sec_code [String] - optional
56
+ def create_ach_payment_inline(account_id:, amount:, direction:, counterparty:,
57
+ description:, addenda: nil, idempotency_key: nil, tags: nil,
58
+ same_day: nil, sec_code: nil)
59
+ request = Unit::Payment::CreateAchPaymentInlineRequest.new(account_id, amount, direction, counterparty, description,
60
+ addenda, idempotency_key, tags, same_day, sec_code)
61
+ Unit::Resource::PaymentResource.create_payment(request)
62
+ end
63
+
64
+ # Create a new ach payment to linked counterparty by calling Unit's API
65
+ # @see https://docs.unit.co/ach-origination#payment-linked-counterparty
66
+ # @param account_id [String]
67
+ # @param counterparty_id [String]
68
+ # @param amount [Integer]
69
+ # @param direction [String]
70
+ # @param description [String]
71
+ # @param addenda [String] - optional
72
+ # @param idempotency_key [String] - optional
73
+ # @param tags [Hash] - optional
74
+ # @param verify_counterparty_balance [Boolean] - optional
75
+ # @param same_day [Boolean] - optional
76
+ # @param sec_code [String] - optional
77
+ def create_ach_payment_linked(account_id:, counterparty_id:, amount:, direction:,
78
+ description:, addenda: nil, idempotency_key: nil, tags: nil,
79
+ verify_counterparty_balance: nil, same_day: nil, sec_code: nil)
80
+ request = Unit::Payment::CreatePaymentLinkedRequest.new(account_id, counterparty_id, amount, direction,
81
+ description, addenda, idempotency_key, tags,
82
+ verify_counterparty_balance, same_day, sec_code)
83
+ Unit::Resource::PaymentResource.create_payment(request)
84
+ end
85
+
86
+ # Create a new ach payment with a plaid token by calling Unit's API
87
+ # @see https://docs.unit.co/ach-origination#create-ach-payment-with-plaid-token
88
+ # @param account_id [String]
89
+ # @param amount [Integer]
90
+ # @param direction [String]
91
+ # @param description [String]
92
+ # @param plaid_processor_token [String]
93
+ # @param addenda [String] - optional
94
+ # @param idempotency_key [String] - optional
95
+ # @param counterparty_name [String] - optional
96
+ # @param tags [Hash] - optional
97
+ # @param verify_counterparty_balance [Boolean] - optional
98
+ # @param same_day [Boolean] - optional
99
+ # @param sec_code [String] - optional
100
+ def create_ach_payment_with_plaid_token(account_id:, amount:, direction:, description:, plaid_processor_token:,
101
+ addenda: nil, idempotency_key: nil, counterparty_name: nil, tags: nil,
102
+ verify_counterparty_balance: nil, same_day: nil, sec_code: nil)
103
+ request = Unit::Payment::CreateWithPlaidTokenRequest.new(account_id, amount, direction, description, plaid_processor_token,
104
+ addenda, idempotency_key, counterparty_name, tags,
105
+ verify_counterparty_balance, same_day, sec_code)
106
+ Unit::Resource::PaymentResource.create_payment(request)
107
+ end
108
+
109
+ # Update an ACH payment by calling Unit's API
110
+ # @see https://docs.unit.co/ach-origination#update-ach-payment
111
+ # @param payment_id [String]
112
+ # @param tags [Hash] - optional
113
+ def update_ach_payment(payment_id:, tags: nil)
114
+ request = Unit::Payment::PatchAchPaymentRequest.new(payment_id, tags)
115
+ Unit::Resource::PaymentResource.update_payment(request)
116
+ end
117
+
118
+ # Cancel a payment by calling Unit's API
119
+ # @see https://docs.unit.co/ach-origination#cancel-ach-payment
120
+ # @param payment_id [String]
121
+ def cancel_payment(payment_id:)
122
+ Unit::Resource::PaymentResource.cancel_payment(payment_id)
123
+ end
124
+
125
+ # Create a wire payment by calling Unit's API
126
+ # @see https://docs.unit.co/wires#wire-payments
127
+ # @param account_id [String]
128
+ # @param amount [Integer]
129
+ # @param description [String]
130
+ # @param counterparty [WireCounterparty]
131
+ # @param idempotency_key [String] - optional
132
+ # @param tags [Hash] - optional
133
+ def create_wire_payment(account_id:, amount:, description:, counterparty:, idempotency_key: nil, tags: nil)
134
+ request = Unit::Payment::CreateWirePaymentRequest.new(account_id, amount, description, counterparty, idempotency_key, tags)
135
+ Unit::Resource::PaymentResource.create_payment(request)
136
+ end
137
+
138
+ # List payments by calling Unit's API
139
+ # @see https://docs.unit.co/payments#list-payments
140
+ # @param limit [Integer] - optional
141
+ # @param offset [Integer] - optional
142
+ # @param account_id [String] - optional
143
+ # @param customer_id [String] - optional
144
+ # @param counterparty_account_id [String] - optional
145
+ # @param tags [Hash] - optional
146
+ # @param status [Array<String>] - optional
147
+ # @param type [Array<String>] - optional
148
+ # @param direction [Array<String>] - optional
149
+ # @param since [String] - optional
150
+ # @param _until [String] - optional
151
+ # @param from_amount [Integer] - optional
152
+ # @param to_amount [Integer] - optional
153
+ # @param recurring_payment_id [String] - optional
154
+ # @param feature [Array<String>] - optional
155
+ # @param sort [String] - optional
156
+ # @param include [Array<String>] - optional
157
+ def list_payments(limit: PAYMENT_LIMIT, offset: PAYMENT_OFFSET, account_id: nil, customer_id: nil,
158
+ counterparty_account_id: nil, tags: nil, status: nil,
159
+ type: nil, direction: nil, since: nil, until_: nil,
160
+ from_amount: nil, to_amount: nil, recurring_payment_id: nil,
161
+ feature: nil, sort: nil, include: nil)
162
+ request = Unit::Payment::ListPaymentParams.new(limit, offset, account_id, customer_id,
163
+ counterparty_account_id, tags, status, type, direction, since, until_,
164
+ from_amount, to_amount, recurring_payment_id, feature, sort, include)
165
+ Unit::Resource::PaymentResource.list_payments(request)
166
+ end
167
+
168
+ # Get a payment by calling Unit's API
169
+ # @see https://docs.unit.co/payments#get-specific-payment
170
+ # @param payment_id [String]
171
+ # @param include [Array<String>] - optional
172
+ def get_payment(payment_id:, include: nil)
173
+ request = Unit::Payment::GetRequest.new(payment_id, include)
174
+ Unit::Resource::PaymentResource.get_payment(request)
175
+ end
35
176
  end
36
177
  end
37
178
  end
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Request to update a transaction's tags
4
+ # @see https://docs.unit.co/transactions#update-transaction-tags
5
+ module Unit
6
+ module Transaction
7
+ class PatchBookTransactionRequest
8
+ attr_reader :account_id, :transaction_id, :summary, :tags
9
+
10
+ # @param account_id [String]
11
+ # @param transaction_id [String]
12
+ # @param summary [String] - optional
13
+ # @param tags [Hash] - optional
14
+ def initialize(account_id, transaction_id, summary = nil, tags = nil)
15
+ @account_id = account_id
16
+ @transaction_id = transaction_id
17
+ @summary = summary
18
+ @tags = tags
19
+ end
20
+
21
+ def to_json_api
22
+ payload = {
23
+ data: {
24
+ type: "bookTransaction",
25
+ attributes: {
26
+ summary: summary,
27
+ tags: tags
28
+ },
29
+ relationships: {
30
+ account: Unit::Types::Relationship.new("account", account_id).to_hash
31
+ }
32
+ }
33
+ }
34
+ payload[:data][:attributes].compact!
35
+ payload.to_json
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Request to update a transaction's tags
4
+ # @see https://docs.unit.co/transactions#update-transaction-tags
5
+ module Unit
6
+ module Transaction
7
+ class PatchChargebackTransactionRequest
8
+ attr_reader :account_id, :transaction_id, :summary, :tags
9
+
10
+ # @param account_id [String]
11
+ # @param transaction_id [String]
12
+ # @param summary [String] - optional
13
+ # @param tags [Hash] - optional
14
+ def initialize(account_id, transaction_id, summary = nil, tags = nil)
15
+ @account_id = account_id
16
+ @summary = summary
17
+ @tags = tags
18
+ @transaction_id = transaction_id
19
+ end
20
+
21
+ def to_json_api
22
+ payload = {
23
+ data: {
24
+ type: "chargebackTransaction",
25
+ attributes: {
26
+ summary: summary,
27
+ tags: tags
28
+ },
29
+ relationships: {
30
+ account: Unit::Types::Relationship.new("account", account_id).to_hash
31
+ }
32
+ }
33
+ }
34
+ payload[:data][:attributes].compact!
35
+ payload.to_json
36
+ end
37
+ end
38
+ end
39
+ end
@@ -7,6 +7,8 @@ module Unit
7
7
  autoload :GetTransactionParams, "unit/models/transaction/get_transaction_params"
8
8
  autoload :ListTransactionParams, "unit/models/transaction/list_transaction_params"
9
9
  autoload :PatchTagsRequest, "unit/models/transaction/patch_tags_request"
10
+ autoload :PatchBookTransactionRequest, "unit/models/transaction/patch_book_transaction_request"
11
+ autoload :PatchChargebackTransactionRequest, "unit/models/transaction/patch_chargeback_transaction_request"
10
12
 
11
13
  class << self
12
14
  # Get a transaction by id
@@ -55,6 +57,28 @@ module Unit
55
57
  request = PatchTagsRequest.new(account_id, transaction_id, tags)
56
58
  Unit::Resource::TransactionResource.update_tags(request)
57
59
  end
60
+
61
+ # Update a book transaction
62
+ # @see https://docs.unit.co/transactions#update-book-transaction
63
+ # @param account_id [String]
64
+ # @param transaction_id [String]
65
+ # @param summary [String] - optional
66
+ # @param tags [Hash] - optional
67
+ def update_book_transaction(account_id:, transaction_id:, summary:, tags: nil)
68
+ request = PatchBookTransactionRequest.new(account_id, transaction_id, summary, tags)
69
+ Unit::Resource::TransactionResource.update_transaction(request)
70
+ end
71
+
72
+ # Update a chargeback transaction
73
+ # @see https://docs.unit.co/transactions#update-chargeback-transaction
74
+ # @param account_id [String]
75
+ # @param transaction_id [String]
76
+ # @param summary [String] - optional
77
+ # @param tags [Hash] - optional
78
+ def update_chargeback_transaction(account_id:, transaction_id:, summary:, tags: nil)
79
+ request = PatchChargebackTransactionRequest.new(account_id, transaction_id, summary, tags)
80
+ Unit::Resource::TransactionResource.update_transaction(request)
81
+ end
58
82
  end
59
83
  end
60
84
  end
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ # @see https://docs.unit.co/types/#counterparty
4
+ module Unit
5
+ module Types
6
+ class Counterparty
7
+ attr_reader :name, :account_number, :routing_number, :account_type
8
+
9
+ # @param name [String]
10
+ # @param account_number [String]
11
+ # @param routing_number [String]
12
+ # @param account_type [String]
13
+ def initialize(name, account_number, routing_number, account_type)
14
+ @name = name
15
+ @account_number = account_number
16
+ @routing_number = routing_number
17
+ @account_type = account_type
18
+ end
19
+
20
+ def represent
21
+ params = {
22
+ name: name,
23
+ accountNumber: account_number,
24
+ routingNumber: routing_number,
25
+ accountType: account_type
26
+ }
27
+ params.compact
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ # @see https://docs.unit.co/types/#wire-counterparty
4
+ module Unit
5
+ module Types
6
+ class WireCounterparty
7
+ attr_reader :name, :account_number, :routing_number, :address
8
+
9
+ # @param name [String]
10
+ # @param account_number [String]
11
+ # @param routing_number [String]
12
+ # @param address [Address]
13
+ def initialize(name, account_number, routing_number, address)
14
+ @name = name
15
+ @account_number = account_number
16
+ @routing_number = routing_number
17
+ @address = address
18
+ end
19
+
20
+ def represent
21
+ params = {
22
+ name: name,
23
+ accountNumber: account_number,
24
+ routingNumber: routing_number,
25
+ address: address&.represent
26
+ }
27
+ params.compact
28
+ end
29
+ end
30
+ end
31
+ 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.4"
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
@@ -33,6 +36,8 @@ module Unit
33
36
  autoload :BusinessContact, "unit/types/business_contact"
34
37
  autoload :DeviceFingerprint, "unit/types/device_fingerprint"
35
38
  autoload :EvaluationParams, "unit/types/evaluation_params"
39
+ autoload :Counterparty, "unit/types/counterparty"
40
+ autoload :WireCounterparty, "unit/types/wire_counterparty"
36
41
  autoload :FullName, "unit/types/full_name"
37
42
  autoload :Officer, "unit/types/officer"
38
43
  autoload :Phone, "unit/types/phone"
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.4
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-03-01 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
@@ -108,6 +109,12 @@ files:
108
109
  - lib/unit/errors/unit_error.rb
109
110
  - lib/unit/errors/unit_error_payload.rb
110
111
  - lib/unit/models/account/account.rb
112
+ - lib/unit/models/account/credit/balance_history_request.rb
113
+ - lib/unit/models/account/credit/close_account_request.rb
114
+ - lib/unit/models/account/credit/create_account_request.rb
115
+ - lib/unit/models/account/credit/freeze_account_request.rb
116
+ - lib/unit/models/account/credit/list_account_params.rb
117
+ - lib/unit/models/account/credit/patch_account_request.rb
111
118
  - lib/unit/models/account/deposit/account_owners_request.rb
112
119
  - lib/unit/models/account/deposit/balance_history_request.rb
113
120
  - lib/unit/models/account/deposit/close_deposit_account_request.rb
@@ -144,6 +151,11 @@ files:
144
151
  - lib/unit/models/check_deposit/list_deposit_params.rb
145
152
  - lib/unit/models/check_deposit/patch_deposit_request.rb
146
153
  - lib/unit/models/check_deposit/upload_image_request.rb
154
+ - lib/unit/models/counterparty/counterparty.rb
155
+ - lib/unit/models/counterparty/create_counterparty_request.rb
156
+ - lib/unit/models/counterparty/create_with_plaid_token_request.rb
157
+ - lib/unit/models/counterparty/list_counterparty_params.rb
158
+ - lib/unit/models/counterparty/update_counterparty_request.rb
147
159
  - lib/unit/models/customer/add_authorized_users_request.rb
148
160
  - lib/unit/models/customer/archive_customer_request.rb
149
161
  - lib/unit/models/customer/customer.rb
@@ -151,7 +163,14 @@ files:
151
163
  - lib/unit/models/customer/patch_business_customer_request.rb
152
164
  - lib/unit/models/customer/patch_individual_customer_request.rb
153
165
  - lib/unit/models/customer/remove_authorized_users_request.rb
166
+ - lib/unit/models/payment/create_ach_payment_inline_request.rb
154
167
  - lib/unit/models/payment/create_book_payment_request.rb
168
+ - lib/unit/models/payment/create_payment_linked_request.rb
169
+ - lib/unit/models/payment/create_wire_payment_request.rb
170
+ - lib/unit/models/payment/create_with_plaid_token_request.rb
171
+ - lib/unit/models/payment/get_request.rb
172
+ - lib/unit/models/payment/list_payment_params.rb
173
+ - lib/unit/models/payment/patch_ach_payment_request.rb
155
174
  - lib/unit/models/payment/patch_book_payment_request.rb
156
175
  - lib/unit/models/payment/payment.rb
157
176
  - lib/unit/models/statement/get_bank_verification_pdf.rb
@@ -161,6 +180,8 @@ files:
161
180
  - lib/unit/models/statement/statement.rb
162
181
  - lib/unit/models/transaction/get_transaction_params.rb
163
182
  - lib/unit/models/transaction/list_transaction_params.rb
183
+ - lib/unit/models/transaction/patch_book_transaction_request.rb
184
+ - lib/unit/models/transaction/patch_chargeback_transaction_request.rb
164
185
  - lib/unit/models/transaction/patch_tags_request.rb
165
186
  - lib/unit/models/transaction/transaction.rb
166
187
  - lib/unit/models/unit_resource.rb
@@ -170,6 +191,7 @@ files:
170
191
  - lib/unit/types/beneficial_owner.rb
171
192
  - lib/unit/types/business_contact.rb
172
193
  - lib/unit/types/coordinates.rb
194
+ - lib/unit/types/counterparty.rb
173
195
  - lib/unit/types/device_fingerprint.rb
174
196
  - lib/unit/types/document_file_type.rb
175
197
  - lib/unit/types/evaluation_params.rb
@@ -180,6 +202,7 @@ files:
180
202
  - lib/unit/types/relationship.rb
181
203
  - lib/unit/types/relationship_array.rb
182
204
  - lib/unit/types/restricted_resource.rb
205
+ - lib/unit/types/wire_counterparty.rb
183
206
  - lib/unit/utils/http_helper.rb
184
207
  - lib/unit/version.rb
185
208
  - lib/unit_ruby_sdk.rb