moov_ruby 0.0.0.pre.dev.13 → 0.0.0.pre.dev.15

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 (139) hide show
  1. checksums.yaml +4 -4
  2. data/lib/moov/client.rb +2 -1
  3. data/lib/moov/google_pay.rb +3 -1
  4. data/lib/moov/models/components/amountdecimalrange.rb +36 -0
  5. data/lib/moov/models/components/amountdecimalrange.rbi +15 -0
  6. data/lib/moov/models/components/amountdecimalrangeupdate.rb +36 -0
  7. data/lib/moov/models/components/amountdecimalrangeupdate.rbi +15 -0
  8. data/lib/moov/models/components/asynccreatedrefund.rb +6 -2
  9. data/lib/moov/models/components/asynccreatedrefund.rbi +2 -0
  10. data/lib/moov/models/components/cardacquiringrefund.rb +6 -2
  11. data/lib/moov/models/components/cardacquiringrefund.rbi +2 -0
  12. data/lib/moov/models/components/cardfundingsource.rb +21 -0
  13. data/lib/moov/models/components/cardfundingsource.rbi +11 -0
  14. data/lib/moov/models/components/cardnetwork.rb +24 -0
  15. data/lib/moov/models/components/cardnetwork.rbi +11 -0
  16. data/lib/moov/models/components/createdtransfer.rb +7 -3
  17. data/lib/moov/models/components/createdtransfer.rbi +2 -0
  18. data/lib/moov/models/components/createpaymentlink.rb +17 -8
  19. data/lib/moov/models/components/createpaymentlink.rbi +4 -2
  20. data/lib/moov/models/components/createpaymentlinkamountdetails.rb +32 -0
  21. data/lib/moov/models/components/createpaymentlinkamountdetails.rbi +13 -0
  22. data/lib/moov/models/components/createpaymentlinkamountdetailsvalidationerror.rb +32 -0
  23. data/lib/moov/models/components/createpaymentlinkamountdetailsvalidationerror.rbi +13 -0
  24. data/lib/moov/models/components/createrefund.rb +6 -2
  25. data/lib/moov/models/components/createrefund.rbi +2 -0
  26. data/lib/moov/models/components/createtippresets.rb +42 -0
  27. data/lib/moov/models/components/createtippresets.rbi +17 -0
  28. data/lib/moov/models/components/createtransfer.rb +7 -3
  29. data/lib/moov/models/components/createtransfer.rbi +2 -0
  30. data/lib/moov/models/components/createtransferamountdetails.rb +36 -0
  31. data/lib/moov/models/components/createtransferamountdetails.rbi +15 -0
  32. data/lib/moov/models/components/createtransferamountdetailsvalidationerror.rb +36 -0
  33. data/lib/moov/models/components/createtransferamountdetailsvalidationerror.rbi +15 -0
  34. data/lib/moov/models/components/createtransferconfig.rb +32 -0
  35. data/lib/moov/models/components/createtransferconfig.rbi +13 -0
  36. data/lib/moov/models/components/fileuploadmetadata.rb +36 -0
  37. data/lib/moov/models/components/fileuploadmetadata.rbi +15 -0
  38. data/lib/moov/models/components/fileuploadrequestmultipart.rb +4 -6
  39. data/lib/moov/models/components/googlepayassurancedetails.rb +36 -0
  40. data/lib/moov/models/components/googlepayassurancedetails.rbi +15 -0
  41. data/lib/moov/models/components/googlepaybillingaddress.rb +71 -0
  42. data/lib/moov/models/components/googlepaybillingaddress.rbi +31 -0
  43. data/lib/moov/models/components/googlepaycardinfo.rb +52 -0
  44. data/lib/moov/models/components/googlepaycardinfo.rbi +21 -0
  45. data/lib/moov/models/components/googlepaypaymentmethoddata.rb +48 -0
  46. data/lib/moov/models/components/googlepaypaymentmethoddata.rbi +19 -0
  47. data/lib/moov/models/components/{linkedgooglepaypaymentmethod_paymentmethodtype.rb → googlepaypaymentmethoddata_type.rb} +3 -3
  48. data/lib/moov/models/components/googlepaypaymentmethoddata_type.rbi +11 -0
  49. data/lib/moov/models/components/googlepaytokenizationdata.rb +38 -0
  50. data/lib/moov/models/components/googlepaytokenizationdata.rbi +15 -0
  51. data/lib/moov/models/components/googlepaytokenizationdata_type.rb +18 -0
  52. data/lib/moov/models/components/googlepaytokenizationdata_type.rbi +11 -0
  53. data/lib/moov/models/components/linkedgooglepaypaymentmethod.rb +3 -3
  54. data/lib/moov/models/components/linkgooglepay.rb +17 -12
  55. data/lib/moov/models/components/linkgooglepay.rbi +4 -2
  56. data/lib/moov/models/components/paymentlink.rb +16 -7
  57. data/lib/moov/models/components/paymentlink.rbi +4 -2
  58. data/lib/moov/models/components/paymentlinkamountdetails.rb +32 -0
  59. data/lib/moov/models/components/paymentlinkamountdetails.rbi +13 -0
  60. data/lib/moov/models/components/paymentlinkcustomeroptions.rb +6 -2
  61. data/lib/moov/models/components/paymentlinkcustomeroptions.rbi +2 -0
  62. data/lib/moov/models/components/paymentlinkpaymentdetails.rb +14 -2
  63. data/lib/moov/models/components/paymentlinkpaymentdetails.rbi +6 -0
  64. data/lib/moov/models/components/paymentlinkpaymentdetails_amounttype.rb +19 -0
  65. data/lib/moov/models/components/paymentlinkpaymentdetails_amounttype.rbi +11 -0
  66. data/lib/moov/models/components/paymentlinkpaymentdetailsupdate.rb +14 -2
  67. data/lib/moov/models/components/paymentlinkpaymentdetailsupdate.rbi +6 -0
  68. data/lib/moov/models/components/paymentlinkpaymentdetailsupdate_amounttype.rb +19 -0
  69. data/lib/moov/models/components/paymentlinkpaymentdetailsupdate_amounttype.rbi +11 -0
  70. data/lib/moov/models/components/puttippresets.rb +42 -0
  71. data/lib/moov/models/components/puttippresets.rbi +17 -0
  72. data/lib/moov/models/components/puttransferconfig.rb +32 -0
  73. data/lib/moov/models/components/puttransferconfig.rbi +13 -0
  74. data/lib/moov/models/components/refundamountdetails.rb +32 -0
  75. data/lib/moov/models/components/refundamountdetails.rbi +13 -0
  76. data/lib/moov/models/components/refundamountdetailsvalidationerror.rb +32 -0
  77. data/lib/moov/models/components/refundamountdetailsvalidationerror.rbi +13 -0
  78. data/lib/moov/models/components/tipcalculationbasis.rb +21 -0
  79. data/lib/moov/models/components/tipcalculationbasis.rbi +11 -0
  80. data/lib/moov/models/components/tippresets.rb +42 -0
  81. data/lib/moov/models/components/tippresets.rbi +17 -0
  82. data/lib/moov/models/components/transfer.rb +7 -3
  83. data/lib/moov/models/components/transfer.rbi +2 -0
  84. data/lib/moov/models/components/transferamountdetails.rb +36 -0
  85. data/lib/moov/models/components/transferamountdetails.rbi +15 -0
  86. data/lib/moov/models/components/transferconfig.rb +32 -0
  87. data/lib/moov/models/components/transferconfig.rbi +13 -0
  88. data/lib/moov/models/components/transferdestination.rb +6 -2
  89. data/lib/moov/models/components/transferdestination.rbi +2 -0
  90. data/lib/moov/models/components/transfersource.rb +6 -2
  91. data/lib/moov/models/components/transfersource.rbi +2 -0
  92. data/lib/moov/models/components/updatepaymentlink.rb +6 -2
  93. data/lib/moov/models/components/updatepaymentlink.rbi +2 -0
  94. data/lib/moov/models/components/updatepaymentlinkamountdetails.rb +32 -0
  95. data/lib/moov/models/components/updatepaymentlinkamountdetails.rbi +13 -0
  96. data/lib/moov/models/components/updatepaymentlinkamountdetailsvalidationerror.rb +32 -0
  97. data/lib/moov/models/components/updatepaymentlinkamountdetailsvalidationerror.rbi +13 -0
  98. data/lib/moov/models/components/webhookdatabankaccountcreated.rb +6 -2
  99. data/lib/moov/models/components/webhookdatabankaccountcreated.rbi +2 -0
  100. data/lib/moov/models/components.rb +31 -3
  101. data/lib/moov/models/errors/cardacquiringrefund_error.rb +6 -2
  102. data/lib/moov/models/errors/cardacquiringrefund_error.rbi +2 -0
  103. data/lib/moov/models/errors/createpaymentlinkerror.rb +6 -2
  104. data/lib/moov/models/errors/createpaymentlinkerror.rbi +2 -0
  105. data/lib/moov/models/errors/linkgooglepayerror.rb +10 -6
  106. data/lib/moov/models/errors/linkgooglepayerror.rbi +4 -2
  107. data/lib/moov/models/errors/refundvalidationerror.rb +6 -2
  108. data/lib/moov/models/errors/refundvalidationerror.rbi +2 -0
  109. data/lib/moov/models/errors/transfer_error.rb +7 -3
  110. data/lib/moov/models/errors/transfer_error.rbi +2 -0
  111. data/lib/moov/models/errors/transferconfigvalidationerror.rb +44 -0
  112. data/lib/moov/models/errors/transferconfigvalidationerror.rbi +19 -0
  113. data/lib/moov/models/errors/transfervalidationerror.rb +6 -2
  114. data/lib/moov/models/errors/transfervalidationerror.rbi +2 -0
  115. data/lib/moov/models/errors/updatepaymentlinkerror.rb +6 -2
  116. data/lib/moov/models/errors/updatepaymentlinkerror.rbi +2 -0
  117. data/lib/moov/models/errors.rb +1 -0
  118. data/lib/moov/models/operations/createtransferconfig_request.rb +36 -0
  119. data/lib/moov/models/operations/createtransferconfig_request.rbi +15 -0
  120. data/lib/moov/models/operations/createtransferconfig_response.rb +48 -0
  121. data/lib/moov/models/operations/createtransferconfig_response.rbi +21 -0
  122. data/lib/moov/models/operations/gettransferconfig_request.rb +32 -0
  123. data/lib/moov/models/operations/gettransferconfig_request.rbi +13 -0
  124. data/lib/moov/models/operations/gettransferconfig_response.rb +48 -0
  125. data/lib/moov/models/operations/gettransferconfig_response.rbi +21 -0
  126. data/lib/moov/models/operations/updatetransferconfig_request.rb +36 -0
  127. data/lib/moov/models/operations/updatetransferconfig_request.rbi +15 -0
  128. data/lib/moov/models/operations/updatetransferconfig_response.rb +48 -0
  129. data/lib/moov/models/operations/updatetransferconfig_response.rbi +21 -0
  130. data/lib/moov/models/operations.rb +6 -0
  131. data/lib/moov/sdkconfiguration.rb +3 -3
  132. data/lib/moov/transfer_config.rb +486 -0
  133. data/lib/moov_ruby.rb +1 -0
  134. metadata +79 -8
  135. data/lib/moov/models/components/googlepayintermediatesigningkey.rb +0 -36
  136. data/lib/moov/models/components/googlepayintermediatesigningkey.rbi +0 -15
  137. data/lib/moov/models/components/googlepaytoken.rb +0 -47
  138. data/lib/moov/models/components/googlepaytoken.rbi +0 -19
  139. data/lib/moov/models/components/linkedgooglepaypaymentmethod_paymentmethodtype.rbi +0 -11
