moov_ruby 26.7.0.pre.dev.2 → 26.7.0.pre.dev.3

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 (119) hide show
  1. checksums.yaml +4 -4
  2. data/lib/moov/account_terminal_applications.rb +16 -16
  3. data/lib/moov/accounts.rb +52 -54
  4. data/lib/moov/adjustments.rb +8 -8
  5. data/lib/moov/apple_pay.rb +20 -20
  6. data/lib/moov/authentication.rb +8 -8
  7. data/lib/moov/avatars.rb +4 -4
  8. data/lib/moov/bank_accounts.rb +36 -36
  9. data/lib/moov/branding.rb +12 -12
  10. data/lib/moov/capabilities.rb +20 -20
  11. data/lib/moov/card_issuing.rb +25 -25
  12. data/lib/moov/cards.rb +24 -24
  13. data/lib/moov/disputes.rb +44 -44
  14. data/lib/moov/end_to_end_encryption.rb +8 -8
  15. data/lib/moov/enriched_address.rb +4 -4
  16. data/lib/moov/enriched_profile.rb +4 -4
  17. data/lib/moov/fee_plans.rb +40 -40
  18. data/lib/moov/files.rb +12 -12
  19. data/lib/moov/google_pay.rb +4 -4
  20. data/lib/moov/images.rb +28 -28
  21. data/lib/moov/industries.rb +4 -4
  22. data/lib/moov/institutions.rb +8 -8
  23. data/lib/moov/invoices.rb +28 -28
  24. data/lib/moov/issuing_transactions.rb +20 -20
  25. data/lib/moov/models/components/addcapabilities.rb +5 -1
  26. data/lib/moov/models/components/amountdecimalrange.rb +11 -5
  27. data/lib/moov/models/components/amountdecimalrangeupdate.rb +7 -1
  28. data/lib/moov/models/components/billingaddress.rb +52 -0
  29. data/lib/moov/models/components/billingaddress.rbi +23 -0
  30. data/lib/moov/models/components/capability.rb +7 -1
  31. data/lib/moov/models/components/capabilityid.rb +7 -1
  32. data/lib/moov/models/components/createaccount.rb +5 -1
  33. data/lib/moov/models/components/createpaymentlink.rb +10 -6
  34. data/lib/moov/models/components/createpaymentlink.rbi +2 -0
  35. data/lib/moov/models/components/customamountpaymentdetailserror.rb +52 -0
  36. data/lib/moov/models/components/customamountpaymentdetailserror.rbi +23 -0
  37. data/lib/moov/models/components/fullissuedcard.rb +22 -10
  38. data/lib/moov/models/components/fullissuedcard.rbi +10 -4
  39. data/lib/moov/models/components/issuedcard.rb +22 -10
  40. data/lib/moov/models/components/issuedcard.rbi +10 -4
  41. data/lib/moov/models/components/onboardinginvite.rb +1 -1
  42. data/lib/moov/models/components/onboardinginviterequest.rb +1 -1
  43. data/lib/moov/models/components/paymentlink.rb +12 -5
  44. data/lib/moov/models/components/paymentlink.rbi +2 -0
  45. data/lib/moov/models/components/paymentlinkcustomamountpaymentdetails.rb +59 -0
  46. data/lib/moov/models/components/paymentlinkcustomamountpaymentdetails.rbi +23 -0
  47. data/lib/moov/models/components/paymentlinkcustomamountpaymentdetailsupdate.rb +59 -0
  48. data/lib/moov/models/components/paymentlinkcustomamountpaymentdetailsupdate.rbi +23 -0
  49. data/lib/moov/models/components/paymentlinkpaymentdetails.rb +2 -14
  50. data/lib/moov/models/components/paymentlinkpaymentdetails.rbi +0 -6
  51. data/lib/moov/models/components/paymentlinkpaymentdetailsupdate.rb +2 -14
  52. data/lib/moov/models/components/paymentlinkpaymentdetailsupdate.rbi +0 -6
  53. data/lib/moov/models/components/paymentlinktype.rb +1 -0
  54. data/lib/moov/models/components/requestcard.rb +17 -17
  55. data/lib/moov/models/components/requestcard.rbi +8 -8
  56. data/lib/moov/models/components/updateissuedcard.rb +13 -9
  57. data/lib/moov/models/components/updateissuedcard.rbi +6 -4
  58. data/lib/moov/models/components/updatepaymentlink.rb +6 -2
  59. data/lib/moov/models/components/updatepaymentlink.rbi +2 -0
  60. data/lib/moov/models/components/webhookdataauthorizationexpiring.rb +44 -0
  61. data/lib/moov/models/components/webhookdataauthorizationexpiring.rbi +19 -0
  62. data/lib/moov/models/components/webhookdatacapabilityrequested.rb +7 -1
  63. data/lib/moov/models/components/webhookdatacapabilityupdated.rb +7 -1
  64. data/lib/moov/models/components/webhookdatasweepcreated.rb +6 -2
  65. data/lib/moov/models/components/webhookdatasweepcreated.rbi +2 -0
  66. data/lib/moov/models/components/webhookdatasweepupdated.rb +6 -2
  67. data/lib/moov/models/components/webhookdatasweepupdated.rbi +2 -0
  68. data/lib/moov/models/components/webhookevent.rb +2 -2
  69. data/lib/moov/models/components/webhookeventtype.rb +1 -0
  70. data/lib/moov/models/components.rb +5 -6
  71. data/lib/moov/models/errors/createpaymentlinkerror.rb +6 -2
  72. data/lib/moov/models/errors/createpaymentlinkerror.rbi +2 -0
  73. data/lib/moov/models/errors/requestcarderror.rb +14 -14
  74. data/lib/moov/models/errors/requestcarderror.rbi +8 -8
  75. data/lib/moov/models/errors/updateissuedcarderror.rb +12 -8
  76. data/lib/moov/models/errors/updateissuedcarderror.rbi +6 -4
  77. data/lib/moov/models/errors/updatepaymentlinkerror.rb +6 -2
  78. data/lib/moov/models/errors/updatepaymentlinkerror.rbi +2 -0
  79. data/lib/moov/models/operations/disablecapability_request.rb +7 -1
  80. data/lib/moov/models/operations/getcapability_request.rb +7 -1
  81. data/lib/moov/models/operations/listcancellations_request.rb +36 -0
  82. data/lib/moov/models/operations/listcancellations_request.rbi +15 -0
  83. data/lib/moov/models/operations/listcancellations_response.rb +48 -0
  84. data/lib/moov/models/operations/listcancellations_response.rbi +21 -0
  85. data/lib/moov/models/operations.rb +2 -0
  86. data/lib/moov/onboarding.rb +16 -16
  87. data/lib/moov/payment_links.rb +24 -24
  88. data/lib/moov/payment_methods.rb +8 -8
  89. data/lib/moov/ping.rb +4 -4
  90. data/lib/moov/products.rb +20 -20
  91. data/lib/moov/receipts.rb +8 -8
  92. data/lib/moov/representatives.rb +20 -20
  93. data/lib/moov/resolution_links.rb +16 -16
  94. data/lib/moov/scheduling.rb +24 -24
  95. data/lib/moov/sdkconfiguration.rb +3 -3
  96. data/lib/moov/statements.rb +8 -8
  97. data/lib/moov/support.rb +20 -20
  98. data/lib/moov/sweeps.rb +24 -24
  99. data/lib/moov/terminal_applications.rb +20 -20
  100. data/lib/moov/transfer_config.rb +12 -12
  101. data/lib/moov/transfers.rb +171 -48
  102. data/lib/moov/underwriting.rb +12 -12
  103. data/lib/moov/utils/retries.rb +4 -1
  104. data/lib/moov/wallet_transactions.rb +8 -8
  105. data/lib/moov/wallets.rb +16 -16
  106. data/lib/moov/webhooks.rb +32 -32
  107. metadata +16 -14
  108. data/lib/moov/models/components/authorizeduser.rb +0 -36
  109. data/lib/moov/models/components/authorizeduser.rbi +0 -15
  110. data/lib/moov/models/components/createauthorizeduser.rb +0 -40
  111. data/lib/moov/models/components/createauthorizeduser.rbi +0 -17
  112. data/lib/moov/models/components/createauthorizedusererror.rb +0 -40
  113. data/lib/moov/models/components/createauthorizedusererror.rbi +0 -17
  114. data/lib/moov/models/components/createauthorizeduserupdate.rb +0 -40
  115. data/lib/moov/models/components/createauthorizeduserupdate.rbi +0 -17
  116. data/lib/moov/models/components/paymentlinkpaymentdetails_amounttype.rb +0 -19
  117. data/lib/moov/models/components/paymentlinkpaymentdetails_amounttype.rbi +0 -11
  118. data/lib/moov/models/components/paymentlinkpaymentdetailsupdate_amounttype.rb +0 -19
  119. data/lib/moov/models/components/paymentlinkpaymentdetailsupdate_amounttype.rbi +0 -11
