moov_ruby 26.7.0.pre.dev.1 → 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 (177) 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/amountdetails.rb +36 -0
  29. data/lib/moov/models/components/amountdetails.rbi +15 -0
  30. data/lib/moov/models/components/amountdetailsupdate.rb +36 -0
  31. data/lib/moov/models/components/amountdetailsupdate.rbi +15 -0
  32. data/lib/moov/models/components/amountdetailsvalidationerror.rb +36 -0
  33. data/lib/moov/models/components/amountdetailsvalidationerror.rbi +15 -0
  34. data/lib/moov/models/components/asynccreatedrefund.rb +6 -2
  35. data/lib/moov/models/components/asynccreatedrefund.rbi +2 -0
  36. data/lib/moov/models/components/billingaddress.rb +52 -0
  37. data/lib/moov/models/components/billingaddress.rbi +23 -0
  38. data/lib/moov/models/components/capability.rb +7 -1
  39. data/lib/moov/models/components/capabilityid.rb +7 -1
  40. data/lib/moov/models/components/cardacquiringrefund.rb +6 -2
  41. data/lib/moov/models/components/cardacquiringrefund.rbi +2 -0
  42. data/lib/moov/models/components/createaccount.rb +5 -1
  43. data/lib/moov/models/components/createinvoice.rb +5 -5
  44. data/lib/moov/models/components/createinvoice.rbi +2 -2
  45. data/lib/moov/models/components/createpaymentlink.rb +10 -6
  46. data/lib/moov/models/components/createpaymentlink.rbi +2 -0
  47. data/lib/moov/models/components/createpaymentlinkamountdetails.rb +6 -2
  48. data/lib/moov/models/components/createpaymentlinkamountdetails.rbi +2 -0
  49. data/lib/moov/models/components/createpaymentlinkamountdetailsvalidationerror.rb +6 -2
  50. data/lib/moov/models/components/createpaymentlinkamountdetailsvalidationerror.rbi +2 -0
  51. data/lib/moov/models/components/createrefund.rb +6 -2
  52. data/lib/moov/models/components/createrefund.rbi +2 -0
  53. data/lib/moov/models/components/createreversal.rb +6 -2
  54. data/lib/moov/models/components/createreversal.rbi +2 -0
  55. data/lib/moov/models/components/createtransferamountdetails.rb +6 -2
  56. data/lib/moov/models/components/createtransferamountdetails.rbi +2 -0
  57. data/lib/moov/models/components/createtransferamountdetailsvalidationerror.rb +6 -2
  58. data/lib/moov/models/components/createtransferamountdetailsvalidationerror.rbi +2 -0
  59. data/lib/moov/models/components/customamountpaymentdetailserror.rb +52 -0
  60. data/lib/moov/models/components/customamountpaymentdetailserror.rbi +23 -0
  61. data/lib/moov/models/components/fullissuedcard.rb +22 -10
  62. data/lib/moov/models/components/fullissuedcard.rbi +10 -4
  63. data/lib/moov/models/components/invoice.rb +7 -7
  64. data/lib/moov/models/components/invoice.rbi +2 -2
  65. data/lib/moov/models/components/issuedcard.rb +22 -10
  66. data/lib/moov/models/components/issuedcard.rbi +10 -4
  67. data/lib/moov/models/components/onboardinginvite.rb +1 -1
  68. data/lib/moov/models/components/onboardinginviterequest.rb +1 -1
  69. data/lib/moov/models/components/paymentlink.rb +12 -5
  70. data/lib/moov/models/components/paymentlink.rbi +2 -0
  71. data/lib/moov/models/components/paymentlinkamountdetails.rb +6 -2
  72. data/lib/moov/models/components/paymentlinkamountdetails.rbi +2 -0
  73. data/lib/moov/models/components/paymentlinkcustomamountpaymentdetails.rb +59 -0
  74. data/lib/moov/models/components/paymentlinkcustomamountpaymentdetails.rbi +23 -0
  75. data/lib/moov/models/components/paymentlinkcustomamountpaymentdetailsupdate.rb +59 -0
  76. data/lib/moov/models/components/paymentlinkcustomamountpaymentdetailsupdate.rbi +23 -0
  77. data/lib/moov/models/components/paymentlinkpaymentdetails.rb +2 -14
  78. data/lib/moov/models/components/paymentlinkpaymentdetails.rbi +0 -6
  79. data/lib/moov/models/components/paymentlinkpaymentdetailsupdate.rb +2 -14
  80. data/lib/moov/models/components/paymentlinkpaymentdetailsupdate.rbi +0 -6
  81. data/lib/moov/models/components/paymentlinktype.rb +1 -0
  82. data/lib/moov/models/components/refundamountdetails.rb +32 -0
  83. data/lib/moov/models/components/refundamountdetails.rbi +13 -0
  84. data/lib/moov/models/components/refundamountdetailsvalidationerror.rb +32 -0
  85. data/lib/moov/models/components/refundamountdetailsvalidationerror.rbi +13 -0
  86. data/lib/moov/models/components/requestcard.rb +17 -17
  87. data/lib/moov/models/components/requestcard.rbi +8 -8
  88. data/lib/moov/models/components/reversalamountdetails.rb +32 -0
  89. data/lib/moov/models/components/reversalamountdetails.rbi +13 -0
  90. data/lib/moov/models/components/reversalamountdetailsvalidationerror.rb +32 -0
  91. data/lib/moov/models/components/reversalamountdetailsvalidationerror.rbi +13 -0
  92. data/lib/moov/models/components/transferamountdetails.rb +6 -2
  93. data/lib/moov/models/components/transferamountdetails.rbi +2 -0
  94. data/lib/moov/models/components/transferconfig.rb +6 -2
  95. data/lib/moov/models/components/transferconfig.rbi +2 -0
  96. data/lib/moov/models/components/transfercontrols.rb +48 -0
  97. data/lib/moov/models/components/transfercontrols.rbi +21 -0
  98. data/lib/moov/models/components/updateinvoice.rb +11 -11
  99. data/lib/moov/models/components/updateinvoice.rbi +2 -2
  100. data/lib/moov/models/components/updateissuedcard.rb +13 -9
  101. data/lib/moov/models/components/updateissuedcard.rbi +6 -4
  102. data/lib/moov/models/components/updatepaymentlink.rb +6 -2
  103. data/lib/moov/models/components/updatepaymentlink.rbi +2 -0
  104. data/lib/moov/models/components/updatepaymentlinkamountdetails.rb +6 -2
  105. data/lib/moov/models/components/updatepaymentlinkamountdetails.rbi +2 -0
  106. data/lib/moov/models/components/updatepaymentlinkamountdetailsvalidationerror.rb +6 -2
  107. data/lib/moov/models/components/updatepaymentlinkamountdetailsvalidationerror.rbi +2 -0
  108. data/lib/moov/models/components/webhookdataauthorizationexpiring.rb +44 -0
  109. data/lib/moov/models/components/webhookdataauthorizationexpiring.rbi +19 -0
  110. data/lib/moov/models/components/webhookdatacapabilityrequested.rb +7 -1
  111. data/lib/moov/models/components/webhookdatacapabilityupdated.rb +7 -1
  112. data/lib/moov/models/components/webhookdatasweepcreated.rb +6 -2
  113. data/lib/moov/models/components/webhookdatasweepcreated.rbi +2 -0
  114. data/lib/moov/models/components/webhookdatasweepupdated.rb +6 -2
  115. data/lib/moov/models/components/webhookdatasweepupdated.rbi +2 -0
  116. data/lib/moov/models/components/webhookevent.rb +2 -2
  117. data/lib/moov/models/components/webhookeventtype.rb +1 -0
  118. data/lib/moov/models/components.rb +13 -6
  119. data/lib/moov/models/errors/cardacquiringrefund_error.rb +6 -2
  120. data/lib/moov/models/errors/cardacquiringrefund_error.rbi +2 -0
  121. data/lib/moov/models/errors/createinvoiceerror.rb +5 -5
  122. data/lib/moov/models/errors/createinvoiceerror.rbi +2 -2
  123. data/lib/moov/models/errors/createpaymentlinkerror.rb +6 -2
  124. data/lib/moov/models/errors/createpaymentlinkerror.rbi +2 -0
  125. data/lib/moov/models/errors/refundvalidationerror.rb +6 -2
  126. data/lib/moov/models/errors/refundvalidationerror.rbi +2 -0
  127. data/lib/moov/models/errors/requestcarderror.rb +14 -14
  128. data/lib/moov/models/errors/requestcarderror.rbi +8 -8
  129. data/lib/moov/models/errors/reversalvalidationerror.rb +6 -2
  130. data/lib/moov/models/errors/reversalvalidationerror.rbi +2 -0
  131. data/lib/moov/models/errors/updateinvoiceerror.rb +5 -5
  132. data/lib/moov/models/errors/updateinvoiceerror.rbi +2 -2
  133. data/lib/moov/models/errors/updateissuedcarderror.rb +12 -8
  134. data/lib/moov/models/errors/updateissuedcarderror.rbi +6 -4
  135. data/lib/moov/models/errors/updatepaymentlinkerror.rb +6 -2
  136. data/lib/moov/models/errors/updatepaymentlinkerror.rbi +2 -0
  137. data/lib/moov/models/operations/disablecapability_request.rb +7 -1
  138. data/lib/moov/models/operations/getcapability_request.rb +7 -1
  139. data/lib/moov/models/operations/listcancellations_request.rb +36 -0
  140. data/lib/moov/models/operations/listcancellations_request.rbi +15 -0
  141. data/lib/moov/models/operations/listcancellations_response.rb +48 -0
  142. data/lib/moov/models/operations/listcancellations_response.rbi +21 -0
  143. data/lib/moov/models/operations.rb +2 -0
  144. data/lib/moov/onboarding.rb +16 -16
  145. data/lib/moov/payment_links.rb +24 -24
  146. data/lib/moov/payment_methods.rb +8 -8
  147. data/lib/moov/ping.rb +4 -4
  148. data/lib/moov/products.rb +20 -20
  149. data/lib/moov/receipts.rb +8 -8
  150. data/lib/moov/representatives.rb +20 -20
  151. data/lib/moov/resolution_links.rb +16 -16
  152. data/lib/moov/scheduling.rb +24 -24
  153. data/lib/moov/sdkconfiguration.rb +3 -3
  154. data/lib/moov/statements.rb +8 -8
  155. data/lib/moov/support.rb +20 -20
  156. data/lib/moov/sweeps.rb +24 -24
  157. data/lib/moov/terminal_applications.rb +20 -20
  158. data/lib/moov/transfer_config.rb +12 -12
  159. data/lib/moov/transfers.rb +171 -48
  160. data/lib/moov/underwriting.rb +12 -12
  161. data/lib/moov/utils/retries.rb +4 -1
  162. data/lib/moov/wallet_transactions.rb +8 -8
  163. data/lib/moov/wallets.rb +16 -16
  164. data/lib/moov/webhooks.rb +32 -32
  165. metadata +32 -14
  166. data/lib/moov/models/components/authorizeduser.rb +0 -36
  167. data/lib/moov/models/components/authorizeduser.rbi +0 -15
  168. data/lib/moov/models/components/createauthorizeduser.rb +0 -40
  169. data/lib/moov/models/components/createauthorizeduser.rbi +0 -17
  170. data/lib/moov/models/components/createauthorizedusererror.rb +0 -40
  171. data/lib/moov/models/components/createauthorizedusererror.rbi +0 -17
  172. data/lib/moov/models/components/createauthorizeduserupdate.rb +0 -40
  173. data/lib/moov/models/components/createauthorizeduserupdate.rbi +0 -17
  174. data/lib/moov/models/components/paymentlinkpaymentdetails_amounttype.rb +0 -19
  175. data/lib/moov/models/components/paymentlinkpaymentdetails_amounttype.rbi +0 -11
  176. data/lib/moov/models/components/paymentlinkpaymentdetailsupdate_amounttype.rb +0 -19
  177. data/lib/moov/models/components/paymentlinkpaymentdetailsupdate_amounttype.rbi +0 -11
