moov_ruby 26.4.0 → 26.4.2

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 (95) 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/cardfundingsource.rb +21 -0
  5. data/lib/moov/models/components/cardfundingsource.rbi +11 -0
  6. data/lib/moov/models/components/cardnetwork.rb +24 -0
  7. data/lib/moov/models/components/cardnetwork.rbi +11 -0
  8. data/lib/moov/models/components/createdtransfer.rb +7 -3
  9. data/lib/moov/models/components/createdtransfer.rbi +2 -0
  10. data/lib/moov/models/components/createpaymentlink.rb +8 -3
  11. data/lib/moov/models/components/createtippresets.rb +42 -0
  12. data/lib/moov/models/components/createtippresets.rbi +17 -0
  13. data/lib/moov/models/components/createtransfer.rb +7 -3
  14. data/lib/moov/models/components/createtransfer.rbi +2 -0
  15. data/lib/moov/models/components/createtransferamountdetails.rb +32 -0
  16. data/lib/moov/models/components/createtransferamountdetails.rbi +13 -0
  17. data/lib/moov/models/components/createtransferamountdetailsvalidationerror.rb +32 -0
  18. data/lib/moov/models/components/createtransferamountdetailsvalidationerror.rbi +13 -0
  19. data/lib/moov/models/components/createtransferconfig.rb +32 -0
  20. data/lib/moov/models/components/createtransferconfig.rbi +13 -0
  21. data/lib/moov/models/components/fileuploadmetadata.rb +36 -0
  22. data/lib/moov/models/components/fileuploadmetadata.rbi +15 -0
  23. data/lib/moov/models/components/fileuploadrequestmultipart.rb +4 -6
  24. data/lib/moov/models/components/googlepayassurancedetails.rb +36 -0
  25. data/lib/moov/models/components/googlepayassurancedetails.rbi +15 -0
  26. data/lib/moov/models/components/googlepaybillingaddress.rb +71 -0
  27. data/lib/moov/models/components/googlepaybillingaddress.rbi +31 -0
  28. data/lib/moov/models/components/googlepaycardinfo.rb +52 -0
  29. data/lib/moov/models/components/googlepaycardinfo.rbi +21 -0
  30. data/lib/moov/models/components/googlepaypaymentmethoddata.rb +48 -0
  31. data/lib/moov/models/components/googlepaypaymentmethoddata.rbi +19 -0
  32. data/lib/moov/models/components/{linkedgooglepaypaymentmethod_paymentmethodtype.rb → googlepaypaymentmethoddata_type.rb} +3 -3
  33. data/lib/moov/models/components/googlepaypaymentmethoddata_type.rbi +11 -0
  34. data/lib/moov/models/components/googlepaytokenizationdata.rb +38 -0
  35. data/lib/moov/models/components/googlepaytokenizationdata.rbi +15 -0
  36. data/lib/moov/models/components/googlepaytokenizationdata_type.rb +18 -0
  37. data/lib/moov/models/components/googlepaytokenizationdata_type.rbi +11 -0
  38. data/lib/moov/models/components/linkedgooglepaypaymentmethod.rb +3 -3
  39. data/lib/moov/models/components/linkgooglepay.rb +17 -12
  40. data/lib/moov/models/components/linkgooglepay.rbi +4 -2
  41. data/lib/moov/models/components/paymentlink.rb +7 -2
  42. data/lib/moov/models/components/paymentlinkcustomeroptions.rb +6 -2
  43. data/lib/moov/models/components/paymentlinkcustomeroptions.rbi +2 -0
  44. data/lib/moov/models/components/puttippresets.rb +42 -0
  45. data/lib/moov/models/components/puttippresets.rbi +17 -0
  46. data/lib/moov/models/components/puttransferconfig.rb +32 -0
  47. data/lib/moov/models/components/puttransferconfig.rbi +13 -0
  48. data/lib/moov/models/components/tipcalculationbasis.rb +21 -0
  49. data/lib/moov/models/components/tipcalculationbasis.rbi +11 -0
  50. data/lib/moov/models/components/tippresets.rb +42 -0
  51. data/lib/moov/models/components/tippresets.rbi +17 -0
  52. data/lib/moov/models/components/transfer.rb +7 -3
  53. data/lib/moov/models/components/transfer.rbi +2 -0
  54. data/lib/moov/models/components/transferamountdetails.rb +32 -0
  55. data/lib/moov/models/components/transferamountdetails.rbi +13 -0
  56. data/lib/moov/models/components/transferconfig.rb +32 -0
  57. data/lib/moov/models/components/transferconfig.rbi +13 -0
  58. data/lib/moov/models/components/transferdestination.rb +6 -2
  59. data/lib/moov/models/components/transferdestination.rbi +2 -0
  60. data/lib/moov/models/components/transfersource.rb +6 -2
  61. data/lib/moov/models/components/transfersource.rbi +2 -0
  62. data/lib/moov/models/components/webhookdatabankaccountcreated.rb +6 -2
  63. data/lib/moov/models/components/webhookdatabankaccountcreated.rbi +2 -0
  64. data/lib/moov/models/components.rb +20 -3
  65. data/lib/moov/models/errors/linkgooglepayerror.rb +10 -6
  66. data/lib/moov/models/errors/linkgooglepayerror.rbi +4 -2
  67. data/lib/moov/models/errors/transfer_error.rb +7 -3
  68. data/lib/moov/models/errors/transfer_error.rbi +2 -0
  69. data/lib/moov/models/errors/transferconfigvalidationerror.rb +44 -0
  70. data/lib/moov/models/errors/transferconfigvalidationerror.rbi +19 -0
  71. data/lib/moov/models/errors/transfervalidationerror.rb +6 -2
  72. data/lib/moov/models/errors/transfervalidationerror.rbi +2 -0
  73. data/lib/moov/models/errors.rb +1 -0
  74. data/lib/moov/models/operations/createtransferconfig_request.rb +36 -0
  75. data/lib/moov/models/operations/createtransferconfig_request.rbi +15 -0
  76. data/lib/moov/models/operations/createtransferconfig_response.rb +48 -0
  77. data/lib/moov/models/operations/createtransferconfig_response.rbi +21 -0
  78. data/lib/moov/models/operations/gettransferconfig_request.rb +32 -0
  79. data/lib/moov/models/operations/gettransferconfig_request.rbi +13 -0
  80. data/lib/moov/models/operations/gettransferconfig_response.rb +48 -0
  81. data/lib/moov/models/operations/gettransferconfig_response.rbi +21 -0
  82. data/lib/moov/models/operations/updatetransferconfig_request.rb +36 -0
  83. data/lib/moov/models/operations/updatetransferconfig_request.rbi +15 -0
  84. data/lib/moov/models/operations/updatetransferconfig_response.rb +48 -0
  85. data/lib/moov/models/operations/updatetransferconfig_response.rbi +21 -0
  86. data/lib/moov/models/operations.rb +6 -0
  87. data/lib/moov/sdkconfiguration.rb +3 -3
  88. data/lib/moov/transfer_config.rb +486 -0
  89. data/lib/moov_ruby.rb +1 -0
  90. metadata +57 -8
  91. data/lib/moov/models/components/googlepayintermediatesigningkey.rb +0 -36
  92. data/lib/moov/models/components/googlepayintermediatesigningkey.rbi +0 -15
  93. data/lib/moov/models/components/googlepaytoken.rb +0 -47
  94. data/lib/moov/models/components/googlepaytoken.rbi +0 -19
  95. data/lib/moov/models/components/linkedgooglepaypaymentmethod_paymentmethodtype.rbi +0 -11
