moov_ruby 26.4.7 → 26.4.9

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 (122) hide show
  1. checksums.yaml +4 -4
  2. data/lib/moov/account_terminal_applications.rb +16 -16
  3. data/lib/moov/accounts.rb +52 -54
  4. data/lib/moov/adjustments.rb +8 -8
  5. data/lib/moov/apple_pay.rb +20 -20
  6. data/lib/moov/authentication.rb +8 -8
  7. data/lib/moov/avatars.rb +4 -4
  8. data/lib/moov/bank_accounts.rb +37 -37
  9. data/lib/moov/branding.rb +12 -12
  10. data/lib/moov/capabilities.rb +20 -20
  11. data/lib/moov/card_issuing.rb +25 -25
  12. data/lib/moov/cards.rb +20 -20
  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/billingaddress.rb +52 -0
  27. data/lib/moov/models/components/billingaddress.rbi +23 -0
  28. data/lib/moov/models/components/capability.rb +7 -1
  29. data/lib/moov/models/components/capabilityid.rb +8 -1
  30. data/lib/moov/models/components/cardtransactiondetails.rb +10 -2
  31. data/lib/moov/models/components/cardtransactiondetails.rbi +4 -0
  32. data/lib/moov/models/components/cardtransactionstatus.rb +1 -0
  33. data/lib/moov/models/components/createaccount.rb +5 -1
  34. data/lib/moov/models/components/createpaymentlink.rb +4 -4
  35. data/lib/moov/models/components/createtransferdestinationcard.rb +6 -2
  36. data/lib/moov/models/components/createtransferdestinationcard.rbi +2 -0
  37. data/lib/moov/models/components/fullissuedcard.rb +23 -13
  38. data/lib/moov/models/components/fullissuedcard.rbi +10 -4
  39. data/lib/moov/models/components/invoice.rb +6 -2
  40. data/lib/moov/models/components/invoice.rbi +2 -0
  41. data/lib/moov/models/components/issuedcard.rb +23 -13
  42. data/lib/moov/models/components/issuedcard.rbi +10 -4
  43. data/lib/moov/models/components/issuedcardstate.rb +1 -5
  44. data/lib/moov/models/components/manualtermsofservice.rb +1 -1
  45. data/lib/moov/models/components/manualtermsofserviceupdate.rb +1 -1
  46. data/lib/moov/models/components/onboardinginvite.rb +1 -1
  47. data/lib/moov/models/components/onboardinginviterequest.rb +1 -1
  48. data/lib/moov/models/components/patchtransfer.rb +1 -1
  49. data/lib/moov/models/components/paymentlink.rb +3 -3
  50. data/lib/moov/models/components/paymentlinkpayoutdetails.rb +9 -2
  51. data/lib/moov/models/components/paymentlinkpayoutdetails.rbi +2 -0
  52. data/lib/moov/models/components/paymentlinkpayoutdetailsupdate.rb +9 -2
  53. data/lib/moov/models/components/paymentlinkpayoutdetailsupdate.rbi +2 -0
  54. data/lib/moov/models/components/payoutdetailserror.rb +6 -2
  55. data/lib/moov/models/components/payoutdetailserror.rbi +2 -0
  56. data/lib/moov/models/components/pushdeliveryspeed.rb +19 -0
  57. data/lib/moov/models/components/pushdeliveryspeed.rbi +11 -0
  58. data/lib/moov/models/components/pushoptions.rb +38 -0
  59. data/lib/moov/models/components/pushoptions.rbi +15 -0
  60. data/lib/moov/models/components/pushoptionserror.rb +36 -0
  61. data/lib/moov/models/components/pushoptionserror.rbi +15 -0
  62. data/lib/moov/models/components/pushoptionsupdate.rb +38 -0
  63. data/lib/moov/models/components/pushoptionsupdate.rbi +15 -0
  64. data/lib/moov/models/components/requestcard.rb +17 -17
  65. data/lib/moov/models/components/requestcard.rbi +8 -8
  66. data/lib/moov/models/components/termsofservice.rb +1 -1
  67. data/lib/moov/models/components/updateissuedcard.rb +13 -9
  68. data/lib/moov/models/components/updateissuedcard.rbi +6 -4
  69. data/lib/moov/models/components/webhookdataauthorizationexpiring.rb +44 -0
  70. data/lib/moov/models/components/webhookdataauthorizationexpiring.rbi +19 -0
  71. data/lib/moov/models/components/webhookdatacapabilityrequested.rb +7 -1
  72. data/lib/moov/models/components/webhookdatacapabilityupdated.rb +7 -1
  73. data/lib/moov/models/components/webhookdatasweepcreated.rb +6 -2
  74. data/lib/moov/models/components/webhookdatasweepcreated.rbi +2 -0
  75. data/lib/moov/models/components/webhookdatasweepupdated.rb +6 -2
  76. data/lib/moov/models/components/webhookdatasweepupdated.rbi +2 -0
  77. data/lib/moov/models/components/webhookevent.rb +2 -2
  78. data/lib/moov/models/components/webhookeventtype.rb +1 -0
  79. data/lib/moov/models/components.rb +6 -4
  80. data/lib/moov/models/errors/requestcarderror.rb +14 -14
  81. data/lib/moov/models/errors/requestcarderror.rbi +8 -8
  82. data/lib/moov/models/errors/updateissuedcarderror.rb +12 -8
  83. data/lib/moov/models/errors/updateissuedcarderror.rbi +6 -4
  84. data/lib/moov/models/operations/disablecapability_request.rb +7 -1
  85. data/lib/moov/models/operations/getcapability_request.rb +7 -1
  86. data/lib/moov/models/operations/linkbankaccount_request.rb +1 -1
  87. data/lib/moov/models/operations/listcancellations_request.rb +36 -0
  88. data/lib/moov/models/operations/listcancellations_request.rbi +15 -0
  89. data/lib/moov/models/operations/listcancellations_response.rb +48 -0
  90. data/lib/moov/models/operations/listcancellations_response.rbi +21 -0
  91. data/lib/moov/models/operations/listissuedcards_request.rb +1 -1
  92. data/lib/moov/models/operations.rb +2 -0
  93. data/lib/moov/onboarding.rb +16 -16
  94. data/lib/moov/payment_links.rb +24 -24
  95. data/lib/moov/payment_methods.rb +8 -8
  96. data/lib/moov/ping.rb +4 -4
  97. data/lib/moov/products.rb +20 -20
  98. data/lib/moov/receipts.rb +8 -8
  99. data/lib/moov/representatives.rb +20 -20
  100. data/lib/moov/resolution_links.rb +16 -16
  101. data/lib/moov/scheduling.rb +24 -24
  102. data/lib/moov/sdkconfiguration.rb +3 -3
  103. data/lib/moov/statements.rb +8 -8
  104. data/lib/moov/support.rb +20 -20
  105. data/lib/moov/sweeps.rb +24 -24
  106. data/lib/moov/terminal_applications.rb +20 -20
  107. data/lib/moov/transfer_config.rb +12 -12
  108. data/lib/moov/transfers.rb +171 -48
  109. data/lib/moov/underwriting.rb +12 -12
  110. data/lib/moov/utils/retries.rb +4 -1
  111. data/lib/moov/wallet_transactions.rb +8 -8
  112. data/lib/moov/wallets.rb +16 -16
  113. data/lib/moov/webhooks.rb +32 -32
  114. metadata +20 -12
  115. data/lib/moov/models/components/authorizeduser.rb +0 -36
  116. data/lib/moov/models/components/authorizeduser.rbi +0 -15
  117. data/lib/moov/models/components/createauthorizeduser.rb +0 -40
  118. data/lib/moov/models/components/createauthorizeduser.rbi +0 -17
  119. data/lib/moov/models/components/createauthorizedusererror.rb +0 -40
  120. data/lib/moov/models/components/createauthorizedusererror.rbi +0 -17
  121. data/lib/moov/models/components/createauthorizeduserupdate.rb +0 -40
  122. data/lib/moov/models/components/createauthorizeduserupdate.rbi +0 -17
