moov_ruby 0.0.0.pre.dev.21 → 0.0.0.pre.dev.22

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 (58) 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 +7 -3
  7. data/lib/moov/models/components/cardtransactiondetails.rbi +2 -0
  8. data/lib/moov/models/components/createtransferdestinationcard.rb +1 -1
  9. data/lib/moov/models/components/depositaccountingestedresponse.rb +44 -0
  10. data/lib/moov/models/components/depositaccountingestedresponse.rbi +19 -0
  11. data/lib/moov/models/components/fullissuedcard.rb +1 -3
  12. data/lib/moov/models/components/invoice.rb +6 -2
  13. data/lib/moov/models/components/invoice.rbi +2 -0
  14. data/lib/moov/models/components/issuedcard.rb +1 -3
  15. data/lib/moov/models/components/issuedcardstate.rb +1 -5
  16. data/lib/moov/models/components/manualtermsofservice.rb +1 -1
  17. data/lib/moov/models/components/manualtermsofserviceupdate.rb +1 -1
  18. data/lib/moov/models/components/patchtransfer.rb +6 -6
  19. data/lib/moov/models/components/patchtransfer.rbi +2 -2
  20. data/lib/moov/models/components/patchwallet.rb +1 -1
  21. data/lib/moov/models/components/paymentlinkpayoutdetails.rb +9 -2
  22. data/lib/moov/models/components/paymentlinkpayoutdetails.rbi +2 -0
  23. data/lib/moov/models/components/paymentlinkpayoutdetailsupdate.rb +9 -2
  24. data/lib/moov/models/components/paymentlinkpayoutdetailsupdate.rbi +2 -0
  25. data/lib/moov/models/components/paymentmethodscard.rb +7 -2
  26. data/lib/moov/models/components/paymentmethodscard.rbi +2 -0
  27. data/lib/moov/models/components/payoutdetailserror.rb +6 -2
  28. data/lib/moov/models/components/payoutdetailserror.rbi +2 -0
  29. data/lib/moov/models/components/pushdeliveryspeed.rb +19 -0
  30. data/lib/moov/models/components/pushdeliveryspeed.rbi +11 -0
  31. data/lib/moov/models/components/pushoptions.rb +38 -0
  32. data/lib/moov/models/components/pushoptions.rbi +15 -0
  33. data/lib/moov/models/components/pushoptionserror.rb +36 -0
  34. data/lib/moov/models/components/pushoptionserror.rbi +15 -0
  35. data/lib/moov/models/components/pushoptionsupdate.rb +38 -0
  36. data/lib/moov/models/components/pushoptionsupdate.rbi +15 -0
  37. data/lib/moov/models/components/sourcesystem.rb +23 -0
  38. data/lib/moov/models/components/sourcesystem.rbi +11 -0
  39. data/lib/moov/models/components/surcharge.rb +38 -0
  40. data/lib/moov/models/components/surcharge.rbi +15 -0
  41. data/lib/moov/models/components/tax.rb +38 -0
  42. data/lib/moov/models/components/tax.rbi +15 -0
  43. data/lib/moov/models/components/termsofservice.rb +1 -1
  44. data/lib/moov/models/components/updatepaymentlinkamountdetails.rb +3 -3
  45. data/lib/moov/models/components.rb +8 -0
  46. data/lib/moov/models/errors/depositaccountvalidationerror.rb +40 -0
  47. data/lib/moov/models/errors/depositaccountvalidationerror.rbi +17 -0
  48. data/lib/moov/models/errors.rb +1 -0
  49. data/lib/moov/models/operations/createdepositaccount_request.rb +40 -0
  50. data/lib/moov/models/operations/createdepositaccount_request.rbi +17 -0
  51. data/lib/moov/models/operations/createdepositaccount_response.rb +48 -0
  52. data/lib/moov/models/operations/createdepositaccount_response.rbi +21 -0
  53. data/lib/moov/models/operations/linkbankaccount_request.rb +1 -1
  54. data/lib/moov/models/operations/listissuedcards_request.rb +1 -1
  55. data/lib/moov/models/operations.rb +2 -0
  56. data/lib/moov/sdkconfiguration.rb +3 -3
  57. data/lib/moov_ruby.rb +1 -0
  58. metadata +27 -4
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b8a0bc31f3c075814fc7c30c3fc900b3b6a552a6228b21f0d274821d6fcb57b5
4
- data.tar.gz: 8b2fec827b9d45ce4737f0b4a3da02f0821d3d89cc0ce4b86be416fc210a07f2
3
+ metadata.gz: c0db98ebb8320c8fe61a13eba506c5fb2a5edc05e1c144504684fb6ce7634012
4
+ data.tar.gz: 4bd5b58c8998391d2b83ff97f46232fce897efa09746de497e7dc41a3900a275
5
5
  SHA512:
6
- metadata.gz: b5d779b5db6e20eb1404d7c3843253a72660c4c35877ec8ff4bb1da10b4e395dc74f697e78b1181169e7a4546b16c37b913216b6cee0f1cf8c446bacb7c465ba
7
- data.tar.gz: a5044fa549b3d244ad736b354d90d680e65d6f6f03097669739de8b91d6db63f52c6f886d71be342c47d75301fd86509d6f6ef64306f7a0365f7a7e9b748c7c6
6
+ metadata.gz: 6c318b1e378486c7fa473f9878add261e7a98857014e121fb7557bde9495ad38a46ee9b1fe96464cf087140972b76d6145a80685c917c9ce04751646522d0dde
7
+ data.tar.gz: 7cebfae57282b9a0a458ff058224244718a301b6733ad400b2dfc46310173303aceca687f7c741d18540d1d451a32becd862ec24905e6f7dd10e3dad1b51bf73
@@ -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,7 +18,7 @@ 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.
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
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) } }
23
23
  # Specifies the nature and initiator of a transaction.
24
24
  #
@@ -37,6 +37,8 @@ module Moov
37
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) } }
38
38
 
39
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) } }
40
42
  # The program assigned by the card network that determines the interchange rate for the transfer.
41
43
  #
42
44
  # @deprecated true: This will be removed in a future release, please migrate away from it as soon as possible.
@@ -46,8 +48,8 @@ module Moov
46
48
  # An alphanumeric code generated by the card network to demonstrate approval for the transaction.
47
49
  field :authorization_code, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('authorizationCode') } }
48
50
 
49
- 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), interchange_qualification: T.nilable(::String), fee_program: T.nilable(::String), authorization_code: T.nilable(::String)).void }
50
- 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, 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)
51
53
  @status = status
52
54
  @failure_code = failure_code
53
55
  @dynamic_descriptor = dynamic_descriptor
@@ -59,6 +61,7 @@ module Moov
59
61
  @failed_on = failed_on
60
62
  @canceled_on = canceled_on
61
63
  @completed_on = completed_on
64
+ @deferred_on = deferred_on
62
65
  @interchange_qualification = interchange_qualification
63
66
  @fee_program = fee_program
64
67
  @authorization_code = authorization_code
@@ -78,6 +81,7 @@ module Moov
78
81
  return false unless @failed_on == other.failed_on
79
82
  return false unless @canceled_on == other.canceled_on
80
83
  return false unless @completed_on == other.completed_on
84
+ return false unless @deferred_on == other.deferred_on
81
85
  return false unless @interchange_qualification == other.interchange_qualification
82
86
  return false unless @fee_program == other.fee_program
83
87
  return false unless @authorization_code == other.authorization_code
@@ -30,6 +30,8 @@ class Moov::Models::Components::CardTransactionDetails
30
30
  def canceled_on=(str_); end
31
31
  def completed_on(); end
32
32
  def completed_on=(str_); end
33
+ def deferred_on(); end
34
+ def deferred_on=(str_); end
33
35
  def interchange_qualification(); end
34
36
  def interchange_qualification=(str_); end
35
37
  def fee_program(); end
@@ -14,7 +14,7 @@ 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.
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
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) } }
19
19
  # An optional field to specify the type of card payout, used to route the transfer with the appropriate business application identifier (BAI).
20
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) } }
@@ -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 }
@@ -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