moov_ruby 26.7.0.pre.dev.2 → 26.7.0.pre.dev.4

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 (170) 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 +37 -37
  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/client.rb +2 -1
  14. data/lib/moov/deposit_view.rb +213 -0
  15. data/lib/moov/disputes.rb +44 -44
  16. data/lib/moov/end_to_end_encryption.rb +8 -8
  17. data/lib/moov/enriched_address.rb +4 -4
  18. data/lib/moov/enriched_profile.rb +4 -4
  19. data/lib/moov/fee_plans.rb +40 -40
  20. data/lib/moov/files.rb +12 -12
  21. data/lib/moov/google_pay.rb +4 -4
  22. data/lib/moov/images.rb +28 -28
  23. data/lib/moov/industries.rb +4 -4
  24. data/lib/moov/institutions.rb +8 -8
  25. data/lib/moov/invoices.rb +28 -28
  26. data/lib/moov/issuing_transactions.rb +20 -20
  27. data/lib/moov/models/components/addcapabilities.rb +5 -1
  28. data/lib/moov/models/components/amountdecimalrange.rb +11 -5
  29. data/lib/moov/models/components/amountdecimalrangeupdate.rb +7 -1
  30. data/lib/moov/models/components/billingaddress.rb +52 -0
  31. data/lib/moov/models/components/billingaddress.rbi +23 -0
  32. data/lib/moov/models/components/capability.rb +7 -1
  33. data/lib/moov/models/components/capabilityid.rb +8 -1
  34. data/lib/moov/models/components/cardtransactiondetails.rb +10 -2
  35. data/lib/moov/models/components/cardtransactiondetails.rbi +4 -0
  36. data/lib/moov/models/components/cardtransactionstatus.rb +1 -0
  37. data/lib/moov/models/components/createaccount.rb +5 -1
  38. data/lib/moov/models/components/createpaymentlink.rb +10 -6
  39. data/lib/moov/models/components/createpaymentlink.rbi +2 -0
  40. data/lib/moov/models/components/createtransferdestinationcard.rb +6 -2
  41. data/lib/moov/models/components/createtransferdestinationcard.rbi +2 -0
  42. data/lib/moov/models/components/customamountpaymentdetailserror.rb +52 -0
  43. data/lib/moov/models/components/customamountpaymentdetailserror.rbi +23 -0
  44. data/lib/moov/models/components/depositaccountingestedresponse.rb +44 -0
  45. data/lib/moov/models/components/depositaccountingestedresponse.rbi +19 -0
  46. data/lib/moov/models/components/fullissuedcard.rb +23 -13
  47. data/lib/moov/models/components/fullissuedcard.rbi +10 -4
  48. data/lib/moov/models/components/invoice.rb +6 -2
  49. data/lib/moov/models/components/invoice.rbi +2 -0
  50. data/lib/moov/models/components/issuedcard.rb +23 -13
  51. data/lib/moov/models/components/issuedcard.rbi +10 -4
  52. data/lib/moov/models/components/issuedcardstate.rb +1 -5
  53. data/lib/moov/models/components/manualtermsofservice.rb +1 -1
  54. data/lib/moov/models/components/manualtermsofserviceupdate.rb +1 -1
  55. data/lib/moov/models/components/onboardinginvite.rb +1 -1
  56. data/lib/moov/models/components/onboardinginviterequest.rb +1 -1
  57. data/lib/moov/models/components/patchtransfer.rb +6 -6
  58. data/lib/moov/models/components/patchtransfer.rbi +2 -2
  59. data/lib/moov/models/components/patchwallet.rb +1 -1
  60. data/lib/moov/models/components/paymentlink.rb +12 -5
  61. data/lib/moov/models/components/paymentlink.rbi +2 -0
  62. data/lib/moov/models/components/paymentlinkcustomamountpaymentdetails.rb +59 -0
  63. data/lib/moov/models/components/paymentlinkcustomamountpaymentdetails.rbi +23 -0
  64. data/lib/moov/models/components/paymentlinkcustomamountpaymentdetailsupdate.rb +59 -0
  65. data/lib/moov/models/components/paymentlinkcustomamountpaymentdetailsupdate.rbi +23 -0
  66. data/lib/moov/models/components/paymentlinkpaymentdetails.rb +2 -14
  67. data/lib/moov/models/components/paymentlinkpaymentdetails.rbi +0 -6
  68. data/lib/moov/models/components/paymentlinkpaymentdetailsupdate.rb +2 -14
  69. data/lib/moov/models/components/paymentlinkpaymentdetailsupdate.rbi +0 -6
  70. data/lib/moov/models/components/paymentlinkpayoutdetails.rb +9 -2
  71. data/lib/moov/models/components/paymentlinkpayoutdetails.rbi +2 -0
  72. data/lib/moov/models/components/paymentlinkpayoutdetailsupdate.rb +9 -2
  73. data/lib/moov/models/components/paymentlinkpayoutdetailsupdate.rbi +2 -0
  74. data/lib/moov/models/components/paymentlinktype.rb +1 -0
  75. data/lib/moov/models/components/paymentmethodscard.rb +7 -2
  76. data/lib/moov/models/components/paymentmethodscard.rbi +2 -0
  77. data/lib/moov/models/components/payoutdetailserror.rb +6 -2
  78. data/lib/moov/models/components/payoutdetailserror.rbi +2 -0
  79. data/lib/moov/models/components/pushdeliveryspeed.rb +19 -0
  80. data/lib/moov/models/components/pushdeliveryspeed.rbi +11 -0
  81. data/lib/moov/models/components/pushoptions.rb +38 -0
  82. data/lib/moov/models/components/pushoptions.rbi +15 -0
  83. data/lib/moov/models/components/pushoptionserror.rb +36 -0
  84. data/lib/moov/models/components/pushoptionserror.rbi +15 -0
  85. data/lib/moov/models/components/pushoptionsupdate.rb +38 -0
  86. data/lib/moov/models/components/pushoptionsupdate.rbi +15 -0
  87. data/lib/moov/models/components/requestcard.rb +17 -17
  88. data/lib/moov/models/components/requestcard.rbi +8 -8
  89. data/lib/moov/models/components/sourcesystem.rb +23 -0
  90. data/lib/moov/models/components/sourcesystem.rbi +11 -0
  91. data/lib/moov/models/components/surcharge.rb +38 -0
  92. data/lib/moov/models/components/surcharge.rbi +15 -0
  93. data/lib/moov/models/components/tax.rb +38 -0
  94. data/lib/moov/models/components/tax.rbi +15 -0
  95. data/lib/moov/models/components/termsofservice.rb +1 -1
  96. data/lib/moov/models/components/updateissuedcard.rb +13 -9
  97. data/lib/moov/models/components/updateissuedcard.rbi +6 -4
  98. data/lib/moov/models/components/updatepaymentlink.rb +6 -2
  99. data/lib/moov/models/components/updatepaymentlink.rbi +2 -0
  100. data/lib/moov/models/components/updatepaymentlinkamountdetails.rb +3 -3
  101. data/lib/moov/models/components/webhookdataauthorizationexpiring.rb +44 -0
  102. data/lib/moov/models/components/webhookdataauthorizationexpiring.rbi +19 -0
  103. data/lib/moov/models/components/webhookdatacapabilityrequested.rb +7 -1
  104. data/lib/moov/models/components/webhookdatacapabilityupdated.rb +7 -1
  105. data/lib/moov/models/components/webhookdatasweepcreated.rb +6 -2
  106. data/lib/moov/models/components/webhookdatasweepcreated.rbi +2 -0
  107. data/lib/moov/models/components/webhookdatasweepupdated.rb +6 -2
  108. data/lib/moov/models/components/webhookdatasweepupdated.rbi +2 -0
  109. data/lib/moov/models/components/webhookevent.rb +2 -2
  110. data/lib/moov/models/components/webhookeventtype.rb +1 -0
  111. data/lib/moov/models/components.rb +13 -6
  112. data/lib/moov/models/errors/createpaymentlinkerror.rb +6 -2
  113. data/lib/moov/models/errors/createpaymentlinkerror.rbi +2 -0
  114. data/lib/moov/models/errors/depositaccountvalidationerror.rb +40 -0
  115. data/lib/moov/models/errors/depositaccountvalidationerror.rbi +17 -0
  116. data/lib/moov/models/errors/requestcarderror.rb +14 -14
  117. data/lib/moov/models/errors/requestcarderror.rbi +8 -8
  118. data/lib/moov/models/errors/updateissuedcarderror.rb +12 -8
  119. data/lib/moov/models/errors/updateissuedcarderror.rbi +6 -4
  120. data/lib/moov/models/errors/updatepaymentlinkerror.rb +6 -2
  121. data/lib/moov/models/errors/updatepaymentlinkerror.rbi +2 -0
  122. data/lib/moov/models/errors.rb +1 -0
  123. data/lib/moov/models/operations/createdepositaccount_request.rb +40 -0
  124. data/lib/moov/models/operations/createdepositaccount_request.rbi +17 -0
  125. data/lib/moov/models/operations/createdepositaccount_response.rb +48 -0
  126. data/lib/moov/models/operations/createdepositaccount_response.rbi +21 -0
  127. data/lib/moov/models/operations/disablecapability_request.rb +7 -1
  128. data/lib/moov/models/operations/getcapability_request.rb +7 -1
  129. data/lib/moov/models/operations/linkbankaccount_request.rb +1 -1
  130. data/lib/moov/models/operations/listcancellations_request.rb +36 -0
  131. data/lib/moov/models/operations/listcancellations_request.rbi +15 -0
  132. data/lib/moov/models/operations/listcancellations_response.rb +48 -0
  133. data/lib/moov/models/operations/listcancellations_response.rbi +21 -0
  134. data/lib/moov/models/operations/listissuedcards_request.rb +1 -1
  135. data/lib/moov/models/operations.rb +4 -0
  136. data/lib/moov/onboarding.rb +16 -16
  137. data/lib/moov/payment_links.rb +24 -24
  138. data/lib/moov/payment_methods.rb +8 -8
  139. data/lib/moov/ping.rb +4 -4
  140. data/lib/moov/products.rb +20 -20
  141. data/lib/moov/receipts.rb +8 -8
  142. data/lib/moov/representatives.rb +20 -20
  143. data/lib/moov/resolution_links.rb +16 -16
  144. data/lib/moov/scheduling.rb +24 -24
  145. data/lib/moov/sdkconfiguration.rb +3 -3
  146. data/lib/moov/statements.rb +8 -8
  147. data/lib/moov/support.rb +20 -20
  148. data/lib/moov/sweeps.rb +24 -24
  149. data/lib/moov/terminal_applications.rb +20 -20
  150. data/lib/moov/transfer_config.rb +12 -12
  151. data/lib/moov/transfers.rb +171 -48
  152. data/lib/moov/underwriting.rb +12 -12
  153. data/lib/moov/utils/retries.rb +4 -1
  154. data/lib/moov/wallet_transactions.rb +8 -8
  155. data/lib/moov/wallets.rb +16 -16
  156. data/lib/moov/webhooks.rb +32 -32
  157. data/lib/moov_ruby.rb +1 -0
  158. metadata +41 -16
  159. data/lib/moov/models/components/authorizeduser.rb +0 -36
  160. data/lib/moov/models/components/authorizeduser.rbi +0 -15
  161. data/lib/moov/models/components/createauthorizeduser.rb +0 -40
  162. data/lib/moov/models/components/createauthorizeduser.rbi +0 -17
  163. data/lib/moov/models/components/createauthorizedusererror.rb +0 -40
  164. data/lib/moov/models/components/createauthorizedusererror.rbi +0 -17
  165. data/lib/moov/models/components/createauthorizeduserupdate.rb +0 -40
  166. data/lib/moov/models/components/createauthorizeduserupdate.rbi +0 -17
  167. data/lib/moov/models/components/paymentlinkpaymentdetails_amounttype.rb +0 -19
  168. data/lib/moov/models/components/paymentlinkpaymentdetails_amounttype.rbi +0 -11
  169. data/lib/moov/models/components/paymentlinkpaymentdetailsupdate_amounttype.rb +0 -19
  170. data/lib/moov/models/components/paymentlinkpaymentdetailsupdate_amounttype.rbi +0 -11
