moov_ruby 26.4.6 → 26.4.8

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 (100) hide show
  1. checksums.yaml +4 -4
  2. data/lib/moov/account_terminal_applications.rb +16 -16
  3. data/lib/moov/accounts.rb +52 -54
  4. data/lib/moov/adjustments.rb +8 -8
  5. data/lib/moov/apple_pay.rb +20 -20
  6. data/lib/moov/authentication.rb +8 -8
  7. data/lib/moov/avatars.rb +4 -4
  8. data/lib/moov/bank_accounts.rb +36 -36
  9. data/lib/moov/branding.rb +12 -12
  10. data/lib/moov/capabilities.rb +20 -20
  11. data/lib/moov/card_issuing.rb +25 -25
  12. data/lib/moov/cards.rb +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 +7 -1
  30. data/lib/moov/models/components/createaccount.rb +5 -1
  31. data/lib/moov/models/components/createpaymentlink.rb +4 -4
  32. data/lib/moov/models/components/fullissuedcard.rb +22 -10
  33. data/lib/moov/models/components/fullissuedcard.rbi +10 -4
  34. data/lib/moov/models/components/invoice.rb +1 -1
  35. data/lib/moov/models/components/issuedcard.rb +22 -10
  36. data/lib/moov/models/components/issuedcard.rbi +10 -4
  37. data/lib/moov/models/components/onboardinginvite.rb +1 -1
  38. data/lib/moov/models/components/onboardinginviterequest.rb +1 -1
  39. data/lib/moov/models/components/paymentlink.rb +3 -3
  40. data/lib/moov/models/components/requestcard.rb +17 -17
  41. data/lib/moov/models/components/requestcard.rbi +8 -8
  42. data/lib/moov/models/components/transferconfig.rb +6 -2
  43. data/lib/moov/models/components/transferconfig.rbi +2 -0
  44. data/lib/moov/models/components/transfercontrols.rb +48 -0
  45. data/lib/moov/models/components/transfercontrols.rbi +21 -0
  46. data/lib/moov/models/components/updateinvoice.rb +6 -6
  47. data/lib/moov/models/components/updateissuedcard.rb +13 -9
  48. data/lib/moov/models/components/updateissuedcard.rbi +6 -4
  49. data/lib/moov/models/components/webhookdataauthorizationexpiring.rb +44 -0
  50. data/lib/moov/models/components/webhookdataauthorizationexpiring.rbi +19 -0
  51. data/lib/moov/models/components/webhookdatacapabilityrequested.rb +7 -1
  52. data/lib/moov/models/components/webhookdatacapabilityupdated.rb +7 -1
  53. data/lib/moov/models/components/webhookdatasweepcreated.rb +6 -2
  54. data/lib/moov/models/components/webhookdatasweepcreated.rbi +2 -0
  55. data/lib/moov/models/components/webhookdatasweepupdated.rb +6 -2
  56. data/lib/moov/models/components/webhookdatasweepupdated.rbi +2 -0
  57. data/lib/moov/models/components/webhookevent.rb +2 -2
  58. data/lib/moov/models/components/webhookeventtype.rb +1 -0
  59. data/lib/moov/models/components.rb +3 -4
  60. data/lib/moov/models/errors/requestcarderror.rb +14 -14
  61. data/lib/moov/models/errors/requestcarderror.rbi +8 -8
  62. data/lib/moov/models/errors/updateissuedcarderror.rb +12 -8
  63. data/lib/moov/models/errors/updateissuedcarderror.rbi +6 -4
  64. data/lib/moov/models/operations/disablecapability_request.rb +7 -1
  65. data/lib/moov/models/operations/getcapability_request.rb +7 -1
  66. data/lib/moov/models/operations/listcancellations_request.rb +36 -0
  67. data/lib/moov/models/operations/listcancellations_request.rbi +15 -0
  68. data/lib/moov/models/operations/listcancellations_response.rb +48 -0
  69. data/lib/moov/models/operations/listcancellations_response.rbi +21 -0
  70. data/lib/moov/models/operations.rb +2 -0
  71. data/lib/moov/onboarding.rb +16 -16
  72. data/lib/moov/payment_links.rb +24 -24
  73. data/lib/moov/payment_methods.rb +8 -8
  74. data/lib/moov/ping.rb +4 -4
  75. data/lib/moov/products.rb +20 -20
  76. data/lib/moov/receipts.rb +8 -8
  77. data/lib/moov/representatives.rb +20 -20
  78. data/lib/moov/resolution_links.rb +16 -16
  79. data/lib/moov/scheduling.rb +24 -24
  80. data/lib/moov/sdkconfiguration.rb +3 -3
  81. data/lib/moov/statements.rb +8 -8
  82. data/lib/moov/support.rb +20 -20
  83. data/lib/moov/sweeps.rb +24 -24
  84. data/lib/moov/terminal_applications.rb +20 -20
  85. data/lib/moov/transfer_config.rb +12 -12
  86. data/lib/moov/transfers.rb +171 -48
  87. data/lib/moov/underwriting.rb +12 -12
  88. data/lib/moov/utils/retries.rb +4 -1
  89. data/lib/moov/wallet_transactions.rb +8 -8
  90. data/lib/moov/wallets.rb +16 -16
  91. data/lib/moov/webhooks.rb +32 -32
  92. metadata +12 -10
  93. data/lib/moov/models/components/authorizeduser.rb +0 -36
  94. data/lib/moov/models/components/authorizeduser.rbi +0 -15
  95. data/lib/moov/models/components/createauthorizeduser.rb +0 -40
  96. data/lib/moov/models/components/createauthorizeduser.rbi +0 -17
  97. data/lib/moov/models/components/createauthorizedusererror.rb +0 -40
  98. data/lib/moov/models/components/createauthorizedusererror.rbi +0 -17
  99. data/lib/moov/models/components/createauthorizeduserupdate.rb +0 -40
  100. data/lib/moov/models/components/createauthorizeduserupdate.rbi +0 -17