@@ -0,0 +1,36 @@
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 AmountDetailsValidationError
12
+ extend T::Sig
13
+ include Crystalline::MetadataFields
14
+
15
+
16
+ field :tax, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('tax') } }
17
+
18
+ field :surcharge, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('surcharge') } }
19
+
20
+ sig { params(tax: T.nilable(::String), surcharge: T.nilable(::String)).void }
21
+ def initialize(tax: nil, surcharge: nil)
22
+ @tax = tax
23
+ @surcharge = surcharge
24
+ end
25
+
26
+ sig { params(other: T.untyped).returns(T::Boolean) }
27
+ def ==(other)
28
+ return false unless other.is_a? self.class
29
+ return false unless @tax == other.tax
30
+ return false unless @surcharge == other.surcharge
31
+ true
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,15 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+
5
+ class Moov::Models::Components::AmountDetailsValidationError
6
+ extend ::Crystalline::MetadataFields::ClassMethods
7
+ end
8
+
9
+
10
+ class Moov::Models::Components::AmountDetailsValidationError
11
+ def tax(); end
12
+ def tax=(str_); end
13
+ def surcharge(); end
14
+ def surcharge=(str_); end
15
+ end
@@ -19,11 +19,14 @@ module Moov
19
19
 
20
20
  field :amount, Models::Components::Amount, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('amount'), required: true } }