@@ -9,7 +9,7 @@ module Moov
9
9
  module Components
10
10
  # Request to create a new payment link.
11
11
  #
12
- # A payment link must include either `payment` or `payout` details, but not both. For payout payment links,
12
+ # A payment link must include exactly one of `payment`, `payout`, or `customAmountPayment` details. For payout payment links,
13
13
  # `maxUses` will automatically be set to 1, as these are intended for a one-time disbursement
14
14
  # to a specific recipient.
15
15
  #
@@ -23,12 +23,12 @@ module Moov
23
23
  field :merchant_payment_method_id, ::String, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('merchantPaymentMethodID'), required: true } }
24
24
  # Customizable display options for a payment link.
25
25
  field :display, Models::Components::PaymentLinkDisplayOptions, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('display'), required: true } }
26
- # The fixed amount of the payment link.
26
+ # The fixed amount of the payment link.
27
27
  #
28
28
  # In API versions before `2026.07.00`, this was a required field.
29
29
  #
30
- # In API version `2026.07.00` and beyond, this field is required for `fixed` payment amount types and omitted
31
- # for `open` payment amount types.
30
+ # In API version `2026.07.00` and beyond, this field is required for `payment` and `payout` links and must be
31
+ # omitted for `customAmountPayment` links, where the payor chooses the amount.
32
32
  field :amount, Crystalline::Nilable.new(Models::Components::Amount), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('amount') } }
33
33
  # An optional limit on the number of times this payment link can be used.
34
34
  #
@@ -42,14 +42,16 @@ module Moov
42
42
  field :payment, Crystalline::Nilable.new(Models::Components::PaymentLinkPaymentDetails), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('payment') } }
43
43
 
44
44
  field :payout, Crystalline::Nilable.new(Models::Components::PaymentLinkPayoutDetails), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('payout') } }
45
+ # Options for a custom amount payment link. Mutually exclusive with `payment` and `payout`.
46
+ field :custom_amount_payment, Crystalline::Nilable.new(Models::Components::PaymentLinkCustomAmountPaymentDetails), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('customAmountPayment') } }
45
47
  # An optional collection of line items for a payment link.
46
48
  # When line items are provided, their total plus tax must equal the payment link amount.
47
49
  field :line_items, Crystalline::Nilable.new(Models::Components::CreatePaymentLinkLineItems), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('lineItems') } }
48
50
 
49
51
  field :amount_details, Crystalline::Nilable.new(Models::Components::CreatePaymentLinkAmountDetails), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('amountDetails') } }
50
52
 