@@ -0,0 +1,44 @@
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
+ # The result of ingesting a deposit account into the deposit view.
11
+ class DepositAccountIngestedResponse
12
+ extend T::Sig
13
+ include Crystalline::MetadataFields
14
+
15
+ # The Moov account that owns the deposit view the account was ingested into.
16
+ field :moov_account_id, ::String, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('moovAccountID'), required: true } }
17
+ # The core banking source system that produced the ingested payload.
18
+ field :source_system, Models::Components::SourceSystem, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('sourceSystem'), required: true, 'decoder': ::Moov::Utils.enum_from_string(Models::Components::SourceSystem, false) } }
19
+ # The identifier of the deposit account within the source system.
20
+ field :source_account_id, ::String, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('sourceAccountID'), required: true } }
21
+ # The date and time the deposit account was ingested.
22
+ field :ingested_at, ::DateTime, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('ingestedAt'), required: true, 'decoder': ::Moov::Utils.datetime_from_iso_format(false) } }
23
+
24
+ sig { params(moov_account_id: ::String, source_system: Models::Components::SourceSystem, source_account_id: ::String, ingested_at: ::DateTime).void }
25
+ def initialize(moov_account_id:, source_system:, source_account_id:, ingested_at:)
26
+ @moov_account_id = moov_account_id
27
+ @source_system = source_system
28
+ @source_account_id = source_account_id
29
+ @ingested_at = ingested_at
30
+ end
31
+
32
+ sig { params(other: T.untyped).returns(T::Boolean) }
33
+ def ==(other)
34
+ return false unless other.is_a? self.class
35
+ return false unless @moov_account_id == other.moov_account_id
36
+ return false unless @source_system == other.source_system
37
+ return false unless @source_account_id == other.source_account_id
38
+ return false unless @ingested_at == other.ingested_at
39
+ true
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,19 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+
5
+ class Moov::Models::Components::DepositAccountIngestedResponse
6
+ extend ::Crystalline::MetadataFields::ClassMethods
7
+ end
8
+
9
+
10
+ class Moov::Models::Components::DepositAccountIngestedResponse
11
+ def moov_account_id(); end
12
+ def moov_account_id=(str_); end
13
+ def source_system(); end
14
+ def source_system=(str_); end
15
+ def source_account_id(); end
16
+ def source_account_id=(str_); end
17
+ def ingested_at(); end
18
+ def ingested_at=(str_); end
19
+ end
@@ -20,44 +20,51 @@ 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.
28
26
  #