@@ -20,8 +20,6 @@ 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.
@@ -35,29 +33,40 @@ module Moov
35
33
  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
34
 
37
35
  field :created_on, ::DateTime, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('createdOn'), required: true, 'decoder': ::Moov::Utils.datetime_from_iso_format(false) } }
36
+
37
+ field :updated_on, ::DateTime, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('updatedOn'), required: true, 'decoder': ::Moov::Utils.datetime_from_iso_format(false) } }
38
38
  # The issued card's Primary Account Number (PAN)
39
39
  field :pan, ::String, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('pan'), required: true } }
40
40
  # The issued card's 3- or 4-digit Card Verification Value (CVV).
41
41
  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') } }
42
+ # Identifier for the account of the card's authorized user.
43
+ field :authorized_user_account_id, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('authorizedUserAccountID') } }
44
+ # An optional descriptive name for the card.
45
+ field :nickname, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('nickname') } }
46
+ # Free-form key-value pair list. Useful for storing information that is not captured elsewhere.
47
+ field :metadata, Crystalline::Nilable.new(Crystalline::Hash.new(Symbol, ::String)), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('metadata') } }
48
+ # Billing address associated with the card.
49
+ field :billing_address, Crystalline::Nilable.new(Models::Components::Address), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('billingAddress') } }
44
50
 
45
51
  field :controls, Crystalline::Nilable.new(Models::Components::IssuingControls), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('controls') } }
46
52
 
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)
53
+ 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 }
54
+ 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
55
  @issued_card_id = issued_card_id
50
56
  @brand = brand
51
57
  @last_four_card_number = last_four_card_number
52
58
  @expiration = expiration
53
- @authorized_user = authorized_user
54
59
  @funding_wallet_id = funding_wallet_id