21
21
 
22
- sig { params(refund_id: ::String, created_on: ::DateTime, amount: Models::Components::Amount).void }
23
- def initialize(refund_id:, created_on:, amount:)
22
+ field :amount_details, Crystalline::Nilable.new(Models::Components::RefundAmountDetails), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('amountDetails') } }
23
+
24
+ sig { params(refund_id: ::String, created_on: ::DateTime, amount: Models::Components::Amount, amount_details: T.nilable(Models::Components::RefundAmountDetails)).void }
25
+ def initialize(refund_id:, created_on:, amount:, amount_details: nil)
24
26
  @refund_id = refund_id
25
27
  @created_on = created_on
26
28
  @amount = amount
29
+ @amount_details = amount_details
27
30
  end
28
31
 
29
32
  sig { params(other: T.untyped).returns(T::Boolean) }
@@ -32,6 +35,7 @@ module Moov
32
35
  return false unless @refund_id == other.refund_id
33
36
  return false unless @created_on == other.created_on
34
37
  return false unless @amount == other.amount
38
+ return false unless @amount_details == other.amount_details
35
39
  true
36
40
  end
37
41
  end
@@ -14,4 +14,6 @@ class Moov::Models::Components::AsyncCreatedRefund
14
14
  def created_on=(str_); end
