moov_ruby 26.7.0.pre.dev.3 → 26.7.0.pre.dev.4

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 (60) hide show
  1. checksums.yaml +4 -4
  2. data/lib/moov/bank_accounts.rb +1 -1
  3. data/lib/moov/client.rb +2 -1
  4. data/lib/moov/deposit_view.rb +213 -0
  5. data/lib/moov/models/components/capabilityid.rb +1 -0
  6. data/lib/moov/models/components/cardtransactiondetails.rb +10 -2
  7. data/lib/moov/models/components/cardtransactiondetails.rbi +4 -0
  8. data/lib/moov/models/components/cardtransactionstatus.rb +1 -0
  9. data/lib/moov/models/components/createtransferdestinationcard.rb +6 -2
  10. data/lib/moov/models/components/createtransferdestinationcard.rbi +2 -0
  11. data/lib/moov/models/components/depositaccountingestedresponse.rb +44 -0
  12. data/lib/moov/models/components/depositaccountingestedresponse.rbi +19 -0
  13. data/lib/moov/models/components/fullissuedcard.rb +1 -3
  14. data/lib/moov/models/components/invoice.rb +6 -2
  15. data/lib/moov/models/components/invoice.rbi +2 -0
  16. data/lib/moov/models/components/issuedcard.rb +1 -3
  17. data/lib/moov/models/components/issuedcardstate.rb +1 -5
  18. data/lib/moov/models/components/manualtermsofservice.rb +1 -1
  19. data/lib/moov/models/components/manualtermsofserviceupdate.rb +1 -1
  20. data/lib/moov/models/components/patchtransfer.rb +6 -6
  21. data/lib/moov/models/components/patchtransfer.rbi +2 -2
  22. data/lib/moov/models/components/patchwallet.rb +1 -1
  23. data/lib/moov/models/components/paymentlinkpayoutdetails.rb +9 -2
  24. data/lib/moov/models/components/paymentlinkpayoutdetails.rbi +2 -0
  25. data/lib/moov/models/components/paymentlinkpayoutdetailsupdate.rb +9 -2
  26. data/lib/moov/models/components/paymentlinkpayoutdetailsupdate.rbi +2 -0
  27. data/lib/moov/models/components/paymentmethodscard.rb +7 -2
  28. data/lib/moov/models/components/paymentmethodscard.rbi +2 -0
  29. data/lib/moov/models/components/payoutdetailserror.rb +6 -2
  30. data/lib/moov/models/components/payoutdetailserror.rbi +2 -0
  31. data/lib/moov/models/components/pushdeliveryspeed.rb +19 -0
  32. data/lib/moov/models/components/pushdeliveryspeed.rbi +11 -0
  33. data/lib/moov/models/components/pushoptions.rb +38 -0
  34. data/lib/moov/models/components/pushoptions.rbi +15 -0
  35. data/lib/moov/models/components/pushoptionserror.rb +36 -0
  36. data/lib/moov/models/components/pushoptionserror.rbi +15 -0
  37. data/lib/moov/models/components/pushoptionsupdate.rb +38 -0
  38. data/lib/moov/models/components/pushoptionsupdate.rbi +15 -0
  39. data/lib/moov/models/components/sourcesystem.rb +23 -0
  40. data/lib/moov/models/components/sourcesystem.rbi +11 -0
  41. data/lib/moov/models/components/surcharge.rb +38 -0
  42. data/lib/moov/models/components/surcharge.rbi +15 -0
  43. data/lib/moov/models/components/tax.rb +38 -0
  44. data/lib/moov/models/components/tax.rbi +15 -0
  45. data/lib/moov/models/components/termsofservice.rb +1 -1
  46. data/lib/moov/models/components/updatepaymentlinkamountdetails.rb +3 -3
  47. data/lib/moov/models/components.rb +8 -0
  48. data/lib/moov/models/errors/depositaccountvalidationerror.rb +40 -0
  49. data/lib/moov/models/errors/depositaccountvalidationerror.rbi +17 -0
  50. data/lib/moov/models/errors.rb +1 -0
  51. data/lib/moov/models/operations/createdepositaccount_request.rb +40 -0
  52. data/lib/moov/models/operations/createdepositaccount_request.rbi +17 -0
  53. data/lib/moov/models/operations/createdepositaccount_response.rb +48 -0
  54. data/lib/moov/models/operations/createdepositaccount_response.rbi +21 -0
  55. data/lib/moov/models/operations/linkbankaccount_request.rb +1 -1
  56. data/lib/moov/models/operations/listissuedcards_request.rb +1 -1
  57. data/lib/moov/models/operations.rb +2 -0
  58. data/lib/moov/sdkconfiguration.rb +3 -3
  59. data/lib/moov_ruby.rb +1 -0
  60. metadata +27 -4
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5b4ed906e2f23a6e04a290405a6d128495a3811799ea48e23455770d27064eee
4
- data.tar.gz: 8168809dced8a7e3be1e410be6ff9038dd3fb1e9b3c6d23c414246871b924bfa
3
+ metadata.gz: 8acb648147dca355e80e20f1ac300d6071fcf1264a48772b07391b7306363e38
4
+ data.tar.gz: d8e6262579bdf3adc8544acdf8b520426ade6250eea3371f518c0502ab3f1ef4
5
5
  SHA512:
6
- metadata.gz: 7e580912d762ef78290c875bc9880a9e781831ac924b98672760d52c57b2b8f4b6b5eb56e175c1c87006f425d638e79055734681507655552af315b364456cf6
7
- data.tar.gz: c5b90481c15dfc29b50891e49490e6dcfe69e77e54557c9e008e6671ac825fbc270302470c4b16ae3a29f22b6bb3d14eac591c3e73c2e01b2c94d01869d3c956
6
+ metadata.gz: 8fa97c921faf7c07da261406faaecd04b02345dd8c0abaa759ae12dec973d9f06be3d39065032b07b6e279184badbad235819807af23cc850e0d62aeafa9f639
7
+ data.tar.gz: 4a0b47ac2b9ebca90fe1e3785f6e51ec6a63f7d73c56f84c3c7557b04019a053b55cef2b74df01643f9fc473a2d5da56698fa05a90541885bc06658e4fd1ae92
@@ -46,7 +46,7 @@ module Moov
46
46
  # link - Link a bank account to an existing Moov account. Read our [bank accounts guide](https://docs.moov.io/guides/sources/bank-accounts/) to learn more.
47
47
  #
48
48
  # It is strongly recommended that callers include the `X-Wait-For` header, set to `payment-method`, if the newly linked
49
- # bank-account is intended to be used right away. If this header is not included, the caller will need to poll the [List Payment
49
+ # bank account is intended to be used right away. If this header is not included, the caller will need to poll the [List Payment
50
50
  # Methods](https://docs.moov.io/api/sources/payment-methods/list/)
51
51
  # endpoint to wait for the new payment methods to be available for use.
52
52
  #
data/lib/moov/client.rb CHANGED
@@ -16,7 +16,7 @@ module Moov
16
16
  class Client
17
17
  extend T::Sig
18
18
 
19
- attr_accessor :accounts, :adjustments, :apple_pay, :bank_accounts, :branding, :capabilities, :cards, :disputes, :fee_plans, :files, :google_pay, :images, :invoices, :payment_links, :payment_methods, :products, :representatives, :resolution_links, :scheduling, :statements, :sweeps, :account_terminal_applications, :support, :transfer_config, :transfers, :underwriting, :wallets, :wallet_transactions, :avatars, :end_to_end_encryption, :enriched_address, :enriched_profile, :webhooks, :industries, :institutions, :issuing_transactions, :card_issuing, :authentication, :onboarding, :ping, :receipts, :terminal_applications
19
+ attr_accessor :accounts, :adjustments, :apple_pay, :bank_accounts, :branding, :capabilities, :cards, :disputes, :fee_plans, :files, :google_pay, :images, :invoices, :payment_links, :payment_methods, :products, :representatives, :resolution_links, :scheduling, :statements, :sweeps, :account_terminal_applications, :support, :transfer_config, :transfers, :underwriting, :wallets, :wallet_transactions, :avatars, :end_to_end_encryption, :enriched_address, :enriched_profile, :webhooks, :industries, :institutions, :issuing_transactions, :card_issuing, :authentication, :onboarding, :ping, :receipts, :terminal_applications, :deposit_view
20
20
 