@@ -18,6 +18,8 @@ module Moov
18
18
  field :failure_code, Crystalline::Nilable.new(Models::Components::CardTransactionFailureCode), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('failureCode'), 'decoder': ::Moov::Utils.enum_from_string(Models::Components::CardTransactionFailureCode, true) } }
19
19
  # An optional override of the default card statement descriptor for a transfer. Accounts must be enabled by Moov to set this field.
20
20
  field :dynamic_descriptor, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('dynamicDescriptor') } }
21
+ # The scheduled date and time for the transfer to be delivered. This field is only valid for push-to-card transfers. Must be between 24 and 48 hours in the future in production. In sandbox mode, any future time up to 48 hours is accepted so integrations can test deferred delivery using the sandbox test cards with relaxed wait times.
22
+ field :scheduled_delivery_on, Crystalline::Nilable.new(::DateTime), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('scheduledDeliveryOn'), 'decoder': ::Moov::Utils.datetime_from_iso_format(true) } }
21
23
  # Specifies the nature and initiator of a transaction.
22
24
  #
23
25
  # Crucial for recurring and merchant-initiated transactions as per card scheme rules.
@@ -35,6 +37,8 @@ module Moov
35
37
  field :canceled_on, Crystalline::Nilable.new(::DateTime), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('canceledOn'), 'decoder': ::Moov::Utils.datetime_from_iso_format(true) } }
36
38
 
37
39
  field :completed_on, Crystalline::Nilable.new(::DateTime), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('completedOn'), 'decoder': ::Moov::Utils.datetime_from_iso_format(true) } }
40
+
41
+ field :deferred_on, Crystalline::Nilable.new(::DateTime), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('deferredOn'), 'decoder': ::Moov::Utils.datetime_from_iso_format(true) } }
38
42
  # The program assigned by the card network that determines the interchange rate for the transfer.
39
43
  #
40
44
  # @deprecated true: This will be removed in a future release, please migrate away from it as soon as possible.
@@ -44,11 +48,12 @@ module Moov
44
48
  # An alphanumeric code generated by the card network to demonstrate approval for the transaction.
45
49
  field :authorization_code, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('authorizationCode') } }
46
50
 
47
- sig { params(status: T.nilable(Models::Components::CardTransactionStatus), failure_code: T.nilable(Models::Components::CardTransactionFailureCode), dynamic_descriptor: T.nilable(::String), transaction_source: T.nilable(Models::Components::TransactionSource), initiated_on: T.nilable(::DateTime), confirmed_on: T.nilable(::DateTime), settled_on: T.nilable(::DateTime), failed_on: T.nilable(::DateTime), canceled_on: T.nilable(::DateTime), completed_on: T.nilable(::DateTime), interchange_qualification: T.nilable(::String), fee_program: T.nilable(::String), authorization_code: T.nilable(::String)).void }
48
- def initialize(status: nil, failure_code: nil, dynamic_descriptor: nil, transaction_source: nil, initiated_on: nil, confirmed_on: nil, settled_on: nil, failed_on: nil, canceled_on: nil, completed_on: nil, interchange_qualification: nil, fee_program: nil, authorization_code: nil)
51
+ sig { params(status: T.nilable(Models::Components::CardTransactionStatus), failure_code: T.nilable(Models::Components::CardTransactionFailureCode), dynamic_descriptor: T.nilable(::String), scheduled_delivery_on: T.nilable(::DateTime), transaction_source: T.nilable(Models::Components::TransactionSource), initiated_on: T.nilable(::DateTime), confirmed_on: T.nilable(::DateTime), settled_on: T.nilable(::DateTime), failed_on: T.nilable(::DateTime), canceled_on: T.nilable(::DateTime), completed_on: T.nilable(::DateTime), deferred_on: T.nilable(::DateTime), interchange_qualification: T.nilable(::String), fee_program: T.nilable(::String), authorization_code: T.nilable(::String)).void }
52
+ def initialize(status: nil, failure_code: nil, dynamic_descriptor: nil, scheduled_delivery_on: nil, transaction_source: nil, initiated_on: nil, confirmed_on: nil, settled_on: nil, failed_on: nil, canceled_on: nil, completed_on: nil, deferred_on: nil, interchange_qualification: nil, fee_program: nil, authorization_code: nil)
49
53
  @status = status
