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,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Request to update a trust application
4
+ # @see https://docs.unit.co/applications/#update-trust-application
5
+ module Unit
6
+ module Application
7
+ class PatchTrustApplicationRequest
8
+ attr_reader :application_id, :tags
9
+
10
+ # @param application_id [String]
11
+ # @param tags [Hash] - optional
12
+ def initialize(application_id, tags = nil)
13
+ @application_id = application_id
14
+ @tags = tags
15
+ end
16
+
17
+ def to_json_api
18
+ payload = {
19
+ data: {
20
+ type: "trustApplication",
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,43 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Unit
4
+ module ApplicationForm
5
+ APPLICATION_FORM_LIST_LIMIT = 100
6
+ APPLICATION_FORM_LIST_OFFSET = 0
7
+ autoload :CreateApplicationFormRequest, "unit/models/application_form/create_application_form_request"
8
+ autoload :ListApplicationFormParams, "unit/models/application_form/list_application_form_params"
9
+ class << self
10
+ # Create an application form by calling Unit's API
11
+ # @see https://docs.unit.co/application-forms/#create-application-form
12
+ # @param tags [Hash] - optional
13
+ # @param applicant_details [ApplicationFormPrefill] - optional
14
+ # @parma allowed_application_types [Array<String>] - optional
15
+ # @param lang [String] - optional
16
+ # @param settings_override [ApplicationFormSettingsOverride] - optional
17
+ # @param require_id_verification [RequireIdVerification] - optional
18
+ # @param hide_application_progress_tracker [Boolean] - optional
19
+ def create_application_form(tags: nil, applicant_details: nil, allowed_application_types: nil, lang: nil, settings_override: nil, require_id_verification: nil, hide_application_progress_tracker: nil)
20
+ request = Unit::ApplicationForm::CreateApplicationFormRequest.new(tags, applicant_details, allowed_application_types, lang, settings_override, require_id_verification, hide_application_progress_tracker)
21
+ Unit::Resource::ApplicationFormResource.create_application_form(request)
22
+ end
23
+
24
+ # Get an application form by calling Unit's API
25
+ # @see https://docs.unit.co/application-forms#get-application-form-by-id
26
+ # @param application_form_id [String]
27
+ def get_application_form(application_form_id)
28
+ Unit::Resource::ApplicationFormResource.get_application_form(application_form_id)
29
+ end
30
+
31
+ # List application forms by calling Unit's API
32
+ # @see https://docs.unit.co/application-forms#list-application-forms
33
+ # @param limit [Integer] - optional
34
+ # @param offset [Integer] - optional
35
+ # @param tags [Hash] - optional
36
+ # @param sort [String] - optional
37
+ def list_application_forms(limit: APPLICATION_FORM_LIST_LIMIT, offset: APPLICATION_FORM_LIST_OFFSET, tags: nil, sort: nil)
38
+ request = Unit::ApplicationForm::ListApplicationFormParams.new(limit, offset, tags, sort)
39
+ Unit::Resource::ApplicationFormResource.list_application_forms(request)
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,48 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Unit
4
+ # Create application form request
5
+ # @see https://docs.unit.co/application-forms/#create-application-form
6
+ module ApplicationForm
7
+ class CreateApplicationFormRequest
8
+ attr_reader :tags, :applicant_details, :allowed_application_types, :lang,
9
+ :settings_override, :require_id_verification, :hide_application_progress_tracker
10
+
11
+ # @param tags [Hash] - optional
12
+ # @param applicant_details [ApplicationFormPrefill] - optional
13
+ # @parma allowed_application_types [Array<String>] - optional
14
+ # @param lang [String] - optional
15
+ # @param settings_override [ApplicationFormSettingsOverride] - optional
16
+ # @param require_id_verification [RequireIdVerification] - optional
17
+ # @param hide_application_progress_tracker [Boolean] - optional
18
+ def initialize(tags = nil, applicant_details = nil, allowed_application_types = nil, lang = nil, settings_override = nil, require_id_verification = nil, hide_application_progress_tracker = nil)
19
+ @tags = tags
20
+ @applicant_details = applicant_details&.represent
21
+ @allowed_application_types = allowed_application_types
22
+ @lang = lang
23
+ @settings_override = settings_override&.represent
24
+ @require_id_verification = require_id_verification&.represent
25
+ @hide_application_progress_tracker = hide_application_progress_tracker
26
+ end
27
+
28
+ def to_json_api
29
+ payload = {
30
+ data: {
31
+ type: "applicationForm",
32
+ attributes: {
33
+ tags: tags,
34
+ applicantDetails: applicant_details,
35
+ allowedApplicationTypes: allowed_application_types,
36
+ lang: lang,
37
+ settingsOverride: settings_override,
38
+ requireIdVerification: require_id_verification,
39
+ hideApplicationProgressTracker: hide_application_progress_tracker
40
+ }
41
+ }
42
+ }
43
+ payload[:data][:attributes].compact!
44
+ payload.to_json
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ # params for listing application form params
4
+ # @see https://docs.unit.co/application-forms#list-application-forms
5
+ module Unit
6
+ module ApplicationForm
7
+ class ListApplicationFormParams
8
+ attr_reader :limit, :offset, :tags, :sort
9
+
10
+ # @param limit [Integer] - optional
11
+ # @param offset [Integer] - optional
12
+ # @param tags [Hash] - optional
13
+ # @param sort [String] - optional
14
+ def initialize(limit = APPLICATION_FORM_LIST_LIMIT, offset = APPLICATION_FORM_LIST_OFFSET, tags = nil, sort = nil)
15
+ @limit = limit
16
+ @offset = offset
17
+ @tags = tags
18
+ @sort = sort
19
+ end
20
+
21
+ def to_hash
22
+ params = { "page[limit]": limit,
23
+ "page[offset]": offset,
24
+ "filter[tags]": tags,
25
+ "sort": sort }
26
+ params.compact
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,42 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Unit
4
+ module Authorization
5
+ AUTHORIZATION_LIMIT = 100
6
+ AUTHORIZATION_OFFSET = 0
7
+
8
+ autoload :GetRequest, "unit/models/authorization/get_request"
9
+ autoload :ListRequest, "unit/models/authorization/list_request"
10
+ class << self
11
+ # Get authorization by id
12
+ # @see https://docs.unit.co/cards-authorizations#get-authorization-by-id
13
+ # @param authorization_id [String]
14
+ # @param include_non_authorized [Boolean] - optional
15
+ def get_authorization(authorization_id:, include_non_authorized: nil)
16
+ request = GetRequest.new(authorization_id, include_non_authorized)
17
+ Unit::Resource::AuthorizationResource.get(request)
18
+ end
19
+
20
+ # List authorizations
21
+ # @see https://docs.unit.co/cards-authorizations#list-authorizations
22
+ # @param limit [Integer] - optional
23
+ # @param offset [Integer] - optional
24
+ # @param account_id [String] - optional
25
+ # @param customer_id [String] - optional
26
+ # @param card_id [String] - optional
27
+ # @param since [String] - optional
28
+ # @param until_ [String] - optional
29
+ # @param include_non_authorized [Boolean] - optional
30
+ # @param status [Array<String>] - optional
31
+ # @param merchant_category_code [Array<String>] - optional
32
+ # @param from_amount [Integer] - optional
33
+ # @param to_amount [Integer] - optional
34
+ # @param sort [String] - optional
35
+ def list_authorizations(limit: AUTHORIZATION_LIMIT, offset: AUTHORIZATION_OFFSET, account_id: nil, customer_id: nil, card_id: nil, since: nil,
36
+ until_: nil, include_non_authorized: nil, status: nil, merchant_category_code: nil, from_amount: nil, to_amount: nil, sort: nil)
37
+ request = ListRequest.new(limit, offset, account_id, customer_id, card_id, since, until_, include_non_authorized, status, merchant_category_code, from_amount, to_amount, sort)
38
+ Unit::Resource::AuthorizationResource.list(request)
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Request to get authorization
4
+ # @see https://docs.unit.co/cards-authorizations#get-authorization-by-id
5
+ module Unit
6
+ module Authorization
7
+ class GetRequest
8
+ attr_reader :authorization_id, :include_non_authorized
9
+
10
+ # @param authorization_id [String]
11
+ # @param include_non_authorized [Boolean]
12
+ def initialize(authorization_id, include_non_authorized = nil)
13
+ @authorization_id = authorization_id
14
+ @include_non_authorized = include_non_authorized
15
+ end
16
+
17
+ def to_hash
18
+ { 'filter[includeNonAuthorized]': include_non_authorized }.compact
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,67 @@
1
+ # frozen_string_literal: true
2
+
3
+ # List authorizations
4
+ # @see https://docs.unit.co/cards-authorizations#list-authorizations
5
+ module Unit
6
+ module Authorization
7
+ class ListRequest
8
+ attr_reader :limit, :offset, :account_id, :customer_id, :card_id, :since,
9
+ :until_, :include_non_authorized, :status, :merchant_category_code,
10
+ :from_amount, :to_amount, :sort
11
+
12
+ # @param limit [Integer] - optional
13
+ # @param offset [Integer] - optional
14
+ # @param account_id [String] - optional
15
+ # @param customer_id [String] - optional
16
+ # @param card_id [String] - optional
17
+ # @param since [String] - optional
18
+ # @param until_ [String] - optional
19
+ # @param include_non_authorized [Boolean] - optional
20
+ # @param status [Array<String>] - optional
21
+ # @param merchant_category_code [Array<String>] - optional
22
+ # @param from_amount [Integer] - optional
23
+ # @param to_amount [Integer] - optional
24
+ # @param sort [String] - optional
25
+ def initialize(limit = AUTHORIZATION_LIMIT, offset = AUTHORIZATION_OFFSET, account_id = nil, customer_id = nil, card_id = nil,
26
+ since = nil, until_ = nil, include_non_authorized = nil, status = nil, merchant_category_code = nil,
27
+ from_amount = nil, to_amount = nil, sort = nil)
28
+ @limit = limit
29
+ @offset = offset
30
+ @account_id = account_id
31
+ @customer_id = customer_id
32
+ @card_id = card_id
33
+ @since = since
34
+ @until_ = until_
35
+ @include_non_authorized = include_non_authorized
36
+ @status = status
37
+ @merchant_category_code = merchant_category_code
38
+ @from_amount = from_amount
39
+ @to_amount = to_amount
40
+ @sort = sort
41
+ end
42
+
43
+ def to_hash
44
+ payload = {
45
+ "page[limit]": limit,
46
+ "page[offset]": offset,
47
+ "filter[accountId]": account_id,
48
+ "filter[customerId]": customer_id,
49
+ "filter[cardId]": card_id,
50
+ "filter[since]": since,
51
+ "filter[until]": until_,
52
+ "filter[includeNonAuthorized]": include_non_authorized,
53
+ "filter[fromAmount]": from_amount,
54
+ "filter[toAmount]": to_amount,
55
+ sort: sort
56
+ }
57
+ merchant_category_code&.each_with_index&.map do |val, index|
58
+ params.merge!({ "filter[merchantCategoryCode][#{index}]": val })
59
+ end
60
+ status&.each_with_index&.map do |val, index|
61
+ params.merge!({ "filter[status][#{index}]": val })
62
+ end
63
+ payload.compact
64
+ end
65
+ end
66
+ end
67
+ end
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ # class for approving the authorization request
4
+ # @see https://docs.unit.co/cards-authorization-requests/#approve-authorization-request
5
+ module Unit
6
+ module AuthorizationRequest
7
+ class ApproveRequest
8
+ attr_reader :authorization_request_id, :amount, :funding_account, :tags
9
+
10
+ # @param authorization_request_id [String]
11
+ # @param amount [Integer] - optional
12
+ # @param funding_account [String] - optional
13
+ # @param tags [Hash] - optional
14
+ def initialize(authorization_request_id, amount = nil, funding_account = nil, tags = nil)
15
+ @authorization_request_id = authorization_request_id
16
+ @amount = amount
17
+ @funding_account = funding_account
18
+ @tags = tags
19
+ end
20
+
21
+ def to_json_api
22
+ payload = {
23
+ data: {
24
+ type: "approveAuthorizationRequest",
25
+ attributes: {
26
+ amount: amount,
27
+ fundingAccount: funding_account,
28
+ tags: tags
29
+ }
30
+ }
31
+ }
32
+ payload[:data][:attributes].compact!
33
+ payload.to_json
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,55 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Unit
4
+ module AuthorizationRequest
5
+ AUTHORIZATION_REQUEST_LIMIT = 100
6
+ AUTHORIZATION_REQUEST_OFFSET = 0
7
+
8
+ autoload :ApproveRequest, "unit/models/authorization_request/approve_request"
9
+ autoload :DeclineRequest, "unit/models/authorization_request/decline_request"
10
+ autoload :ListAuthorizationParams, "unit/models/authorization_request/list_authorization_params"
11
+ class << self
12
+ # get authorization request
13
+ # @see https://docs.unit.co/cards-authorization-requests/#get-authorization-request-by-id
14
+ # @param authorization_request_id [String]
15
+ def get_authorization_request(authorization_request_id:)
16
+ Unit::Resource::AuthorizationRequestResource.get_authorization_request(authorization_request_id)
17
+ end
18
+
19
+ # Approve authorization request
20
+ # @see https://docs.unit.co/cards-authorization-requests/#approve-authorization-request
21
+ # @param authorization_request_id [String]
22
+ # @param amount [Integer] - optional
23
+ # @param funding_account [String] - optional
24
+ # @param tags [Hash] - optional
25
+ def approve_authorization_request(authorization_request_id:, amount:, funding_account:, tags:)
26
+ request = ApproveRequest.new(authorization_request_id, amount, funding_account, tags)
27
+ Unit::Resource::AuthorizationRequestResource.approve(request)
28
+ end
29
+
30
+ # decline authorization request
31
+ # @see https://docs.unit.co/cards-authorization-requests/#decline-authorization-request
32
+ # @param authorization_request_id [String]
33
+ # @param reason [String]
34
+ def decline_authorization_request(authorization_request_id:, reason:)
35
+ request = DeclineRequest.new(authorization_request_id, reason)
36
+ Unit::Resource::AuthorizationRequestResource.decline(request)
37
+ end
38
+
39
+ # list params for the authorization request
40
+ # @see https://docs.unit.co/cards-authorization-requests/#list-authorization-requests
41
+ # @param limit [Integer] - optional
42
+ # @param offset [Integer] - optional
43
+ # @param account_id [String] - optional
44
+ # @param customer_id [String] - optional
45
+ # @param merchant_category_code [Array] - optional
46
+ # @param from_amount [Integer] - optional
47
+ # @param to_amount [Integer]- optional
48
+ def list_authorization_requests(limit = AUTHORIZATION_REQUEST_LIMIT, offset = AUTHORIZATION_REQUEST_OFFSET,
49
+ account_id: nil, customer_id: nil, merchant_category_code: nil, from_amount: nil, to_amount: nil)
50
+ params = ListAuthorizationParams.new(limit, offset, account_id, customer_id, merchant_category_code, from_amount, to_amount)
51
+ Unit::Resource::AuthorizationRequestResource.list(params)
52
+ end
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ # class for declining the authorization request
4
+ # @see https://docs.unit.co/cards-authorization-requests/#decline-authorization-request
5
+ module Unit
6
+ module AuthorizationRequest
7
+ class DeclineRequest
8
+ attr_reader :authorization_request_id, :reason
9
+
10
+ # @param authorization_request_id [String]
11
+ # @param reason [String]
12
+ def initialize(authorization_request_id, reason)
13
+ @authorization_request_id = authorization_request_id
14
+ @reason = reason
15
+ end
16
+
17
+ def to_json_api
18
+ payload = {
19
+ data: {
20
+ type: "declineAuthorizationRequest",
21
+ attributes: {
22
+ reason: reason
23
+ }
24
+ }
25
+ }
26
+ payload[:data][:attributes].compact!
27
+ payload.to_json
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,44 @@
1
+ # frozen_string_literal: true
2
+
3
+ # list params for the authorization request
4
+ # @see https://docs.unit.co/cards-authorization-requests/#list-authorization-requests
5
+ module Unit
6
+ module AuthorizationRequest
7
+ class ListAuthorizationParams
8
+ attr_reader :limit, :offset, :account_id, :customer_id, :merchant_category_code,
9
+ :from_amount, :to_amount
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 merchant_category_code [Array] - optional
16
+ # @param from_amount [Integer] - optional
17
+ # @param to_amount [Integer]- optional
18
+ def initialize(limit = AUTHORIZATION_REQUEST_LIMIT, offset = AUTHORIZATION_REQUEST_OFFSET,
19
+ account_id = nil, customer_id = nil, merchant_category_code = nil,
20
+ from_amount = nil, to_amount = nil)
21
+ @limit = limit
22
+ @offset = offset
23
+ @account_id = account_id
24
+ @customer_id = customer_id
25
+ @merchant_category_code = merchant_category_code
26
+ @from_amount = from_amount
27
+ @to_amount = to_amount
28
+ end
29
+
30
+ def to_hash
31
+ params = { "page[limit]": limit,
32
+ "page[offset]": offset,
33
+ "filter[accountId]": account_id,
34
+ "filter[customerId]": customer_id,
35
+ "filter[fromAmount]": from_amount,
36
+ "filter[toAmount]": to_amount }
37
+ merchant_category_code&.each_with_index&.map do |val, index|
38
+ params.merge!({ "filter[merchantCategoryCode][#{index}]": val })
39
+ end
40
+ params.compact
41
+ end
42
+ end
43
+ end
44
+ end
@@ -10,6 +10,12 @@ module Unit
10
10
  autoload :CreateIndividualVirtualCardRequest, "unit/models/card/create_individual_virtual_card_request"
11
11
  autoload :ReplaceCardRequest, "unit/models/card/replace_card_request"
12
12
  autoload :ListCardParams, "unit/models/card/list_card_params"
13
+ autoload :CreateBusinessCreditCardRequest, "unit/models/card/create_business_credit_card_request"
14
+ autoload :CreateBusinessVirtualCreditCardRequest, "unit/models/card/create_business_virtual_credit_card_request"
15
+ autoload :PatchBusinessCardRequest, "unit/models/card/patch_business_card_request"
16
+ autoload :PatchBusinessCreditCardRequest, "unit/models/card/patch_business_credit_card_request"
17
+ autoload :PatchBusinessVirtualCardRequest, "unit/models/card/patch_business_virtual_card_request"
18
+ autoload :PatchBusinessVirtualCreditCardRequest, "unit/models/card/patch_business_virtual_credit_card_request"
13
19
 
14
20
  class << self
15
21
  # Create a new individual debit card by calling Unit's API
@@ -22,10 +28,11 @@ module Unit
22
28
  # @param tags [Hash] - optional
23
29
  # @param limits [Hash] - optional
24
30
  # @param print_only_business_name [String] - optional
31
+ # @param expiry_date [String] - optional
25
32
  def create_individual_debit_card(account_id:, customer_id: nil, shipping_address: nil, design: nil, additional_embossed_text: nil,
26
- idempotency_key: nil, tags: nil, limits: nil, print_only_business_name: nil)
33
+ idempotency_key: nil, tags: nil, limits: nil, print_only_business_name: nil, expiry_date: nil)
27
34
  request = CreateIndividualDebitCardRequest.new(account_id, customer_id, shipping_address, design, additional_embossed_text,
28
- idempotency_key, tags, limits, print_only_business_name)
35
+ idempotency_key, tags, limits, print_only_business_name, expiry_date)
29
36
  Unit::Resource::CardResource.create_card(request)