55
60
  @state = state
56
61
  @form_factor = form_factor
57
62
  @created_on = created_on
63
+ @updated_on = updated_on
58
64
  @pan = pan
59
65
  @cvv = cvv
60
- @memo = memo
66
+ @authorized_user_account_id = authorized_user_account_id
67
+ @nickname = nickname
68
+ @metadata = metadata
69
+ @billing_address = billing_address
61
70
  @controls = controls
62
71
  end
63
72
 
@@ -68,14 +77,17 @@ module Moov
68
77
  return false unless @brand == other.brand
69
78
  return false unless @last_four_card_number == other.last_four_card_number
70
79
  return false unless @expiration == other.expiration
71
- return false unless @authorized_user == other.authorized_user
72
80
  return false unless @funding_wallet_id == other.funding_wallet_id
73
81
  return false unless @state == other.state
74
82
  return false unless @form_factor == other.form_factor
75
83
  return false unless @created_on == other.created_on
84
+ return false unless @updated_on == other.updated_on
76
85
  return false unless @pan == other.pan
77
86
  return false unless @cvv == other.cvv
78
- return false unless @memo == other.memo
87
+ return false unless @authorized_user_account_id == other.authorized_user_account_id
88
+ return false unless @nickname == other.nickname
89
+ return false unless @metadata == other.metadata
90
+ return false unless @billing_address == other.billing_address
79
91
  return false unless @controls == other.controls
80
92
  true
81
93
  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
@@ -32,7 +32,7 @@ module Moov
32
32
  field :subtotal_amount, Models::Components::AmountDecimal, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('subtotalAmount'), required: true } }
33
33
 
34
34
  field :tax_amount, Models::Components::AmountDecimal, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('taxAmount'), required: true } }
35
- # Total amount of the invoice, sum of subTotalAmount and taxAmount
35
+ # Total amount of the invoice, including subtotal, tax, and surcharge amounts.
36
36
  field :total_amount, Models::Components::AmountDecimal, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('totalAmount'), required: true } }
37
37
  # Total amount of pending transfers paid towards the invoice
38
38
  field :pending_amount, Models::Components::AmountDecimal, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('pendingAmount'), required: true } }
@@ -20,8 +20,6 @@ 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.
@@ -35,23 +33,34 @@ module Moov
35
33
  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
34
 
37
35
  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') } }
36
+
37
+ field :updated_on, ::DateTime, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('updatedOn'), required: true, 'decoder': ::Moov::Utils.datetime_from_iso_format(false) } }
38
+ # Identifier for the account of the card's authorized user.
39
+ field :authorized_user_account_id, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('authorizedUserAccountID') } }
40
+ # An optional descriptive name for the card.
41
+ field :nickname, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('nickname') } }
42
+ # Free-form key-value pair list. Useful for storing information that is not captured elsewhere.
43
+ field :metadata, Crystalline::Nilable.new(Crystalline::Hash.new(Symbol, ::String)), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('metadata') } }
44
+ # Billing address associated with the card.
45
+ field :billing_address, Crystalline::Nilable.new(Models::Components::Address), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('billingAddress') } }
40
46
 
41
47
  field :controls, Crystalline::Nilable.new(Models::Components::IssuingControls), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('controls') } }
42
48
 
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)
49
+ 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 }
50
+ 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
51
  @issued_card_id = issued_card_id
46
52
  @brand = brand
47
53
  @last_four_card_number = last_four_card_number
48
54
  @expiration = expiration
49
- @authorized_user = authorized_user
50
55
  @funding_wallet_id = funding_wallet_id
51
56
  @state = state
52
57
  @form_factor = form_factor
53
58
  @created_on = created_on
54
- @memo = memo
59
+ @updated_on = updated_on
60
+ @authorized_user_account_id = authorized_user_account_id
61
+ @nickname = nickname
62
+ @metadata = metadata
63
+ @billing_address = billing_address
55
64
  @controls = controls