51
- sig { params(partner_account_id: ::String, merchant_payment_method_id: ::String, display: Models::Components::PaymentLinkDisplayOptions, amount: T.nilable(Models::Components::Amount), max_uses: T.nilable(::Integer), expires_on: T.nilable(::DateTime), customer: T.nilable(Models::Components::PaymentLinkCustomerOptions), payment: T.nilable(Models::Components::PaymentLinkPaymentDetails), payout: T.nilable(Models::Components::PaymentLinkPayoutDetails), line_items: T.nilable(Models::Components::CreatePaymentLinkLineItems), amount_details: T.nilable(Models::Components::CreatePaymentLinkAmountDetails)).void }
52
- def initialize(partner_account_id:, merchant_payment_method_id:, display:, amount: nil, max_uses: nil, expires_on: nil, customer: nil, payment: nil, payout: nil, line_items: nil, amount_details: nil)
53
+ sig { params(partner_account_id: ::String, merchant_payment_method_id: ::String, display: Models::Components::PaymentLinkDisplayOptions, amount: T.nilable(Models::Components::Amount), max_uses: T.nilable(::Integer), expires_on: T.nilable(::DateTime), customer: T.nilable(Models::Components::PaymentLinkCustomerOptions), payment: T.nilable(Models::Components::PaymentLinkPaymentDetails), payout: T.nilable(Models::Components::PaymentLinkPayoutDetails), custom_amount_payment: T.nilable(Models::Components::PaymentLinkCustomAmountPaymentDetails), line_items: T.nilable(Models::Components::CreatePaymentLinkLineItems), amount_details: T.nilable(Models::Components::CreatePaymentLinkAmountDetails)).void }
54
+ def initialize(partner_account_id:, merchant_payment_method_id:, display:, amount: nil, max_uses: nil, expires_on: nil, customer: nil, payment: nil, payout: nil, custom_amount_payment: nil, line_items: nil, amount_details: nil)
53
55
  @partner_account_id = partner_account_id
54
56
  @merchant_payment_method_id = merchant_payment_method_id
55
57
  @display = display
@@ -59,6 +61,7 @@ module Moov
59
61
  @customer = customer
60
62
  @payment = payment
61
63
  @payout = payout
64
+ @custom_amount_payment = custom_amount_payment
62
65
  @line_items = line_items
63
66
  @amount_details = amount_details
64
67
  end
@@ -75,6 +78,7 @@ module Moov
75
78
  return false unless @customer == other.customer
76
79
  return false unless @payment == other.payment
77
80
  return false unless @payout == other.payout
81
+ return false unless @custom_amount_payment == other.custom_amount_payment
78
82
  return false unless @line_items == other.line_items
79
83
  return false unless @amount_details == other.amount_details
80
84
  true
@@ -26,6 +26,8 @@ class Moov::Models::Components::CreatePaymentLink
26
26
  def payment=(str_); end
27
27
  def payout(); end
28
28
  def payout=(str_); end
29
+ def custom_amount_payment(); end
30
+ def custom_amount_payment=(str_); end
29
31
  def line_items(); end
30
32
  def line_items=(str_); end
31
33
  def amount_details(); end
@@ -0,0 +1,52 @@
1
+ # Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
2
+
3
+ # typed: true
4
+ # frozen_string_literal: true
5
+
6
+
7
+ module Moov
8
+ module Models
9
+ module Components
10
+
11
+ class CustomAmountPaymentDetailsError
12
+ extend T::Sig
13
+ include Crystalline::MetadataFields
14
+
15
+
16
+ field :allowed_methods, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('allowedMethods') } }
17
+
18
+ field :card_details, Crystalline::Nilable.new(Models::Components::CardPaymentDetailsError), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('cardDetails') } }
19
+
20
+ field :ach_details, Crystalline::Nilable.new(Models::Components::ACHPaymentDetailsError), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('achDetails') } }
21
+
22
+ field :metadata, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('metadata') } }
23
+
24
+ field :amount_range, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('amountRange') } }
25
+
26
+ field :suggested_amounts, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('suggestedAmounts') } }
27
+
28
+ sig { params(allowed_methods: T.nilable(::String), card_details: T.nilable(Models::Components::CardPaymentDetailsError), ach_details: T.nilable(Models::Components::ACHPaymentDetailsError), metadata: T.nilable(::String), amount_range: T.nilable(::String), suggested_amounts: T.nilable(::String)).void }
29
+ def initialize(allowed_methods: nil, card_details: nil, ach_details: nil, metadata: nil, amount_range: nil, suggested_amounts: nil)
30
+ @allowed_methods = allowed_methods
31
+ @card_details = card_details
32
+ @ach_details = ach_details
33
+ @metadata = metadata
34
+ @amount_range = amount_range
35
+ @suggested_amounts = suggested_amounts
36
+ end
37
+
38
+ sig { params(other: T.untyped).returns(T::Boolean) }
39
+ def ==(other)
40
+ return false unless other.is_a? self.class
41
+ return false unless @allowed_methods == other.allowed_methods
42
+ return false unless @card_details == other.card_details
43
+ return false unless @ach_details == other.ach_details
44
+ return false unless @metadata == other.metadata
45
+ return false unless @amount_range == other.amount_range
46
+ return false unless @suggested_amounts == other.suggested_amounts
47
+ true
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,23 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+
5
+ class Moov::Models::Components::CustomAmountPaymentDetailsError
6
+ extend ::Crystalline::MetadataFields::ClassMethods
7
+ end
8
+
9
+
10
+ class Moov::Models::Components::CustomAmountPaymentDetailsError
11
+ def allowed_methods(); end
12
+ def allowed_methods=(str_); end
13
+ def card_details(); end
14
+ def card_details=(str_); end
15
+ def ach_details(); end
16
+ def ach_details=(str_); end
17
+ def metadata(); end
18
+ def metadata=(str_); end
19
+ def amount_range(); end
20
+ def amount_range=(str_); end
21
+ def suggested_amounts(); end
22
+ def suggested_amounts=(str_); end
23
+ end
@@ -20,8 +20,6 @@ module Moov
20
20
  field :last_four_card_number, ::String, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('lastFourCardNumber'), required: true } }
21
21
  # The expiration date of the card or token.
22
22
  field :expiration, Models::Components::CardExpiration, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('expiration'), required: true } }