30
37
  end
31
38
 
@@ -43,13 +50,104 @@ module Unit
43
50
  # @param tags [Hash] - optional
44
51
  # @param limits [Hash] - optional
45
52
  # @param print_only_business_name [Boolean] - optional
53
+ # @param expiry_date [String] - optional
46
54
  def create_business_debit_card(account_id:, full_name:, date_of_birth:, address:, phone:, email:, shipping_address: nil,
47
- design: nil, additional_embossed_text: nil, idempotency_key: nil, tags: nil, limits: nil, print_only_business_name: nil)
55
+ design: nil, additional_embossed_text: nil, idempotency_key: nil, tags: nil, limits: nil, print_only_business_name: nil, expiry_date: nil)
48
56
  request = CreateBusinessDebitCardRequest.new(account_id, full_name, date_of_birth, address, shipping_address, phone, email, design, additional_embossed_text,
49
- idempotency_key, tags, limits, print_only_business_name)
57
+ idempotency_key, tags, limits, print_only_business_name, expiry_date)
50
58
  Unit::Resource::CardResource.create_card(request)
51
59
  end
52
60
 
61
+ # Create a new business credit card by calling Unit's API
62
+ # @see https://guides.unit.co/business-charge-cards/#what-is-a-charge-card
63
+ # @param account_id [String]
64
+ # @param full_name [FullName]
65
+ # @param date_of_birth [Date]
66
+ # @param address [Address]
67
+ # @param shipping_address [Address] - optional
68
+ # @param phone [Phone] - optional
69
+ # @param email [String] - optional
70
+ # @param design [String] - optional
71
+ # @param additional_embossed_text [String] - optional
72
+ # @param idempotency_key [String] - optional
73
+ # @param tags [Hash] - optional
74
+ # @param limits [Hash] - optional
75
+ # @param print_only_business_name [Boolean] - optional
76
+ # @param expiry_date [String] - optional
77
+ def create_business_credit_card(account_id:, full_name:, date_of_birth:, address:, shipping_address: nil, phone: nil, email: nil, design: nil, additional_embossed_text: nil, idempotency_key: nil, tags: nil, limits: nil, print_only_business_name: nil, expiry_date: nil)
78
+ request = CreateBusinessCreditCardRequest.new(account_id, full_name, date_of_birth, address, shipping_address, phone, email, design, additional_embossed_text, idempotency_key, tags, limits, print_only_business_name, expiry_date)
79
+ Unit::Resource::CardResource.create_card(request)
80
+ end
81
+
82
+ # Create a new business virtual credit card by calling Unit's API
83
+ # @see https://docs.unit.co/cards#create-business-virtual-debit-card
84
+ # @param account_id [String]
85
+ # @param type [String]
86
+ # @param idempotency_key [String] - optional
87
+ # @param tags [Hash] - optional
88
+ # @param limits [Hash] - optional
89
+ # @param expiry_date [String] - optional
90
+ def create_business_virtual_credit_card(account_id:, full_name:, date_of_birth:, address:, phone: nil, email: nil, idempotency_key: nil, tags: nil, limits: nil, expiry_date: nil)
91
+ request = CreateBusinessVirtualCreditCardRequest.new(account_id, full_name, date_of_birth, address, phone, email, idempotency_key, tags, limits, expiry_date)
92
+ Unit::Resource::CardResource.create_card(request)
93
+ end
94
+
95
+ # Update a business debit card by calling Unit's API
96
+ # @see https://docs.unit.co/cards/#update-business-debit-card
97
+ # @param card_id [String]
98
+ # @param shipping_address [Address] - optional
99
+ # @param address [Address] - optional
100
+ # @param phone [Phone] - optional
101
+ # @param email [String] - optional
102
+ # @param design [String] - optional
103
+ # @param tags [Hash] - optional
104
+ # @param limits [Hash] - optional
105
+ def update_business_debit_card(card_id:, shipping_address: nil, address: nil, phone: nil, email: nil, design: nil, tags: nil, limits: nil)
106
+ request = PatchBusinessCardRequest.new(card_id, shipping_address, address, phone, email, design, tags, limits)
107
+ Unit::Resource::CardResource.update(request)
108
+ end
109
+
110
+ # Update a business credit card by calling Unit's API
111
+ # @see https://guides.unit.co/business-charge-cards/
112
+ # @param card_id [String]
113
+ # @param shipping_address [Address] - optional
114
+ # @param address [Address] - optional
115
+ # @param phone [Phone] - optional
116
+ # @param email [String] - optional
117
+ # @param design [String] - optional
118
+ # @param tags [Hash] - optional
119
+ # @param limits [Hash] - optional
120
+ def update_business_credit_card(card_id:, shipping_address: nil, address: nil, phone: nil, email: nil, design: nil, tags: nil, limits: nil)
121
+ request = PatchBusinessCreditCardRequest.new(card_id, shipping_address, address, phone, email, design, tags, limits)
122
+ Unit::Resource::CardResource.update(request)
123
+ end
124
+
125
+ # Update a business virtual debit card by calling Unit's API
126
+ # @see https://docs.unit.co/cards/#update-business-virtual-debit-card
127
+ # @param card_id [String]
128
+ # @param address [Address] - optional
129
+ # @param phone [Phone] - optional
130
+ # @param email [String] - optional
131
+ # @param tags [Hash] - optional
132
+ # @param limits [Hash] - optional
133
+ def update_business_virtual_debit_card(card_id:, address: nil, phone: nil, email: nil, tags: nil, limits: nil)
134
+ request = PatchBusinessVirtualCardRequest.new(card_id, address, phone, email, tags, limits)
135
+ Unit::Resource::CardResource.update(request)
136
+ end
137
+
138
+ # Update a business virtual credit card by calling Unit's API
139
+ # @see https://guides.unit.co/business-charge-cards/
140
+ # @param card_id [String]
141
+ # @param address [Address] - optional
142
+ # @param phone [Phone] - optional
143
+ # @param email [String] - optional
144
+ # @param tags [Hash] - optional
145
+ # @param limits [Hash] - optional
146
+ def update_business_virtual_credit_card(card_id:, address: nil, phone: nil, email: nil, tags: nil, limits: nil)
147
+ request = PatchBusinessVirtualCreditCardRequest.new(card_id, address, phone, email, tags, limits)
148
+ Unit::Resource::CardResource.update(request)
149
+ end
150
+
53
151
  # Create a new individual virtual card by calling Unit's API