29
- # - `active`: The card is operational and approves authorizations. Generally becomes active shortly after card creation.
30
- # - `inactive`: The card cannot approve authorizations. This is currently a temporary state assigned post-creation during the activation process.
27
+ # - `active`: The card is operational and can approve authorizations.
31
28
  # - `closed`: The card is permanently deactivated and cannot approve authorizations. A card can be closed by request or when it expires.
32
- # - `pending-verification`: Awaiting additional authorized user verification before the card can be activated.
33
29
  field :state, Models::Components::IssuedCardState, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('state'), required: true, 'decoder': ::Moov::Utils.enum_from_string(Models::Components::IssuedCardState, false) } }
34
30
  # Specifies the type of spend card to be issued. Presently supports virtual only, providing a digital number without a physical card.
35
31
  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
32
 
37
33
  field :created_on, ::DateTime, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('createdOn'), required: true, 'decoder': ::Moov::Utils.datetime_from_iso_format(false) } }
34
+
35
+ field :updated_on, ::DateTime, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('updatedOn'), required: true, 'decoder': ::Moov::Utils.datetime_from_iso_format(false) } }
38
36
  # The issued card's Primary Account Number (PAN)
39
37
  field :pan, ::String, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('pan'), required: true } }
40
38
  # The issued card's 3- or 4-digit Card Verification Value (CVV).