56
65
  end
57
66
 
@@ -62,12 +71,15 @@ module Moov
62
71
  return false unless @brand == other.brand
63
72
  return false unless @last_four_card_number == other.last_four_card_number
64
73
  return false unless @expiration == other.expiration
65
- return false unless @authorized_user == other.authorized_user
66
74
  return false unless @funding_wallet_id == other.funding_wallet_id
67
75
  return false unless @state == other.state
68
76
  return false unless @form_factor == other.form_factor
69
77
  return false unless @created_on == other.created_on
70
- return false unless @memo == other.memo
78
+ return false unless @updated_on == other.updated_on
79
+ return false unless @authorized_user_account_id == other.authorized_user_account_id
80
+ return false unless @nickname == other.nickname
81
+ return false unless @metadata == other.metadata
82
+ return false unless @billing_address == other.billing_address
71
83
  return false unless @controls == other.controls
72
84
  true
73
85
  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
@@ -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.
@@ -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 } }
@@ -13,24 +13,24 @@ module Moov
13
13
  include Crystalline::MetadataFields
14
14
 
15
15
 
16
- field :funding_wallet_id, ::String, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('fundingWalletID'), required: true } }
17
- # Fields for identifying an authorized individual.
18
- field :authorized_user, Models::Components::CreateAuthorizedUser, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('authorizedUser'), required: true } }
19
- # Specifies the type of spend card to be issued. Presently supports virtual only, providing a digital number without a physical card.
20
- 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) } }
21
- # An optional descriptive name for the card.
22
- field :memo, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('memo') } }
16
+ field :authorized_user_account_id, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('authorizedUserAccountID') } }
17
+
18
+ field :nickname, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('nickname') } }
19
+ # Free-form key-value pair list. Useful for storing information that is not captured elsewhere.
20
+ field :metadata, Crystalline::Nilable.new(Crystalline::Hash.new(Symbol, ::String)), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('metadata') } }
21
+
22
+ field :billing_address, Crystalline::Nilable.new(Models::Components::Address), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('billingAddress') } }
23
23
  # The expiration date of the card or token.
24
24
  field :expiration, Crystalline::Nilable.new(Models::Components::CardExpiration), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('expiration') } }
25
25
 
26
26
  field :controls, Crystalline::Nilable.new(Models::Components::IssuingControls), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('controls') } }
27
27
 
28
- sig { params(funding_wallet_id: ::String, authorized_user: Models::Components::CreateAuthorizedUser, form_factor: Models::Components::IssuedCardFormFactor, memo: T.nilable(::String), expiration: T.nilable(Models::Components::CardExpiration), controls: T.nilable(Models::Components::IssuingControls)).void }
29
- def initialize(funding_wallet_id:, authorized_user:, form_factor:, memo: nil, expiration: nil, controls: nil)
30
- @funding_wallet_id = funding_wallet_id
31
- @authorized_user = authorized_user
32
- @form_factor = form_factor
33
- @memo = memo
28
+ sig { params(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), expiration: T.nilable(Models::Components::CardExpiration), controls: T.nilable(Models::Components::IssuingControls)).void }
29
+ def initialize(authorized_user_account_id: nil, nickname: nil, metadata: nil, billing_address: nil, expiration: nil, controls: nil)
30
+ @authorized_user_account_id = authorized_user_account_id
31
+ @nickname = nickname
32
+ @metadata = metadata
33
+ @billing_address = billing_address
34
34
  @expiration = expiration
35
35
  @controls = controls
36
36
  end
@@ -38,10 +38,10 @@ module Moov
38
38
  sig { params(other: T.untyped).returns(T::Boolean) }
39
39
  def ==(other)
40
40
  return false unless other.is_a? self.class