@@ -0,0 +1,31 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+
5
+ class Moov::Models::Components::GooglePayBillingAddress
6
+ extend ::Crystalline::MetadataFields::ClassMethods
7
+ end
8
+
9
+
10
+ class Moov::Models::Components::GooglePayBillingAddress
11
+ def address1(); end
12
+ def address1=(str_); end
13
+ def address2(); end
14
+ def address2=(str_); end
15
+ def address3(); end
16
+ def address3=(str_); end
17
+ def locality(); end
18
+ def locality=(str_); end
19
+ def administrative_area(); end
20
+ def administrative_area=(str_); end
21
+ def postal_code(); end
22
+ def postal_code=(str_); end
23
+ def country_code(); end
24
+ def country_code=(str_); end
25
+ def name(); end
26
+ def name=(str_); end
27
+ def phone_number(); end
28
+ def phone_number=(str_); end
29
+ def sorting_code(); end
30
+ def sorting_code=(str_); end
31
+ 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
+ # Unencrypted card metadata from
11
+ # [CardInfo](https://developers.google.com/pay/api/web/reference/response-objects#CardInfo).
12
+ class GooglePayCardInfo
13
+ extend T::Sig
14
+ include Crystalline::MetadataFields
15
+
16
+ # The card network. One of AMEX, DISCOVER, INTERAC, JCB, MASTERCARD, VISA, or OTHER.
17
+ field :card_network, Models::Components::CardNetwork, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('cardNetwork'), required: true, 'decoder': ::Moov::Utils.enum_from_string(Models::Components::CardNetwork, false) } }
18
+ # The last four digits of the card number.
19
+ field :card_details, ::String, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('cardDetails'), required: true } }
20
+ # The funding source of the card. One of CREDIT, DEBIT, PREPAID, or UNKNOWN.
21
+ field :card_funding_source, Crystalline::Nilable.new(Models::Components::CardFundingSource), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('cardFundingSource'), 'decoder': ::Moov::Utils.enum_from_string(Models::Components::CardFundingSource, true) } }
22
+ # Billing address as returned by Google Pay.
23
+ #
24
+ # Refer to [Google's documentation](https://developers.google.com/pay/api/web/reference/response-objects#Address)
25
+ # for more information.
26
+ field :billing_address, Crystalline::Nilable.new(Models::Components::GooglePayBillingAddress), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('billingAddress') } }
27
+ # 3-D Secure assurance details from Google Pay.
28
+ field :assurance_details, Crystalline::Nilable.new(Models::Components::GooglePayAssuranceDetails), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('assuranceDetails') } }
29
+
30
+ sig { params(card_network: Models::Components::CardNetwork, card_details: ::String, card_funding_source: T.nilable(Models::Components::CardFundingSource), billing_address: T.nilable(Models::Components::GooglePayBillingAddress), assurance_details: T.nilable(Models::Components::GooglePayAssuranceDetails)).void }
31
+ def initialize(card_network:, card_details:, card_funding_source: nil, billing_address: nil, assurance_details: nil)
32
+ @card_network = card_network
33
+ @card_details = card_details
34
+ @card_funding_source = card_funding_source
35
+ @billing_address = billing_address
36
+ @assurance_details = assurance_details
37
+ end
38
+
39
+ sig { params(other: T.untyped).returns(T::Boolean) }
40
+ def ==(other)
41
+ return false unless other.is_a? self.class
42
+ return false unless @card_network == other.card_network
43
+ return false unless @card_details == other.card_details
44
+ return false unless @card_funding_source == other.card_funding_source
45
+ return false unless @billing_address == other.billing_address
46
+ return false unless @assurance_details == other.assurance_details
47
+ true
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,21 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+
5
+ class Moov::Models::Components::GooglePayCardInfo
6
+ extend ::Crystalline::MetadataFields::ClassMethods
7
+ end
8
+
9
+
10
+ class Moov::Models::Components::GooglePayCardInfo
11
+ def card_network(); end
12
+ def card_network=(str_); end
13
+ def card_details(); end
14
+ def card_details=(str_); end
15
+ def card_funding_source(); end
16
+ def card_funding_source=(str_); end
17
+ def billing_address(); end
18
+ def billing_address=(str_); end
19
+ def assurance_details(); end
20
+ def assurance_details=(str_); end
21
+ end
@@ -0,0 +1,48 @@
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 `paymentMethodData` object from Google Pay's
11
+ # [PaymentData](https://developers.google.com/pay/api/web/reference/response-objects#PaymentData) response.
12
+ class GooglePayPaymentMethodData
13
+ extend T::Sig
14
+ include Crystalline::MetadataFields
15
+
16
+ # Unencrypted card metadata from
17
+ # [CardInfo](https://developers.google.com/pay/api/web/reference/response-objects#CardInfo).
18
+ field :info, Models::Components::GooglePayCardInfo, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('info'), required: true } }
19
+ # Contains the encrypted payment token from Google Pay.
20
+ #
21
+ # The `token` field is a JSON-encoded string containing the ECv2 encrypted payment token.
22
+ field :tokenization_data, Models::Components::GooglePayTokenizationData, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('tokenizationData'), required: true } }
23
+ # The type of payment method. Always `CARD`.
24
+ field :type, Crystalline::Nilable.new(Models::Components::GooglePayPaymentMethodDataType), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('type'), 'decoder': ::Moov::Utils.enum_from_string(Models::Components::GooglePayPaymentMethodDataType, true) } }
25
+ # A user-facing description of the payment method.
26
+ field :description, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('description') } }
27
+
28
+ sig { params(info: Models::Components::GooglePayCardInfo, tokenization_data: Models::Components::GooglePayTokenizationData, type: T.nilable(Models::Components::GooglePayPaymentMethodDataType), description: T.nilable(::String)).void }
29
+ def initialize(info:, tokenization_data:, type: nil, description: nil)
30
+ @info = info
31
+ @tokenization_data = tokenization_data
32
+ @type = type
33
+ @description = description
34
+ end
35
+
36
+ sig { params(other: T.untyped).returns(T::Boolean) }
37
+ def ==(other)
38
+ return false unless other.is_a? self.class
39
+ return false unless @info == other.info
40
+ return false unless @tokenization_data == other.tokenization_data
41
+ return false unless @type == other.type
42
+ return false unless @description == other.description
43
+ true
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,19 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+
5
+ class Moov::Models::Components::GooglePayPaymentMethodData
6
+ extend ::Crystalline::MetadataFields::ClassMethods
7
+ end
8
+
9
+
10
+ class Moov::Models::Components::GooglePayPaymentMethodData
11
+ def info(); end
12
+ def info=(str_); end
13
+ def tokenization_data(); end
14
+ def tokenization_data=(str_); end
15
+ def type(); end
16
+ def type=(str_); end
17
+ def description(); end
18
+ def description=(str_); end
19
+ end
@@ -7,10 +7,10 @@
7
7
  module Moov
