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.
Files changed (92) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +190 -19
  3. data/lib/unit/api_resources/application_form_resource.rb +40 -0
  4. data/lib/unit/api_resources/authorization_request_resource.rb +49 -0
  5. data/lib/unit/api_resources/authorization_resource.rb +31 -0
  6. data/lib/unit/api_resources/card_resource.rb +8 -0
  7. data/lib/unit/api_resources/event_resource.rb +40 -0
  8. data/lib/unit/api_resources/fee_resource.rb +32 -0
  9. data/lib/unit/api_resources/payment_resource.rb +17 -0
  10. data/lib/unit/api_resources/received_payment_resource.rb +47 -0
  11. data/lib/unit/api_resources/recurring_payment_resource.rb +55 -0
  12. data/lib/unit/api_resources/repayment_resource.rb +41 -0
  13. data/lib/unit/api_resources/reward_resource.rb +41 -0
  14. data/lib/unit/api_resources/webhook_resource.rb +65 -0
  15. data/lib/unit/models/application/application.rb +98 -10
  16. data/lib/unit/models/application/create_business_application_request.rb +34 -13
  17. data/lib/unit/models/application/create_individual_application_request.rb +12 -8
  18. data/lib/unit/models/application/create_sole_proprietor_application_request.rb +113 -0
  19. data/lib/unit/models/application/create_trust_application_request.rb +67 -0
  20. data/lib/unit/models/application/patch_trust_application_request.rb +31 -0
  21. data/lib/unit/models/application_form/application_form.rb +43 -0
  22. data/lib/unit/models/application_form/create_application_form_request.rb +48 -0
  23. data/lib/unit/models/application_form/list_application_form_params.rb +30 -0
  24. data/lib/unit/models/authorization/authorization.rb +42 -0
  25. data/lib/unit/models/authorization/get_request.rb +22 -0
  26. data/lib/unit/models/authorization/list_request.rb +67 -0
  27. data/lib/unit/models/authorization_request/approve_request.rb +37 -0
  28. data/lib/unit/models/authorization_request/authorization_request.rb +55 -0
  29. data/lib/unit/models/authorization_request/decline_request.rb +31 -0
  30. data/lib/unit/models/authorization_request/list_authorization_params.rb +44 -0
  31. data/lib/unit/models/card/card.rb +102 -4
  32. data/lib/unit/models/card/create_business_credit_card_request.rb +29 -0
  33. data/lib/unit/models/card/create_business_debit_card_request.rb +10 -6
  34. data/lib/unit/models/card/create_business_virtual_credit_card_request.rb +25 -0
  35. data/lib/unit/models/card/create_business_virtual_debit_card_request.rb +10 -6
  36. data/lib/unit/models/card/create_individual_debit_card_request.rb +7 -3
  37. data/lib/unit/models/card/create_individual_virtual_card_request.rb +6 -3
  38. data/lib/unit/models/card/patch_business_card_request.rb +50 -0
  39. data/lib/unit/models/card/patch_business_credit_card_request.rb +22 -0
  40. data/lib/unit/models/card/patch_business_virtual_card_request.rb +43 -0
  41. data/lib/unit/models/card/patch_business_virtual_credit_card_request.rb +20 -0
  42. data/lib/unit/models/customer/list_customer_params.rb +4 -2
  43. data/lib/unit/models/event/event.rb +37 -0
  44. data/lib/unit/models/event/list_event_params.rb +37 -0
  45. data/lib/unit/models/fee/create_fee_request.rb +43 -0
  46. data/lib/unit/models/fee/fee.rb +34 -0
  47. data/lib/unit/models/fee/reverse_fee_request.rb +43 -0
  48. data/lib/unit/models/payment/batch_release_request_builder.rb +21 -0
  49. data/lib/unit/models/payment/bulk_payment_request.rb +15 -0
  50. data/lib/unit/models/payment/create_ach_payment_inline_request.rb +29 -19
  51. data/lib/unit/models/payment/create_batch_release_request.rb +54 -0
  52. data/lib/unit/models/payment/create_book_payment_request.rb +24 -14
  53. data/lib/unit/models/payment/create_payment_linked_request.rb +31 -21
  54. data/lib/unit/models/payment/create_wire_payment_request.rb +22 -12
  55. data/lib/unit/models/payment/create_with_plaid_token_request.rb +32 -22
  56. data/lib/unit/models/payment/payment.rb +40 -12
  57. data/lib/unit/models/received_payment/list_payment_params.rb +51 -0
  58. data/lib/unit/models/received_payment/patch_payment_request.rb +31 -0
  59. data/lib/unit/models/received_payment/received_payment.rb +54 -0
  60. data/lib/unit/models/recurring_payment/create_recurring_credit_ach_payment_request.rb +52 -0
  61. data/lib/unit/models/recurring_payment/create_recurring_credit_book_payment_request.rb +54 -0
  62. data/lib/unit/models/recurring_payment/create_recurring_debit_ach_payment_request.rb +60 -0
  63. data/lib/unit/models/recurring_payment/list_recurring_payment_params.rb +60 -0
  64. data/lib/unit/models/recurring_payment/recurring_payment.rb +106 -0
  65. data/lib/unit/models/repayment/create_ach_repayment_request.rb +57 -0
  66. data/lib/unit/models/repayment/create_book_repayment_request.rb +53 -0
  67. data/lib/unit/models/repayment/list_repayment_params.rb +48 -0
  68. data/lib/unit/models/repayment/repayment.rb +67 -0
  69. data/lib/unit/models/reward/create_reward_request.rb +49 -0
  70. data/lib/unit/models/reward/get_request.rb +22 -0
  71. data/lib/unit/models/reward/list_reward_params.rb +65 -0
  72. data/lib/unit/models/reward/reward.rb +55 -0
  73. data/lib/unit/models/unit_response.rb +1 -1
  74. data/lib/unit/models/webhook/create_webhook_request.rb +49 -0
  75. data/lib/unit/models/webhook/list_webhook_params.rb +39 -0
  76. data/lib/unit/models/webhook/patch_webhook_request.rb +47 -0
  77. data/lib/unit/models/webhook/webhook.rb +80 -0
  78. data/lib/unit/types/application_form_prefill.rb +84 -0
  79. data/lib/unit/types/application_form_settings_override.rb +51 -0
  80. data/lib/unit/types/beneficial_owner.rb +15 -10
  81. data/lib/unit/types/beneficiary.rb +25 -0
  82. data/lib/unit/types/create_schedule.rb +38 -0
  83. data/lib/unit/types/evaluation_params.rb +4 -4
  84. data/lib/unit/types/grantor.rb +37 -0
  85. data/lib/unit/types/officer.rb +26 -13
  86. data/lib/unit/types/power_of_attorney_agent.rb +5 -12
  87. data/lib/unit/types/require_id_verification.rb +29 -0
  88. data/lib/unit/types/trust_contact.rb +34 -0
  89. data/lib/unit/types/trustee.rb +37 -0
  90. data/lib/unit/version.rb +1 -1
  91. data/lib/unit_ruby_sdk.rb +28 -0
  92. metadata +67 -2