23
- # Fields for identifying an authorized individual.
24
- field :authorized_user, Models::Components::AuthorizedUser, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('authorizedUser'), required: true } }
25
23
  # Unique identifier for the wallet funding the card.
26
24
  field :funding_wallet_id, ::String, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('fundingWalletID'), required: true } }
27
25
  # The `state` represents the operational status of an issued card. A card can only approve incoming authorizations if it is in an active state.
@@ -35,29 +33,40 @@ module Moov
35
33
  field :form_factor, Models::Components::IssuedCardFormFactor, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('formFactor'), required: true, 'decoder': ::Moov::Utils.enum_from_string(Models::Components::IssuedCardFormFactor, false) } }
36
34
 
37
35
  field :created_on, ::DateTime, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('createdOn'), required: true, 'decoder': ::Moov::Utils.datetime_from_iso_format(false) } }
36
+
37
+ field :updated_on, ::DateTime, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('updatedOn'), required: true, 'decoder': ::Moov::Utils.datetime_from_iso_format(false) } }
38
38
  # The issued card's Primary Account Number (PAN)
39
39
  field :pan, ::String, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('pan'), required: true } }
40
40
  # The issued card's 3- or 4-digit Card Verification Value (CVV).
41
41
  field :cvv, ::String, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('cvv'), required: true } }
42
- # Optional descriptor for the card.
43
- field :memo, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('memo') } }
42
+ # Identifier for the account of the card's authorized user.
43
+ field :authorized_user_account_id, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('authorizedUserAccountID') } }
44
+ # An optional descriptive name for the card.
45
+ field :nickname, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('nickname') } }
46
+ # Free-form key-value pair list. Useful for storing information that is not captured elsewhere.
47
+ field :metadata, Crystalline::Nilable.new(Crystalline::Hash.new(Symbol, ::String)), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('metadata') } }
48
+ # Billing address associated with the card.
49
+ field :billing_address, Crystalline::Nilable.new(Models::Components::Address), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('billingAddress') } }
44
50
 
45
51
  field :controls, Crystalline::Nilable.new(Models::Components::IssuingControls), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('controls') } }
46
52
 
47
- sig { params(issued_card_id: ::String, brand: Models::Components::CardBrand, last_four_card_number: ::String, expiration: Models::Components::CardExpiration, authorized_user: Models::Components::AuthorizedUser, funding_wallet_id: ::String, state: Models::Components::IssuedCardState, form_factor: Models::Components::IssuedCardFormFactor, created_on: ::DateTime, pan: ::String, cvv: ::String, memo: T.nilable(::String), controls: T.nilable(Models::Components::IssuingControls)).void }
48
- def initialize(issued_card_id:, brand:, last_four_card_number:, expiration:, authorized_user:, funding_wallet_id:, state:, form_factor:, created_on:, pan:, cvv:, memo: nil, controls: nil)
53
+ sig { params(issued_card_id: ::String, brand: Models::Components::CardBrand, last_four_card_number: ::String, expiration: Models::Components::CardExpiration, funding_wallet_id: ::String, state: Models::Components::IssuedCardState, form_factor: Models::Components::IssuedCardFormFactor, created_on: ::DateTime, updated_on: ::DateTime, pan: ::String, cvv: ::String, authorized_user_account_id: T.nilable(::String), nickname: T.nilable(::String), metadata: T.nilable(T::Hash[Symbol, ::String]), billing_address: T.nilable(Models::Components::Address), controls: T.nilable(Models::Components::IssuingControls)).void }
54
+ def initialize(issued_card_id:, brand:, last_four_card_number:, expiration:, funding_wallet_id:, state:, form_factor:, created_on:, updated_on:, pan:, cvv:, authorized_user_account_id: nil, nickname: nil, metadata: nil, billing_address: nil, controls: nil)
49
55
  @issued_card_id = issued_card_id
50
56
  @brand = brand
51
57
  @last_four_card_number = last_four_card_number
52
58
  @expiration = expiration
53
- @authorized_user = authorized_user
54
59
  @funding_wallet_id = funding_wallet_id
55
60
  @state = state
56
61
  @form_factor = form_factor
57
62
  @created_on = created_on
63
+ @updated_on = updated_on
58
64
  @pan = pan
59
65
  @cvv = cvv
60
- @memo = memo
66
+ @authorized_user_account_id = authorized_user_account_id
67
+ @nickname = nickname
68
+ @metadata = metadata
69
+ @billing_address = billing_address
61
70
  @controls = controls
62
71
  end
63
72
 
@@ -68,14 +77,17 @@ module Moov
68
77
  return false unless @brand == other.brand
69
78
  return false unless @last_four_card_number == other.last_four_card_number
70
79
  return false unless @expiration == other.expiration
71
- return false unless @authorized_user == other.authorized_user
72
80
  return false unless @funding_wallet_id == other.funding_wallet_id
73
81
  return false unless @state == other.state
74
82
  return false unless @form_factor == other.form_factor
75
83
  return false unless @created_on == other.created_on
84
+ return false unless @updated_on == other.updated_on
76
85
  return false unless @pan == other.pan
77
86
  return false unless @cvv == other.cvv
78
- return false unless @memo == other.memo
87
+ return false unless @authorized_user_account_id == other.authorized_user_account_id
88
+ return false unless @nickname == other.nickname
89
+ return false unless @metadata == other.metadata
90
+ return false unless @billing_address == other.billing_address
79
91
  return false unless @controls == other.controls
80
92
  true
81
93
  end
@@ -16,8 +16,6 @@ class Moov::Models::Components::FullIssuedCard
16
16
  def last_four_card_number=(str_); end
17
17
  def expiration(); end
18
18
  def expiration=(str_); end
19
- def authorized_user(); end
20
- def authorized_user=(str_); end
21
19
  def funding_wallet_id(); end
22
20
  def funding_wallet_id=(str_); end
23
21
  def state(); end