15
15
  def amount(); end
16
16
  def amount=(str_); end
17
+ def amount_details(); end
18
+ def amount_details=(str_); end
17
19
  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 BillingAddress
12
+ extend T::Sig
13
+ include Crystalline::MetadataFields
14
+
15
+
16
+ field :address_line1, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('addressLine1') } }
17
+
18
+ field :address_line2, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('addressLine2') } }
19
+
20
+ field :city, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('city') } }
21
+
22
+ field :state_or_province, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('stateOrProvince') } }
23
+
24
+ field :postal_code, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('postalCode') } }
25
+
26
+ field :country, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('country') } }
27
+
28
+ sig { params(address_line1: T.nilable(::String), address_line2: T.nilable(::String), city: T.nilable(::String), state_or_province: T.nilable(::String), postal_code: T.nilable(::String), country: T.nilable(::String)).void }
29
+ def initialize(address_line1: nil, address_line2: nil, city: nil, state_or_province: nil, postal_code: nil, country: nil)
30
+ @address_line1 = address_line1
31
+ @address_line2 = address_line2
32
+ @city = city
33
+ @state_or_province = state_or_province
34
+ @postal_code = postal_code
35
+ @country = country
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 @address_line1 == other.address_line1
42
+ return false unless @address_line2 == other.address_line2
43
+ return false unless @city == other.city
44
+ return false unless @state_or_province == other.state_or_province
45
+ return false unless @postal_code == other.postal_code
46
+ return false unless @country == other.country
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::BillingAddress
6
+ extend ::Crystalline::MetadataFields::ClassMethods
7
+ end
8
+
9
+
10
+ class Moov::Models::Components::BillingAddress
11
+ def address_line1(); end
12
+ def address_line1=(str_); end
13
+ def address_line2(); end
14
+ def address_line2=(str_); end
15
+ def city(); end
16
+ def city=(str_); end
17
+ def state_or_province(); end
18
+ def state_or_province=(str_); end
19
+ def postal_code(); end
20
+ def postal_code=(str_); end
21
+ def country(); end
22
+ def country=(str_); end
23
+ end
@@ -14,7 +14,13 @@ module Moov
14
14
 