@@ -0,0 +1,15 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+
5
+ class Moov::Models::Components::GooglePayTokenizationData
6
+ extend ::Crystalline::MetadataFields::ClassMethods
7
+ end
8
+
9
+
10
+ class Moov::Models::Components::GooglePayTokenizationData
11
+ def type(); end
12
+ def type=(str_); end
13
+ def token(); end
14
+ def token=(str_); end
15
+ end
@@ -0,0 +1,18 @@
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
+ # GooglePayTokenizationDataType - The tokenization type. Always `PAYMENT_GATEWAY`.
11
+ class GooglePayTokenizationDataType < T::Enum
12
+ enums do
13
+ PAYMENT_GATEWAY = new('PAYMENT_GATEWAY')
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,11 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+
5
+ class Moov::Models::Components::GooglePayTokenizationDataType
6
+ extend ::Crystalline::MetadataFields::ClassMethods
7
+ end
8
+
9
+
10
+ class Moov::Models::Components::GooglePayTokenizationDataType
11
+ end
@@ -14,12 +14,12 @@ module Moov
14
14
 
15
15
  # The new payment method's ID.
16
16
  field :payment_method_id, ::String, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('paymentMethodID'), required: true } }
17
-
18
- field :payment_method_type, Models::Components::LinkedGooglePayPaymentMethodPaymentMethodType, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('paymentMethodType'), required: true, 'decoder': ::Moov::Utils.enum_from_string(Models::Components::LinkedGooglePayPaymentMethodPaymentMethodType, false) } }
17
+ # The payment method type that represents a payment rail and directionality
18
+ field :payment_method_type, Models::Components::PaymentMethodType, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('paymentMethodType'), required: true, 'decoder': ::Moov::Utils.enum_from_string(Models::Components::PaymentMethodType, false) } }
19
19
  # Describes a Google Pay token on a Moov account.