8
8
  module Models
9
9
  module Components
10
-
11
- class LinkedGooglePayPaymentMethodPaymentMethodType < T::Enum
10
+ # GooglePayPaymentMethodDataType - The type of payment method. Always `CARD`.
11
+ class GooglePayPaymentMethodDataType < T::Enum
12
12
  enums do
13
- GOOGLE_PAY = new('google-pay')
13
+ CARD = new('CARD')
14
14
  end
15
15
  end
16
16
  end
@@ -0,0 +1,11 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+
5
+ class Moov::Models::Components::GooglePayPaymentMethodDataType
6
+ extend ::Crystalline::MetadataFields::ClassMethods
7
+ end
8
+
9
+
10
+ class Moov::Models::Components::GooglePayPaymentMethodDataType
11
+ end
@@ -0,0 +1,38 @@
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
+ # Contains the encrypted payment token from Google Pay.
11
+ #
12
+ # The `token` field is a JSON-encoded string containing the ECv2 encrypted payment token.
13
+ class GooglePayTokenizationData
14
+ extend T::Sig
15
+ include Crystalline::MetadataFields
16
+
17
+ # The tokenization type. Always `PAYMENT_GATEWAY`.
18
+ field :type, Models::Components::GooglePayTokenizationDataType, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('type'), required: true, 'decoder': ::Moov::Utils.enum_from_string(Models::Components::GooglePayTokenizationDataType, false) } }
19
+ # The ECv2 encrypted payment token, as a JSON-encoded string.
20
+ field :token, ::String, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('token'), required: true } }
21
+
22
+ sig { params(type: Models::Components::GooglePayTokenizationDataType, token: ::String).void }
23
+ def initialize(type:, token:)
24
+ @type = type
25
+ @token = token
26
+ end
27
+
28
+ sig { params(other: T.untyped).returns(T::Boolean) }
29
+ def ==(other)
30
+ return false unless other.is_a? self.class
31
+ return false unless @type == other.type
32
+ return false unless @token == other.token
33
+ true
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
@@ -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,7 +30,12 @@ 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
-
33
+ # The fixed amount of the payment link.
34
+ #
35
+ # In API versions before `2026.07.00`, this was a required field.
36
+ #
37
+ # In API version `2026.07.00` and beyond, this field is required for `fixed` payment amount types and omitted
38
+ # for `open` payment amount types.
34
39
  field :amount, Models::Components::Amount, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('amount'), required: true } }