15
15
  # Moov account capabilities.
16
16
  #
17
- # The `production-app`, `platform.production-app`, and / or `platform.wallet-transfers` capabilities might appear in your list. These are read-only capabilities that Moov requests and uses for account verification purposes. These capabilities remains active with your account and require no additional action.
17
+ # **Deprecated capabilities**
18
+ #
19
+ # The `send-funds`, `collect-funds`, and `wallet` capability IDs are deprecated. Request granular capabilities instead (for example, `send-funds.ach`, `collect-funds.card-payments`, or `wallet.balance`). Deprecated values will be removed in a future API version.
20
+ #
21
+ # Read our [capabilities reference](https://docs.moov.io/guides/accounts/capabilities/reference/) to choose the right capabilities for your integration.
22
+ #
23
+ # The `production-app`, `platform.production-app`, and / or `platform.wallet-transfers` capabilities might appear in the list for your Partner account. These are read-only capabilities that Moov requests. These capabilities remain active with your account and require no additional action.
18
24
  field :capability, Models::Components::CapabilityID, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('capability'), required: true, 'decoder': ::Moov::Utils.enum_from_string(Models::Components::CapabilityID, false) } }
19
25
 
20
26
  field :account_id, ::String, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('accountID'), required: true } }
@@ -9,7 +9,13 @@ module Moov
9
9
  module Components
10
10
  # CapabilityID - Moov account capabilities.
11
11
  #
12
- # The `production-app`, `platform.production-app`, and / or `platform.wallet-transfers` capabilities might appear in your list. These are read-only capabilities that Moov requests and uses for account verification purposes. These capabilities remains active with your account and require no additional action.
12
+ # **Deprecated capabilities**
13
+ #
14
+ # The `send-funds`, `collect-funds`, and `wallet` capability IDs are deprecated. Request granular capabilities instead (for example, `send-funds.ach`, `collect-funds.card-payments`, or `wallet.balance`). Deprecated values will be removed in a future API version.
15
+ #
16
+ # Read our [capabilities reference](https://docs.moov.io/guides/accounts/capabilities/reference/) to choose the right capabilities for your integration.
17
+ #
18
+ # The `production-app`, `platform.production-app`, and / or `platform.wallet-transfers` capabilities might appear in the list for your Partner account. These are read-only capabilities that Moov requests. These capabilities remain active with your account and require no additional action.
13
19
  class CapabilityID < T::Enum
14
20
  enums do
15
21
  TRANSFERS = new('transfers')
@@ -23,15 +23,18 @@ module Moov
23
23
 
24
24
  field :amount, Models::Components::Amount, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('amount'), required: true } }
25
25
 
26
+ field :amount_details, Crystalline::Nilable.new(Models::Components::RefundAmountDetails), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('amountDetails') } }
27
+
26
28
  field :card_details, Crystalline::Nilable.new(Models::Components::RefundCardDetails), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('cardDetails') } }
27
29
 
28
- sig { params(refund_id: ::String, created_on: ::DateTime, updated_on: ::DateTime, status: Models::Components::RefundStatus, amount: Models::Components::Amount, card_details: T.nilable(Models::Components::RefundCardDetails)).void }
29
- def initialize(refund_id:, created_on:, updated_on:, status:, amount:, card_details: nil)
30
+ sig { params(refund_id: ::String, created_on: ::DateTime, updated_on: ::DateTime, status: Models::Components::RefundStatus, amount: Models::Components::Amount, amount_details: T.nilable(Models::Components::RefundAmountDetails), card_details: T.nilable(Models::Components::RefundCardDetails)).void }
31
+ def initialize(refund_id:, created_on:, updated_on:, status:, amount:, amount_details: nil, card_details: nil)
30
32
  @refund_id = refund_id
31
33
  @created_on = created_on
32
34
  @updated_on = updated_on
33
35
  @status = status
34
36
  @amount = amount
37
+ @amount_details = amount_details
35
38
  @card_details = card_details
36
39
  end
37
40
 
@@ -43,6 +46,7 @@ module Moov
43
46
  return false unless @updated_on == other.updated_on
44
47
  return false unless @status == other.status