20
20
  field :google_pay, Models::Components::GooglePayResponse, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('googlePay'), required: true } }
21
21
 
22
- sig { params(payment_method_id: ::String, payment_method_type: Models::Components::LinkedGooglePayPaymentMethodPaymentMethodType, google_pay: Models::Components::GooglePayResponse).void }
22
+ sig { params(payment_method_id: ::String, payment_method_type: Models::Components::PaymentMethodType, google_pay: Models::Components::GooglePayResponse).void }
23
23
  def initialize(payment_method_id:, payment_method_type:, google_pay:)
24
24
  @payment_method_id = payment_method_id
25
25
  @payment_method_type = payment_method_type
@@ -7,29 +7,34 @@
7
7
  module Moov
8
8
  module Models
9
9
  module Components
10
- # The encrypted Google Pay payment token (ECv2 format).
10
+ # Links a Google Pay token to a Moov account.
11
11
  #
12
- # Refer to [Google's documentation](https://developers.google.com/pay/api/web/guides/resources/payment-data-cryptography#payment-method-token-structure)
13
- # for more information.
12
+ # The `paymentMethodData` field should contain the `paymentMethodData` property from the
13
+ # [PaymentData](https://developers.google.com/pay/api/web/reference/response-objects#PaymentData) response
14
+ # returned by Google Pay's client SDK. Pass it through unmodified.
14
15
  class LinkGooglePay
15
16
  extend T::Sig