21
21
  # Instantiates the SDK, configuring it with the provided parameters.
22
22
  #
@@ -120,6 +120,7 @@ module Moov
120
120
  @ping = Ping.new(@sdk_configuration)
121
121
  @receipts = Receipts.new(@sdk_configuration)
122
122
  @terminal_applications = TerminalApplications.new(@sdk_configuration)
123
+ @deposit_view = DepositView.new(@sdk_configuration)
123
124
  end
124
125
 
125
126
  sig { params(base_url: String, url_variables: T.nilable(T::Hash[Symbol, T.any(String, T::Enum)])).returns(String) }
@@ -0,0 +1,213 @@
1
+ # Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
2
+
3
+ # typed: true
4
+ # frozen_string_literal: true
5
+
6
+ require 'faraday'
7
+ require 'faraday/multipart'
8
+ require 'faraday/retry'
9
+ require 'sorbet-runtime'
10
+ require_relative 'sdk_hooks/hooks'
11
+ require_relative 'utils/retries'
12
+
13
+ module Moov
14
+ extend T::Sig
15
+ class DepositView
16
+ extend T::Sig
17
+
18
+
19
+
20
+ sig { params(sdk_config: SDKConfiguration).void }
21
+ def initialize(sdk_config)
22
+ @sdk_configuration = sdk_config
23
+
24
+ end
25
+
26
+ sig { params(base_url: String, url_variables: T.nilable(T::Hash[Symbol, T.any(String, T::Enum)])).returns(String) }
27
+ def get_url(base_url:, url_variables: nil)
28
+ sd_base_url, sd_options = @sdk_configuration.get_server_details
29
+
30
+ if base_url.nil?
31
+ base_url = sd_base_url
32
+ end
33
+
34
+ if url_variables.nil?
35
+ url_variables = sd_options
36
+ end
37
+
38
+ return Utils.template_url base_url, url_variables
39
+ end
40
+
41
+
42
+
43
+
44
+ sig { params(request_body: ::String, account_id: ::String, x_source_system: Models::Components::SourceSystem, timeout_ms: T.nilable(Integer), http_headers: T.nilable(T::Hash[T.any(String, Symbol), String])).returns(Models::Operations::CreateDepositAccountResponse) }
45
+ def create(request_body:, account_id:, x_source_system:, timeout_ms: nil, http_headers: nil)
46
+ # create - Ingest a deposit account into the deposit view from a core banking source system.
47
+ #
48
+ # The request body is a raw byte payload whose format depends on the core banking
49
+ # system that produced it. Set the `X-Source-System` header to identify that system
50
+ # so the payload can be parsed correctly.
51
+ #
52
+ # To access this endpoint using an [access token](https://docs.moov.io/api/authentication/access-tokens/)
53
+ # you'll need to specify the `/accounts/{accountID}/profile.write` scope.
54
+ request = Models::Operations::CreateDepositAccountRequest.new(
55
+ account_id: account_id,
56
+ x_source_system: x_source_system,
57
+ request_body: request_body
58
+ )
59
+ url, params = @sdk_configuration.get_server_details
60
+ base_url = Utils.template_url(url, params)
61
+ url = Utils.generate_url(
62
+ Models::Operations::CreateDepositAccountRequest,
63
+ base_url,
64
+ '/underwriting/{accountID}/deposit-accounts',
65
+ request
66
+ )
67
+ headers = Utils.get_headers(request)
68
+ headers = T.cast(headers, T::Hash[String, String])
69
+ req_content_type, data, form = Utils.serialize_request_body(request, false, false, :request_body, :raw)
70
+ headers['content-type'] = req_content_type
71
+ raise StandardError, 'request body is required' if data.nil? && form.nil?
72
+
73
+ if form && !form.empty?
74
+ body = Utils.encode_form(form)
75
+ elsif Utils.match_content_type(req_content_type, 'application/x-www-form-urlencoded')
76
+ body = URI.encode_www_form(T.cast(data, T::Hash[Symbol, Object]))
77
+ else
78
+ body = data
79
+ end
80
+ headers['Accept'] = 'application/json'
81
+ headers['user-agent'] = @sdk_configuration.user_agent
82
+
83
+ security = @sdk_configuration.security_source&.call
84
+
85
+ timeout = (timeout_ms.to_f / 1000) unless timeout_ms.nil?
86
+ timeout ||= @sdk_configuration.timeout
87
+
88
+
89
+ connection = @sdk_configuration.client
90
+
91
+ hook_ctx = SDKHooks::HookContext.new(
92
+ config: @sdk_configuration,
93
+ base_url: base_url,
94
+ oauth2_scopes: nil,
95
+ operation_id: 'createDepositAccount',
96
+ security_source: @sdk_configuration.security_source
97
+ )
98
+
99
+ error = T.let(nil, T.nilable(StandardError))
100
+ http_response = T.let(nil, T.nilable(Faraday::Response))
101
+
102
+
103
+ begin
104
+ http_response = T.must(connection).post(url) do |req|
105
+ req.body = body
106
+ req.headers.merge!(headers)
107
+ req.options.timeout = timeout unless timeout.nil?
108
+ Utils.configure_request_security(req, security)
109
+ http_headers&.each do |key, value|
110
+ req.headers[key.to_s] = value
111
+ end
112
+
113
+ @sdk_configuration.hooks.before_request(
114
+ hook_ctx: SDKHooks::BeforeRequestHookContext.new(
115
+ hook_ctx: hook_ctx
116
+ ),
117
+ request: req
118
+ )
119
+ end
120
+ rescue StandardError => e
121
+ error = e
122
+ ensure
123
+ if http_response.nil? || Utils.error_status?(http_response.status)
124
+ http_response = @sdk_configuration.hooks.after_error(
125
+ error: error,
126
+ hook_ctx: SDKHooks::AfterErrorHookContext.new(
127
+ hook_ctx: hook_ctx
128
+ ),
129
+ response: http_response
130
+ )
131
+ else
132
+ http_response = @sdk_configuration.hooks.after_success(
133
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
134
+ hook_ctx: hook_ctx
135
+ ),
136
+ response: http_response
137
+ )
138
+ end
139
+
140
+ if http_response.nil?
141
+ raise error if !error.nil?
142
+ raise 'no response'
143
+ end
144
+ end
145
+
146
+ content_type = http_response.headers.fetch('Content-Type', 'application/octet-stream')
147
+ if Utils.match_status_code(http_response.status, ['200'])
148
+ if Utils.match_content_type(content_type, 'application/json')
149
+ http_response = @sdk_configuration.hooks.after_success(
150
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
151
+ hook_ctx: hook_ctx
152
+ ),
153
+ response: http_response
154
+ )
155
+ response_data = http_response.env.response_body
156
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Components::DepositAccountIngestedResponse)
157
+ response = Models::Operations::CreateDepositAccountResponse.new(
158
+ status_code: http_response.status,
159
+ content_type: content_type,
160
+ raw_response: http_response,
161
+ headers: http_response.headers,
162
+ deposit_account_ingested_response: T.unsafe(obj)
163
+ )
164
+
165
+ return response
166
+ else
167
+ raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown content type received'
168
+ end
169
+ elsif Utils.match_status_code(http_response.status, ['400', '409'])
170
+ if Utils.match_content_type(content_type, 'application/json')
171
+ http_response = @sdk_configuration.hooks.after_success(
172
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
173
+ hook_ctx: hook_ctx
174
+ ),
175
+ response: http_response
176
+ )
177
+ response_data = http_response.env.response_body
178
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::GenericError)
179
+ obj.raw_response = http_response
180
+ raise obj
181
+ else
182
+ raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown content type received'
183
+ end
184
+ elsif Utils.match_status_code(http_response.status, ['422'])
185
+ if Utils.match_content_type(content_type, 'application/json')
186
+ http_response = @sdk_configuration.hooks.after_success(
187
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
188
+ hook_ctx: hook_ctx
189
+ ),
190
+ response: http_response
191
+ )
192
+ response_data = http_response.env.response_body
193
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::DepositAccountValidationError)
194
+ obj.raw_response = http_response
195
+ raise obj
196
+ else
197
+ raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown content type received'
198
+ end
199
+ elsif Utils.match_status_code(http_response.status, ['401', '403', '404', '429'])
200
+ raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
201
+ elsif Utils.match_status_code(http_response.status, ['500', '504'])
202
+ raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
203
+ elsif Utils.match_status_code(http_response.status, ['4XX'])
204
+ raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
205
+ elsif Utils.match_status_code(http_response.status, ['5XX'])
206
+ raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
207
+ else
208
+ raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'Unknown status code received'
209
+
210
+ end
211
+ end
212
+ end
213
+ end
@@ -32,6 +32,7 @@ module Moov
32
32
  WALLET = new('wallet')
