unit_ruby_sdk 1.0.5 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
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