16
17
  include Crystalline::MetadataFields
17
18
 
18
- # Contains the encrypted payment token as returned from Google Pay.
19
- #
20
- # Refer to [Google's documentation](https://developers.google.com/pay/api/web/guides/resources/payment-data-cryptography#payment-method-token-structure)
21
- # for more information.
22
- field :token, Models::Components::GooglePayToken, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('token'), required: true } }
19
+ # The merchant accountID this token was minted for. Must match the `gatewayMerchantId`
20
+ # value passed to Google Pay when constructing the PaymentDataRequest. card-gateway validates
21
+ # that the decrypted `gatewayMerchantId` matches this value.
22
+ field :merchant_account_id, ::String, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('merchantAccountID'), required: true } }
23
+ # The `paymentMethodData` object from Google Pay's
24
+ # [PaymentData](https://developers.google.com/pay/api/web/reference/response-objects#PaymentData) response.
25
+ field :payment_method_data, Models::Components::GooglePayPaymentMethodData, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('paymentMethodData'), required: true } }
23
26
 
24
- sig { params(token: Models::Components::GooglePayToken).void }
25
- def initialize(token:)
26
- @token = token
27
+ sig { params(merchant_account_id: ::String, payment_method_data: Models::Components::GooglePayPaymentMethodData).void }
28
+ def initialize(merchant_account_id:, payment_method_data:)
29
+ @merchant_account_id = merchant_account_id
30
+ @payment_method_data = payment_method_data
27
31
  end
28
32
 
29
33
  sig { params(other: T.untyped).returns(T::Boolean) }
30
34
  def ==(other)
31
35
  return false unless other.is_a? self.class
32
- return false unless @token == other.token
36
+ return false unless @merchant_account_id == other.merchant_account_id
37
+ return false unless @payment_method_data == other.payment_method_data
33
38
  true
34
39
  end
35
40
  end
@@ -8,6 +8,8 @@ end
8
8
 
9
9
 
10
10
  class Moov::Models::Components::LinkGooglePay
11
- def token(); end
12
- def token=(str_); end
11
+ def merchant_account_id(); end
12
+ def merchant_account_id=(str_); end
13
+ def payment_method_data(); end
14
+ def payment_method_data=(str_); end
13
15
  end
@@ -30,8 +30,6 @@ module Moov
30
30
  field :merchant_payment_method_id, ::String, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('merchantPaymentMethodID'), required: true } }
31
31
  # Link to the payment landing page for this payment link.
32
32
  field :link, ::String, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('link'), required: true } }
33
-
34
- field :amount, Models::Components::Amount, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('amount'), required: true } }
35
33
  # The number of times this payment link has been used.
36
34
  field :uses, ::Integer, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('uses'), required: true } }
37
35
  # Customizable display options for a payment link.
@@ -42,9 +40,16 @@ module Moov
42
40
  field :created_on, ::DateTime, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('createdOn'), required: true, 'decoder': ::Moov::Utils.datetime_from_iso_format(false) } }
43
41
 
44
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.
44
+ #
45
+ # In API versions before `2026.07.00`, this was a required field.
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.
49
+ field :amount, Crystalline::Nilable.new(Models::Components::Amount), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('amount') } }
45
50
  # Optional sales tax amount.
46
51
  field :sales_tax_amount, Crystalline::Nilable.new(Models::Components::Amount), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('salesTaxAmount') } }
47
- # An optional limit on the number of times this payment link can be used.
52
+ # An optional limit on the number of times this payment link can be used.
48
53
  #
49
54
  # **For payouts, `maxUses` is always 1.**
50
55
  field :max_uses, Crystalline::Nilable.new(::Integer), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('maxUses') } }
@@ -62,8 +67,10 @@ module Moov
62
67
 
63
68
  field :disabled_on, Crystalline::Nilable.new(::DateTime), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('disabledOn'), 'decoder': ::Moov::Utils.datetime_from_iso_format(true) } }
64
69
 
65
- 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, amount: Models::Components::Amount, uses: ::Integer, display: Models::Components::PaymentLinkDisplayOptions, customer: Models::Components::PaymentLinkCustomerOptions, created_on: ::DateTime, updated_on: ::DateTime, sales_tax_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)).void }
66
- def initialize(code:, payment_link_type:, mode:, status:, partner_account_id:, merchant_account_id:, owner_account_id:, merchant_payment_method_id:, link:, amount:, uses:, display:, customer:, created_on:, updated_on:, sales_tax_amount: nil, max_uses: nil, last_used_on: nil, expires_on: nil, payment: nil, payout: nil, line_items: nil, disabled_on: nil)
70
+ field :amount_details, Crystalline::Nilable.new(Models::Components::PaymentLinkAmountDetails), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('amountDetails') } }
71
+
72
+ 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), sales_tax_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 }
73
+ 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, sales_tax_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)
67
74
  @code = code
68
75
  @payment_link_type = payment_link_type
69
76
  @mode = mode
@@ -73,12 +80,12 @@ module Moov
73
80
  @owner_account_id = owner_account_id