33
33
  WALLET_BALANCE = new('wallet.balance')
34
34
  CARD_ISSUING = new('card-issuing')
35
+ ISSUING_CARDHOLDER = new('issuing.cardholder')
35
36
  PRODUCTION_APP = new('production-app')
36
37
  PLATFORM_PRODUCTION_APP = new('platform.production-app')
37
38
  PLATFORM_WALLET_TRANSFERS = new('platform.wallet-transfers')
@@ -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
@@ -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
@@ -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
+ # The result of ingesting a deposit account into the deposit view.
11
+ class DepositAccountIngestedResponse
12
+ extend T::Sig
13
+ include Crystalline::MetadataFields
14
+
15
+ # The Moov account that owns the deposit view the account was ingested into.
16
+ field :moov_account_id, ::String, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('moovAccountID'), required: true } }
17
+ # The core banking source system that produced the ingested payload.
18
+ field :source_system, Models::Components::SourceSystem, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('sourceSystem'), required: true, 'decoder': ::Moov::Utils.enum_from_string(Models::Components::SourceSystem, false) } }
19
+ # The identifier of the deposit account within the source system.
20
+ field :source_account_id, ::String, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('sourceAccountID'), required: true } }
21
+ # The date and time the deposit account was ingested.
22
+ field :ingested_at, ::DateTime, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('ingestedAt'), required: true, 'decoder': ::Moov::Utils.datetime_from_iso_format(false) } }
23
+
24
+ sig { params(moov_account_id: ::String, source_system: Models::Components::SourceSystem, source_account_id: ::String, ingested_at: ::DateTime).void }
25
+ def initialize(moov_account_id:, source_system:, source_account_id:, ingested_at:)
26
+ @moov_account_id = moov_account_id
27
+ @source_system = source_system
28
+ @source_account_id = source_account_id
29
+ @ingested_at = ingested_at
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 @moov_account_id == other.moov_account_id
36
+ return false unless @source_system == other.source_system
37
+ return false unless @source_account_id == other.source_account_id
38
+ return false unless @ingested_at == other.ingested_at
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::DepositAccountIngestedResponse
6
+ extend ::Crystalline::MetadataFields::ClassMethods
7
+ end
8
+
9
+
10
+ class Moov::Models::Components::DepositAccountIngestedResponse
11
+ def moov_account_id(); end
12
+ def moov_account_id=(str_); end
13
+ def source_system(); end
14
+ def source_system=(str_); end
15
+ def source_account_id(); end
16
+ def source_account_id=(str_); end
17
+ def ingested_at(); end
18
+ def ingested_at=(str_); end
19
+ end
@@ -24,10 +24,8 @@ module Moov
24
24
  field :funding_wallet_id, ::String, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('fundingWalletID'), required: true } }