41
- return false unless @funding_wallet_id == other.funding_wallet_id
42
- return false unless @authorized_user == other.authorized_user
43
- return false unless @form_factor == other.form_factor
44
- return false unless @memo == other.memo
41
+ return false unless @authorized_user_account_id == other.authorized_user_account_id
42
+ return false unless @nickname == other.nickname
43
+ return false unless @metadata == other.metadata
44
+ return false unless @billing_address == other.billing_address
45
45
  return false unless @expiration == other.expiration
46
46
  return false unless @controls == other.controls
47
47
  true
@@ -8,14 +8,14 @@ end
8
8
 
9
9
 
10
10
  class Moov::Models::Components::RequestCard
11
- def funding_wallet_id(); end
12
- def funding_wallet_id=(str_); end
13
- def authorized_user(); end
14
- def authorized_user=(str_); end
15
- def form_factor(); end
16
- def form_factor=(str_); end
17
- def memo(); end
18
- def memo=(str_); end
11
+ def authorized_user_account_id(); end
12
+ def authorized_user_account_id=(str_); end
13
+ def nickname(); end
14
+ def nickname=(str_); end
15
+ def metadata(); end
16
+ def metadata=(str_); end
17
+ def billing_address(); end
18
+ def billing_address=(str_); end
19
19
  def expiration(); end
20
20
  def expiration=(str_); end
21
21
  def controls(); end
@@ -15,15 +15,19 @@ module Moov
15
15
  # Tip presets when calculating tips for a transfer.
16
16
  field :tip_presets, Crystalline::Nilable.new(Models::Components::TipPresets), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('tipPresets') } }
17
17
 
18
- sig { params(tip_presets: T.nilable(Models::Components::TipPresets)).void }
19
- def initialize(tip_presets: nil)
18
+ field :transfer_controls, Crystalline::Nilable.new(Crystalline::Array.new(Models::Components::TransferControls)), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('transferControls') } }
19
+
20
+ sig { params(tip_presets: T.nilable(Models::Components::TipPresets), transfer_controls: T.nilable(T::Array[Models::Components::TransferControls])).void }
21
+ def initialize(tip_presets: nil, transfer_controls: nil)
20
22
  @tip_presets = tip_presets
23
+ @transfer_controls = transfer_controls
21
24
  end
22
25
 
23
26
  sig { params(other: T.untyped).returns(T::Boolean) }
24
27
  def ==(other)
25
28
  return false unless other.is_a? self.class
26
29
  return false unless @tip_presets == other.tip_presets
30
+ return false unless @transfer_controls == other.transfer_controls
27
31
  true
28
32
  end
29
33
  end
@@ -10,4 +10,6 @@ end
10
10
  class Moov::Models::Components::TransferConfig
11
11
  def tip_presets(); end
12
12
  def tip_presets=(str_); end
13
+ def transfer_controls(); end
14
+ def transfer_controls=(str_); end
13
15
  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