50
54
  @failure_code = failure_code
51
55
  @dynamic_descriptor = dynamic_descriptor
56
+ @scheduled_delivery_on = scheduled_delivery_on
52
57
  @transaction_source = transaction_source
53
58
  @initiated_on = initiated_on
54
59
  @confirmed_on = confirmed_on
@@ -56,6 +61,7 @@ module Moov
56
61
  @failed_on = failed_on
57
62
  @canceled_on = canceled_on
58
63
  @completed_on = completed_on
64
+ @deferred_on = deferred_on
59
65
  @interchange_qualification = interchange_qualification
60
66
  @fee_program = fee_program
61
67
  @authorization_code = authorization_code
@@ -67,6 +73,7 @@ module Moov
67
73
  return false unless @status == other.status
68
74
  return false unless @failure_code == other.failure_code
69
75
  return false unless @dynamic_descriptor == other.dynamic_descriptor
76
+ return false unless @scheduled_delivery_on == other.scheduled_delivery_on
70
77
  return false unless @transaction_source == other.transaction_source
71
78
  return false unless @initiated_on == other.initiated_on
72
79
  return false unless @confirmed_on == other.confirmed_on
@@ -74,6 +81,7 @@ module Moov
74
81
  return false unless @failed_on == other.failed_on
75
82
  return false unless @canceled_on == other.canceled_on
76
83
  return false unless @completed_on == other.completed_on
84
+ return false unless @deferred_on == other.deferred_on
77
85
  return false unless @interchange_qualification == other.interchange_qualification
78
86
  return false unless @fee_program == other.fee_program
79
87
  return false unless @authorization_code == other.authorization_code
@@ -14,6 +14,8 @@ class Moov::Models::Components::CardTransactionDetails
14
14
  def failure_code=(str_); end
15
15
  def dynamic_descriptor(); end
16
16
  def dynamic_descriptor=(str_); end
17
+ def scheduled_delivery_on(); end
18
+ def scheduled_delivery_on=(str_); end
17
19
  def transaction_source(); end
18
20
  def transaction_source=(str_); end
19
21
  def initiated_on(); end
@@ -28,6 +30,8 @@ class Moov::Models::Components::CardTransactionDetails
28
30
  def canceled_on=(str_); end
29
31
  def completed_on(); end
30
32
  def completed_on=(str_); end
33
+ def deferred_on(); end
34
+ def deferred_on=(str_); end
31
35
  def interchange_qualification(); end
32
36
  def interchange_qualification=(str_); end
33
37
  def fee_program(); end
@@ -16,6 +16,7 @@ module Moov
16
16
  SETTLED = new('settled')
17
17
  FAILED = new('failed')
18
18
  COMPLETED = new('completed')
19
+ DEFERRED = new('deferred')
19
20
  end
20
21
  end
21
22
  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) } }
@@ -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
  #
@@ -21,12 +21,12 @@ module Moov
21
21
  field :partner_account_id, ::String, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('partnerAccountID'), required: true } }
22
22
  # The merchant's preferred payment method ID. Must be a wallet payment method.
23
23
  field :merchant_payment_method_id, ::String, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('merchantPaymentMethodID'), required: true } }
24
- # The fixed amount of the payment link.
24
+ # The fixed amount of the payment link.
25
25
  #
26
26
  # In API versions before `2026.07.00`, this was a required field.
27
27
  #
28
- # In API version `2026.07.00` and beyond, this field is required for `fixed` payment amount types and omitted
29
- # for `open` payment amount types.
28
+ # In API version `2026.07.00` and beyond, this field is required for `payment` and `payout` links and must be
29
+ # omitted for `customAmountPayment` links, where the payor chooses the amount.
30
30
  field :amount, Models::Components::Amount, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('amount'), required: true } }
31
31
  # Customizable display options for a payment link.
32
32
  field :display, Models::Components::PaymentLinkDisplayOptions, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('display'), required: true } }
@@ -14,12 +14,15 @@ module Moov
14
14
 
15
15
  # An optional override of the default card statement descriptor for a transfer. Accounts must be enabled by Moov to set this field.
16
16
  field :dynamic_descriptor, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('dynamicDescriptor') } }
17
+ # The scheduled date and time for the transfer to be delivered. This field is only valid for push-to-card transfers. Must be between 24 and 48 hours in the future in production. In sandbox mode, any future time up to 48 hours is accepted so integrations can test deferred delivery using the sandbox test cards with relaxed wait times.
18
+ field :scheduled_delivery_on, Crystalline::Nilable.new(::DateTime), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('scheduledDeliveryOn'), 'decoder': ::Moov::Utils.datetime_from_iso_format(true) } }
17
19
  # An optional field to specify the type of card payout, used to route the transfer with the appropriate business application identifier (BAI).
18
20
  field :payout_type, Crystalline::Nilable.new(Models::Components::CardPayoutType), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('payoutType'), 'decoder': ::Moov::Utils.enum_from_string(Models::Components::CardPayoutType, true) } }
19
21
 
20
- sig { params(dynamic_descriptor: T.nilable(::String), payout_type: T.nilable(Models::Components::CardPayoutType)).void }
21
- def initialize(dynamic_descriptor: nil, payout_type: nil)
22
+ sig { params(dynamic_descriptor: T.nilable(::String), scheduled_delivery_on: T.nilable(::DateTime), payout_type: T.nilable(Models::Components::CardPayoutType)).void }
23
+ def initialize(dynamic_descriptor: nil, scheduled_delivery_on: nil, payout_type: nil)
22
24
  @dynamic_descriptor = dynamic_descriptor
25
+ @scheduled_delivery_on = scheduled_delivery_on
23
26
  @payout_type = payout_type
24
27
  end
25
28
 
@@ -27,6 +30,7 @@ module Moov
27
30
  def ==(other)
28
31
  return false unless other.is_a? self.class
29
32
  return false unless @dynamic_descriptor == other.dynamic_descriptor
33
+ return false unless @scheduled_delivery_on == other.scheduled_delivery_on
30
34
  return false unless @payout_type == other.payout_type