45
48
  return false unless @amount == other.amount
49
+ return false unless @amount_details == other.amount_details
46
50
  return false unless @card_details == other.card_details
47
51
  true
48
52
  end
@@ -18,6 +18,8 @@ class Moov::Models::Components::CardAcquiringRefund
18
18
  def status=(str_); end
19
19
  def amount(); end
20
20
  def amount=(str_); end
21
+ def amount_details(); end
22
+ def amount_details=(str_); end
21
23
  def card_details(); end
22
24
  def card_details=(str_); end
23
25
  end
@@ -27,7 +27,11 @@ module Moov
27
27
  field :customer_support, Crystalline::Nilable.new(Models::Components::CustomerSupport), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('customerSupport') } }
28
28
  # User provided settings to manage an account.
29
29
  field :settings, Crystalline::Nilable.new(Models::Components::Settings), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('settings') } }
30
-
30
+ # Capabilities to request when the account is created. Request granular capability IDs that match your use case.
31
+ #
32
+ # Read our [capabilities reference](https://docs.moov.io/guides/accounts/capabilities/reference/) to choose the right capabilities for your integration.
33
+ #
34
+ # The `send-funds`, `collect-funds`, and `wallet` capability IDs are deprecated. Use granular values such as `send-funds.ach`, `collect-funds.card-payments`, or `wallet.balance` instead.
31
35
  field :capabilities, Crystalline::Nilable.new(Crystalline::Array.new(Models::Components::CapabilityID)), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('capabilities') } }
32
36
  # The operating mode for an account.
33
37
  field :mode, Crystalline::Nilable.new(Models::Components::Mode), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('mode'), 'decoder': ::Moov::Utils.enum_from_string(Models::Components::Mode, true) } }
@@ -23,16 +23,16 @@ module Moov
23
23
 
24
24
  field :due_date, Crystalline::Nilable.new(::DateTime), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('dueDate'), 'decoder': ::Moov::Utils.datetime_from_iso_format(true) } }
25
25
 
26
- field :tax_amount, Crystalline::Nilable.new(Models::Components::AmountDecimal), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('taxAmount') } }
26
+ field :amount_details, Crystalline::Nilable.new(Models::Components::AmountDetails), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('amountDetails') } }
27
27
 
28
- sig { params(customer_account_id: ::String, line_items: Models::Components::CreateInvoiceLineItems, description: T.nilable(::String), invoice_date: T.nilable(::DateTime), due_date: T.nilable(::DateTime), tax_amount: T.nilable(Models::Components::AmountDecimal)).void }
29
- def initialize(customer_account_id:, line_items:, description: nil, invoice_date: nil, due_date: nil, tax_amount: nil)
28
+ sig { params(customer_account_id: ::String, line_items: Models::Components::CreateInvoiceLineItems, description: T.nilable(::String), invoice_date: T.nilable(::DateTime), due_date: T.nilable(::DateTime), amount_details: T.nilable(Models::Components::AmountDetails)).void }
29
+ def initialize(customer_account_id:, line_items:, description: nil, invoice_date: nil, due_date: nil, amount_details: nil)
30
30
  @customer_account_id = customer_account_id
31
31
  @line_items = line_items
32
32
  @description = description
33
33
  @invoice_date = invoice_date
34
34
  @due_date = due_date
35
- @tax_amount = tax_amount
35
+ @amount_details = amount_details
36
36
  end
37
37
 
38
38
  sig { params(other: T.untyped).returns(T::Boolean) }
@@ -43,7 +43,7 @@ module Moov
43
43
  return false unless @description == other.description
44
44
  return false unless @invoice_date == other.invoice_date
45
45
  return false unless @due_date == other.due_date
46
- return false unless @tax_amount == other.tax_amount
46
+ return false unless @amount_details == other.amount_details
47
47
  true
48
48
  end
49
49
  end
@@ -18,6 +18,6 @@ class Moov::Models::Components::CreateInvoice
18
18
  def invoice_date=(str_); end
19
19
  def due_date(); end
20
20
  def due_date=(str_); end
21
- def tax_amount(); end
22
- def tax_amount=(str_); end
21
+ def amount_details(); end
22
+ def amount_details=(str_); end
23
23
  end
@@ -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
@@ -14,16 +14,20 @@ module Moov
14
14
 