54
152
  # @see https://docs.unit.co/cards#create-individual-virtual-debit-card
55
153
  # @param account_id [String]
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Request to create business credit card request
4
+ # @see https://guides.unit.co/business-charge-cards/
5
+ module Unit
6
+ module Card
7
+ class CreateBusinessCreditCardRequest < CreateBusinessDebitCardRequest
8
+ # @param account_id [String]
9
+ # @param full_name [FullName]
10
+ # @param date_of_birth [Date]
11
+ # @param address [Address]
12
+ # @param shipping_address [Address] - optional
13
+ # @param phone [Phone] - optional
14
+ # @param email [String] - optional
15
+ # @param design [String] - optional
16
+ # @param additional_embossed_text [String] - optional
17
+ # @param idempotency_key [String] - optional
18
+ # @param tags [Hash] - optional
19
+ # @param limits [Hash] - optional
20
+ # @param print_only_business_name [Boolean] - optional
21
+ # @param expiry_date [String] - optional
22
+ def initialize(account_id, full_name, date_of_birth, address, shipping_address = nil, phone = nil, email = nil, design = nil,
23
+ additional_embossed_text = nil, idempotency_key = nil, tags = nil, limits = nil, print_only_business_name = nil, expiry_date = nil)
24
+ super
25
+ @type = "businessCreditCard"
26
+ end
27
+ end
28
+ end
29
+ end