41
39
  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') } }
40
+ # Identifier for the account of the card's authorized user.
41
+ field :authorized_user_account_id, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('authorizedUserAccountID') } }
42
+ # An optional descriptive name for the card.
43
+ field :nickname, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('nickname') } }
44
+ # Free-form key-value pair list. Useful for storing information that is not captured elsewhere.
45
+ field :metadata, Crystalline::Nilable.new(Crystalline::Hash.new(Symbol, ::String)), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('metadata') } }
46
+ # Billing address associated with the card.
47
+ field :billing_address, Crystalline::Nilable.new(Models::Components::Address), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('billingAddress') } }
44
48
 
45
49
  field :controls, Crystalline::Nilable.new(Models::Components::IssuingControls), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('controls') } }
46
50
 
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)
51
+ 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 }
52
+ 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
53
  @issued_card_id = issued_card_id
50
54
  @brand = brand
51
55
  @last_four_card_number = last_four_card_number
52
56
  @expiration = expiration
53
- @authorized_user = authorized_user
54
57
  @funding_wallet_id = funding_wallet_id
55
58
  @state = state
56
59
  @form_factor = form_factor
57
60
  @created_on = created_on
61
+ @updated_on = updated_on
58
62
  @pan = pan
59
63
  @cvv = cvv