31
35
  true
32
36
  end
@@ -10,6 +10,8 @@ end
10
10
  class Moov::Models::Components::CreateTransferDestinationCard
11
11
  def dynamic_descriptor(); end
12
12
  def dynamic_descriptor=(str_); end
13
+ def scheduled_delivery_on(); end
14
+ def scheduled_delivery_on=(str_); end
13
15
  def payout_type(); end
14
16
  def payout_type=(str_); end
15
17
  end
@@ -20,44 +20,51 @@ module Moov
20
20
  field :last_four_card_number, ::String, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('lastFourCardNumber'), required: true } }
21
21
  # The expiration date of the card or token.
22
22
  field :expiration, Models::Components::CardExpiration, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('expiration'), required: true } }
23
- # Fields for identifying an authorized individual.
24
- field :authorized_user, Models::Components::AuthorizedUser, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('authorizedUser'), required: true } }
25
23
  # Unique identifier for the wallet funding the card.
26
24
  field :funding_wallet_id, ::String, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('fundingWalletID'), required: true } }
27
25
  # The `state` represents the operational status of an issued card. A card can only approve incoming authorizations if it is in an active state.
28
26
  #
29
- # - `active`: The card is operational and approves authorizations. Generally becomes active shortly after card creation.
30
- # - `inactive`: The card cannot approve authorizations. This is currently a temporary state assigned post-creation during the activation process.
27
+ # - `active`: The card is operational and can approve authorizations.
31
28
  # - `closed`: The card is permanently deactivated and cannot approve authorizations. A card can be closed by request or when it expires.
32
- # - `pending-verification`: Awaiting additional authorized user verification before the card can be activated.
33
29
  field :state, Models::Components::IssuedCardState, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('state'), required: true, 'decoder': ::Moov::Utils.enum_from_string(Models::Components::IssuedCardState, false) } }
34
30
  # Specifies the type of spend card to be issued. Presently supports virtual only, providing a digital number without a physical card.
35
31
  field :form_factor, Models::Components::IssuedCardFormFactor, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('formFactor'), required: true, 'decoder': ::Moov::Utils.enum_from_string(Models::Components::IssuedCardFormFactor, false) } }
36
32
 
37
33
  field :created_on, ::DateTime, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('createdOn'), required: true, 'decoder': ::Moov::Utils.datetime_from_iso_format(false) } }
34
+
35
+ field :updated_on, ::DateTime, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('updatedOn'), required: true, 'decoder': ::Moov::Utils.datetime_from_iso_format(false) } }
38
36
  # The issued card's Primary Account Number (PAN)
39
37
  field :pan, ::String, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('pan'), required: true } }
40
38
  # The issued card's 3- or 4-digit Card Verification Value (CVV).
41
39
  field :cvv, ::String, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('cvv'), required: true } }
42
- # Optional descriptor for the card.
43
- field :memo, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('memo') } }
40
+ # Identifier for the account of the card's authorized user.
41
+ field :authorized_user_account_id, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('authorizedUserAccountID') } }
42
+ # An optional descriptive name for the card.
43
+ field :nickname, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('nickname') } }
44
+ # Free-form key-value pair list. Useful for storing information that is not captured elsewhere.
45
+ field :metadata, Crystalline::Nilable.new(Crystalline::Hash.new(Symbol, ::String)), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('metadata') } }
46
+ # Billing address associated with the card.
47
+ field :billing_address, Crystalline::Nilable.new(Models::Components::Address), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('billingAddress') } }
44
48
 
45
49
  field :controls, Crystalline::Nilable.new(Models::Components::IssuingControls), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('controls') } }
46
50
 
47
- sig { params(issued_card_id: ::String, brand: Models::Components::CardBrand, last_four_card_number: ::String, expiration: Models::Components::CardExpiration, authorized_user: Models::Components::AuthorizedUser, funding_wallet_id: ::String, state: Models::Components::IssuedCardState, form_factor: Models::Components::IssuedCardFormFactor, created_on: ::DateTime, pan: ::String, cvv: ::String, memo: T.nilable(::String), controls: T.nilable(Models::Components::IssuingControls)).void }
48
- def initialize(issued_card_id:, brand:, last_four_card_number:, expiration:, authorized_user:, funding_wallet_id:, state:, form_factor:, created_on:, pan:, cvv:, memo: nil, controls: nil)
51
+ sig { params(issued_card_id: ::String, brand: Models::Components::CardBrand, last_four_card_number: ::String, expiration: Models::Components::CardExpiration, funding_wallet_id: ::String, state: Models::Components::IssuedCardState, form_factor: Models::Components::IssuedCardFormFactor, created_on: ::DateTime, updated_on: ::DateTime, pan: ::String, cvv: ::String, authorized_user_account_id: T.nilable(::String), nickname: T.nilable(::String), metadata: T.nilable(T::Hash[Symbol, ::String]), billing_address: T.nilable(Models::Components::Address), controls: T.nilable(Models::Components::IssuingControls)).void }
52
+ def initialize(issued_card_id:, brand:, last_four_card_number:, expiration:, funding_wallet_id:, state:, form_factor:, created_on:, updated_on:, pan:, cvv:, authorized_user_account_id: nil, nickname: nil, metadata: nil, billing_address: nil, controls: nil)
49
53
  @issued_card_id = issued_card_id
50
54
  @brand = brand
51
55
  @last_four_card_number = last_four_card_number
52
56
  @expiration = expiration
53
- @authorized_user = authorized_user
54
57
  @funding_wallet_id = funding_wallet_id
55
58
  @state = state
56
59
  @form_factor = form_factor
57
60
  @created_on = created_on
61
+ @updated_on = updated_on
58
62
  @pan = pan
59
63
  @cvv = cvv
60
- @memo = memo
64
+ @authorized_user_account_id = authorized_user_account_id
65
+ @nickname = nickname
66
+ @metadata = metadata
67
+ @billing_address = billing_address
61
68
  @controls = controls
62
69
  end
63
70
 
@@ -68,14 +75,17 @@ module Moov
68
75
  return false unless @brand == other.brand