15
15
  # The amount of tax applied to the payment link.
16
16
  field :tax, Crystalline::Nilable.new(Models::Components::AmountDecimal), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('tax') } }
17
+ # The amount of surcharge applied to the payment link.
18
+ field :surcharge, Crystalline::Nilable.new(Models::Components::AmountDecimal), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('surcharge') } }
17
19
 
18
- sig { params(tax: T.nilable(Models::Components::AmountDecimal)).void }
19
- def initialize(tax: nil)
20
+ sig { params(tax: T.nilable(Models::Components::AmountDecimal), surcharge: T.nilable(Models::Components::AmountDecimal)).void }
21
+ def initialize(tax: nil, surcharge: nil)
20
22
  @tax = tax
23
+ @surcharge = surcharge
21
24
  end
22
25
 
23
26
  sig { params(other: T.untyped).returns(T::Boolean) }
24
27
  def ==(other)
25
28
  return false unless other.is_a? self.class
26
29
  return false unless @tax == other.tax
30
+ return false unless @surcharge == other.surcharge
27
31
  true
28
32
  end
29
33
  end
@@ -10,4 +10,6 @@ end
10
10
  class Moov::Models::Components::CreatePaymentLinkAmountDetails
11
11
  def tax(); end
12
12
  def tax=(str_); end
13
+ def surcharge(); end
14
+ def surcharge=(str_); end
13
15
  end
@@ -15,15 +15,19 @@ module Moov
15
15
 
16
16
  field :tax, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('tax') } }
17
17
 
18
- sig { params(tax: T.nilable(::String)).void }
19
- def initialize(tax: nil)
18
+ field :surcharge, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('surcharge') } }
19
+
20
+ sig { params(tax: T.nilable(::String), surcharge: T.nilable(::String)).void }
21
+ def initialize(tax: nil, surcharge: nil)
20
22
  @tax = tax
23
+ @surcharge = surcharge
21
24
  end
22
25
 
23
26
  sig { params(other: T.untyped).returns(T::Boolean) }
24
27
  def ==(other)
25
28
  return false unless other.is_a? self.class
26
29
  return false unless @tax == other.tax
30
+ return false unless @surcharge == other.surcharge
27
31
  true
28
32
  end
29
33
  end
@@ -10,4 +10,6 @@ end
10
10
  class Moov::Models::Components::CreatePaymentLinkAmountDetailsValidationError
11
11
  def tax(); end
12
12
  def tax=(str_); end
13
+ def surcharge(); end
14
+ def surcharge=(str_); end
13
15
  end
@@ -16,16 +16,20 @@ module Moov
16
16
 
17
17
  # Amount to refund in cents. If null, the original transfer's full amount will be refunded.
18
18
  field :amount, Crystalline::Nilable.new(::Integer), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('amount') } }
19
+ # Breakdown of the refunded amount.
20
+ field :amount_details, Crystalline::Nilable.new(Models::Components::RefundAmountDetails), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('amountDetails') } }
19
21
 
20
- sig { params(amount: T.nilable(::Integer)).void }
21
- def initialize(amount: nil)
22
+ sig { params(amount: T.nilable(::Integer), amount_details: T.nilable(Models::Components::RefundAmountDetails)).void }
23
+ def initialize(amount: nil, amount_details: nil)
22
24
  @amount = amount
25
+ @amount_details = amount_details
23
26
  end
24
27
 
25
28
  sig { params(other: T.untyped).returns(T::Boolean) }
26
29
  def ==(other)
27
30
  return false unless other.is_a? self.class
28
31
  return false unless @amount == other.amount
32
+ return false unless @amount_details == other.amount_details
29
33
  true
30
34
  end
31
35
  end
@@ -10,4 +10,6 @@ end
10
10
  class Moov::Models::Components::CreateRefund
11
11
  def amount(); end
12
12
  def amount=(str_); end
13
+ def amount_details(); end
14
+ def amount_details=(str_); end
13
15
  end
@@ -14,16 +14,20 @@ module Moov
14
14
 
15
15
  # Amount to reverse in cents. Partial amounts will automatically trigger a refund instead of a cancellation.
16
16
  field :amount, ::Integer, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('amount'), required: true } }