+ # Controls for transfers created through a given partner
11
+ class TransferControls
12
+ extend T::Sig
13
+ include Crystalline::MetadataFields
14
+
15
+ # ID of the merchant account.
16
+ field :account_id, ::String, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('accountID'), required: true } }
17
+ # ID of the partner account.
18
+ field :partner_account_id, ::String, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('partnerAccountID'), required: true } }
19
+ # Indicates if the account is configured for debt repayment.
20
+ field :debt_repayment, Crystalline::Boolean.new, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('debtRepayment'), required: true } }
21
+ # Indicates if the account is allowed to set dynamic descriptors on transfers.
22
+ field :allow_dynamic_descriptor, Crystalline::Boolean.new, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('allowDynamicDescriptor'), required: true } }
23
+ # Indicates if the account is allowed to apply surcharges to transfers.
24
+ field :allow_surcharge, Crystalline::Boolean.new, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('allowSurcharge'), required: true } }
25
+
26
+ sig { params(account_id: ::String, partner_account_id: ::String, debt_repayment: T::Boolean, allow_dynamic_descriptor: T::Boolean, allow_surcharge: T::Boolean).void }
27
+ def initialize(account_id:, partner_account_id:, debt_repayment:, allow_dynamic_descriptor:, allow_surcharge:)
28
+ @account_id = account_id
29
+ @partner_account_id = partner_account_id
30
+ @debt_repayment = debt_repayment
31
+ @allow_dynamic_descriptor = allow_dynamic_descriptor
32
+ @allow_surcharge = allow_surcharge
33
+ end
34
+
35
+ sig { params(other: T.untyped).returns(T::Boolean) }
36
+ def ==(other)
37
+ return false unless other.is_a? self.class
38
+ return false unless @account_id == other.account_id
39
+ return false unless @partner_account_id == other.partner_account_id
40
+ return false unless @debt_repayment == other.debt_repayment
41
+ return false unless @allow_dynamic_descriptor == other.allow_dynamic_descriptor
42
+ return false unless @allow_surcharge == other.allow_surcharge
43
+ true
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,21 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+
5
+ class Moov::Models::Components::TransferControls
6
+ extend ::Crystalline::MetadataFields::ClassMethods
7
+ end
8
+
9
+
10
+ class Moov::Models::Components::TransferControls
11
+ def account_id(); end
12
+ def account_id=(str_); end
13
+ def partner_account_id(); end
14
+ def partner_account_id=(str_); end
15
+ def debt_repayment(); end
16
+ def debt_repayment=(str_); end
17
+ def allow_dynamic_descriptor(); end
18
+ def allow_dynamic_descriptor=(str_); end
19
+ def allow_surcharge(); end
20
+ def allow_surcharge=(str_); end
21
+ end
@@ -16,12 +16,12 @@ module Moov
16
16
  field :description, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('description') } }
17
17
  # A collection of line items for an invoice.
18
18
  field :line_items, Crystalline::Nilable.new(Models::Components::CreateInvoiceLineItemsUpdate), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('lineItems') } }
19
- # The status can be updated to one of the following values under specific conditions:
20
- # - `canceled`: Can only be set if the current status is `draft`, `unpaid`, or `overdue`. Canceling an invoice
21
- # indicates the invoice is no longer expected to be paid (e.g., the charge was waived or terms changed).
22
- # Canceled invoices still appear in list results by default and remain part of the invoice history.
23
- # To completely discard an invoice created by mistake, use the delete endpoint instead.
24
- # - `unpaid`: Can only be set if the current status is `draft`. Setting the status to `unpaid` finalizes the invoice and sends an email with a payment link to the customer.
19
+ # The status can be updated to one of the following values under specific conditions:
20
+ # - `canceled`: Can only be set if the current status is `draft`, `unpaid`, or `overdue`. Canceling an invoice
21
+ # indicates the invoice is no longer expected to be paid (e.g., the charge was waived or terms changed).
22
+ # Canceled invoices still appear in list results by default and remain part of the invoice history.
23
+ # To completely discard an invoice created by mistake, use the delete endpoint instead.
24
+ # - `unpaid`: Can only be set if the current status is `draft`. Setting the status to `unpaid` finalizes the invoice and sends an email with a payment link to the customer.
25
25
  field :status, Crystalline::Nilable.new(Models::Components::InvoiceStatus), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('status'), 'decoder': ::Moov::Utils.enum_from_string(Models::Components::InvoiceStatus, true) } }
26
26
 
27
27
  field :tax_amount, Crystalline::Nilable.new(Models::Components::AmountDecimalUpdate), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('taxAmount') } }
@@ -16,23 +16,27 @@ module Moov
16
16
  # - `closed`: The card is permanently deactivated and cannot approve authorizations. A card can be closed by request or when it expires.
17
17
  field :state, Crystalline::Nilable.new(Models::Components::UpdateIssuedCardState), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('state'), 'decoder': ::Moov::Utils.enum_from_string(Models::Components::UpdateIssuedCardState, true) } }