74
81
  @merchant_payment_method_id = merchant_payment_method_id
75
82
  @link = link
76
- @amount = amount
77
83
  @uses = uses
78
84
  @display = display
79
85
  @customer = customer
80
86
  @created_on = created_on
81
87
  @updated_on = updated_on
88
+ @amount = amount
82
89
  @sales_tax_amount = sales_tax_amount
83
90
  @max_uses = max_uses
84
91
  @last_used_on = last_used_on
@@ -87,6 +94,7 @@ module Moov
87
94
  @payout = payout
88
95
  @line_items = line_items
89
96
  @disabled_on = disabled_on
97
+ @amount_details = amount_details
90
98
  end
91
99
 
92
100
  sig { params(other: T.untyped).returns(T::Boolean) }
@@ -101,12 +109,12 @@ module Moov
101
109
  return false unless @owner_account_id == other.owner_account_id
102
110
  return false unless @merchant_payment_method_id == other.merchant_payment_method_id
103
111
  return false unless @link == other.link
104
- return false unless @amount == other.amount
105
112
  return false unless @uses == other.uses
106
113
  return false unless @display == other.display
107
114
  return false unless @customer == other.customer
108
115
  return false unless @created_on == other.created_on
109
116
  return false unless @updated_on == other.updated_on
117
+ return false unless @amount == other.amount
110
118
  return false unless @sales_tax_amount == other.sales_tax_amount
111
119
  return false unless @max_uses == other.max_uses
112
120
  return false unless @last_used_on == other.last_used_on
@@ -115,6 +123,7 @@ module Moov
115
123
  return false unless @payout == other.payout
116
124
  return false unless @line_items == other.line_items
117
125
  return false unless @disabled_on == other.disabled_on
126
+ return false unless @amount_details == other.amount_details
118
127
  true
119
128
  end
120
129
  end
@@ -26,8 +26,6 @@ class Moov::Models::Components::PaymentLink
26
26
  def merchant_payment_method_id=(str_); end
27
27
  def link(); end
28
28
  def link=(str_); end
29
- def amount(); end
30
- def amount=(str_); end
31
29
  def uses(); end
32
30
  def uses=(str_); end
33
31
  def display(); end
@@ -38,6 +36,8 @@ class Moov::Models::Components::PaymentLink
38
36
  def created_on=(str_); end
39
37
  def updated_on(); end
40
38
  def updated_on=(str_); end
39
+ def amount(); end
40
+ def amount=(str_); end
41
41
  def sales_tax_amount(); end
42
42
  def sales_tax_amount=(str_); end
43
43
  def max_uses(); end
@@ -54,4 +54,6 @@ class Moov::Models::Components::PaymentLink
54
54
  def line_items=(str_); end
55
55
  def disabled_on(); end
56
56
  def disabled_on=(str_); end
57
+ def amount_details(); end
58
+ def amount_details=(str_); end
57
59
  end
@@ -0,0 +1,32 @@
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 PaymentLinkAmountDetails
12
+ extend T::Sig
13
+ include Crystalline::MetadataFields
14
+
15
+ # The amount of surcharge applied to the payment link.
16
+ field :surcharge, Crystalline::Nilable.new(Models::Components::AmountDecimal), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('surcharge') } }
17
+
18
+ sig { params(surcharge: T.nilable(Models::Components::AmountDecimal)).void }
19
+ def initialize(surcharge: nil)
20
+ @surcharge = surcharge
21
+ end
22
+
23
+ sig { params(other: T.untyped).returns(T::Boolean) }
24
+ def ==(other)
25
+ return false unless other.is_a? self.class
26
+ return false unless @surcharge == other.surcharge
27
+ true
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,13 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+
5
+ class Moov::Models::Components::PaymentLinkAmountDetails
6
+ extend ::Crystalline::MetadataFields::ClassMethods
7
+ end
8
+
9
+
10
+ class Moov::Models::Components::PaymentLinkAmountDetails
11
+ def surcharge(); end
12
+ def surcharge=(str_); end
13
+ end
@@ -16,13 +16,16 @@ module Moov
16
16
  field :require_address, Crystalline::Nilable.new(Crystalline::Boolean.new), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('requireAddress') } }
17
17
  # If true, a phone number is required when completing the payment form.
18
18
  field :require_phone, Crystalline::Nilable.new(Crystalline::Boolean.new), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('requirePhone') } }
19
+ # If true, tipping is enabled on the payment form. Defaults to false.
20
+ field :tipping_enabled, Crystalline::Nilable.new(Crystalline::Boolean.new), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('tippingEnabled') } }
19
21
  # Optional free-form metadata for the Moov account that will represent this customer.
20
22
  field :metadata, Crystalline::Nilable.new(Crystalline::Hash.new(Symbol, ::String)), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('metadata') } }
21
23
 