@@ -26,12 +24,20 @@ class Moov::Models::Components::FullIssuedCard
26
24
  def form_factor=(str_); end
27
25
  def created_on(); end
28
26
  def created_on=(str_); end
27
+ def updated_on(); end
28
+ def updated_on=(str_); end
29
29
  def pan(); end
30
30
  def pan=(str_); end
31
31
  def cvv(); end
32
32
  def cvv=(str_); end
33
- def memo(); end
34
- def memo=(str_); end
33
+ def authorized_user_account_id(); end
34
+ def authorized_user_account_id=(str_); end
35
+ def nickname(); end
36
+ def nickname=(str_); end
37
+ def metadata(); end
38
+ def metadata=(str_); end
39
+ def billing_address(); end
40
+ def billing_address=(str_); end
35
41
  def controls(); end
36
42
  def controls=(str_); end
37
43
  end
@@ -20,8 +20,6 @@ module Moov
20
20
  field :last_four_card_number, ::String, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('lastFourCardNumber'), required: true } }
21
21
  # The expiration date of the card or token.
22
22
  field :expiration, Models::Components::CardExpiration, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('expiration'), required: true } }
23
- # Fields for identifying an authorized individual.
24
- field :authorized_user, Models::Components::AuthorizedUser, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('authorizedUser'), required: true } }
25
23
  # Unique identifier for the wallet funding the card.
26
24
  field :funding_wallet_id, ::String, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('fundingWalletID'), required: true } }
27
25
  # The `state` represents the operational status of an issued card. A card can only approve incoming authorizations if it is in an active state.
@@ -35,23 +33,34 @@ module Moov
35
33
  field :form_factor, Models::Components::IssuedCardFormFactor, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('formFactor'), required: true, 'decoder': ::Moov::Utils.enum_from_string(Models::Components::IssuedCardFormFactor, false) } }
36
34
 
37
35
  field :created_on, ::DateTime, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('createdOn'), required: true, 'decoder': ::Moov::Utils.datetime_from_iso_format(false) } }
38
- # Optional descriptor for the card.
39
- field :memo, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('memo') } }
36
+
37
+ field :updated_on, ::DateTime, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('updatedOn'), required: true, 'decoder': ::Moov::Utils.datetime_from_iso_format(false) } }
38
+ # Identifier for the account of the card's authorized user.
39
+ field :authorized_user_account_id, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('authorizedUserAccountID') } }
40
+ # An optional descriptive name for the card.
41
+ field :nickname, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('nickname') } }
42
+ # Free-form key-value pair list. Useful for storing information that is not captured elsewhere.
43
+ field :metadata, Crystalline::Nilable.new(Crystalline::Hash.new(Symbol, ::String)), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('metadata') } }
44
+ # Billing address associated with the card.
45
+ field :billing_address, Crystalline::Nilable.new(Models::Components::Address), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('billingAddress') } }
40
46
 
41
47
  field :controls, Crystalline::Nilable.new(Models::Components::IssuingControls), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('controls') } }
42
48
 
43
- sig { params(issued_card_id: ::String, brand: Models::Components::CardBrand, last_four_card_number: ::String, expiration: Models::Components::CardExpiration, authorized_user: Models::Components::AuthorizedUser, funding_wallet_id: ::String, state: Models::Components::IssuedCardState, form_factor: Models::Components::IssuedCardFormFactor, created_on: ::DateTime, memo: T.nilable(::String), controls: T.nilable(Models::Components::IssuingControls)).void }
44
- def initialize(issued_card_id:, brand:, last_four_card_number:, expiration:, authorized_user:, funding_wallet_id:, state:, form_factor:, created_on:, memo: nil, controls: nil)
49
+ sig { params(issued_card_id: ::String, brand: Models::Components::CardBrand, last_four_card_number: ::String, expiration: Models::Components::CardExpiration, funding_wallet_id: ::String, state: Models::Components::IssuedCardState, form_factor: Models::Components::IssuedCardFormFactor, created_on: ::DateTime, updated_on: ::DateTime, authorized_user_account_id: T.nilable(::String), nickname: T.nilable(::String), metadata: T.nilable(T::Hash[Symbol, ::String]), billing_address: T.nilable(Models::Components::Address), controls: T.nilable(Models::Components::IssuingControls)).void }
50
+ def initialize(issued_card_id:, brand:, last_four_card_number:, expiration:, funding_wallet_id:, state:, form_factor:, created_on:, updated_on:, authorized_user_account_id: nil, nickname: nil, metadata: nil, billing_address: nil, controls: nil)
45
51
  @issued_card_id = issued_card_id
46
52
  @brand = brand
47
53
  @last_four_card_number = last_four_card_number
48
54
  @expiration = expiration
49
- @authorized_user = authorized_user
50
55
  @funding_wallet_id = funding_wallet_id
51
56
  @state = state
52
57
  @form_factor = form_factor
53
58
  @created_on = created_on
54
- @memo = memo
59
+ @updated_on = updated_on
60
+ @authorized_user_account_id = authorized_user_account_id
61
+ @nickname = nickname
62
+ @metadata = metadata
63
+ @billing_address = billing_address
55
64
  @controls = controls
56
65
  end
57
66
 
@@ -62,12 +71,15 @@ module Moov
62
71
  return false unless @brand == other.brand
63
72
  return false unless @last_four_card_number == other.last_four_card_number
64
73
  return false unless @expiration == other.expiration
65
- return false unless @authorized_user == other.authorized_user
66
74
  return false unless @funding_wallet_id == other.funding_wallet_id
67
75
  return false unless @state == other.state
68
76
  return false unless @form_factor == other.form_factor
69
77
  return false unless @created_on == other.created_on
70
- return false unless @memo == other.memo
78
+ return false unless @updated_on == other.updated_on
79
+ return false unless @authorized_user_account_id == other.authorized_user_account_id
80
+ return false unless @nickname == other.nickname
81
+ return false unless @metadata == other.metadata
82
+ return false unless @billing_address == other.billing_address
71
83
  return false unless @controls == other.controls