69
76
  return false unless @last_four_card_number == other.last_four_card_number
70
77
  return false unless @expiration == other.expiration
71
- return false unless @authorized_user == other.authorized_user
72
78
  return false unless @funding_wallet_id == other.funding_wallet_id
73
79
  return false unless @state == other.state
74
80
  return false unless @form_factor == other.form_factor
75
81
  return false unless @created_on == other.created_on
82
+ return false unless @updated_on == other.updated_on
76
83
  return false unless @pan == other.pan
77
84
  return false unless @cvv == other.cvv
78
- return false unless @memo == other.memo
85
+ return false unless @authorized_user_account_id == other.authorized_user_account_id
86
+ return false unless @nickname == other.nickname
87
+ return false unless @metadata == other.metadata
88
+ return false unless @billing_address == other.billing_address
79
89
  return false unless @controls == other.controls
80
90
  true
81
91
  end
@@ -16,8 +16,6 @@ class Moov::Models::Components::FullIssuedCard
16
16
  def last_four_card_number=(str_); end
17
17
  def expiration(); end
18
18
  def expiration=(str_); end
19
- def authorized_user(); end
20
- def authorized_user=(str_); end
21
19
  def funding_wallet_id(); end
22
20
  def funding_wallet_id=(str_); end
23
21
  def state(); end
@@ -26,12 +24,20 @@ class Moov::Models::Components::FullIssuedCard
26
24
  def form_factor=(str_); end
27
25
  def created_on(); end
28
26
  def created_on=(str_); end
27
+ def updated_on(); end
28
+ def updated_on=(str_); end
29
29
  def pan(); end
30
30
  def pan=(str_); end
31
31
  def cvv(); end
32
32
  def cvv=(str_); end
33
- def memo(); end
34
- def memo=(str_); end
33
+ def authorized_user_account_id(); end
34
+ def authorized_user_account_id=(str_); end
35
+ def nickname(); end
36
+ def nickname=(str_); end
37
+ def metadata(); end
38
+ def metadata=(str_); end
39
+ def billing_address(); end
40
+ def billing_address=(str_); end
35
41
  def controls(); end
36
42
  def controls=(str_); end
37
43
  end
@@ -48,6 +48,8 @@ module Moov
48
48
  field :description, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('description') } }
49
49
 
50
50
  field :payment_link_code, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('paymentLinkCode') } }
51
+ # URL to the hosted payment link for the invoice.
52
+ field :payment_link_url, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('paymentLinkURL') } }
51
53
  # Payment made towards an invoice, will be either a transfer or an external payment.
52
54
  field :invoice_payments, Crystalline::Nilable.new(Crystalline::Array.new(Models::Components::InvoicePayment)), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('invoicePayments') } }
53
55
 
@@ -63,8 +65,8 @@ module Moov
63
65
 
64
66
  field :disabled_on, Crystalline::Nilable.new(::DateTime), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('disabledOn'), 'decoder': ::Moov::Utils.datetime_from_iso_format(true) } }
65
67
 
66
- sig { params(invoice_id: ::String, invoice_number: ::String, customer_account_id: ::String, customer_display_name: ::String, customer_email: ::String, partner_account_id: ::String, status: Models::Components::InvoiceStatus, line_items: Models::Components::InvoiceLineItems, subtotal_amount: Models::Components::AmountDecimal, tax_amount: Models::Components::AmountDecimal, total_amount: Models::Components::AmountDecimal, pending_amount: Models::Components::AmountDecimal, paid_amount: Models::Components::AmountDecimal, refunded_amount: Models::Components::AmountDecimal, disputed_amount: Models::Components::AmountDecimal, created_on: ::DateTime, description: T.nilable(::String), payment_link_code: T.nilable(::String), invoice_payments: T.nilable(T::Array[Models::Components::InvoicePayment]), invoice_date: T.nilable(::DateTime), due_date: T.nilable(::DateTime), sent_on: T.nilable(::DateTime), paid_on: T.nilable(::DateTime), canceled_on: T.nilable(::DateTime), disabled_on: T.nilable(::DateTime)).void }
67
- def initialize(invoice_id:, invoice_number:, customer_account_id:, customer_display_name:, customer_email:, partner_account_id:, status:, line_items:, subtotal_amount:, tax_amount:, total_amount:, pending_amount:, paid_amount:, refunded_amount:, disputed_amount:, created_on:, description: nil, payment_link_code: nil, invoice_payments: nil, invoice_date: nil, due_date: nil, sent_on: nil, paid_on: nil, canceled_on: nil, disabled_on: nil)
68
+ sig { params(invoice_id: ::String, invoice_number: ::String, customer_account_id: ::String, customer_display_name: ::String, customer_email: ::String, partner_account_id: ::String, status: Models::Components::InvoiceStatus, line_items: Models::Components::InvoiceLineItems, subtotal_amount: Models::Components::AmountDecimal, tax_amount: Models::Components::AmountDecimal, total_amount: Models::Components::AmountDecimal, pending_amount: Models::Components::AmountDecimal, paid_amount: Models::Components::AmountDecimal, refunded_amount: Models::Components::AmountDecimal, disputed_amount: Models::Components::AmountDecimal, created_on: ::DateTime, description: T.nilable(::String), payment_link_code: T.nilable(::String), payment_link_url: T.nilable(::String), invoice_payments: T.nilable(T::Array[Models::Components::InvoicePayment]), invoice_date: T.nilable(::DateTime), due_date: T.nilable(::DateTime), sent_on: T.nilable(::DateTime), paid_on: T.nilable(::DateTime), canceled_on: T.nilable(::DateTime), disabled_on: T.nilable(::DateTime)).void }
69
+ def initialize(invoice_id:, invoice_number:, customer_account_id:, customer_display_name:, customer_email:, partner_account_id:, status:, line_items:, subtotal_amount:, tax_amount:, total_amount:, pending_amount:, paid_amount:, refunded_amount:, disputed_amount:, created_on:, description: nil, payment_link_code: nil, payment_link_url: nil, invoice_payments: nil, invoice_date: nil, due_date: nil, sent_on: nil, paid_on: nil, canceled_on: nil, disabled_on: nil)
68
70
  @invoice_id = invoice_id