22
- sig { params(require_address: T.nilable(T::Boolean), require_phone: T.nilable(T::Boolean), metadata: T.nilable(T::Hash[Symbol, ::String])).void }
23
- def initialize(require_address: nil, require_phone: nil, metadata: nil)
24
+ sig { params(require_address: T.nilable(T::Boolean), require_phone: T.nilable(T::Boolean), tipping_enabled: T.nilable(T::Boolean), metadata: T.nilable(T::Hash[Symbol, ::String])).void }
25
+ def initialize(require_address: nil, require_phone: nil, tipping_enabled: nil, metadata: nil)
24
26
  @require_address = require_address
25
27
  @require_phone = require_phone
28
+ @tipping_enabled = tipping_enabled
26
29
  @metadata = metadata
27
30
  end
28
31
 
@@ -31,6 +34,7 @@ module Moov
31
34
  return false unless other.is_a? self.class
32
35
  return false unless @require_address == other.require_address
33
36
  return false unless @require_phone == other.require_phone
37
+ return false unless @tipping_enabled == other.tipping_enabled
34
38
  return false unless @metadata == other.metadata
35
39
  true
36
40
  end
@@ -12,6 +12,8 @@ class Moov::Models::Components::PaymentLinkCustomerOptions
12
12
  def require_address=(str_); end
13
13
  def require_phone(); end
14
14
  def require_phone=(str_); end
15
+ def tipping_enabled(); end
16
+ def tipping_enabled=(str_); end
15
17
  def metadata(); end
16
18
  def metadata=(str_); end
17
19
  end
@@ -14,28 +14,40 @@ module Moov
14
14
 
15
15
  # A list of payment methods that should be supported for this payment link.
16
16
  field :allowed_methods, Crystalline::Array.new(Models::Components::CollectionPaymentMethodType), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('allowedMethods'), required: true } }
17
+ # The minimum and maximum amounts the buyer can specify when `amountType` is `open`.
18
+ field :amount_range, Crystalline::Nilable.new(Models::Components::AmountDecimalRange), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('amountRange') } }
19
+ # Optional preset amounts displayed to the buyer when `amountType` is `open`.
20
+ field :suggested_amounts, Crystalline::Nilable.new(Crystalline::Array.new(Models::Components::AmountDecimal)), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('suggestedAmounts') } }
17
21
  # Options for payment links used to collect a card payment.
18
22
  field :card_details, Crystalline::Nilable.new(Models::Components::CardPaymentDetails), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('cardDetails') } }
19
23
  # Options for payment links used to collect an ACH payment.
20
24
  field :ach_details, Crystalline::Nilable.new(Models::Components::ACHPaymentDetails), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('achDetails') } }
21
25
  # Optional free-form metadata for the transfer.
22
26
  field :metadata, Crystalline::Nilable.new(Crystalline::Hash.new(Symbol, ::String)), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('metadata') } }
27
+ # Indicates whether the payment amount is fixed by the merchant or open for the buyer to choose.
28
+ field :amount_type, Crystalline::Nilable.new(Models::Components::PaymentLinkPaymentDetailsAmountType), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('amountType'), 'decoder': ::Moov::Utils.enum_from_string(Models::Components::PaymentLinkPaymentDetailsAmountType, true) } }
23
29
 
24
- 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])).void }
25
- def initialize(allowed_methods:, card_details: nil, ach_details: nil, metadata: nil)
30
+ sig { params(allowed_methods: T::Array[Models::Components::CollectionPaymentMethodType], amount_range: T.nilable(Models::Components::AmountDecimalRange), suggested_amounts: T.nilable(T::Array[Models::Components::AmountDecimal]), card_details: T.nilable(Models::Components::CardPaymentDetails), ach_details: T.nilable(Models::Components::ACHPaymentDetails), metadata: T.nilable(T::Hash[Symbol, ::String]), amount_type: T.nilable(Models::Components::PaymentLinkPaymentDetailsAmountType)).void }
31
+ def initialize(allowed_methods:, amount_range: nil, suggested_amounts: nil, card_details: nil, ach_details: nil, metadata: nil, amount_type: Models::Components::PaymentLinkPaymentDetailsAmountType::FIXED)
26
32
  @allowed_methods = allowed_methods
33
+ @amount_range = amount_range
34
+ @suggested_amounts = suggested_amounts
27
35
  @card_details = card_details
28
36
  @ach_details = ach_details
29
37
  @metadata = metadata
38
+ @amount_type = amount_type
30
39
  end
31
40
 
32
41
  sig { params(other: T.untyped).returns(T::Boolean) }
33
42
  def ==(other)
34
43
  return false unless other.is_a? self.class
35
44
  return false unless @allowed_methods == other.allowed_methods
45
+ return false unless @amount_range == other.amount_range
46
+ return false unless @suggested_amounts == other.suggested_amounts
36
47
  return false unless @card_details == other.card_details
37
48
  return false unless @ach_details == other.ach_details
38
49
  return false unless @metadata == other.metadata
50
+ return false unless @amount_type == other.amount_type
39
51
  true
40
52
  end
41
53
  end
@@ -10,10 +10,16 @@ end
10
10
  class Moov::Models::Components::PaymentLinkPaymentDetails
11
11
  def allowed_methods(); end
12
12
  def allowed_methods=(str_); end