72
84
  true
73
85
  end
@@ -16,8 +16,6 @@ class Moov::Models::Components::IssuedCard
16
16
  def last_four_card_number=(str_); end
17
17
  def expiration(); end
18
18
  def expiration=(str_); end
19
- def authorized_user(); end
20
- def authorized_user=(str_); end
21
19
  def funding_wallet_id(); end
22
20
  def funding_wallet_id=(str_); end
23
21
  def state(); end
@@ -26,8 +24,16 @@ class Moov::Models::Components::IssuedCard
26
24
  def form_factor=(str_); end
27
25
  def created_on(); end
28
26
  def created_on=(str_); end
29
- def memo(); end
30
- def memo=(str_); end
27
+ def updated_on(); end
28
+ def updated_on=(str_); end
29
+ def authorized_user_account_id(); end
30
+ def authorized_user_account_id=(str_); end
31
+ def nickname(); end
32
+ def nickname=(str_); end
33
+ def metadata(); end
34
+ def metadata=(str_); end
35
+ def billing_address(); end
36
+ def billing_address=(str_); end
31
37
  def controls(); end
32
38
  def controls=(str_); end
33
39
  end
@@ -19,7 +19,7 @@ module Moov
19
19
  # List of [scopes](https://docs.moov.io/api/authentication/scopes/) you request to use on this
20
20
  # account. These values are used to determine what can be done with the account onboarded.
21
21
  field :scopes, Crystalline::Array.new(Models::Components::ApplicationScope), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('scopes'), required: true } }
22
- # List of [capabilities](https://docs.moov.io/guides/accounts/capabilities/) you intend to request for this
22
+ # List of [capabilities](https://docs.moov.io/guides/accounts/capabilities/reference/) you intend to request for this
23
23
  # account. These values are used to determine what information to collect from the user during onboarding.
24
24
  field :capabilities, Crystalline::Array.new(Models::Components::CapabilityID), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('capabilities'), required: true } }
25
25
  # List of fee plan codes to assign the account created by the invitee.
@@ -15,7 +15,7 @@ module Moov
15
15
  # List of [scopes](https://docs.moov.io/api/authentication/scopes/) you request to use on this
16
16
  # account. These values are used to determine what can be done with the account onboarded.
17
17
  field :scopes, Crystalline::Array.new(Models::Components::ApplicationScope), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('scopes'), required: true } }
18
- # List of [capabilities](https://docs.moov.io/guides/accounts/capabilities/) you intend to request for this
18
+ # List of [capabilities](https://docs.moov.io/guides/accounts/capabilities/reference/) you intend to request for this
19
19
  # account. These values are used to determine what information to collect from the user during onboarding.
20
20
  field :capabilities, Crystalline::Array.new(Models::Components::CapabilityID), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('capabilities'), required: true } }
21
21
  # List of fee plan codes to assign the account created by the invitee.
@@ -40,12 +40,12 @@ module Moov
40
40
  field :created_on, ::DateTime, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('createdOn'), required: true, 'decoder': ::Moov::Utils.datetime_from_iso_format(false) } }
41
41
 
42
42
  field :updated_on, ::DateTime, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('updatedOn'), required: true, 'decoder': ::Moov::Utils.datetime_from_iso_format(false) } }
43
- # The fixed amount of the payment link.
43
+ # The fixed amount of the payment link.
44
44
  #
45
45
  # In API versions before `2026.07.00`, this was a required field.
46
46
  #
47
- # In API version `2026.07.00` and beyond, this field is required for `fixed` payment amount types and omitted
48
- # for `open` payment amount types.
47
+ # In API version `2026.07.00` and beyond, this field is present for `payment` and `payout` links and omitted
48
+ # for `customAmountPayment` links, where the payor chooses the amount.
49
49
  field :amount, Crystalline::Nilable.new(Models::Components::Amount), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('amount') } }
50
50
  # An optional limit on the number of times this payment link can be used.
51
51
  #
@@ -59,6 +59,11 @@ module Moov
59
59
  field :payment, Crystalline::Nilable.new(Models::Components::PaymentLinkPaymentDetails), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('payment') } }
60
60
 
61
61
  field :payout, Crystalline::Nilable.new(Models::Components::PaymentLinkPayoutDetails), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('payout') } }
62
+ # Options for custom amount payment links.
63
+ #
64
+ # A custom amount payment link shares all the options of a `payment` link, but the payor chooses how much to
65
+ # pay rather than the merchant fixing the amount. The amount may optionally be constrained to a range.
66
+ field :custom_amount_payment, Crystalline::Nilable.new(Models::Components::PaymentLinkCustomAmountPaymentDetails), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('customAmountPayment') } }
62
67
  # An optional collection of line items for a payment link.
63
68
  # When line items are provided, their total plus tax must equal the payment link amount.
64
69
  field :line_items, Crystalline::Nilable.new(Models::Components::PaymentLinkLineItems), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('lineItems') } }
@@ -67,8 +72,8 @@ module Moov
67
72
 
68
73
  field :amount_details, Crystalline::Nilable.new(Models::Components::PaymentLinkAmountDetails), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('amountDetails') } }
69
74
 