69
71
  @invoice_number = invoice_number
70
72
  @customer_account_id = customer_account_id
@@ -83,6 +85,7 @@ module Moov
83
85
  @created_on = created_on
84
86
  @description = description
85
87
  @payment_link_code = payment_link_code
88
+ @payment_link_url = payment_link_url
86
89
  @invoice_payments = invoice_payments
87
90
  @invoice_date = invoice_date
88
91
  @due_date = due_date
@@ -113,6 +116,7 @@ module Moov
113
116
  return false unless @created_on == other.created_on
114
117
  return false unless @description == other.description
115
118
  return false unless @payment_link_code == other.payment_link_code
119
+ return false unless @payment_link_url == other.payment_link_url
116
120
  return false unless @invoice_payments == other.invoice_payments
117
121
  return false unless @invoice_date == other.invoice_date
118
122
  return false unless @due_date == other.due_date
@@ -44,6 +44,8 @@ class Moov::Models::Components::Invoice
44
44
  def description=(str_); end
45
45
  def payment_link_code(); end
46
46
  def payment_link_code=(str_); end
47
+ def payment_link_url(); end
48
+ def payment_link_url=(str_); end
47
49
  def invoice_payments(); end
48
50
  def invoice_payments=(str_); end
49
51
  def invoice_date(); end
@@ -20,38 +20,45 @@ module Moov
20
20
  field :last_four_card_number, ::String, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('lastFourCardNumber'), required: true } }
21
21
  # The expiration date of the card or token.
22
22
  field :expiration, Models::Components::CardExpiration, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('expiration'), required: true } }
23
- # Fields for identifying an authorized individual.
24
- field :authorized_user, Models::Components::AuthorizedUser, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('authorizedUser'), required: true } }
25
23
  # Unique identifier for the wallet funding the card.
26
24
  field :funding_wallet_id, ::String, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('fundingWalletID'), required: true } }
27
25
  # The `state` represents the operational status of an issued card. A card can only approve incoming authorizations if it is in an active state.
28
26
  #
29
- # - `active`: The card is operational and approves authorizations. Generally becomes active shortly after card creation.
30
- # - `inactive`: The card cannot approve authorizations. This is currently a temporary state assigned post-creation during the activation process.
27
+ # - `active`: The card is operational and can approve authorizations.
31
28
  # - `closed`: The card is permanently deactivated and cannot approve authorizations. A card can be closed by request or when it expires.
32
- # - `pending-verification`: Awaiting additional authorized user verification before the card can be activated.
33
29
  field :state, Models::Components::IssuedCardState, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('state'), required: true, 'decoder': ::Moov::Utils.enum_from_string(Models::Components::IssuedCardState, false) } }
34
30
  # Specifies the type of spend card to be issued. Presently supports virtual only, providing a digital number without a physical card.
35
31
  field :form_factor, Models::Components::IssuedCardFormFactor, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('formFactor'), required: true, 'decoder': ::Moov::Utils.enum_from_string(Models::Components::IssuedCardFormFactor, false) } }
36
32
 
37
33
  field :created_on, ::DateTime, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('createdOn'), required: true, 'decoder': ::Moov::Utils.datetime_from_iso_format(false) } }
38
- # Optional descriptor for the card.
39
- field :memo, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('memo') } }
34
+
35
+ field :updated_on, ::DateTime, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('updatedOn'), required: true, 'decoder': ::Moov::Utils.datetime_from_iso_format(false) } }
36
+ # Identifier for the account of the card's authorized user.
37
+ field :authorized_user_account_id, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('authorizedUserAccountID') } }
38
+ # An optional descriptive name for the card.
39
+ field :nickname, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('nickname') } }
40
+ # Free-form key-value pair list. Useful for storing information that is not captured elsewhere.
41
+ field :metadata, Crystalline::Nilable.new(Crystalline::Hash.new(Symbol, ::String)), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('metadata') } }
42
+ # Billing address associated with the card.
43
+ field :billing_address, Crystalline::Nilable.new(Models::Components::Address), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('billingAddress') } }
40
44
 
41
45
  field :controls, Crystalline::Nilable.new(Models::Components::IssuingControls), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('controls') } }
42
46
 
43
- sig { params(issued_card_id: ::String, brand: Models::Components::CardBrand, last_four_card_number: ::String, expiration: Models::Components::CardExpiration, authorized_user: Models::Components::AuthorizedUser, funding_wallet_id: ::String, state: Models::Components::IssuedCardState, form_factor: Models::Components::IssuedCardFormFactor, created_on: ::DateTime, memo: T.nilable(::String), controls: T.nilable(Models::Components::IssuingControls)).void }
44
- def initialize(issued_card_id:, brand:, last_four_card_number:, expiration:, authorized_user:, funding_wallet_id:, state:, form_factor:, created_on:, memo: nil, controls: nil)
47
+ sig { params(issued_card_id: ::String, brand: Models::Components::CardBrand, last_four_card_number: ::String, expiration: Models::Components::CardExpiration, funding_wallet_id: ::String, state: Models::Components::IssuedCardState, form_factor: Models::Components::IssuedCardFormFactor, created_on: ::DateTime, updated_on: ::DateTime, authorized_user_account_id: T.nilable(::String), nickname: T.nilable(::String), metadata: T.nilable(T::Hash[Symbol, ::String]), billing_address: T.nilable(Models::Components::Address), controls: T.nilable(Models::Components::IssuingControls)).void }
48
+ def initialize(issued_card_id:, brand:, last_four_card_number:, expiration:, funding_wallet_id:, state:, form_factor:, created_on:, updated_on:, authorized_user_account_id: nil, nickname: nil, metadata: nil, billing_address: nil, controls: nil)
45
49
  @issued_card_id = issued_card_id
46
50
  @brand = brand
47
51
  @last_four_card_number = last_four_card_number
48
52
  @expiration = expiration
49
- @authorized_user = authorized_user
50
53
  @funding_wallet_id = funding_wallet_id
51
54
  @state = state
52
55
  @form_factor = form_factor
53
56
  @created_on = created_on
