unit_ruby_sdk 1.0.5 → 1.2.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/README.md +190 -19
- data/lib/unit/api_resources/application_form_resource.rb +40 -0
- data/lib/unit/api_resources/authorization_request_resource.rb +49 -0
- data/lib/unit/api_resources/authorization_resource.rb +31 -0
- data/lib/unit/api_resources/card_resource.rb +8 -0
- data/lib/unit/api_resources/event_resource.rb +40 -0
- data/lib/unit/api_resources/fee_resource.rb +32 -0
- data/lib/unit/api_resources/payment_resource.rb +17 -0
- data/lib/unit/api_resources/received_payment_resource.rb +47 -0
- data/lib/unit/api_resources/recurring_payment_resource.rb +55 -0
- data/lib/unit/api_resources/repayment_resource.rb +41 -0
- data/lib/unit/api_resources/reward_resource.rb +41 -0
- data/lib/unit/api_resources/webhook_resource.rb +65 -0
- data/lib/unit/models/application/application.rb +98 -10
- data/lib/unit/models/application/create_business_application_request.rb +34 -13
- data/lib/unit/models/application/create_individual_application_request.rb +12 -8
- data/lib/unit/models/application/create_sole_proprietor_application_request.rb +113 -0
- data/lib/unit/models/application/create_trust_application_request.rb +67 -0
- data/lib/unit/models/application/patch_trust_application_request.rb +31 -0
- data/lib/unit/models/application_form/application_form.rb +43 -0
- data/lib/unit/models/application_form/create_application_form_request.rb +48 -0
- data/lib/unit/models/application_form/list_application_form_params.rb +30 -0
- data/lib/unit/models/authorization/authorization.rb +42 -0
- data/lib/unit/models/authorization/get_request.rb +22 -0
- data/lib/unit/models/authorization/list_request.rb +67 -0
- data/lib/unit/models/authorization_request/approve_request.rb +37 -0
- data/lib/unit/models/authorization_request/authorization_request.rb +55 -0
- data/lib/unit/models/authorization_request/decline_request.rb +31 -0
- data/lib/unit/models/authorization_request/list_authorization_params.rb +44 -0
- data/lib/unit/models/card/card.rb +102 -4
- data/lib/unit/models/card/create_business_credit_card_request.rb +29 -0
- data/lib/unit/models/card/create_business_debit_card_request.rb +10 -6
- data/lib/unit/models/card/create_business_virtual_credit_card_request.rb +25 -0
- data/lib/unit/models/card/create_business_virtual_debit_card_request.rb +10 -6
- data/lib/unit/models/card/create_individual_debit_card_request.rb +7 -3
- data/lib/unit/models/card/create_individual_virtual_card_request.rb +6 -3
- data/lib/unit/models/card/patch_business_card_request.rb +50 -0
- data/lib/unit/models/card/patch_business_credit_card_request.rb +22 -0
- data/lib/unit/models/card/patch_business_virtual_card_request.rb +43 -0
- data/lib/unit/models/card/patch_business_virtual_credit_card_request.rb +20 -0
- data/lib/unit/models/customer/list_customer_params.rb +4 -2
- data/lib/unit/models/event/event.rb +37 -0
- data/lib/unit/models/event/list_event_params.rb +37 -0
- data/lib/unit/models/fee/create_fee_request.rb +43 -0
- data/lib/unit/models/fee/fee.rb +34 -0
- data/lib/unit/models/fee/reverse_fee_request.rb +43 -0
- data/lib/unit/models/payment/batch_release_request_builder.rb +21 -0
- data/lib/unit/models/payment/bulk_payment_request.rb +15 -0
- data/lib/unit/models/payment/create_ach_payment_inline_request.rb +29 -19
- data/lib/unit/models/payment/create_batch_release_request.rb +54 -0
- data/lib/unit/models/payment/create_book_payment_request.rb +24 -14
- data/lib/unit/models/payment/create_payment_linked_request.rb +31 -21
- data/lib/unit/models/payment/create_wire_payment_request.rb +22 -12
- data/lib/unit/models/payment/create_with_plaid_token_request.rb +32 -22
- data/lib/unit/models/payment/payment.rb +40 -12
- data/lib/unit/models/received_payment/list_payment_params.rb +51 -0
- data/lib/unit/models/received_payment/patch_payment_request.rb +31 -0
- data/lib/unit/models/received_payment/received_payment.rb +54 -0
- data/lib/unit/models/recurring_payment/create_recurring_credit_ach_payment_request.rb +52 -0
- data/lib/unit/models/recurring_payment/create_recurring_credit_book_payment_request.rb +54 -0
- data/lib/unit/models/recurring_payment/create_recurring_debit_ach_payment_request.rb +60 -0
- data/lib/unit/models/recurring_payment/list_recurring_payment_params.rb +60 -0
- data/lib/unit/models/recurring_payment/recurring_payment.rb +106 -0
- data/lib/unit/models/repayment/create_ach_repayment_request.rb +57 -0
- data/lib/unit/models/repayment/create_book_repayment_request.rb +53 -0
- data/lib/unit/models/repayment/list_repayment_params.rb +48 -0
- data/lib/unit/models/repayment/repayment.rb +67 -0
- data/lib/unit/models/reward/create_reward_request.rb +49 -0
- data/lib/unit/models/reward/get_request.rb +22 -0
- data/lib/unit/models/reward/list_reward_params.rb +65 -0
- data/lib/unit/models/reward/reward.rb +55 -0
- data/lib/unit/models/unit_response.rb +1 -1
- data/lib/unit/models/webhook/create_webhook_request.rb +49 -0
- data/lib/unit/models/webhook/list_webhook_params.rb +39 -0
- data/lib/unit/models/webhook/patch_webhook_request.rb +47 -0
- data/lib/unit/models/webhook/webhook.rb +80 -0
- data/lib/unit/types/application_form_prefill.rb +84 -0
- data/lib/unit/types/application_form_settings_override.rb +51 -0
- data/lib/unit/types/beneficial_owner.rb +15 -10
- data/lib/unit/types/beneficiary.rb +25 -0
- data/lib/unit/types/create_schedule.rb +38 -0
- data/lib/unit/types/evaluation_params.rb +4 -4
- data/lib/unit/types/grantor.rb +37 -0
- data/lib/unit/types/officer.rb +26 -13
- data/lib/unit/types/power_of_attorney_agent.rb +5 -12
- data/lib/unit/types/require_id_verification.rb +29 -0
- data/lib/unit/types/trust_contact.rb +34 -0
- data/lib/unit/types/trustee.rb +37 -0
- data/lib/unit/version.rb +1 -1
- data/lib/unit_ruby_sdk.rb +28 -0
- metadata +67 -2
@@ -0,0 +1,54 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Request to create a batch release
|
4
|
+
# @see https://docs.unit.co/batch-payments/#create-batch-releases
|
5
|
+
module Unit
|
6
|
+
module Payment
|
7
|
+
class CreateBatchReleaseRequest
|
8
|
+
attr_reader :account_id, :batch_account_id, :amount, :description, :sender_name, :sender_address,
|
9
|
+
:sender_account_number, :tags, :idempotency_key
|
10
|
+
|
11
|
+
# @param account_id [String]
|
12
|
+
# @param batch_account_id [String]
|
13
|
+
# @param amount [Integer]
|
14
|
+
# @param description [String]
|
15
|
+
# @param sender_name [String]
|
16
|
+
# @param sender_address [Address]
|
17
|
+
# @param sender_account_number [String]
|
18
|
+
# @param tags [Hash] - optional
|
19
|
+
# @param idempotency_key [String] - optional
|
20
|
+
def initialize(account_id, batch_account_id, amount, description, sender_name, sender_address, sender_account_number, tags = nil, idempotency_key = nil)
|
21
|
+
@account_id = account_id
|
22
|
+
@batch_account_id = batch_account_id
|
23
|
+
@amount = amount
|
24
|
+
@description = description
|
25
|
+
@sender_name = sender_name
|
26
|
+
@sender_address = sender_address
|
27
|
+
@sender_account_number = sender_account_number
|
28
|
+
@tags = tags
|
29
|
+
@idempotency_key = idempotency_key
|
30
|
+
end
|
31
|
+
|
32
|
+
def to_hash
|
33
|
+
payload = {
|
34
|
+
"type": "batchRelease",
|
35
|
+
"attributes": {
|
36
|
+
"amount": amount,
|
37
|
+
"description": description,
|
38
|
+
"senderName": sender_name,
|
39
|
+
"senderAddress": sender_address&.represent,
|
40
|
+
"senderAccountNumber": sender_account_number,
|
41
|
+
"tags": tags,
|
42
|
+
"idempotencyKey": idempotency_key
|
43
|
+
},
|
44
|
+
"relationships": {
|
45
|
+
"batchAccount": Unit::Types::Relationship.new("batchAccount", batch_account_id).to_hash,
|
46
|
+
"receiver": Unit::Types::Relationship.new("depositAccount", account_id).to_hash
|
47
|
+
}
|
48
|
+
}
|
49
|
+
payload[:attributes].compact!
|
50
|
+
payload
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
@@ -14,8 +14,8 @@ module Unit
|
|
14
14
|
# @param transaction_summary_override [String] - optional
|
15
15
|
# @param idempotency_key [String] - optional
|
16
16
|
# @param tags [Hash] - optional
|
17
|
-
def initialize(amount
|
18
|
-
idempotency_key
|
17
|
+
def initialize(amount:, description:, account_id:, counterparty_account_id:, transaction_summary_override: nil,
|
18
|
+
idempotency_key: nil, tags: nil)
|
19
19
|
@amount = amount
|
20
20
|
@description = description
|
21
21
|
@account_id = account_id
|
@@ -27,22 +27,32 @@ module Unit
|
|
27
27
|
|
28
28
|
def to_json_api
|
29
29
|
payload = {
|
30
|
-
data:
|
31
|
-
type: "bookPayment",
|
32
|
-
attributes: {
|
33
|
-
amount: amount,
|
34
|
-
description: description,
|
35
|
-
transactionSummaryOverride: transaction_summary_override,
|
36
|
-
idempotencyKey: idempotency_key,
|
37
|
-
tags: tags
|
38
|
-
},
|
39
|
-
relationships: { account: Unit::Types::Relationship.new("depositAccount", account_id).to_hash,
|
40
|
-
counterpartyAccount: Unit::Types::Relationship.new("depositAccount", counterparty_account_id).to_hash }
|
41
|
-
}
|
30
|
+
data: to_hash
|
42
31
|
}
|
43
32
|
payload[:data][:attributes].compact!
|
44
33
|
payload.to_json
|
45
34
|
end
|
35
|
+
|
36
|
+
def to_hash
|
37
|
+
{
|
38
|
+
type: "bookPayment",
|
39
|
+
attributes: {
|
40
|
+
amount: amount,
|
41
|
+
description: description,
|
42
|
+
transactionSummaryOverride: transaction_summary_override,
|
43
|
+
idempotencyKey: idempotency_key,
|
44
|
+
tags: tags
|
45
|
+
},
|
46
|
+
relationships: { account: Unit::Types::Relationship.new("depositAccount", account_id).to_hash,
|
47
|
+
counterpartyAccount: Unit::Types::Relationship.new("depositAccount", counterparty_account_id).to_hash }
|
48
|
+
}
|
49
|
+
end
|
50
|
+
|
51
|
+
def change_attributes
|
52
|
+
payload = to_hash
|
53
|
+
payload[:attributes].compact!
|
54
|
+
payload
|
55
|
+
end
|
46
56
|
end
|
47
57
|
end
|
48
58
|
end
|
@@ -20,9 +20,9 @@ module Unit
|
|
20
20
|
# @param verify_counterparty_balance [Boolean] - optional
|
21
21
|
# @param same_day [Boolean] - optional
|
22
22
|
# @param sec_code [String] - optional
|
23
|
-
def initialize(account_id
|
24
|
-
addenda
|
25
|
-
same_day
|
23
|
+
def initialize(account_id:, counterparty_id:, amount:, direction:, description:,
|
24
|
+
addenda: nil, idempotency_key: nil, tags: nil, verify_counterparty_balance: nil,
|
25
|
+
same_day: nil, sec_code: nil)
|
26
26
|
@account_id = account_id
|
27
27
|
@counterparty_id = counterparty_id
|
28
28
|
@amount = amount
|
@@ -38,28 +38,38 @@ module Unit
|
|
38
38
|
|
39
39
|
def to_json_api
|
40
40
|
payload = {
|
41
|
-
"data":
|
42
|
-
"type": "achPayment",
|
43
|
-
"attributes": {
|
44
|
-
amount: amount,
|
45
|
-
direction: direction,
|
46
|
-
description: description,
|
47
|
-
addenda: addenda,
|
48
|
-
idempotencyKey: idempotency_key,
|
49
|
-
tags: tags,
|
50
|
-
verifyCounterpartyBalance: verify_counterparty_balance,
|
51
|
-
sameDay: same_day,
|
52
|
-
secCode: sec_code
|
53
|
-
},
|
54
|
-
"relationships": {
|
55
|
-
"account": Unit::Types::Relationship.new("account", account_id).to_hash,
|
56
|
-
"counterparty": Unit::Types::Relationship.new("counterparty", counterparty_id).to_hash
|
57
|
-
}
|
58
|
-
}
|
41
|
+
"data": to_hash
|
59
42
|
}
|
60
43
|
payload[:data][:attributes].compact!
|
61
44
|
payload.to_json
|
62
45
|
end
|
46
|
+
|
47
|
+
def to_hash
|
48
|
+
{
|
49
|
+
"type": "achPayment",
|
50
|
+
"attributes": {
|
51
|
+
amount: amount,
|
52
|
+
direction: direction,
|
53
|
+
description: description,
|
54
|
+
addenda: addenda,
|
55
|
+
idempotencyKey: idempotency_key,
|
56
|
+
tags: tags,
|
57
|
+
verifyCounterpartyBalance: verify_counterparty_balance,
|
58
|
+
sameDay: same_day,
|
59
|
+
secCode: sec_code
|
60
|
+
},
|
61
|
+
"relationships": {
|
62
|
+
"account": Unit::Types::Relationship.new("account", account_id).to_hash,
|
63
|
+
"counterparty": Unit::Types::Relationship.new("counterparty", counterparty_id).to_hash
|
64
|
+
}
|
65
|
+
}
|
66
|
+
end
|
67
|
+
|
68
|
+
def change_attributes
|
69
|
+
payload = to_hash
|
70
|
+
payload[:attributes].compact!
|
71
|
+
payload
|
72
|
+
end
|
63
73
|
end
|
64
74
|
end
|
65
75
|
end
|
@@ -13,7 +13,7 @@ module Unit
|
|
13
13
|
# @param counterparty [WireCounterparty]
|
14
14
|
# @param idempotency_key [String] - optional
|
15
15
|
# @param tags [Hash] - optional
|
16
|
-
def initialize(account_id
|
16
|
+
def initialize(account_id:, amount:, description:, counterparty:, idempotency_key: nil, tags: nil)
|
17
17
|
@account_id = account_id
|
18
18
|
@amount = amount
|
19
19
|
@description = description
|
@@ -24,21 +24,31 @@ module Unit
|
|
24
24
|
|
25
25
|
def to_json_api
|
26
26
|
payload = {
|
27
|
-
data:
|
28
|
-
type: "wirePayment",
|
29
|
-
attributes: {
|
30
|
-
amount: amount,
|
31
|
-
description: description,
|
32
|
-
counterparty: counterparty.represent,
|
33
|
-
idempotencyKey: idempotency_key,
|
34
|
-
tags: tags
|
35
|
-
},
|
36
|
-
relationships: { account: Unit::Types::Relationship.new("account", account_id).to_hash }
|
37
|
-
}
|
27
|
+
data: to_hash
|
38
28
|
}
|
39
29
|
payload[:data][:attributes].compact!
|
40
30
|
payload.to_json
|
41
31
|
end
|
32
|
+
|
33
|
+
def to_hash
|
34
|
+
{
|
35
|
+
type: "wirePayment",
|
36
|
+
attributes: {
|
37
|
+
amount: amount,
|
38
|
+
description: description,
|
39
|
+
counterparty: counterparty.represent,
|
40
|
+
idempotencyKey: idempotency_key,
|
41
|
+
tags: tags
|
42
|
+
},
|
43
|
+
relationships: { account: Unit::Types::Relationship.new("account", account_id).to_hash }
|
44
|
+
}
|
45
|
+
end
|
46
|
+
|
47
|
+
def change_attributes
|
48
|
+
payload = to_hash
|
49
|
+
payload[:attributes].compact!
|
50
|
+
payload
|
51
|
+
end
|
42
52
|
end
|
43
53
|
end
|
44
54
|
end
|
@@ -22,9 +22,9 @@ module Unit
|
|
22
22
|
# @param verify_counterparty_balance [Boolean] - optional
|
23
23
|
# @param same_day [Boolean] - optional
|
24
24
|
# @param sec_code [String] - optional
|
25
|
-
def initialize(account_id
|
26
|
-
addenda
|
27
|
-
verify_counterparty_balance
|
25
|
+
def initialize(account_id:, amount:, direction:, description:, plaid_processor_token:,
|
26
|
+
addenda: nil, idempotency_key: nil, counterparty_name: nil, tags: nil,
|
27
|
+
verify_counterparty_balance: nil, same_day: nil, sec_code: nil)
|
28
28
|
@account_id = account_id
|
29
29
|
@amount = amount
|
30
30
|
@direction = direction
|
@@ -41,29 +41,39 @@ module Unit
|
|
41
41
|
|
42
42
|
def to_json_api
|
43
43
|
payload = {
|
44
|
-
"data":
|
45
|
-
"type": "achPayment",
|
46
|
-
"attributes": {
|
47
|
-
amount: amount,
|
48
|
-
direction: direction,
|
49
|
-
description: description,
|
50
|
-
plaidProcessorToken: plaid_processor_token,
|
51
|
-
addenda: addenda,
|
52
|
-
idempotencyKey: idempotency_key,
|
53
|
-
counterpartyName: counterparty_name,
|
54
|
-
tags: tags,
|
55
|
-
verifyCounterpartyBalance: verify_counterparty_balance,
|
56
|
-
sameDay: same_day,
|
57
|
-
secCode: sec_code
|
58
|
-
},
|
59
|
-
"relationships": {
|
60
|
-
"account": Unit::Types::Relationship.new("account", account_id).to_hash
|
61
|
-
}
|
62
|
-
}
|
44
|
+
"data": to_hash
|
63
45
|
}
|
64
46
|
payload[:data][:attributes].compact!
|
65
47
|
payload.to_json
|
66
48
|
end
|
49
|
+
|
50
|
+
def to_hash
|
51
|
+
{
|
52
|
+
"type": "achPayment",
|
53
|
+
"attributes": {
|
54
|
+
amount: amount,
|
55
|
+
direction: direction,
|
56
|
+
description: description,
|
57
|
+
plaidProcessorToken: plaid_processor_token,
|
58
|
+
addenda: addenda,
|
59
|
+
idempotencyKey: idempotency_key,
|
60
|
+
counterpartyName: counterparty_name,
|
61
|
+
tags: tags,
|
62
|
+
verifyCounterpartyBalance: verify_counterparty_balance,
|
63
|
+
sameDay: same_day,
|
64
|
+
secCode: sec_code
|
65
|
+
},
|
66
|
+
"relationships": {
|
67
|
+
"account": Unit::Types::Relationship.new("account", account_id).to_hash
|
68
|
+
}
|
69
|
+
}
|
70
|
+
end
|
71
|
+
|
72
|
+
def change_attributes
|
73
|
+
payload = to_hash
|
74
|
+
payload[:attributes].compact!
|
75
|
+
payload
|
76
|
+
end
|
67
77
|
end
|
68
78
|
end
|
69
79
|
end
|
@@ -13,6 +13,9 @@ module Unit
|
|
13
13
|
autoload :CreateWirePaymentRequest, "unit/models/payment/create_wire_payment_request"
|
14
14
|
autoload :ListPaymentParams, "unit/models/payment/list_payment_params"
|
15
15
|
autoload :GetRequest, "unit/models/payment/get_request"
|
16
|
+
autoload :BulkPaymentRequest, "unit/models/payment/bulk_payment_request"
|
17
|
+
autoload :CreateBatchReleaseRequest, "unit/models/payment/create_batch_release_request"
|
18
|
+
autoload :BatchReleaseRequestBuilder, "unit/models/payment/batch_release_request_builder"
|
16
19
|
class << self
|
17
20
|
# Create a new book payment by calling Unit's API
|
18
21
|
# @see https://docs.unit.co/book-payments#book-payments
|
@@ -26,8 +29,9 @@ module Unit
|
|
26
29
|
# @return [UnitResponse, UnitError]
|
27
30
|
def create_book_payment(amount:, description:, account_id:, counterparty_account_id:, transaction_summary_override: nil,
|
28
31
|
idempotency_key: nil, tags: nil)
|
29
|
-
request = Unit::Payment::CreateBookPaymentRequest.new(amount, description, account_id, counterparty_account_id, transaction_summary_override,
|
30
|
-
idempotency_key, tags)
|
32
|
+
request = Unit::Payment::CreateBookPaymentRequest.new(amount: amount, description: description, account_id: account_id, counterparty_account_id: counterparty_account_id, transaction_summary_override: transaction_summary_override,
|
33
|
+
idempotency_key: idempotency_key, tags: tags)
|
34
|
+
|
31
35
|
Unit::Resource::PaymentResource.create_payment(request)
|
32
36
|
end
|
33
37
|
|
@@ -56,8 +60,8 @@ module Unit
|
|
56
60
|
def create_ach_payment_inline(account_id:, amount:, direction:, counterparty:,
|
57
61
|
description:, addenda: nil, idempotency_key: nil, tags: nil,
|
58
62
|
same_day: nil, sec_code: nil)
|
59
|
-
request = Unit::Payment::CreateAchPaymentInlineRequest.new(account_id, amount, direction, counterparty, description,
|
60
|
-
|
63
|
+
request = Unit::Payment::CreateAchPaymentInlineRequest.new(account_id: account_id, amount: amount, direction: direction, counterparty: counterparty, description: description, addenda: addenda, idempotency_key: idempotency_key,
|
64
|
+
tags: tags, same_day: same_day, sec_code: sec_code)
|
61
65
|
Unit::Resource::PaymentResource.create_payment(request)
|
62
66
|
end
|
63
67
|
|
@@ -77,9 +81,8 @@ module Unit
|
|
77
81
|
def create_ach_payment_linked(account_id:, counterparty_id:, amount:, direction:,
|
78
82
|
description:, addenda: nil, idempotency_key: nil, tags: nil,
|
79
83
|
verify_counterparty_balance: nil, same_day: nil, sec_code: nil)
|
80
|
-
request = Unit::Payment::CreatePaymentLinkedRequest.new(account_id, counterparty_id, amount, direction,
|
81
|
-
|
82
|
-
verify_counterparty_balance, same_day, sec_code)
|
84
|
+
request = Unit::Payment::CreatePaymentLinkedRequest.new(account_id: account_id, counterparty_id: counterparty_id, amount: amount, direction: direction, description: description, addenda: addenda, idempotency_key: idempotency_key,
|
85
|
+
tags: tags, verify_counterparty_balance: verify_counterparty_balance, same_day: same_day, sec_code: sec_code)
|
83
86
|
Unit::Resource::PaymentResource.create_payment(request)
|
84
87
|
end
|
85
88
|
|
@@ -100,9 +103,8 @@ module Unit
|
|
100
103
|
def create_ach_payment_with_plaid_token(account_id:, amount:, direction:, description:, plaid_processor_token:,
|
101
104
|
addenda: nil, idempotency_key: nil, counterparty_name: nil, tags: nil,
|
102
105
|
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
|
-
|
105
|
-
verify_counterparty_balance, same_day, sec_code)
|
106
|
+
request = Unit::Payment::CreateWithPlaidTokenRequest.new(account_id: account_id, amount: amount, direction: direction, description: description, plaid_processor_token: plaid_processor_token, addenda: addenda, idempotency_key: idempotency_key,
|
107
|
+
counterparty_name: counterparty_name, tags: tags, verify_counterparty_balance: verify_counterparty_balance, same_day: same_day, sec_code: sec_code)
|
106
108
|
Unit::Resource::PaymentResource.create_payment(request)
|
107
109
|
end
|
108
110
|
|
@@ -131,7 +133,7 @@ module Unit
|
|
131
133
|
# @param idempotency_key [String] - optional
|
132
134
|
# @param tags [Hash] - optional
|
133
135
|
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)
|
136
|
+
request = Unit::Payment::CreateWirePaymentRequest.new(account_id: account_id, amount: amount, description: description, counterparty: counterparty, idempotency_key: idempotency_key, tags: tags)
|
135
137
|
Unit::Resource::PaymentResource.create_payment(request)
|
136
138
|
end
|
137
139
|
|
@@ -173,6 +175,32 @@ module Unit
|
|
173
175
|
request = Unit::Payment::GetRequest.new(payment_id, include)
|
174
176
|
Unit::Resource::PaymentResource.get_payment(request)
|
175
177
|
end
|
176
|
-
|
178
|
+
|
179
|
+
# Create a bulk payment by calling Unit's API
|
180
|
+
# @see https://docs.unit.co/payments/#bulk-payments
|
181
|
+
# @param requests [Array<CreateAchPaymentInlineRequest, CreatePaymentLinkedRequest, CreateBookPaymentRequest, CreateWithPlaidTokenRequest, CreateWirePaymentRequest>]
|
182
|
+
def create_bulk_payment(requests:)
|
183
|
+
request = Unit::Payment::BulkPaymentRequest.serialize(requests)
|
184
|
+
Unit::Resource::PaymentResource.create_bulk_payment(request)
|
185
|
+
end
|
186
|
+
|
187
|
+
# Create a batch release
|
188
|
+
# @see https://docs.unit.co/batch-payments/#create-batch-releases
|
189
|
+
# @param account_id [String]
|
190
|
+
# @param amount [Integer]
|
191
|
+
# @param description [String]
|
192
|
+
# @param sender_name [String]
|
193
|
+
# @param sender_address [Address]
|
194
|
+
# @param sender_account_number [String]
|
195
|
+
# @param tags [Hash] - optional
|
196
|
+
# @param idempotency_key [String] - optional
|
197
|
+
def create_batch_release(requests)
|
198
|
+
payload = BatchReleaseRequestBuilder.new
|
199
|
+
requests.each do |req|
|
200
|
+
payload.add_request(req[:account_id], req[:batch_account_id], req[:amount], req[:description], req[:sender_name], req[:sender_address], req[:sender_account_number], req[:tags], req[:idempotency_key])
|
201
|
+
end
|
202
|
+
Unit::Resource::PaymentResource.create_batch_release(payload.to_hash)
|
203
|
+
end
|
204
|
+
end
|
177
205
|
end
|
178
206
|
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Request to list ach received payments by calling Unit's API
|
4
|
+
# @see https://docs.unit.co/received-ach#list-received-payments
|
5
|
+
module Unit
|
6
|
+
module ReceivedPayment
|
7
|
+
class ListPaymentParams
|
8
|
+
attr_reader :limit, :offset, :account_id, :customer_id, :status,
|
9
|
+
:include_completed, :tags, :sort, :include
|
10
|
+
|
11
|
+
# @param limit [Integer] - optional
|
12
|
+
# @param offset [Integer] - optional
|
13
|
+
# @param account_id [String] - optional
|
14
|
+
# @param customer_id [String] - optional
|
15
|
+
# @param status [Array<String>] - optional
|
16
|
+
# @param include_completed [Boolean] - optional
|
17
|
+
# @param tags [Hash] - optional
|
18
|
+
# @param sort [String] - optional
|
19
|
+
# @param include [Array<String>] - optional
|
20
|
+
def initialize(limit = RECEIVED_PAYMENT_LIMIT, offset = ACH_PAYMENT_OFFSET, account_id = nil, customer_id = nil, status = nil,
|
21
|
+
include_completed = nil, tags = nil, sort = nil, include = nil)
|
22
|
+
@limit = limit
|
23
|
+
@offset = offset
|
24
|
+
@account_id = account_id
|
25
|
+
@customer_id = customer_id
|
26
|
+
@status = status
|
27
|
+
@include_completed = include_completed
|
28
|
+
@tags = tags
|
29
|
+
@sort = sort
|
30
|
+
@include = include
|
31
|
+
end
|
32
|
+
|
33
|
+
def to_hash
|
34
|
+
params = {
|
35
|
+
"page[limit]": limit,
|
36
|
+
"page[offset]": offset,
|
37
|
+
"filter[accountId]": account_id,
|
38
|
+
"filter[customerId]": customer_id,
|
39
|
+
"filter[includeCompleted]": include_completed,
|
40
|
+
"filter[tags]": tags,
|
41
|
+
"sort": sort,
|
42
|
+
"include": include&.join(",")
|
43
|
+
}
|
44
|
+
status&.each_with_index&.map do |val, index|
|
45
|
+
params.merge!({ "filter[status][#{index}]": val })
|
46
|
+
end
|
47
|
+
params.compact
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Request to update a received ACH payment
|
4
|
+
# @see https://docs.unit.co/received-ach#update-received-payment
|
5
|
+
module Unit
|
6
|
+
module ReceivedPayment
|
7
|
+
class PatchPaymentRequest
|
8
|
+
attr_reader :payment_id, :tags
|
9
|
+
|
10
|
+
# @param payment_id [String]
|
11
|
+
# @param tags [Hash] - optional
|
12
|
+
def initialize(payment_id, tags = nil)
|
13
|
+
@payment_id = payment_id
|
14
|
+
@tags = tags
|
15
|
+
end
|
16
|
+
|
17
|
+
def to_json_api
|
18
|
+
payload = {
|
19
|
+
"data": {
|
20
|
+
"type": "achReceivedPayment",
|
21
|
+
"attributes": {
|
22
|
+
tags: tags
|
23
|
+
}
|
24
|
+
}
|
25
|
+
}
|
26
|
+
payload[:data][:attributes].compact!
|
27
|
+
payload.to_json
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Unit
|
4
|
+
module ReceivedPayment
|
5
|
+
RECEIVED_PAYMENT_LIMIT = 100
|
6
|
+
RECEIVED_PAYMENT_OFFSET = 0
|
7
|
+
|
8
|
+
autoload :PatchPaymentRequest, "unit/models/received_payment/patch_payment_request"
|
9
|
+
autoload :ListPaymentParams, "unit/models/received_payment/list_payment_params"
|
10
|
+
|
11
|
+
class << self
|
12
|
+
# Get received ach payment by calling Unit's API
|
13
|
+
# @see https://docs.unit.co/received-ach#get-specific-received-payment
|
14
|
+
# @param payment_id [String]
|
15
|
+
def get_payment(payment_id:)
|
16
|
+
Unit::Resource::ReceivedPaymentResource.get_payment(payment_id)
|
17
|
+
end
|
18
|
+
|
19
|
+
# Update a received ACH payment by calling Unit's API
|
20
|
+
# @see https://docs.unit.co/received-ach#update-received-payment
|
21
|
+
# @param payment_id [String]
|
22
|
+
# @param tags [Hash] - optional
|
23
|
+
def update_payment(payment_id:, tags: nil)
|
24
|
+
request = Unit::ReceivedPayment::PatchPaymentRequest.new(payment_id, tags)
|
25
|
+
Unit::Resource::ReceivedPaymentResource.update_payment(request)
|
26
|
+
end
|
27
|
+
|
28
|
+
# List ach payments by calling Unit's API
|
29
|
+
# @see https://docs.unit.co/received-ach#list-received-payments
|
30
|
+
# @param limit [Integer] - optional
|
31
|
+
# @param offset [Integer] - optional
|
32
|
+
# @param account_id [String] - optional
|
33
|
+
# @param customer_id [String] - optional
|
34
|
+
# @param status [Array<String>] - optional
|
35
|
+
# @param include_completed [Boolean] - optional
|
36
|
+
# @param tags [Hash] - optional
|
37
|
+
# @param sort [String] - optional
|
38
|
+
# @param include [Array<String>] - optional
|
39
|
+
def list_payments(limit: RECEIVED_PAYMENT_LIMIT, offset: RECEIVED_PAYMENT_OFFSET, account_id: nil, customer_id: nil, status: nil,
|
40
|
+
include_completed: nil, tags: nil, sort: nil, include: nil)
|
41
|
+
request = Unit::ReceivedPayment::ListPaymentParams.new(limit, offset, account_id, customer_id, status,
|
42
|
+
include_completed, tags, sort, include)
|
43
|
+
Unit::Resource::ReceivedPaymentResource.list_payments(request)
|
44
|
+
end
|
45
|
+
|
46
|
+
# Advance a received payment by calling Unit's API
|
47
|
+
# @see https://docs.unit.co/received-ach#advance-received-payment
|
48
|
+
# @param payment_id [String]
|
49
|
+
def advance_payment(payment_id:)
|
50
|
+
Unit::Resource::ReceivedPaymentResource.advance_payment(payment_id)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Request to create a recurring credit ach payment
|
4
|
+
# @see https://docs.unit.co/recurring-payments/#recurring-payment-credit-ach-payment
|
5
|
+
module Unit
|
6
|
+
module RecurringPayment
|
7
|
+
class CreateRecurringCreditAchPaymentRequest
|
8
|
+
attr_reader :account_id, :counterparty_id, :amount, :description, :addenda, :schedule, :idempotency_key, :tags
|
9
|
+
|
10
|
+
# @param account_id [String]
|
11
|
+
# @param counterparty_id [String]
|
12
|
+
# @param amount [Integer]
|
13
|
+
# @param description [String]
|
14
|
+
# @param schedule [CreateSchedule]
|
15
|
+
# @param addenda [String] - optional
|
16
|
+
# @param idempotency_key [String] - optional
|
17
|
+
# @param tags [Hash] - optional
|
18
|
+
def initialize(account_id, counterparty_id, amount, description, schedule, addenda = nil, idempotency_key = nil, tags = nil)
|
19
|
+
@account_id = account_id
|
20
|
+
@counterparty_id = counterparty_id
|
21
|
+
@amount = amount
|
22
|
+
@description = description
|
23
|
+
@addenda = addenda
|
24
|
+
@schedule = schedule
|
25
|
+
@idempotency_key = idempotency_key
|
26
|
+
@tags = tags
|
27
|
+
end
|
28
|
+
|
29
|
+
def to_json_api
|
30
|
+
payload = {
|
31
|
+
"data": {
|
32
|
+
"type": "recurringCreditAchPayment",
|
33
|
+
"attributes": {
|
34
|
+
"amount": amount,
|
35
|
+
"description": description,
|
36
|
+
"addenda": addenda,
|
37
|
+
"schedule": schedule&.represent,
|
38
|
+
"idempotencyKey": idempotency_key,
|
39
|
+
"tags": tags
|
40
|
+
},
|
41
|
+
"relationships": {
|
42
|
+
account: Unit::Types::Relationship.new("depositAccount", account_id).to_hash,
|
43
|
+
counterparty: Unit::Types::Relationship.new("counterparty", counterparty_id).to_hash
|
44
|
+
}
|
45
|
+
}
|
46
|
+
}
|
47
|
+
payload[:data][:attributes].compact!
|
48
|
+
payload.to_json
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Request to create a recurring credit book payment
|
4
|
+
# @see https://docs.unit.co/recurring-payments/#recurring-credit-book-payment
|
5
|
+
module Unit
|
6
|
+
module RecurringPayment
|
7
|
+
class CreateRecurringCreditBookPaymentRequest
|
8
|
+
attr_reader :account_id, :counterparty_id, :amount, :description, :schedule, :transaction_summary_override, :idempotency_key, :tags
|
9
|
+
|
10
|
+
# @param account_id [String]
|
11
|
+
# @param counterparty_id [String]
|
12
|
+
# @param amount [Integer]
|
13
|
+
# @param description [String]
|
14
|
+
# @param schedule [CreateSchedule]
|
15
|
+
# @param transaction_summary_override [String] - optional
|
16
|
+
# @param idempotency_key [String] - optional
|
17
|
+
# @param tags [Hash] - optional
|
18
|
+
def initialize(account_id, counterparty_id, amount, description, schedule,
|
19
|
+
transaction_summary_override = nil, idempotency_key = nil, tags = nil)
|
20
|
+
@account_id = account_id
|
21
|
+
@counterparty_id = counterparty_id
|
22
|
+
@amount = amount
|
23
|
+
@description = description
|
24
|
+
@transaction_summary_override = transaction_summary_override
|
25
|
+
@schedule = schedule
|
26
|
+
@idempotency_key = idempotency_key
|
27
|
+
@tags = tags
|
28
|
+
end
|
29
|
+
|
30
|
+
def to_json_api
|
31
|
+
payload = {
|
32
|
+
"data": {
|
33
|
+
"type": "recurringCreditBookPayment",
|
34
|
+
"attributes": {
|
35
|
+
"amount": amount,
|
36
|
+
"description": description,
|
37
|
+
"schedule": schedule&.represent,
|
38
|
+
"transaction_summary_override": transaction_summary_override,
|
39
|
+
"idempotencyKey": idempotency_key,
|
40
|
+
"tags": tags
|
41
|
+
},
|
42
|
+
"relationships":
|
43
|
+
{
|
44
|
+
account: Unit::Types::Relationship.new("depositAccount", account_id).to_hash,
|
45
|
+
counterpartyAccount: Unit::Types::Relationship.new("depositAccount", counterparty_id).to_hash
|
46
|
+
}
|
47
|
+
}
|
48
|
+
}
|
49
|
+
payload[:data][:attributes].compact!
|
50
|
+
payload.to_json
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|