70
- sig { params(code: ::String, payment_link_type: Models::Components::PaymentLinkType, mode: Models::Components::Mode, status: Models::Components::PaymentLinkStatus, partner_account_id: ::String, merchant_account_id: ::String, owner_account_id: ::String, merchant_payment_method_id: ::String, link: ::String, uses: ::Integer, display: Models::Components::PaymentLinkDisplayOptions, customer: Models::Components::PaymentLinkCustomerOptions, created_on: ::DateTime, updated_on: ::DateTime, amount: T.nilable(Models::Components::Amount), max_uses: T.nilable(::Integer), last_used_on: T.nilable(::DateTime), expires_on: T.nilable(::DateTime), payment: T.nilable(Models::Components::PaymentLinkPaymentDetails), payout: T.nilable(Models::Components::PaymentLinkPayoutDetails), line_items: T.nilable(Models::Components::PaymentLinkLineItems), disabled_on: T.nilable(::DateTime), amount_details: T.nilable(Models::Components::PaymentLinkAmountDetails)).void }
71
- def initialize(code:, payment_link_type:, mode:, status:, partner_account_id:, merchant_account_id:, owner_account_id:, merchant_payment_method_id:, link:, uses:, display:, customer:, created_on:, updated_on:, amount: nil, max_uses: nil, last_used_on: nil, expires_on: nil, payment: nil, payout: nil, line_items: nil, disabled_on: nil, amount_details: nil)
75
+ sig { params(code: ::String, payment_link_type: Models::Components::PaymentLinkType, mode: Models::Components::Mode, status: Models::Components::PaymentLinkStatus, partner_account_id: ::String, merchant_account_id: ::String, owner_account_id: ::String, merchant_payment_method_id: ::String, link: ::String, uses: ::Integer, display: Models::Components::PaymentLinkDisplayOptions, customer: Models::Components::PaymentLinkCustomerOptions, created_on: ::DateTime, updated_on: ::DateTime, amount: T.nilable(Models::Components::Amount), max_uses: T.nilable(::Integer), last_used_on: T.nilable(::DateTime), expires_on: T.nilable(::DateTime), payment: T.nilable(Models::Components::PaymentLinkPaymentDetails), payout: T.nilable(Models::Components::PaymentLinkPayoutDetails), custom_amount_payment: T.nilable(Models::Components::PaymentLinkCustomAmountPaymentDetails), line_items: T.nilable(Models::Components::PaymentLinkLineItems), disabled_on: T.nilable(::DateTime), amount_details: T.nilable(Models::Components::PaymentLinkAmountDetails)).void }
76
+ def initialize(code:, payment_link_type:, mode:, status:, partner_account_id:, merchant_account_id:, owner_account_id:, merchant_payment_method_id:, link:, uses:, display:, customer:, created_on:, updated_on:, amount: nil, max_uses: nil, last_used_on: nil, expires_on: nil, payment: nil, payout: nil, custom_amount_payment: nil, line_items: nil, disabled_on: nil, amount_details: nil)
72
77
  @code = code
73
78
  @payment_link_type = payment_link_type
74
79
  @mode = mode
@@ -89,6 +94,7 @@ module Moov
89
94
  @expires_on = expires_on
90
95
  @payment = payment
91
96
  @payout = payout
97
+ @custom_amount_payment = custom_amount_payment
92
98
  @line_items = line_items
93
99
  @disabled_on = disabled_on
94
100
  @amount_details = amount_details
@@ -117,6 +123,7 @@ module Moov
117
123
  return false unless @expires_on == other.expires_on
118
124
  return false unless @payment == other.payment
119
125
  return false unless @payout == other.payout
126
+ return false unless @custom_amount_payment == other.custom_amount_payment
120
127
  return false unless @line_items == other.line_items
121
128
  return false unless @disabled_on == other.disabled_on
122
129
  return false unless @amount_details == other.amount_details
@@ -48,6 +48,8 @@ class Moov::Models::Components::PaymentLink
48
48
  def payment=(str_); end
49
49
  def payout(); end
50
50
  def payout=(str_); end
51
+ def custom_amount_payment(); end
52
+ def custom_amount_payment=(str_); end
51
53
  def line_items(); end
52
54
  def line_items=(str_); end
53
55
  def disabled_on(); end