17
+ # Breakdown of the reversed amount.
18
+ field :amount_details, Crystalline::Nilable.new(Models::Components::ReversalAmountDetails), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('amountDetails') } }
17
19
 
18
- sig { params(amount: ::Integer).void }
19
- def initialize(amount:)
20
+ sig { params(amount: ::Integer, amount_details: T.nilable(Models::Components::ReversalAmountDetails)).void }
21
+ def initialize(amount:, amount_details: nil)
20
22
  @amount = amount
23
+ @amount_details = amount_details
21
24
  end
22
25
 
23
26
  sig { params(other: T.untyped).returns(T::Boolean) }
24
27
  def ==(other)
25
28
  return false unless other.is_a? self.class
26
29
  return false unless @amount == other.amount
30
+ return false unless @amount_details == other.amount_details
27
31
  true
28
32
  end
29
33
  end
@@ -10,4 +10,6 @@ end
10
10
  class Moov::Models::Components::CreateReversal
11
11
  def amount(); end
12
12
  def amount=(str_); end
13
+ def amount_details(); end
14
+ def amount_details=(str_); end
13
15
  end
@@ -16,11 +16,14 @@ module Moov
16
16
  field :tip, Crystalline::Nilable.new(Models::Components::AmountDecimal), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('tip') } }
17
17
  # The amount of tax applied to the transfer.
18
18
  field :tax, Crystalline::Nilable.new(Models::Components::AmountDecimal), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('tax') } }
19
+ # The amount of surcharge applied to the transfer.
20
+ field :surcharge, Crystalline::Nilable.new(Models::Components::AmountDecimal), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('surcharge') } }
19
21
 
20
- sig { params(tip: T.nilable(Models::Components::AmountDecimal), tax: T.nilable(Models::Components::AmountDecimal)).void }
21
- def initialize(tip: nil, tax: nil)
22
+ sig { params(tip: T.nilable(Models::Components::AmountDecimal), tax: T.nilable(Models::Components::AmountDecimal), surcharge: T.nilable(Models::Components::AmountDecimal)).void }
23
+ def initialize(tip: nil, tax: nil, surcharge: nil)
22
24
  @tip = tip
23
25
  @tax = tax
26
+ @surcharge = surcharge
24
27
  end
25
28
 
26
29
  sig { params(other: T.untyped).returns(T::Boolean) }
@@ -28,6 +31,7 @@ module Moov
28
31
  return false unless other.is_a? self.class
29
32
  return false unless @tip == other.tip
30
33
  return false unless @tax == other.tax
34
+ return false unless @surcharge == other.surcharge
31
35
  true
32
36
  end
33
37
  end
@@ -12,4 +12,6 @@ class Moov::Models::Components::CreateTransferAmountDetails
12
12
  def tip=(str_); end
13
13
  def tax(); end
14
14
  def tax=(str_); end
15
+ def surcharge(); end
16
+ def surcharge=(str_); end
15
17
  end
@@ -17,10 +17,13 @@ module Moov
17
17
 
18
18
  field :tax, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('tax') } }
19
19
 
20
- sig { params(tip: T.nilable(::String), tax: T.nilable(::String)).void }
21
- def initialize(tip: nil, tax: nil)
20
+ field :surcharge, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('surcharge') } }
21
+
22
+ sig { params(tip: T.nilable(::String), tax: T.nilable(::String), surcharge: T.nilable(::String)).void }
23
+ def initialize(tip: nil, tax: nil, surcharge: nil)
22
24
  @tip = tip
23
25
  @tax = tax
26
+ @surcharge = surcharge
24
27
  end
25
28
 
26
29
  sig { params(other: T.untyped).returns(T::Boolean) }
@@ -28,6 +31,7 @@ module Moov
28
31
  return false unless other.is_a? self.class
29
32
  return false unless @tip == other.tip
30
33
  return false unless @tax == other.tax
34
+ return false unless @surcharge == other.surcharge
31
35
  true
32
36
  end
33
37
  end
@@ -12,4 +12,6 @@ class Moov::Models::Components::CreateTransferAmountDetailsValidationError
12
12
  def tip=(str_); end
13
13
  def tax(); end
14
14
  def tax=(str_); end
15
+ def surcharge(); end
16
+ def surcharge=(str_); end
15
17
  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