13
+ def amount_range(); end
14
+ def amount_range=(str_); end
15
+ def suggested_amounts(); end
16
+ def suggested_amounts=(str_); end
13
17
  def card_details(); end
14
18
  def card_details=(str_); end
15
19
  def ach_details(); end
16
20
  def ach_details=(str_); end
17
21
  def metadata(); end
18
22
  def metadata=(str_); end
23
+ def amount_type(); end
24
+ def amount_type=(str_); end
19
25
  end
@@ -0,0 +1,19 @@
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
+ # PaymentLinkPaymentDetailsAmountType - Indicates whether the payment amount is fixed by the merchant or open for the buyer to choose.
11
+ class PaymentLinkPaymentDetailsAmountType < T::Enum
12
+ enums do
13
+ FIXED = new('fixed')
14
+ OPEN = new('open')
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,11 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+
5
+ class Moov::Models::Components::PaymentLinkPaymentDetailsAmountType
6
+ extend ::Crystalline::MetadataFields::ClassMethods
7
+ end
8
+
9
+
10
+ class Moov::Models::Components::PaymentLinkPaymentDetailsAmountType
11
+ end
@@ -14,28 +14,40 @@ module Moov
14
14
 
15
15
  # A list of payment methods that should be supported for this payment link.
16
16
  field :allowed_methods, Crystalline::Nilable.new(Crystalline::Array.new(Models::Components::CollectionPaymentMethodType)), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('allowedMethods') } }
17
+ # The minimum and maximum amounts the buyer can specify when `amountType` is `open`.
18
+ field :amount_range, Crystalline::Nilable.new(Models::Components::AmountDecimalRangeUpdate), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('amountRange') } }
19
+ # Optional preset amounts displayed to the buyer when `amountType` is `open`.
20
+ field :suggested_amounts, Crystalline::Nilable.new(Crystalline::Array.new(Models::Components::AmountDecimal)), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('suggestedAmounts') } }
17
21
  # Options for payment links used to collect a card payment.
18
22
  field :card_details, Crystalline::Nilable.new(Models::Components::CardPaymentDetails), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('cardDetails') } }
19
23
  # Options for payment links used to collect an ACH payment.
20
24
  field :ach_details, Crystalline::Nilable.new(Models::Components::ACHPaymentDetails), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('achDetails') } }
21
25
  # Optional free-form metadata for the transfer.
22
26
  field :metadata, Crystalline::Nilable.new(Crystalline::Hash.new(Symbol, ::String)), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('metadata') } }
27
+ # Indicates whether the payment amount is fixed by the merchant or open for the buyer to choose.
28
+ field :amount_type, Crystalline::Nilable.new(Models::Components::PaymentLinkPaymentDetailsUpdateAmountType), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('amountType'), 'decoder': ::Moov::Utils.enum_from_string(Models::Components::PaymentLinkPaymentDetailsUpdateAmountType, true) } }
23
29
 
24
- sig { params(allowed_methods: T.nilable(T::Array[Models::Components::CollectionPaymentMethodType]), card_details: T.nilable(Models::Components::CardPaymentDetails), ach_details: T.nilable(Models::Components::ACHPaymentDetails), metadata: T.nilable(T::Hash[Symbol, ::String])).void }
25
- def initialize(allowed_methods: nil, card_details: nil, ach_details: nil, metadata: nil)
30
+ sig { params(allowed_methods: T.nilable(T::Array[Models::Components::CollectionPaymentMethodType]), amount_range: T.nilable(Models::Components::AmountDecimalRangeUpdate), suggested_amounts: T.nilable(T::Array[Models::Components::AmountDecimal]), card_details: T.nilable(Models::Components::CardPaymentDetails), ach_details: T.nilable(Models::Components::ACHPaymentDetails), metadata: T.nilable(T::Hash[Symbol, ::String]), amount_type: T.nilable(Models::Components::PaymentLinkPaymentDetailsUpdateAmountType)).void }
31
+ def initialize(allowed_methods: nil, amount_range: nil, suggested_amounts: nil, card_details: nil, ach_details: nil, metadata: nil, amount_type: Models::Components::PaymentLinkPaymentDetailsUpdateAmountType::FIXED)
26
32
  @allowed_methods = allowed_methods
33
+ @amount_range = amount_range
34
+ @suggested_amounts = suggested_amounts
27
35
  @card_details = card_details
28
36
  @ach_details = ach_details
29
37
  @metadata = metadata
38
+ @amount_type = amount_type
30
39
  end
31
40
 
32
41
  sig { params(other: T.untyped).returns(T::Boolean) }
33
42
  def ==(other)
34
43
  return false unless other.is_a? self.class
35
44
  return false unless @allowed_methods == other.allowed_methods
45
+ return false unless @amount_range == other.amount_range
46
+ return false unless @suggested_amounts == other.suggested_amounts
36
47
  return false unless @card_details == other.card_details
37
48
  return false unless @ach_details == other.ach_details
38
49
  return false unless @metadata == other.metadata
50
+ return false unless @amount_type == other.amount_type
39
51
  true
40
52
  end
41
53
  end