60
- @memo = memo
64
+ @authorized_user_account_id = authorized_user_account_id
65
+ @nickname = nickname
66
+ @metadata = metadata
67
+ @billing_address = billing_address
61
68
  @controls = controls
62
69
  end
63
70
 
@@ -68,14 +75,17 @@ module Moov
68
75
  return false unless @brand == other.brand
69
76
  return false unless @last_four_card_number == other.last_four_card_number
70
77
  return false unless @expiration == other.expiration
71
- return false unless @authorized_user == other.authorized_user
72
78
  return false unless @funding_wallet_id == other.funding_wallet_id
73
79
  return false unless @state == other.state
74
80
  return false unless @form_factor == other.form_factor
75
81
  return false unless @created_on == other.created_on
82
+ return false unless @updated_on == other.updated_on
76
83
  return false unless @pan == other.pan
77
84
  return false unless @cvv == other.cvv
78
- return false unless @memo == other.memo
85
+ return false unless @authorized_user_account_id == other.authorized_user_account_id
86
+ return false unless @nickname == other.nickname
87
+ return false unless @metadata == other.metadata
88
+ return false unless @billing_address == other.billing_address
79
89
  return false unless @controls == other.controls
80
90
  true
81
91
  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
@@ -48,6 +48,8 @@ module Moov
48
48
  field :amount_details, Crystalline::Nilable.new(Models::Components::AmountDetails), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('amountDetails') } }
49
49
 
50
50
  field :payment_link_code, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('paymentLinkCode') } }
51
+ # URL to the hosted payment link for the invoice.
52
+ field :payment_link_url, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('paymentLinkURL') } }
51
53
  # Payment made towards an invoice, will be either a transfer or an external payment.
52
54
  field :invoice_payments, Crystalline::Nilable.new(Crystalline::Array.new(Models::Components::InvoicePayment)), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('invoicePayments') } }
53
55
 
@@ -63,8 +65,8 @@ module Moov
63
65
 
64
66
  field :disabled_on, Crystalline::Nilable.new(::DateTime), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('disabledOn'), 'decoder': ::Moov::Utils.datetime_from_iso_format(true) } }
65
67
 