@@ -0,0 +1,59 @@
1
+ # Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
2
+
3
+ # typed: true
4
+ # frozen_string_literal: true
5
+
6
+
7
+ module Moov
8
+ module Models
9
+ module Components
10
+ # Options for custom amount payment links.
11
+ #
12
+ # A custom amount payment link shares all the options of a `payment` link, but the payor chooses how much to
13
+ # pay rather than the merchant fixing the amount. The amount may optionally be constrained to a range.
14
+ class PaymentLinkCustomAmountPaymentDetails
15
+ extend T::Sig
16
+ include Crystalline::MetadataFields
17
+
18
+ # A list of payment methods that should be supported for this payment link.
19
+ field :allowed_methods, Crystalline::Array.new(Models::Components::CollectionPaymentMethodType), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('allowedMethods'), required: true } }
20
+ # Options for payment links used to collect a card payment.
21
+ field :card_details, Crystalline::Nilable.new(Models::Components::CardPaymentDetails), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('cardDetails') } }
22
+ # Options for payment links used to collect an ACH payment.
23
+ field :ach_details, Crystalline::Nilable.new(Models::Components::ACHPaymentDetails), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('achDetails') } }
24
+ # Optional free-form metadata for the transfer.
25
+ field :metadata, Crystalline::Nilable.new(Crystalline::Hash.new(Symbol, ::String)), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('metadata') } }
26
+ # The minimum and maximum amounts the payor can specify.
27
+ #
28
+ # When omitted, the payor may enter any amount. Both bounds must use USD.
29
+ field :amount_range, Crystalline::Nilable.new(Models::Components::AmountDecimalRange), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('amountRange') } }
30
+ # Optional preset amounts displayed to the payor.
31
+ #
32
+ # Each suggested amount must use USD and, when an `amountRange` is set, fall within it.
33
+ field :suggested_amounts, Crystalline::Nilable.new(Crystalline::Array.new(Models::Components::AmountDecimal)), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('suggestedAmounts') } }
34
+
35
+ sig { params(allowed_methods: T::Array[Models::Components::CollectionPaymentMethodType], card_details: T.nilable(Models::Components::CardPaymentDetails), ach_details: T.nilable(Models::Components::ACHPaymentDetails), metadata: T.nilable(T::Hash[Symbol, ::String]), amount_range: T.nilable(Models::Components::AmountDecimalRange), suggested_amounts: T.nilable(T::Array[Models::Components::AmountDecimal])).void }
36
+ def initialize(allowed_methods:, card_details: nil, ach_details: nil, metadata: nil, amount_range: nil, suggested_amounts: nil)
37
+ @allowed_methods = allowed_methods
38
+ @card_details = card_details
39
+ @ach_details = ach_details
40
+ @metadata = metadata
41
+ @amount_range = amount_range
42
+ @suggested_amounts = suggested_amounts
43
+ end
44
+
45
+ sig { params(other: T.untyped).returns(T::Boolean) }
46
+ def ==(other)
47
+ return false unless other.is_a? self.class
48
+ return false unless @allowed_methods == other.allowed_methods
49
+ return false unless @card_details == other.card_details
50
+ return false unless @ach_details == other.ach_details
51
+ return false unless @metadata == other.metadata
52
+ return false unless @amount_range == other.amount_range
53
+ return false unless @suggested_amounts == other.suggested_amounts
54
+ true
55
+ end
56
+ end
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,23 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+
5
+ class Moov::Models::Components::PaymentLinkCustomAmountPaymentDetails
6
+ extend ::Crystalline::MetadataFields::ClassMethods
7
+ end
8
+
9
+
10
+ class Moov::Models::Components::PaymentLinkCustomAmountPaymentDetails
11
+ def allowed_methods(); end
12
+ def allowed_methods=(str_); end
13
+ def card_details(); end
14
+ def card_details=(str_); end
15
+ def ach_details(); end
16
+ def ach_details=(str_); end
17
+ def metadata(); end
18
+ def metadata=(str_); end
19
+ def amount_range(); end
20
+ def amount_range=(str_); end
21
+ def suggested_amounts(); end
22
+ def suggested_amounts=(str_); end
23
+ end
@@ -0,0 +1,59 @@
1
+ # Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
2
+
3
+ # typed: true
4
+ # frozen_string_literal: true
5
+
6
+
7
+ module Moov
8
+ module Models
9
+ module Components
10
+ # Options for custom amount payment links.
11
+ #
12
+ # A custom amount payment link shares all the options of a `payment` link, but the payor chooses how much to
13
+ # pay rather than the merchant fixing the amount. The amount may optionally be constrained to a range.
14
+ class PaymentLinkCustomAmountPaymentDetailsUpdate
15
+ extend T::Sig
16
+ include Crystalline::MetadataFields
17
+
18
+ # A list of payment methods that should be supported for this payment link.
19
+ field :allowed_methods, Crystalline::Nilable.new(Crystalline::Array.new(Models::Components::CollectionPaymentMethodType)), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('allowedMethods') } }
20
+ # Options for payment links used to collect a card payment.
21
+ field :card_details, Crystalline::Nilable.new(Models::Components::CardPaymentDetails), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('cardDetails') } }
22
+ # Options for payment links used to collect an ACH payment.
23
+ field :ach_details, Crystalline::Nilable.new(Models::Components::ACHPaymentDetails), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('achDetails') } }
24
+ # Optional free-form metadata for the transfer.
25
+ field :metadata, Crystalline::Nilable.new(Crystalline::Hash.new(Symbol, ::String)), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('metadata') } }
26
+ # The minimum and maximum amounts the payor can specify.
27
+ #
28
+ # When omitted, the payor may enter any amount. Both bounds must use USD.
29
+ field :amount_range, Crystalline::Nilable.new(Models::Components::AmountDecimalRangeUpdate), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('amountRange') } }
30
+ # Optional preset amounts displayed to the payor.
31
+ #
32
+ # Each suggested amount must use USD and, when an `amountRange` is set, fall within it.
33
+ field :suggested_amounts, Crystalline::Nilable.new(Crystalline::Array.new(Models::Components::AmountDecimal)), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('suggestedAmounts') } }
34
+
35
+ sig { params(allowed_methods: T.nilable(T::Array[Models::Components::CollectionPaymentMethodType]), card_details: T.nilable(Models::Components::CardPaymentDetails), ach_details: T.nilable(Models::Components::ACHPaymentDetails), metadata: T.nilable(T::Hash[Symbol, ::String]), amount_range: T.nilable(Models::Components::AmountDecimalRangeUpdate), suggested_amounts: T.nilable(T::Array[Models::Components::AmountDecimal])).void }
36
+ def initialize(allowed_methods: nil, card_details: nil, ach_details: nil, metadata: nil, amount_range: nil, suggested_amounts: nil)
37
+ @allowed_methods = allowed_methods
38
+ @card_details = card_details
39
+ @ach_details = ach_details
40
+ @metadata = metadata
41
+ @amount_range = amount_range
42
+ @suggested_amounts = suggested_amounts
43
+ end
44
+
45
+ sig { params(other: T.untyped).returns(T::Boolean) }
46
+ def ==(other)
47
+ return false unless other.is_a? self.class
48
+ return false unless @allowed_methods == other.allowed_methods
49
+ return false unless @card_details == other.card_details
50
+ return false unless @ach_details == other.ach_details
51
+ return false unless @metadata == other.metadata
52
+ return false unless @amount_range == other.amount_range
53
+ return false unless @suggested_amounts == other.suggested_amounts
54
+ true
55
+ end
56
+ end
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,23 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+
5
+ class Moov::Models::Components::PaymentLinkCustomAmountPaymentDetailsUpdate
6
+ extend ::Crystalline::MetadataFields::ClassMethods
7
+ end
8
+
9
+
10
+ class Moov::Models::Components::PaymentLinkCustomAmountPaymentDetailsUpdate
11
+ def allowed_methods(); end
12
+ def allowed_methods=(str_); end
13
+ def card_details(); end
14
+ def card_details=(str_); end
15
+ def ach_details(); end
16
+ def ach_details=(str_); end
17
+ def metadata(); end
18
+ def metadata=(str_); end
19
+ def amount_range(); end
20
+ def amount_range=(str_); end
21
+ def suggested_amounts(); end
22
+ def suggested_amounts=(str_); end
23
+ end