@@ -0,0 +1,60 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Create a recurring debit ACH payment request
4
+ # @see https://docs.unit.co/recurring-payments/#recurring-payment-debit-ach-payment
5
+ module Unit
6
+ module RecurringPayment
7
+ class CreateRecurringDebitAchPaymentRequest
8
+ attr_reader :account_id, :counterparty_id, :amount, :description, :addenda, :schedule, :idempotency_key, :tags,
9
+ :verify_counterparty_balance, :same_day
10
+
11
+ # @param account_id [String]
12
+ # @param counterparty_id [String]
13
+ # @param amount [Integer]
14
+ # @param description [String]
15
+ # @param schedule [CreateSchedule]
16
+ # @param addenda [String] - optional
17
+ # @param idempotency_key [String] - optional
18
+ # @param tags [Hash] - optional
19
+ # @param verify_counterparty_balance [Boolean] - optional
20
+ # @param same_day [Boolean] - optional
21
+ def initialize(account_id, counterparty_id, amount, description, schedule, addenda = nil, idempotency_key = nil, tags = nil,
22
+ verify_counterparty_balance = nil, same_day = nil)
23
+ @account_id = account_id
24
+ @counterparty_id = counterparty_id
25
+ @amount = amount
26
+ @description = description
27
+ @addenda = addenda
28
+ @schedule = schedule
29
+ @idempotency_key = idempotency_key
30
+ @tags = tags
31
+ @verify_counterparty_balance = verify_counterparty_balance
32
+ @same_day = same_day
33
+ end
34
+
35
+ def to_json_api
36
+ payload = {
37
+ "data": {
38
+ "type": "recurringDebitAchPayment",
39
+ "attributes": {
40
+ "amount": amount,
41
+ "description": description,
42
+ "addenda": addenda,
43
+ "schedule": schedule&.represent,
44
+ "idempotencyKey": idempotency_key,
45
+ "tags": tags,
46
+ "verifyCounterpartyBalance": verify_counterparty_balance,
47
+ "sameDay": same_day
48
+ },
49
+ "relationships": {
50
+ account: Unit::Types::Relationship.new("depositAccount", account_id).to_hash,
51
+ counterparty: Unit::Types::Relationship.new("counterparty", counterparty_id).to_hash
52
+ }
53
+ }
54
+ }
55
+ payload[:data][:attributes].compact!
56
+ payload.to_json
57
+ end
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,60 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Params for listing recurring payments
4
+ # @see https://docs.unit.co/recurring-payments/#list-recurring-payments
5
+ module Unit
6
+ module RecurringPayment
7
+ class ListRecurringPaymentParams
8
+ attr_reader :limit, :offset, :account_id, :customer_id, :status, :type,
9
+ :from_start_time, :to_start_time, :from_end_time, :to_end_time, :sort
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] - optional
16
+ # @param type [Array] - optional
17
+ # @param from_start_time [String] - optional
18
+ # @param to_start_time [String] - optional
19
+ # @param from_end_time [String] - optional
20
+ # @param to_end_time [String] - optional
21
+ # @param sort [String] - optional
22
+ def initialize(limit = RECURRING_PAYMENT_LIMIT, offset = RECURRING_PAYMENT_OFFSET, account_id = nil, customer_id = nil, status = nil, type = nil,
23
+ from_start_time = nil, to_start_time = nil, from_end_time = nil, to_end_time = nil, sort = nil)
24
+ @limit = limit
25
+ @offset = offset
26
+ @account_id = account_id
27
+ @customer_id = customer_id
28
+ @status = status
29
+ @type = type
30
+ @from_start_date = from_start_time
31
+ @to_start_date = to_start_time
32
+ @from_end_date = from_end_time
33
+ @to_end_date = to_end_time
34
+ @sort = sort
35
+ end
36
+
37
+ def to_hash
38
+ payload = {
39
+ "page[limit]": limit,
40
+ "page[offset]": offset,
41
+ "filter[accountId]": account_id,
42
+ "filter[customerId]": customer_id,
43
+ "filter[fromStartTime]": from_start_time,
44
+ "filter[toStartTime]": to_start_time,
45
+ "filter[fromEndTime]": from_end_time,
46
+ "filter[toEndTime]": to_end_time,
47
+ "sort": sort
48
+ }
49
+ filters = %i[status type]
50
+ filters.each do |filter|
51
+ values = send(filter)
52
+ values&.each_with_index&.map do |val, index|
53
+ params.merge!({ "filter[#{filter}][#{index}]": val })
54
+ end
55
+ end
56
+ payload.compact!
57
+ end
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,106 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Unit
4
+ module RecurringPayment
5
+ RECURRING_PAYMENT_LIMIT = 100
6
+ RECURRING_PAYMENT_OFFSET = 0
7
+ autoload :CreateRecurringCreditBookPaymentRequest, "unit/models/recurring_payment/create_recurring_credit_book_payment_request"
8
+ autoload :CreateRecurringCreditAchPaymentRequest, "unit/models/recurring_payment/create_recurring_credit_ach_payment_request"
9
+ autoload :CreateRecurringDebitAchPaymentRequest, "unit/models/recurring_payment/create_recurring_debit_ach_payment_request"
10
+ autoload :ListRecurringPaymentParams, "unit/models/recurring_payment/list_recurring_payment_params"
11
+
12
+ class << self
13
+ # Create a recurring credit book payment
14
+ # @see https://docs.unit.co/recurring-payments/#recurring-credit-book-payment
15
+ # @param account_id [String]
16
+ # @param counterparty_id [String]
17
+ # @param amount [Integer]
18
+ # @param description [String]
19
+ # @param schedule [CreateSchedule]
20
+ # @param transaction_summary_override [String] - optional
21
+ # @param idempotency_key [String] - optional
22
+ # @param tags [Hash] - optional
23
+ def create_recurring_credit_book_payment(account_id:, counterparty_id:, amount:, description:,
24
+ schedule:, transaction_summary_override: nil, idempotency_key: nil, tags: nil)
25
+ request = Unit::RecurringPayment::CreateRecurringCreditBookPaymentRequest.new(account_id, counterparty_id, amount, description, schedule,
26
+ transaction_summary_override, idempotency_key, tags)
27
+ Unit::Resource::RecurringPaymentResource.create_recurring_payment(request)
28
+ end
29
+
30
+ # Create a recurring credit ACH payment
31
+ # @see https://docs.unit.co/recurring-payments/#recurring-payment-credit-ach-payment
32
+ # @param account_id [String]
33
+ # @param counterparty_id [String]
34
+ # @param amount [Integer]
35
+ # @param description [String]
36
+ # @param schedule [CreateSchedule]
37
+ # @param addenda [String] - optional
38
+ # @param idempotency_key [String] - optional
39
+ # @param tags [Hash] - optional
40
+ def create_recurring_credit_ach_payment(account_id:, counterparty_id:, amount:, description:, schedule:, addenda: nil, idempotency_key: nil, tags: nil)
41
+ request = Unit::RecurringPayment::CreateRecurringCreditAchPaymentRequest.new(account_id, counterparty_id, amount, description, schedule, addenda, idempotency_key, tags)
42
+ Unit::Resource::RecurringPaymentResource.create_recurring_payment(request)
43
+ end
44
+
45
+ # Create a recurring debit ACH payment
46
+ # @see https://docs.unit.co/recurring-payments/#recurring-payment-debit-ach-payment
47
+ # @param account_id [String]
48
+ # @param counterparty_id [String]
49
+ # @param amount [Integer]
50
+ # @param description [String]
51
+ # @param schedule [CreateSchedule]
52
+ # @param addenda [String] - optional
53
+ # @param idempotency_key [String] - optional
54
+ # @param tags [Hash] - optional
55
+ # @param verify_counterparty_balance [Boolean] - optional
56
+ # @param same_day [Boolean] - optional
57
+ def create_recurring_debit_ach_payment(account_id:, counterparty_id:, amount:, description:, schedule:, addenda: nil, idempotency_key: nil, tags: nil,
58
+ verify_counterparty_balance: nil, same_day: nil)
59
+ request = Unit::RecurringPayment::CreateRecurringDebitAchPaymentRequest.new(account_id, counterparty_id, amount, description, schedule, addenda, idempotency_key, tags,
60
+ verify_counterparty_balance, same_day)
61
+ Unit::Resource::RecurringPaymentResource.create_recurring_payment(request)
62
+ end
63
+
64
+ # Enable a recurring payment
65
+ # @see https://docs.unit.co/recurring-payments/#enable-recurring-payment
66
+ # @param recurring_payment_id [String]
67
+ def enable_recurring_payment(recurring_payment_id:)
68
+ Unit::Resource::RecurringPaymentResource.enable_recurring_payment(recurring_payment_id)
69
+ end
70
+
71
+ # Disable a recurring payment
72
+ # @see https://docs.unit.co/recurring-payments/#disable-recurring-payment
73
+ # @param recurring_payment_id [String]
74
+ def disable_recurring_payment(recurring_payment_id:)
75
+ Unit::Resource::RecurringPaymentResource.disable_recurring_payment(recurring_payment_id)
76
+ end
77
+
78
+ # List recurring payments
79
+ # @see https://docs.unit.co/recurring-payments/#list-recurring-payments
80
+ # @param limit [Integer] - optional
81
+ # @param offset [Integer] - optional
82
+ # @param account_id [String] - optional
83
+ # @param customer_id [String] - optional
84
+ # @param status [String] - optional
85
+ # @param type [String] - optional
86
+ # @param from_start_time [String] - optional
87
+ # @param to_start_time [String] - optional
88
+ # @param from_end_time [String] - optional
89
+ # @param to_end_time [String] - optional
90
+ # @param sort [String] - optional
91
+ def list_recurring_payment(limit: RECURRING_PAYMENT_LIMIT, offset: RECURRING_PAYMENT_OFFSET, account_id: nil, customer_id: nil, status: nil, type: nil,
92
+ from_start_time: nil, to_start_time: nil, from_end_time: nil, to_end_time: nil, sort: nil)
93
+ request = Unit::RecurringPayment::ListRecurringPaymentParams.new(limit, offset, account_id, customer_id, status, type,
94
+ from_start_time, to_start_time, from_end_time, to_end_time, sort)
95
+ Unit::Resource::RecurringPaymentResource.list_recurring_payment(request)
96
+ end
97
+
98
+ # Get a recurring payment
99
+ # @see https://docs.unit.co/recurring-payments/#get-specific-recurring-payment
100
+ # @param recurring_payment_id [String]
101
+ def get_recurring_payment(recurring_payment_id:)
102
+ Unit::Resource::RecurringPaymentResource.get_recurring_payment(recurring_payment_id)
103
+ end
104
+ end
105
+ end
106
+ end
@@ -0,0 +1,57 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Request to create an ach repayment
4
+ # @see https://docs.unit.co/repayments/#create-ach-repayment
5
+ module Unit
6
+ module Repayment
7
+ class CreateAchRepaymentRequest
8
+ attr_reader :account_id, :credit_account_id, :counterparty_id, :description,
9
+ :amount, :addenda, :tags, :same_day, :idempotency_key
10
+
11
+ # @param account_id [String]
12
+ # @param credit_account_id [String]
13
+ # @param counterparty_id [String]
14
+ # @param description [String]
15
+ # @param amount [Integer]
16
+ # @param addenda [String] - optional
17
+ # @param tags [Hash] - optional
18
+ # @param same_day [Boolean] - optional
19
+ # @param idempotency_key [String] - optional
20
+ def initialize(account_id, credit_account_id, counterparty_id, description, amount, addenda = nil, tags = nil,
21
+ idempotency_key = nil, same_day: false)
22
+ @account_id = account_id
23
+ @credit_account_id = credit_account_id
24
+ @counterparty_id = counterparty_id
25
+ @description = description
26
+ @amount = amount
27
+ @addenda = addenda
28
+ @tags = tags
29
+ @same_day = same_day
30
+ @idempotency_key = idempotency_key
31
+ end
32
+
33
+ def to_json_api
34
+ payload = {
35
+ data: {
36
+ type: "achRepayment",
37
+ attributes: {
38
+ description: description,
39
+ amount: amount,
40
+ addenda: addenda,
41
+ tags: tags,
42
+ sameDay: same_day,
43
+ idempotencyKey: idempotency_key
44
+ },
45
+ "relationships": {
46
+ "account": Unit::Types::Relationship.new("depositAccount", account_id).to_hash,
47
+ "creditAccount": Unit::Types::Relationship.new("creditAccount", credit_account_id).to_hash,
48
+ "counterparty": Unit::Types::Relationship.new("counterparty", counterparty_id).to_hash
49
+ }
50
+ }
51
+ }
52
+ payload[:data][:attributes].compact!
53
+ payload.to_json
54
+ end
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,53 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Request to create a book repayment
4
+ # @see https://docs.unit.co/repayments/#book-repayment
5
+ module Unit
6
+ module Repayment
7
+ class CreateBookRepaymentRequest
8
+ attr_reader :account_id, :credit_account_id, :counterparty_account_id, :description, :amount, :transaction_summary_override,
9
+ :tags, :idempotency_key
10
+
11
+ # @param account_id [String]
12
+ # @param credit_account_id [String]
13
+ # @param counterparty_account_id [String]
14
+ # @param description [String]
15
+ # @param amount [Integer]
16
+ # @param transaction_summary_override [String]
17
+ # @param tags [Hash] - optional
18
+ # @param idempotency_key [String] - optional
19
+ def initialize(account_id, credit_account_id, counterparty_account_id, description, amount, transaction_summary_override, tags = nil, idempotency_key = nil)
20
+ @account_id = account_id
21
+ @credit_account_id = credit_account_id
22
+ @counterparty_account_id = counterparty_account_id
23
+ @description = description
24
+ @amount = amount
25
+ @transaction_summary_override = transaction_summary_override
26
+ @tags = tags
27
+ @idempotency_key = idempotency_key
28
+ end
29
+
30
+ def to_json_api
31
+ payload = {
32
+ data: {
33
+ type: "bookRepayment",
34
+ attributes: {
35
+ description: description,
36
+ amount: amount,
37
+ transactionSummaryOverride: transaction_summary_override,
38
+ tags: tags,
39
+ idempotencyKey: idempotency_key
40
+ },
41
+ "relationships": {
42
+ "account": Unit::Types::Relationship.new("depositAccount", account_id).to_hash,
43
+ "creditAccount": Unit::Types::Relationship.new("creditAccount", credit_account_id).to_hash,
44
+ "counterpartyAccount": Unit::Types::Relationship.new("account", counterparty_account_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,48 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Params for listing repayments
4
+ # @see https://docs.unit.co/repayments/#list-repayments
5
+ module Unit
6
+ module Repayment
7
+ class ListRepaymentParams
8
+ attr_reader :limit, :offset, :account_id, :credit_account_id,
9
+ :customer_id, :status, :type
10
+
11
+ # @param limit [Integer] - optional
12
+ # @param offset [Integer] - optional
13
+ # @param account_id [String] - optional
14
+ # @param credit_account_id [String] - optional
15
+ # @param customer_id [String] - optional
16
+ # @param status [Array<String>] - optional
17
+ # @param type [Array<String>] - optional
18
+ def initialize(limit = REPAYMENT_LIMIT, offset = REPAYMENT_OFFSET, account_id = nil,
19
+ credit_account_id = nil, customer_id = nil, status = nil, type = nil)
20
+ @limit = limit
21
+ @offset = offset
22
+ @account_id = account_id
23
+ @credit_account_id = credit_account_id
24
+ @customer_id = customer_id
25
+ @status = status
26
+ @type = type
27
+ end
28
+
29
+ def to_hash
30
+ params = {
31
+ "page[limit]": limit,
32
+ "page[offset]": offset,
33
+ "filter[accountId]": account_id,
34
+ "filter[creditAccountId]": credit_account_id,
35
+ "filter[customerId]": customer_id
36
+ }
37
+ filters = %i[status type]
38
+ filters.each do |filter|
39
+ values = send(filter)
40
+ values&.each_with_index&.map do |val, index|
41
+ params.merge!({ "filter[#{filter}][#{index}]": val })
42
+ end
43
+ end
44
+ params.compact
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,67 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Unit
4
+ module Repayment
5
+ REPAYMENT_LIMIT = 100
6
+ REPAYMENT_OFFSET = 0
7
+
8
+ autoload :CreateAchRepaymentRequest, "unit/models/repayment/create_ach_repayment_request"
9
+ autoload :CreateBookRepaymentRequest, "unit/models/repayment/create_book_repayment_request"
10
+ autoload :ListRepaymentParams, "unit/models/repayment/list_repayment_params"
11
+
12
+ class << self
13
+ # Get a repayment by calling Unit's API
14
+ # @see https://docs.unit.co/repayments#get-specific-repayment
15
+ # @param repayment_id [String]
16
+ def get_repayment(repayment_id:)
17
+ Unit::Resource::RepaymentResource.get(repayment_id)
18
+ end
19
+
20
+ # Create a book repayment by calling Unit's API
21
+ # @see https://docs.unit.co/repayments#book-repayment
22
+ # @param account_id [String]
23
+ # @param credit_account_id [String]
24
+ # @param counterparty_account_id [String]
25
+ # @param description [String]
26
+ # @param amount [Integer]
27
+ # @param transaction_summary_override [String]
28
+ # @param tags [Array<String>] - optional
29
+ # @param idempotency_key [String] - optional
30
+ def create_book_repayment(account_id:, credit_account_id:, counterparty_account_id:, description:, amount:, transaction_summary_override:, tags: nil, idempotency_key: nil)
31
+ request = Unit::Repayment::CreateBookRepaymentRequest.new(account_id, credit_account_id, counterparty_account_id, description, amount, transaction_summary_override, tags, idempotency_key)
32
+ Unit::Resource::RepaymentResource.create(request)
33
+ end
34
+
35
+ # Create an ach repayment by calling Unit's API
36
+ # @see https://docs.unit.co/repayments#create-ach-repayment
37
+ # @param account_id [String]
38
+ # @param credit_account_id [String]
39
+ # @param counterparty_id [String]
40
+ # @param description [String]
41
+ # @param amount [Integer]
42
+ # @param addenda [String] - optional
43
+ # @param tags [Hash] - optional
44
+ # @param same_day [Boolean] - optional
45
+ # @param idempotency_key [String] - optional
46
+ def create_ach_repayment(account_id:, credit_account_id:, counterparty_id:, description:, amount:, addenda: nil, tags: nil, idempotency_key: nil, same_day: false)
47
+ request = Unit::Repayment::CreateAchRepaymentRequest.new(account_id, credit_account_id, counterparty_id, description, amount, addenda, tags, idempotency_key, same_day: same_day)
48
+ Unit::Resource::RepaymentResource.create(request)
49
+ end
50
+
51
+ # List repayments by calling Unit's API
52
+ # @see https://docs.unit.co/repayments#list-repayments
53
+ # @param limit [Integer] - optional
54
+ # @param offset [Integer] - optional
55
+ # @param account_id [String] - optional
56
+ # @param credit_account_id [String] - optional
57
+ # @param customer_id [String] - optional
58
+ # @param status [Array<String>] - optional
59
+ # @param type [Array<String>] - optional
60
+ def list_repayments(limit: REPAYMENT_LIMIT, offset: REPAYMENT_OFFSET, account_id: nil,
61
+ credit_account_id: nil, customer_id: nil, status: nil, type: nil)
62
+ request = Unit::Repayment::ListRepaymentParams.new(limit, offset, account_id, credit_account_id, customer_id, status, type)
63
+ Unit::Resource::RepaymentResource.list(request)
64
+ end
65
+ end
66
+ end
67
+ end
@@ -0,0 +1,49 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Create a reward request
4
+ # @see https://docs.unit.co/rewards/#create-reward
5
+ module Unit
6
+ module Reward
7
+ class CreateRewardRequest
8
+ attr_reader :receiving_account_id, :funding_account_id, :rewarded_transaction_id, :amount, :description, :tags, :idempotency_key
9
+
10
+ # @param receiving_account_id [String]
11
+ # @param amount [Integer]
12
+ # @param description [String]
13
+ # @param tags [Hash]
14
+ # @param idempotency_key [String]
15
+ # @param funding_account_id [String] - optional
16
+ # @param rewarded_transaction_id [String] - optional
17
+ def initialize(receiving_account_id, amount, description, tags = nil, idempotency_key = nil, funding_account_id = nil, rewarded_transaction_id = nil)
18
+ @receiving_account_id = receiving_account_id
19
+ @amount = amount
20
+ @description = description
21
+ @tags = tags
22
+ @idempotency_key = idempotency_key
23
+ @funding_account_id = funding_account_id
24
+ @rewarded_transaction = rewarded_transaction_id
25
+ end
26
+
27
+ def to_json_api
28
+ payload = {
29
+ data: {
30
+ type: "reward",
31
+ attributes: {
32
+ amount: amount,
33
+ description: description,
34
+ tags: tags,
35
+ idempotencyKey: idempotency_key
36
+ },
37
+ relationships: {
38
+ receivingAccount: Unit::Types::Relationship.new("depositAccount", receiving_account_id).to_hash
39
+ }
40
+ }
41
+ }
42
+ payload[:data][:relationships][:funding_account] = Unit::Types::Relationship.new("fundingAccount", funding_account_id).to_hash if funding_account_id
43
+ payload[:data][:relationships][:rewardedTransaction] = Unit::Types::Relationship.new("rewardedTransaction", rewarded_transaction).to_hash if rewarded_transaction_id
44
+ payload[:data][:attributes].compact!
45
+ payload.to_json
46
+ end
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Get a reward by id request
4
+ # @see https://docs.unit.co/rewards/#get-specific-reward
5
+ module Unit
6
+ module Reward
7
+ class GetRequest
8
+ attr_reader :reward_id, :include
9
+
10
+ # @param reward_id [String]
11
+ # @param include [Array<String>] - optional
12
+ def initialize(reward_id, include = nil)
13
+ @reward_id = reward_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,65 @@
1
+ # frozen_string_literal: true
2
+
3
+ # List reward params request
4
+ # @see https://docs.unit.co/rewards/#list-rewards
5
+ module Unit
6
+ module Reward
7
+ class ListRewardParams
8
+ attr_reader :limit, :offset, :transaction_id, :rewarded_transaction_id,
9
+ :receiving_account_id, :customer_id, :card_id, :status, :since,
10
+ :until_, :tags, :sort, :include
11
+
12
+ # @param limit [Integer] - optional
13
+ # @param offset [Integer] - optional
14
+ # @param transaction_id [String] - optional
15
+ # @param rewarded_transaction_id [String] - optional
16
+ # @param receiving_account_id [String] - optional
17
+ # @param customer_id [String] - optional
18
+ # @param card_id [String] - optional
19
+ # @param status [String] - optional
20
+ # @param since [String] - optional
21
+ # @param until_ [String] - optional
22
+ # @param tags [Hash] - optional
23
+ # @param sort [String] - optional
24
+ # @param include [Array<String>] - optional
25
+ def initialize(limit = REWARD_LIMIT, offset = REWARD_OFFSET, transaction_id = nil, rewarded_transaction_id = nil,
26
+ receiving_account_id = nil, customer_id = nil, card_id = nil, status = nil, since = nil,
27
+ until_ = nil, tags = nil, sort = nil, include = nil)
28
+ @limit = limit
29
+ @offset = offset
30
+ @transaction_id = transaction_id
31
+ @rewarded_transaction_id = rewarded_transaction_id
32
+ @receiving_account_id = receiving_account_id
33
+ @customer_id = customer_id
34
+ @card_id = card_id
35
+ @status = status
36
+ @since = since
37
+ @until_ = until_
38
+ @tags = tags
39
+ @sort = sort
40
+ @include = include
41
+ end
42
+
43
+ def to_hash
44
+ params = {
45
+ "page[limit]": limit,
46
+ "page[offset]": offset,
47
+ "filter[transactionId]": transaction_id,
48
+ "filter[rewardedTransactionId]": rewarded_transaction_id,
49
+ "filter[receivingAccountId]": receiving_account_id,
50
+ "filter[customerId]": customer_id,
51
+ "filter[cardId]": card_id,
52
+ "filter[since]": since,
53
+ "filter[until]": until_,
54
+ "filter[tags]": tags,
55
+ "sort": sort,
56
+ "include": include&.join(",")
57
+ }
58
+ status&.each_with_index&.map do |val, index|
59
+ params.merge!({ "filter[status][#{index}]": val })
60
+ end
61
+ params.compact
62
+ end
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,55 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Unit
4
+ module Reward
5
+ REWARD_LIMIT = 100
6
+ REWARD_OFFSET = 0
7
+ autoload :GetRequest, "unit/models/reward/get_request"
8
+ autoload :CreateRewardRequest, "unit/models/reward/create_reward_request"
9
+ autoload :ListRewardParams, "unit/models/reward/list_reward_params"
10
+ class << self
11
+ # Get a reward by id
12
+ # @see https://docs.unit.co/rewards/#get-specific-reward
13
+ # @param reward_id [String]
14
+ # @param include [Array<String>] - optional
15
+ def get_reward(reward_id:, include: nil)
16
+ request = GetRequest.new(reward_id, include)
17
+ Resource::RewardResource.get_reward(request)
18
+ end
19
+
20
+ # Create a reward request
21
+ # @see https://docs.unit.co/rewards/#create-reward
22
+ # @param receiving_account_id [String]
23
+ # @param amount [Integer]
24
+ # @param description [String]
25
+ # @param tags [Hash]
26
+ # @param idempotency_key [String]
27
+ # @param funding_account_id [String] - optional
28
+ # @param rewarded_transaction_id [String] - optional
29
+ def create_reward(receiving_account_id:, amount:, description:, tags:, idempotency_key:, funding_account_id: nil, rewarded_transaction: nil)
30
+ request = CreateRewardRequest.new(receiving_account_id, amount, description, tags, idempotency_key, funding_account_id, rewarded_transaction)
31
+ Resource::RewardResource.create_reward(request)
32
+ end
33
+
34
+ # List reward params request
35
+ # @see https://docs.unit.co/rewards/#list-rewards
36
+ # @param limit [Integer] - optional
37
+ # @param offset [Integer] - optional
38
+ # @param transaction_id [String] - optional
39
+ # @param rewarded_transaction_id [String] - optional
40
+ # @param receiving_account_id [String] - optional
41
+ # @param customer_id [String] - optional
42
+ # @param card_id [String] - optional
43
+ # @param status [Array<String>] - optional
44
+ # @param since [String] - optional
45
+ # @param until_ [String] - optional
46
+ # @param tags [Hash] - optional
47
+ # @param sort [String] - optional
48
+ # @param include [Array<String>] - optional
49
+ def list_rewards(limit: REWARD_LIMIT, offset: REWARD_OFFSET, transaction_id: nil, rewarded_transaction_id: nil, receiving_account_id: nil, customer_id: nil, card_id: nil, status: nil, since: nil, until_: nil, tags: nil, sort: nil, include: nil)
50
+ request = ListRewardParams.new(limit, offset, transaction_id, rewarded_transaction_id, receiving_account_id, customer_id, card_id, status, since, until_, tags, sort, include)
51
+ Resource::RewardResource.list_rewards(request)
52
+ end
53
+ end
54
+ end
55
+ end
@@ -3,7 +3,7 @@
3
3
  # Represents a response from Unit's API
4
4
  module Unit
5
5
  class UnitResponse
6
- attr_reader :data, :included
6
+ attr_reader :data, :included, :meta
7
7
 
8
8
  # @param data [Hash] The JSON API payload
9
9
  # @param included [Array] The JSON API payload