66
- sig { params(invoice_id: ::String, invoice_number: ::String, customer_account_id: ::String, customer_display_name: ::String, customer_email: ::String, partner_account_id: ::String, status: Models::Components::InvoiceStatus, line_items: Models::Components::InvoiceLineItems, subtotal_amount: Models::Components::AmountDecimal, total_amount: Models::Components::AmountDecimal, pending_amount: Models::Components::AmountDecimal, paid_amount: Models::Components::AmountDecimal, refunded_amount: Models::Components::AmountDecimal, disputed_amount: Models::Components::AmountDecimal, created_on: ::DateTime, description: T.nilable(::String), amount_details: T.nilable(Models::Components::AmountDetails), payment_link_code: T.nilable(::String), invoice_payments: T.nilable(T::Array[Models::Components::InvoicePayment]), invoice_date: T.nilable(::DateTime), due_date: T.nilable(::DateTime), sent_on: T.nilable(::DateTime), paid_on: T.nilable(::DateTime), canceled_on: T.nilable(::DateTime), disabled_on: T.nilable(::DateTime)).void }
67
- def initialize(invoice_id:, invoice_number:, customer_account_id:, customer_display_name:, customer_email:, partner_account_id:, status:, line_items:, subtotal_amount:, total_amount:, pending_amount:, paid_amount:, refunded_amount:, disputed_amount:, created_on:, description: nil, amount_details: nil, payment_link_code: nil, invoice_payments: nil, invoice_date: nil, due_date: nil, sent_on: nil, paid_on: nil, canceled_on: nil, disabled_on: nil)
68
+ sig { params(invoice_id: ::String, invoice_number: ::String, customer_account_id: ::String, customer_display_name: ::String, customer_email: ::String, partner_account_id: ::String, status: Models::Components::InvoiceStatus, line_items: Models::Components::InvoiceLineItems, subtotal_amount: Models::Components::AmountDecimal, total_amount: Models::Components::AmountDecimal, pending_amount: Models::Components::AmountDecimal, paid_amount: Models::Components::AmountDecimal, refunded_amount: Models::Components::AmountDecimal, disputed_amount: Models::Components::AmountDecimal, created_on: ::DateTime, description: T.nilable(::String), amount_details: T.nilable(Models::Components::AmountDetails), payment_link_code: T.nilable(::String), payment_link_url: T.nilable(::String), invoice_payments: T.nilable(T::Array[Models::Components::InvoicePayment]), invoice_date: T.nilable(::DateTime), due_date: T.nilable(::DateTime), sent_on: T.nilable(::DateTime), paid_on: T.nilable(::DateTime), canceled_on: T.nilable(::DateTime), disabled_on: T.nilable(::DateTime)).void }
69
+ def initialize(invoice_id:, invoice_number:, customer_account_id:, customer_display_name:, customer_email:, partner_account_id:, status:, line_items:, subtotal_amount:, total_amount:, pending_amount:, paid_amount:, refunded_amount:, disputed_amount:, created_on:, description: nil, amount_details: nil, payment_link_code: nil, payment_link_url: nil, invoice_payments: nil, invoice_date: nil, due_date: nil, sent_on: nil, paid_on: nil, canceled_on: nil, disabled_on: nil)
68
70
  @invoice_id = invoice_id
69
71
  @invoice_number = invoice_number
70
72
  @customer_account_id = customer_account_id
@@ -83,6 +85,7 @@ module Moov
83
85
  @description = description
84
86
  @amount_details = amount_details
85
87
  @payment_link_code = payment_link_code
88
+ @payment_link_url = payment_link_url
86
89
  @invoice_payments = invoice_payments
87
90
  @invoice_date = invoice_date
88
91
  @due_date = due_date
@@ -113,6 +116,7 @@ module Moov
113
116
  return false unless @description == other.description
114
117
  return false unless @amount_details == other.amount_details
115
118
  return false unless @payment_link_code == other.payment_link_code
119
+ return false unless @payment_link_url == other.payment_link_url
116
120
  return false unless @invoice_payments == other.invoice_payments
117
121
  return false unless @invoice_date == other.invoice_date
118
122
  return false unless @due_date == other.due_date
@@ -44,6 +44,8 @@ class Moov::Models::Components::Invoice
44
44
  def amount_details=(str_); end
45
45
  def payment_link_code(); end
46
46
  def payment_link_code=(str_); end
47
+ def payment_link_url(); end
48
+ def payment_link_url=(str_); end
47
49
  def invoice_payments(); end
48
50
  def invoice_payments=(str_); end
49
51
  def invoice_date(); end
@@ -20,38 +20,45 @@ 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.
28
26
  #