@@ -10,10 +10,16 @@ end
10
10
  class Moov::Models::Components::PaymentLinkPaymentDetailsUpdate
11
11
  def allowed_methods(); end
12
12
  def allowed_methods=(str_); end
13
+ def amount_range(); end
14
+ def amount_range=(str_); end
15
+ def suggested_amounts(); end
16
+ def suggested_amounts=(str_); end
13
17
  def card_details(); end
14
18
  def card_details=(str_); end
15
19
  def ach_details(); end
16
20
  def ach_details=(str_); end
17
21
  def metadata(); end
18
22
  def metadata=(str_); end
23
+ def amount_type(); end
24
+ def amount_type=(str_); end
19
25
  end
@@ -0,0 +1,19 @@
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
+ # PaymentLinkPaymentDetailsUpdateAmountType - Indicates whether the payment amount is fixed by the merchant or open for the buyer to choose.
11
+ class PaymentLinkPaymentDetailsUpdateAmountType < T::Enum
12
+ enums do
13
+ FIXED = new('fixed')
14
+ OPEN = new('open')
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,11 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+
5
+ class Moov::Models::Components::PaymentLinkPaymentDetailsUpdateAmountType
6
+ extend ::Crystalline::MetadataFields::ClassMethods
7
+ end
8
+
9
+
10
+ class Moov::Models::Components::PaymentLinkPaymentDetailsUpdateAmountType
11
+ end
@@ -0,0 +1,42 @@
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 PutTipPresets
12
+ extend T::Sig
13
+ include Crystalline::MetadataFields
14
+
15
+ # Defines which amount should be used when calculating the final payment total. This calculation applies for percentage tip values.
16
+ # - `pre-tax`: Tip amounts are calculated using the subtotal amount before taxes
17
+ # - `post-tax`: Tip amounts are calculated using the subtotal amount + taxes
18
+ field :calculation_basis, Crystalline::Nilable.new(Models::Components::TipCalculationBasis), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('calculationBasis'), 'decoder': ::Moov::Utils.enum_from_string(Models::Components::TipCalculationBasis, true) } }
19
+ # Defines the set of suggested tip preset values presented to customers. Percentages must be between 0 and 100 (exclusive) and must be unique. A maximum of 3 values are allowed.
20
+ field :percentage_options, Crystalline::Nilable.new(Crystalline::Array.new(::Integer)), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('percentageOptions') } }
21
+ # Defines the set of suggested tip preset values presented to customers. Fixed amounts must be positive and unique. A maximum of 3 values are allowed.
22
+ field :fixed_amount_options, Crystalline::Nilable.new(Crystalline::Array.new(Models::Components::AmountDecimal)), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('fixedAmountOptions') } }
23
+
24
+ sig { params(calculation_basis: T.nilable(Models::Components::TipCalculationBasis), percentage_options: T.nilable(T::Array[::Integer]), fixed_amount_options: T.nilable(T::Array[Models::Components::AmountDecimal])).void }
25
+ def initialize(calculation_basis: nil, percentage_options: nil, fixed_amount_options: nil)
26
+ @calculation_basis = calculation_basis
27
+ @percentage_options = percentage_options
28
+ @fixed_amount_options = fixed_amount_options
29
+ end
30
+
31
+ sig { params(other: T.untyped).returns(T::Boolean) }
32
+ def ==(other)
33
+ return false unless other.is_a? self.class
34
+ return false unless @calculation_basis == other.calculation_basis
35
+ return false unless @percentage_options == other.percentage_options
36
+ return false unless @fixed_amount_options == other.fixed_amount_options
37
+ true
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,17 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+
5
+ class Moov::Models::Components::PutTipPresets
6
+ extend ::Crystalline::MetadataFields::ClassMethods
7
+ end
8
+
9
+
10
+ class Moov::Models::Components::PutTipPresets
11
+ def calculation_basis(); end
12
+ def calculation_basis=(str_); end
13
+ def percentage_options(); end
14
+ def percentage_options=(str_); end
15
+ def fixed_amount_options(); end
16
+ def fixed_amount_options=(str_); end
17
+ end
@@ -0,0 +1,32 @@
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 PutTransferConfig
12
+ extend T::Sig
13
+ include Crystalline::MetadataFields
14
+
15
+
16
+ field :tip_presets, Models::Components::PutTipPresets, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('tipPresets'), required: true } }
17
+
18
+ sig { params(tip_presets: Models::Components::PutTipPresets).void }
19
+ def initialize(tip_presets:)
20
+ @tip_presets = tip_presets
21
+ end
22
+
23
+ sig { params(other: T.untyped).returns(T::Boolean) }
24
+ def ==(other)
25
+ return false unless other.is_a? self.class
26
+ return false unless @tip_presets == other.tip_presets
27
+ true
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,13 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+
5
+ class Moov::Models::Components::PutTransferConfig
6
+ extend ::Crystalline::MetadataFields::ClassMethods
7
+ end
8
+
9
+
10
+ class Moov::Models::Components::PutTransferConfig
11
+ def tip_presets(); end
12
+ def tip_presets=(str_); end
13
+ end