18
18
 
19
- field :memo, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('memo') } }
20
- # Fields for identifying an authorized individual.
21
- field :authorized_user, Crystalline::Nilable.new(Models::Components::CreateAuthorizedUserUpdate), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('authorizedUser') } }
19
+ field :nickname, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('nickname') } }
22
20
 
23
- sig { params(state: T.nilable(Models::Components::UpdateIssuedCardState), memo: T.nilable(::String), authorized_user: T.nilable(Models::Components::CreateAuthorizedUserUpdate)).void }
24
- def initialize(state: nil, memo: nil, authorized_user: nil)
21
+ field :metadata, Crystalline::Nilable.new(Crystalline::Hash.new(Symbol, ::String)), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('metadata') } }
22
+
23
+ field :billing_address, Crystalline::Nilable.new(Models::Components::BillingAddress), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('billingAddress') } }
24
+
25
+ sig { params(state: T.nilable(Models::Components::UpdateIssuedCardState), nickname: T.nilable(::String), metadata: T.nilable(T::Hash[Symbol, ::String]), billing_address: T.nilable(Models::Components::BillingAddress)).void }
26
+ def initialize(state: nil, nickname: nil, metadata: nil, billing_address: nil)
25
27
  @state = state
26
- @memo = memo
27
- @authorized_user = authorized_user
28
+ @nickname = nickname
29
+ @metadata = metadata
30
+ @billing_address = billing_address
28
31
  end
29
32
 
30
33
  sig { params(other: T.untyped).returns(T::Boolean) }
31
34
  def ==(other)
32
35
  return false unless other.is_a? self.class
33
36
  return false unless @state == other.state
34
- return false unless @memo == other.memo
35
- return false unless @authorized_user == other.authorized_user
37
+ return false unless @nickname == other.nickname
38
+ return false unless @metadata == other.metadata
39
+ return false unless @billing_address == other.billing_address
36
40
  true
37
41
  end
38
42
  end
@@ -10,8 +10,10 @@ end
10
10
  class Moov::Models::Components::UpdateIssuedCard
11
11
  def state(); end
12
12
  def state=(str_); end
13
- def memo(); end
14
- def memo=(str_); end
15
- def authorized_user(); end
16
- def authorized_user=(str_); end
13
+ def nickname(); end
14
+ def nickname=(str_); end
15
+ def metadata(); end
16
+ def metadata=(str_); end
17
+ def billing_address(); end
18
+ def billing_address=(str_); end
17
19
  end
@@ -0,0 +1,44 @@
1
+ # Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
2
+
3
+ # typed: true
4
+ # frozen_string_literal: true
5
+
6
+
7
+ module Moov
8
+ module Models
9
+ module Components
10
+
11
+ class WebhookDataAuthorizationExpiring
12
+ extend T::Sig
13
+ include Crystalline::MetadataFields
14
+
15
+
16
+ field :merchant_account_id, ::String, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('merchantAccountID'), required: true } }
17
+
18
+ field :partner_account_id, ::String, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('partnerAccountID'), required: true } }
19
+
20
+ field :authorization_id, ::String, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('authorizationID'), required: true } }
21
+
22
+ field :expires_on, ::DateTime, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('expiresOn'), required: true, 'decoder': ::Moov::Utils.datetime_from_iso_format(false) } }
23
+
24
+ sig { params(merchant_account_id: ::String, partner_account_id: ::String, authorization_id: ::String, expires_on: ::DateTime).void }
25
+ def initialize(merchant_account_id:, partner_account_id:, authorization_id:, expires_on:)
26
+ @merchant_account_id = merchant_account_id
27
+ @partner_account_id = partner_account_id
28
+ @authorization_id = authorization_id
29
+ @expires_on = expires_on
30
+ end
31
+
32
+ sig { params(other: T.untyped).returns(T::Boolean) }
33
+ def ==(other)
34
+ return false unless other.is_a? self.class
35
+ return false unless @merchant_account_id == other.merchant_account_id
36
+ return false unless @partner_account_id == other.partner_account_id
37
+ return false unless @authorization_id == other.authorization_id
38
+ return false unless @expires_on == other.expires_on
39
+ true
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,19 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+
5
+ class Moov::Models::Components::WebhookDataAuthorizationExpiring
6
+ extend ::Crystalline::MetadataFields::ClassMethods
7
+ end
8
+
9
+
10
+ class Moov::Models::Components::WebhookDataAuthorizationExpiring
11
+ def merchant_account_id(); end
12
+ def merchant_account_id=(str_); end
13
+ def partner_account_id(); end
14
+ def partner_account_id=(str_); end
15
+ def authorization_id(); end
16
+ def authorization_id=(str_); end
17
+ def expires_on(); end
18
+ def expires_on=(str_); end
19
+ end
@@ -16,7 +16,13 @@ module Moov
16
16
  field :account_id, ::String, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('accountID'), required: true } }