29
- # - `active`: The card is operational and approves authorizations. Generally becomes active shortly after card creation.
30
- # - `inactive`: The card cannot approve authorizations. This is currently a temporary state assigned post-creation during the activation process.
27
+ # - `active`: The card is operational and can approve authorizations.
31
28
  # - `closed`: The card is permanently deactivated and cannot approve authorizations. A card can be closed by request or when it expires.
32
- # - `pending-verification`: Awaiting additional authorized user verification before the card can be activated.
33
29
  field :state, Models::Components::IssuedCardState, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('state'), required: true, 'decoder': ::Moov::Utils.enum_from_string(Models::Components::IssuedCardState, false) } }
34
30
  # Specifies the type of spend card to be issued. Presently supports virtual only, providing a digital number without a physical card.
35
31
  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
32
 
37
33
  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') } }
34
+
35
+ field :updated_on, ::DateTime, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('updatedOn'), required: true, 'decoder': ::Moov::Utils.datetime_from_iso_format(false) } }
36
+ # Identifier for the account of the card's authorized user.
37
+ field :authorized_user_account_id, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('authorizedUserAccountID') } }
38
+ # An optional descriptive name for the card.
39
+ field :nickname, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('nickname') } }
40
+ # Free-form key-value pair list. Useful for storing information that is not captured elsewhere.
41
+ field :metadata, Crystalline::Nilable.new(Crystalline::Hash.new(Symbol, ::String)), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('metadata') } }
42
+ # Billing address associated with the card.
43
+ field :billing_address, Crystalline::Nilable.new(Models::Components::Address), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('billingAddress') } }
40
44
 
41
45
  field :controls, Crystalline::Nilable.new(Models::Components::IssuingControls), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('controls') } }
42
46
 
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)
47
+ 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 }
48
+ 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
49
  @issued_card_id = issued_card_id
46
50
  @brand = brand
47
51
  @last_four_card_number = last_four_card_number
48
52
  @expiration = expiration
49
- @authorized_user = authorized_user
50
53
  @funding_wallet_id = funding_wallet_id
51
54
  @state = state
52
55
  @form_factor = form_factor
53
56
  @created_on = created_on
54
- @memo = memo
57
+ @updated_on = updated_on
58
+ @authorized_user_account_id = authorized_user_account_id
59
+ @nickname = nickname
60
+ @metadata = metadata
61
+ @billing_address = billing_address
55
62
  @controls = controls
56
63
  end
57
64
 
@@ -62,12 +69,15 @@ module Moov
62
69
  return false unless @brand == other.brand
63
70
  return false unless @last_four_card_number == other.last_four_card_number
64
71
  return false unless @expiration == other.expiration
65
- return false unless @authorized_user == other.authorized_user
66
72
  return false unless @funding_wallet_id == other.funding_wallet_id
67
73
  return false unless @state == other.state
68
74
  return false unless @form_factor == other.form_factor
69
75
  return false unless @created_on == other.created_on
70
- return false unless @memo == other.memo
76
+ return false unless @updated_on == other.updated_on
77
+ return false unless @authorized_user_account_id == other.authorized_user_account_id
78
+ return false unless @nickname == other.nickname
79
+ return false unless @metadata == other.metadata
80
+ return false unless @billing_address == other.billing_address
71
81
  return false unless @controls == other.controls
72
82
  true
73
83
  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
@@ -9,15 +9,11 @@ module Moov
9
9
  module Components
10
10
  # IssuedCardState - The `state` represents the operational status of an issued card. A card can only approve incoming authorizations if it is in an active state.
11
11
  #
12
- # - `active`: The card is operational and approves authorizations. Generally becomes active shortly after card creation.
13
- # - `inactive`: The card cannot approve authorizations. This is currently a temporary state assigned post-creation during the activation process.
12
+ # - `active`: The card is operational and can approve authorizations.
14
13
  # - `closed`: The card is permanently deactivated and cannot approve authorizations. A card can be closed by request or when it expires.
15
- # - `pending-verification`: Awaiting additional authorized user verification before the card can be activated.
16
14
  class IssuedCardState < T::Enum
17
15
  enums do
18
16
  ACTIVE = new('active')
19
- INACTIVE = new('inactive')
20
- PENDING_VERIFICATION = new('pending-verification')
21
17
  CLOSED = new('closed')