54
- @memo = memo
57
+ @updated_on = updated_on
58
+ @authorized_user_account_id = authorized_user_account_id
59
+ @nickname = nickname
60
+ @metadata = metadata
61
+ @billing_address = billing_address
55
62
  @controls = controls
56
63
  end
57
64
 
@@ -62,12 +69,15 @@ module Moov
62
69
  return false unless @brand == other.brand
63
70
  return false unless @last_four_card_number == other.last_four_card_number
64
71
  return false unless @expiration == other.expiration
65
- return false unless @authorized_user == other.authorized_user
66
72
  return false unless @funding_wallet_id == other.funding_wallet_id
67
73
  return false unless @state == other.state
68
74
  return false unless @form_factor == other.form_factor
69
75
  return false unless @created_on == other.created_on
70
- return false unless @memo == other.memo
76
+ return false unless @updated_on == other.updated_on
77
+ return false unless @authorized_user_account_id == other.authorized_user_account_id
78
+ return false unless @nickname == other.nickname
79
+ return false unless @metadata == other.metadata
80
+ return false unless @billing_address == other.billing_address
71
81
  return false unless @controls == other.controls
72
82
  true
73
83
  end
@@ -16,8 +16,6 @@ class Moov::Models::Components::IssuedCard
16
16
  def last_four_card_number=(str_); end
17
17
  def expiration(); end
18
18
  def expiration=(str_); end
19
- def authorized_user(); end
20
- def authorized_user=(str_); end
21
19
  def funding_wallet_id(); end
22
20
  def funding_wallet_id=(str_); end
23
21
  def state(); end
@@ -26,8 +24,16 @@ class Moov::Models::Components::IssuedCard
26
24
  def form_factor=(str_); end
27
25
  def created_on(); end
28
26
  def created_on=(str_); end
29
- def memo(); end
30
- def memo=(str_); end
27
+ def updated_on(); end
28
+ def updated_on=(str_); end
29
+ def authorized_user_account_id(); end
30
+ def authorized_user_account_id=(str_); end
31
+ def nickname(); end
32
+ def nickname=(str_); end
33
+ def metadata(); end
34
+ def metadata=(str_); end
35
+ def billing_address(); end
36
+ def billing_address=(str_); end
31
37
  def controls(); end
32
38
  def controls=(str_); end
33
39
  end
@@ -9,15 +9,11 @@ module Moov
9
9
  module Components
10
10
  # IssuedCardState - The `state` represents the operational status of an issued card. A card can only approve incoming authorizations if it is in an active state.
11
11
  #
12
- # - `active`: The card is operational and approves authorizations. Generally becomes active shortly after card creation.
13
- # - `inactive`: The card cannot approve authorizations. This is currently a temporary state assigned post-creation during the activation process.
12
+ # - `active`: The card is operational and can approve authorizations.
14
13
  # - `closed`: The card is permanently deactivated and cannot approve authorizations. A card can be closed by request or when it expires.
15
- # - `pending-verification`: Awaiting additional authorized user verification before the card can be activated.
16
14
  class IssuedCardState < T::Enum
17
15
  enums do
18
16
  ACTIVE = new('active')
19
- INACTIVE = new('inactive')
20
- PENDING_VERIFICATION = new('pending-verification')
21
17
  CLOSED = new('closed')
22
18
  end
23
19
  end
@@ -14,7 +14,7 @@ module Moov
14
14
 
15
15
  # The date and time the terms of service were accepted.
16
16
  field :accepted_date, ::DateTime, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('acceptedDate'), required: true, 'decoder': ::Moov::Utils.datetime_from_iso_format(false) } }
17
- # The IP address from which the terms of service were accepted.
17
+ # The IP address (IPv4 or IPv6) from which the terms of service were accepted.
18
18
  field :accepted_ip, ::String, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('acceptedIP'), required: true } }
19
19
  # The user-agent of the user making the request.
20
20
  field :accepted_user_agent, ::String, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('acceptedUserAgent'), required: true } }
@@ -14,7 +14,7 @@ module Moov
14
14
 
15
15
  # The date and time the terms of service were accepted.
16
16
  field :accepted_date, Crystalline::Nilable.new(::DateTime), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('acceptedDate'), 'decoder': ::Moov::Utils.datetime_from_iso_format(true) } }
17
- # The IP address from which the terms of service were accepted.
17
+ # The IP address (IPv4 or IPv6) from which the terms of service were accepted.
18
18
  field :accepted_ip, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('acceptedIP') } }
19
19
  # The user-agent of the user making the request.
20
20
  field :accepted_user_agent, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('acceptedUserAgent') } }
@@ -19,7 +19,7 @@ module Moov
19
19
  # List of [scopes](https://docs.moov.io/api/authentication/scopes/) you request to use on this
20
20
  # account. These values are used to determine what can be done with the account onboarded.
21
21
  field :scopes, Crystalline::Array.new(Models::Components::ApplicationScope), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('scopes'), required: true } }
22
- # List of [capabilities](https://docs.moov.io/guides/accounts/capabilities/) you intend to request for this
22
+ # List of [capabilities](https://docs.moov.io/guides/accounts/capabilities/reference/) you intend to request for this
23
23
  # account. These values are used to determine what information to collect from the user during onboarding.
24
24
  field :capabilities, Crystalline::Array.new(Models::Components::CapabilityID), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('capabilities'), required: true } }
25
25
  # List of fee plan codes to assign the account created by the invitee.
@@ -15,7 +15,7 @@ module Moov
15
15
  # List of [scopes](https://docs.moov.io/api/authentication/scopes/) you request to use on this
16
16
  # account. These values are used to determine what can be done with the account onboarded.
17
17
  field :scopes, Crystalline::Array.new(Models::Components::ApplicationScope), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('scopes'), required: true } }
18
- # List of [capabilities](https://docs.moov.io/guides/accounts/capabilities/) you intend to request for this
18
+ # List of [capabilities](https://docs.moov.io/guides/accounts/capabilities/reference/) you intend to request for this
19
19
  # account. These values are used to determine what information to collect from the user during onboarding.
20
20
  field :capabilities, Crystalline::Array.new(Models::Components::CapabilityID), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('capabilities'), required: true } }