35
40
  # The number of times this payment link has been used.
36
41
  field :uses, ::Integer, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('uses'), required: true } }
@@ -44,7 +49,7 @@ module Moov
44
49
  field :updated_on, ::DateTime, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('updatedOn'), required: true, 'decoder': ::Moov::Utils.datetime_from_iso_format(false) } }
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') } }
@@ -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
@@ -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
@@ -0,0 +1,21 @@
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
+ # TipCalculationBasis - Defines which amount should be used when calculating the final payment total. This calculation applies for percentage tip values.
11
+ # - `pre-tax`: Tip amounts are calculated using the subtotal amount before taxes
12
+ # - `post-tax`: Tip amounts are calculated using the subtotal amount + taxes
13
+ class TipCalculationBasis < T::Enum
14
+ enums do
15
+ PRE_TAX = new('pre-tax')
16
+ POST_TAX = new('post-tax')
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,11 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+
5
+ class Moov::Models::Components::TipCalculationBasis
6
+ extend ::Crystalline::MetadataFields::ClassMethods
7
+ end
8
+
9
+
10
+ class Moov::Models::Components::TipCalculationBasis
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
+ # Tip presets when calculating tips for a transfer.
11
+ class TipPresets
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::TipPresets
6
+ extend ::Crystalline::MetadataFields::ClassMethods
7
+ end
8
+
9
+
10
+ class Moov::Models::Components::TipPresets
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