22
18
  end
23
19
  end
@@ -14,7 +14,7 @@ module Moov
14
14
 
15
15
  # The date and time the terms of service were accepted.
16
16
  field :accepted_date, ::DateTime, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('acceptedDate'), required: true, 'decoder': ::Moov::Utils.datetime_from_iso_format(false) } }
17
- # The IP address from which the terms of service were accepted.
17
+ # The IP address (IPv4 or IPv6) from which the terms of service were accepted.
18
18
  field :accepted_ip, ::String, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('acceptedIP'), required: true } }
19
19
  # The user-agent of the user making the request.
20
20
  field :accepted_user_agent, ::String, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('acceptedUserAgent'), required: true } }
@@ -14,7 +14,7 @@ module Moov
14
14
 
15
15
  # The date and time the terms of service were accepted.
16
16
  field :accepted_date, Crystalline::Nilable.new(::DateTime), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('acceptedDate'), 'decoder': ::Moov::Utils.datetime_from_iso_format(true) } }
17
- # The IP address from which the terms of service were accepted.
17
+ # The IP address (IPv4 or IPv6) from which the terms of service were accepted.
18
18
  field :accepted_ip, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('acceptedIP') } }
19
19
  # The user-agent of the user making the request.
20
20
  field :accepted_user_agent, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('acceptedUserAgent') } }
@@ -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.
@@ -12,22 +12,22 @@ module Moov
12
12
  extend T::Sig
13
13
  include Crystalline::MetadataFields
14
14
 
15
+ # Free-form key-value pair list. Useful for storing information that is not captured elsewhere.
16
+ field :metadata, Crystalline::Nilable.new(Crystalline::Hash.new(Symbol, ::String)), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('metadata') } }
15
17
  # Optional alias from a foreign/external system which can be used to reference this resource.
16
18
  field :foreign_id, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('foreignID') } }
17
19
 
18
- field :metadata, Crystalline::Nilable.new(Crystalline::Hash.new(Symbol, ::String)), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('metadata') } }
19
-
20
- sig { params(foreign_id: T.nilable(::String), metadata: T.nilable(T::Hash[Symbol, ::String])).void }
21
- def initialize(foreign_id: nil, metadata: nil)
22
- @foreign_id = foreign_id
20
+ sig { params(metadata: T.nilable(T::Hash[Symbol, ::String]), foreign_id: T.nilable(::String)).void }
21
+ def initialize(metadata: nil, foreign_id: nil)
23
22
  @metadata = metadata
23
+ @foreign_id = foreign_id
24
24
  end
25
25
 
26
26
  sig { params(other: T.untyped).returns(T::Boolean) }
27
27
  def ==(other)
28
28
  return false unless other.is_a? self.class
29
- return false unless @foreign_id == other.foreign_id
30
29
  return false unless @metadata == other.metadata
30
+ return false unless @foreign_id == other.foreign_id
31
31
  true
32
32
  end
33
33
  end
@@ -8,8 +8,8 @@ end
8
8
 
9
9
 
10
10
  class Moov::Models::Components::PatchTransfer
11
- def foreign_id(); end
12
- def foreign_id=(str_); end
13
11
  def metadata(); end
14
12
  def metadata=(str_); end
13
+ def foreign_id(); end
14
+ def foreign_id=(str_); end
15
15
  end
@@ -20,7 +20,7 @@ module Moov
20
20
  field :status, Crystalline::Nilable.new(Models::Components::WalletStatus), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('status'), 'decoder': ::Moov::Utils.enum_from_string(Models::Components::WalletStatus, true) } }
21
21
 
22
22
  field :description, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('description') } }
23
- # Free-form key-value pair list. Useful for storing information that is not captured elsewhere.
23
+
24
24
  field :metadata, Crystalline::Nilable.new(Crystalline::Hash.new(Symbol, ::String)), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('metadata') } }
25
25
 
26
26
  sig { params(name: T.nilable(::String), status: T.nilable(Models::Components::WalletStatus), description: T.nilable(::String), metadata: T.nilable(T::Hash[Symbol, ::String])).void }
@@ -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