17
17
  # Moov account capabilities.
18
18
  #
19
- # The `production-app`, `platform.production-app`, and / or `platform.wallet-transfers` capabilities might appear in your list. These are read-only capabilities that Moov requests and uses for account verification purposes. These capabilities remains active with your account and require no additional action.
19
+ # **Deprecated capabilities**
20
+ #
21
+ # The `send-funds`, `collect-funds`, and `wallet` capability IDs are deprecated. Request granular capabilities instead (for example, `send-funds.ach`, `collect-funds.card-payments`, or `wallet.balance`). Deprecated values will be removed in a future API version.
22
+ #
23
+ # Read our [capabilities reference](https://docs.moov.io/guides/accounts/capabilities/reference/) to choose the right capabilities for your integration.
24
+ #
25
+ # The `production-app`, `platform.production-app`, and / or `platform.wallet-transfers` capabilities might appear in the list for your Partner account. These are read-only capabilities that Moov requests. These capabilities remain active with your account and require no additional action.
20
26
  field :capability_id, Models::Components::CapabilityID, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('capabilityID'), required: true, 'decoder': ::Moov::Utils.enum_from_string(Models::Components::CapabilityID, false) } }
21
27
 
22
28
  field :foreign_id, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('foreignID') } }
@@ -16,7 +16,13 @@ module Moov
16
16
  field :account_id, ::String, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('accountID'), required: true } }
17
17
  # Moov account capabilities.
18
18
  #
19
- # The `production-app`, `platform.production-app`, and / or `platform.wallet-transfers` capabilities might appear in your list. These are read-only capabilities that Moov requests and uses for account verification purposes. These capabilities remains active with your account and require no additional action.
19
+ # **Deprecated capabilities**
20
+ #
21
+ # The `send-funds`, `collect-funds`, and `wallet` capability IDs are deprecated. Request granular capabilities instead (for example, `send-funds.ach`, `collect-funds.card-payments`, or `wallet.balance`). Deprecated values will be removed in a future API version.
22
+ #
23
+ # Read our [capabilities reference](https://docs.moov.io/guides/accounts/capabilities/reference/) to choose the right capabilities for your integration.
24
+ #
25
+ # The `production-app`, `platform.production-app`, and / or `platform.wallet-transfers` capabilities might appear in the list for your Partner account. These are read-only capabilities that Moov requests. These capabilities remain active with your account and require no additional action.
20
26
  field :capability_id, Models::Components::CapabilityID, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('capabilityID'), required: true, 'decoder': ::Moov::Utils.enum_from_string(Models::Components::CapabilityID, false) } }
21
27
  # The status of the capability requested for an account.
22
28
  field :status, Models::Components::CapabilityStatus, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('status'), required: true, 'decoder': ::Moov::Utils.enum_from_string(Models::Components::CapabilityStatus, false) } }