25
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.
26
26
  #
27
- # - `active`: The card is operational and approves authorizations. Generally becomes active shortly after card creation.
28
- # - `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.
29
28
  # - `closed`: The card is permanently deactivated and cannot approve authorizations. A card can be closed by request or when it expires.
30
- # - `pending-verification`: Awaiting additional authorized user verification before the card can be activated.
31
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) } }
32
30
  # Specifies the type of spend card to be issued. Presently supports virtual only, providing a digital number without a physical card.
33
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) } }
@@ -48,6 +48,8 @@ module Moov
48
48
  field :amount_details, Crystalline::Nilable.new(Models::Components::AmountDetails), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('amountDetails') } }
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, 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), amount_details: T.nilable(Models::Components::AmountDetails), 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:, total_amount:, pending_amount:, paid_amount:, refunded_amount:, disputed_amount:, created_on:, description: nil, amount_details: 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, 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), amount_details: T.nilable(Models::Components::AmountDetails), 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:, total_amount:, pending_amount:, paid_amount:, refunded_amount:, disputed_amount:, created_on:, description: nil, amount_details: 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
  @description = description
84
86
  @amount_details = amount_details
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 @description == other.description
114
117
  return false unless @amount_details == other.amount_details
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 amount_details=(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
@@ -24,10 +24,8 @@ module Moov
24
24
  field :funding_wallet_id, ::String, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('fundingWalletID'), required: true } }