21
21
  # List of fee plan codes to assign the account created by the invitee.
@@ -14,7 +14,7 @@ module Moov
14
14
 
15
15
  # Optional alias from a foreign/external system which can be used to reference this resource.
16
16
  field :foreign_id, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('foreignID') } }
17
-
17
+ # Free-form key-value pair list. Useful for storing information that is not captured elsewhere.
18
18
  field :metadata, Crystalline::Nilable.new(Crystalline::Hash.new(Symbol, ::String)), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('metadata') } }
19
19
 
20
20
  sig { params(foreign_id: T.nilable(::String), metadata: T.nilable(T::Hash[Symbol, ::String])).void }
@@ -30,12 +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
- # The fixed amount of the payment link.
33
+ # The fixed amount of the payment link.
34
34
  #
35
35
  # In API versions before `2026.07.00`, this was a required field.
36
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.
37
+ # In API version `2026.07.00` and beyond, this field is present for `payment` and `payout` links and omitted
38
+ # for `customAmountPayment` links, where the payor chooses the amount.
39
39
  field :amount, Models::Components::Amount, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('amount'), required: true } }
40
40
  # The number of times this payment link has been used.
41
41
  field :uses, ::Integer, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('uses'), required: true } }
@@ -21,12 +21,18 @@ module Moov
21
21
  field :recipient, Models::Components::PayoutRecipient, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('recipient'), required: true } }
22
22
  # Optional free-form metadata for the transfer.
23
23
  field :metadata, Crystalline::Nilable.new(Crystalline::Hash.new(Symbol, ::String)), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('metadata') } }
24
+ # Delivery options for push-to-card payouts. Only applies when `allowedMethods` includes `push-to-card`.
25
+ #
26
+ # The `deferred` speed and `deferredBy` apply to `push-to-card` only. Other push methods
27
+ # (`push-to-apple-pay`, `push-to-google-pay`) are always delivered instantly regardless of these options.
28
+ field :push_options, Crystalline::Nilable.new(Models::Components::PushOptions), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('pushOptions') } }
24
29
 
25
- sig { params(allowed_methods: T::Array[Models::Components::DisbursementPaymentMethodType], recipient: Models::Components::PayoutRecipient, metadata: T.nilable(T::Hash[Symbol, ::String])).void }
26
- def initialize(allowed_methods:, recipient:, metadata: nil)
30
+ sig { params(allowed_methods: T::Array[Models::Components::DisbursementPaymentMethodType], recipient: Models::Components::PayoutRecipient, metadata: T.nilable(T::Hash[Symbol, ::String]), push_options: T.nilable(Models::Components::PushOptions)).void }
31
+ def initialize(allowed_methods:, recipient:, metadata: nil, push_options: nil)
27
32
  @allowed_methods = allowed_methods
28
33
  @recipient = recipient
29
34
  @metadata = metadata
35
+ @push_options = push_options
30
36
  end
31
37
 
32
38
  sig { params(other: T.untyped).returns(T::Boolean) }
@@ -35,6 +41,7 @@ module Moov
35
41
  return false unless @allowed_methods == other.allowed_methods
36
42
  return false unless @recipient == other.recipient
37
43
  return false unless @metadata == other.metadata
44
+ return false unless @push_options == other.push_options
38
45
  true
39
46
  end
40
47
  end
@@ -14,4 +14,6 @@ class Moov::Models::Components::PaymentLinkPayoutDetails
14
14
  def recipient=(str_); end
15
15
  def metadata(); end
16
16
  def metadata=(str_); end
17
+ def push_options(); end
18
+ def push_options=(str_); end
17
19
  end
@@ -21,12 +21,18 @@ module Moov
21
21
  field :recipient, Crystalline::Nilable.new(Models::Components::PayoutRecipient), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('recipient') } }
22
22
  # Optional free-form metadata for the transfer.
23
23
  field :metadata, Crystalline::Nilable.new(Crystalline::Hash.new(Symbol, ::String)), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('metadata') } }
24
+ # Delivery options for push-to-card payouts. Only applies when `allowedMethods` includes `push-to-card`.
25
+ #
26
+ # The `deferred` speed and `deferredBy` apply to `push-to-card` only. Other push methods
27
+ # (`push-to-apple-pay`, `push-to-google-pay`) are always delivered instantly regardless of these options.
28
+ field :push_options, Crystalline::Nilable.new(Models::Components::PushOptionsUpdate), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('pushOptions') } }
24
29
 
25
- sig { params(allowed_methods: T.nilable(T::Array[Models::Components::DisbursementPaymentMethodType]), recipient: T.nilable(Models::Components::PayoutRecipient), metadata: T.nilable(T::Hash[Symbol, ::String])).void }
26
- def initialize(allowed_methods: nil, recipient: nil, metadata: nil)
30
+ sig { params(allowed_methods: T.nilable(T::Array[Models::Components::DisbursementPaymentMethodType]), recipient: T.nilable(Models::Components::PayoutRecipient), metadata: T.nilable(T::Hash[Symbol, ::String]), push_options: T.nilable(Models::Components::PushOptionsUpdate)).void }
31
+ def initialize(allowed_methods: nil, recipient: nil, metadata: nil, push_options: nil)
27
32
  @allowed_methods = allowed_methods
28
33
  @recipient = recipient
29
34
  @metadata = metadata
35
+ @push_options = push_options
30
36
  end
31
37
 
32
38
  sig { params(other: T.untyped).returns(T::Boolean) }
@@ -35,6 +41,7 @@ module Moov
35
41
  return false unless @allowed_methods == other.allowed_methods
36
42
  return false unless @recipient == other.recipient
37
43
  return false unless @metadata == other.metadata
44
+ return false unless @push_options == other.push_options
38
45
  true
39
46
  end
40
47
  end
@@ -14,4 +14,6 @@ class Moov::Models::Components::PaymentLinkPayoutDetailsUpdate
14
14
  def recipient=(str_); end
15
15
  def metadata(); end
16
16
  def metadata=(str_); end
17
+ def push_options(); end
18
+ def push_options=(str_); end
17
19
  end