25
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.
26
26
  #
27
- # - `active`: The card is operational and approves authorizations. Generally becomes active shortly after card creation.
28
- # - `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.
29
28
  # - `closed`: The card is permanently deactivated and cannot approve authorizations. A card can be closed by request or when it expires.
30
- # - `pending-verification`: Awaiting additional authorized user verification before the card can be activated.
31
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) } }
32
30
  # Specifies the type of spend card to be issued. Presently supports virtual only, providing a digital number without a physical card.
33
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) } }
@@ -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') } }
@@ -12,22 +12,22 @@ module Moov
12
12
  extend T::Sig
13
13
  include Crystalline::MetadataFields
14
14
 
15
+ # Free-form key-value pair list. Useful for storing information that is not captured elsewhere.
16
+ field :metadata, Crystalline::Nilable.new(Crystalline::Hash.new(Symbol, ::String)), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('metadata') } }
15
17
  # Optional alias from a foreign/external system which can be used to reference this resource.
16
18
  field :foreign_id, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('foreignID') } }
17
19
 
18
- field :metadata, Crystalline::Nilable.new(Crystalline::Hash.new(Symbol, ::String)), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('metadata') } }
19
-
20
- sig { params(foreign_id: T.nilable(::String), metadata: T.nilable(T::Hash[Symbol, ::String])).void }
21
- def initialize(foreign_id: nil, metadata: nil)
22
- @foreign_id = foreign_id
20
+ sig { params(metadata: T.nilable(T::Hash[Symbol, ::String]), foreign_id: T.nilable(::String)).void }
21
+ def initialize(metadata: nil, foreign_id: nil)
23
22
  @metadata = metadata
23
+ @foreign_id = foreign_id
24
24
  end
25
25
 
26
26
  sig { params(other: T.untyped).returns(T::Boolean) }
27
27
  def ==(other)
28
28
  return false unless other.is_a? self.class
29
- return false unless @foreign_id == other.foreign_id
30
29
  return false unless @metadata == other.metadata
30
+ return false unless @foreign_id == other.foreign_id
31
31
  true
32
32
  end
33
33
  end
@@ -8,8 +8,8 @@ end
8
8
 
9
9
 
10
10
  class Moov::Models::Components::PatchTransfer
11
- def foreign_id(); end
12
- def foreign_id=(str_); end
13
11
  def metadata(); end
14
12
  def metadata=(str_); end
13
+ def foreign_id(); end
14
+ def foreign_id=(str_); end
15
15
  end
@@ -20,7 +20,7 @@ module Moov
20
20
  field :status, Crystalline::Nilable.new(Models::Components::WalletStatus), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('status'), 'decoder': ::Moov::Utils.enum_from_string(Models::Components::WalletStatus, true) } }
21
21
 
22
22
  field :description, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('description') } }
23
- # Free-form key-value pair list. Useful for storing information that is not captured elsewhere.
23
+
24
24
  field :metadata, Crystalline::Nilable.new(Crystalline::Hash.new(Symbol, ::String)), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('metadata') } }
25
25
 
26
26
  sig { params(name: T.nilable(::String), status: T.nilable(Models::Components::WalletStatus), description: T.nilable(::String), metadata: T.nilable(T::Hash[Symbol, ::String])).void }