moov_ruby 0.0.0.pre.dev.23 → 0.0.0.pre.dev.24
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.
- checksums.yaml +4 -4
- data/lib/moov/avatars.rb +275 -0
- data/lib/moov/models/components/allowedscheduleerror.rb +36 -0
- data/lib/moov/models/components/allowedscheduleerror.rbi +15 -0
- data/lib/moov/models/components/avataruploadrequest.rb +32 -0
- data/lib/moov/models/components/avataruploadrequest.rbi +13 -0
- data/lib/moov/models/components/avataruploadrequest_file.rb +36 -0
- data/lib/moov/models/components/avataruploadrequest_file.rbi +15 -0
- data/lib/moov/models/components/capabilityid.rb +1 -0
- data/lib/moov/models/components/createtransfer.rb +6 -2
- data/lib/moov/models/components/createtransfer.rbi +2 -0
- data/lib/moov/models/components/feepaidby.rb +19 -0
- data/lib/moov/models/components/feepaidby.rbi +11 -0
- data/lib/moov/models/components/fullissuedcard.rb +3 -3
- data/lib/moov/models/components/incurredfee.rb +6 -2
- data/lib/moov/models/components/incurredfee.rbi +2 -0
- data/lib/moov/models/components/issuedcard.rb +3 -3
- data/lib/moov/models/components/issuedcontrols.rb +52 -0
- data/lib/moov/models/components/issuedcontrols.rbi +23 -0
- data/lib/moov/models/components/issuedcontrols_allowedschedule.rb +36 -0
- data/lib/moov/models/components/issuedcontrols_allowedschedule.rbi +15 -0
- data/lib/moov/models/components/issuedvelocitylimit.rb +60 -0
- data/lib/moov/models/components/issuedvelocitylimit.rbi +27 -0
- data/lib/moov/models/components/issuingcontrols.rb +18 -2
- data/lib/moov/models/components/issuingcontrols.rbi +8 -0
- data/lib/moov/models/components/issuingcontrols_allowedschedule.rb +36 -0
- data/lib/moov/models/components/issuingcontrols_allowedschedule.rbi +15 -0
- data/lib/moov/models/components/issuingcontrolserror.rb +18 -2
- data/lib/moov/models/components/issuingcontrolserror.rbi +8 -0
- data/lib/moov/models/components/issuingcontrolsrestrictionmode.rb +19 -0
- data/lib/moov/models/components/issuingcontrolsrestrictionmode.rbi +11 -0
- data/lib/moov/models/components/issuingintervallimit.rb +4 -1
- data/lib/moov/models/components/issuingmerchantcategory.rb +43 -0
- data/lib/moov/models/components/issuingmerchantcategory.rbi +11 -0
- data/lib/moov/models/components/issuingscheduleday.rb +24 -0
- data/lib/moov/models/components/issuingscheduleday.rbi +11 -0
- data/lib/moov/models/components/issuingvelocitylimit.rb +11 -7
- data/lib/moov/models/components/issuingvelocitylimit.rbi +4 -2
- data/lib/moov/models/components/issuingvelocitylimiterror.rb +6 -2
- data/lib/moov/models/components/issuingvelocitylimiterror.rbi +2 -0
- data/lib/moov/models/components/merchantcategoryrestrictions.rb +44 -0
- data/lib/moov/models/components/merchantcategoryrestrictions.rbi +19 -0
- data/lib/moov/models/components/merchantcategoryrestrictionserror.rb +44 -0
- data/lib/moov/models/components/merchantcategoryrestrictionserror.rbi +19 -0
- data/lib/moov/models/components/merchantentry.rb +40 -0
- data/lib/moov/models/components/merchantentry.rbi +17 -0
- data/lib/moov/models/components/merchantentryerror.rb +36 -0
- data/lib/moov/models/components/merchantentryerror.rbi +15 -0
- data/lib/moov/models/components/merchantrestrictions.rb +36 -0
- data/lib/moov/models/components/merchantrestrictions.rbi +15 -0
- data/lib/moov/models/components/merchantrestrictionserror.rb +36 -0
- data/lib/moov/models/components/merchantrestrictionserror.rbi +15 -0
- data/lib/moov/models/components/paymentlinkpayoutdetails.rb +8 -2
- data/lib/moov/models/components/paymentlinkpayoutdetails.rbi +2 -0
- data/lib/moov/models/components/paymentlinkpayoutdetailsupdate.rb +8 -2
- data/lib/moov/models/components/paymentlinkpayoutdetailsupdate.rbi +2 -0
- data/lib/moov/models/components/payoutdetailserror.rb +6 -2
- data/lib/moov/models/components/payoutdetailserror.rbi +2 -0
- data/lib/moov/models/components/product.rb +6 -2
- data/lib/moov/models/components/product.rbi +2 -0
- data/lib/moov/models/components/productcategories.rb +32 -0
- data/lib/moov/models/components/productcategories.rbi +13 -0
- data/lib/moov/models/components/productcategory.rb +48 -0
- data/lib/moov/models/components/productcategory.rbi +21 -0
- data/lib/moov/models/components/productrequest.rb +6 -2
- data/lib/moov/models/components/productrequest.rbi +2 -0
- data/lib/moov/models/components/schedulewindow.rb +40 -0
- data/lib/moov/models/components/schedulewindow.rbi +17 -0
- data/lib/moov/models/components/schedulewindowerror.rb +40 -0
- data/lib/moov/models/components/schedulewindowerror.rbi +17 -0
- data/lib/moov/models/components/schemebasicauth.rb +36 -0
- data/lib/moov/models/components/schemebasicauth.rbi +15 -0
- data/lib/moov/models/components/schemeoauth2auth.rb +40 -0
- data/lib/moov/models/components/schemeoauth2auth.rbi +17 -0
- data/lib/moov/models/components/transferfeepaidby.rb +32 -0
- data/lib/moov/models/components/transferfeepaidby.rbi +13 -0
- data/lib/moov/models/components/updateissuedcard.rb +6 -2
- data/lib/moov/models/components/updateissuedcard.rbi +2 -0
- data/lib/moov/models/components/updateissuingcontrols.rb +48 -0
- data/lib/moov/models/components/updateissuingcontrols.rbi +21 -0
- data/lib/moov/models/components/updateissuingcontrols_allowedschedule.rb +36 -0
- data/lib/moov/models/components/updateissuingcontrols_allowedschedule.rbi +15 -0
- data/lib/moov/models/components/updateissuingcontrols_merchantcategoryrestrictions.rb +44 -0
- data/lib/moov/models/components/updateissuingcontrols_merchantcategoryrestrictions.rbi +19 -0
- data/lib/moov/models/components/updateissuingcontrols_merchantrestrictions.rb +36 -0
- data/lib/moov/models/components/updateissuingcontrols_merchantrestrictions.rbi +15 -0
- data/lib/moov/models/components/updateissuingcontrolserror.rb +48 -0
- data/lib/moov/models/components/updateissuingcontrolserror.rbi +21 -0
- data/lib/moov/models/components.rb +29 -0
- data/lib/moov/models/errors/productrequestvalidationerror.rb +6 -2
- data/lib/moov/models/errors/productrequestvalidationerror.rbi +2 -0
- data/lib/moov/models/errors/updateissuedcarderror.rb +6 -2
- data/lib/moov/models/errors/updateissuedcarderror.rbi +2 -0
- data/lib/moov/models/operations/deleteavatar_request.rb +32 -0
- data/lib/moov/models/operations/deleteavatar_request.rbi +13 -0
- data/lib/moov/models/operations/deleteavatar_response.rb +44 -0
- data/lib/moov/models/operations/deleteavatar_response.rbi +19 -0
- data/lib/moov/models/operations/deleteavatar_security.rb +36 -0
- data/lib/moov/models/operations/deleteavatar_security.rbi +15 -0
- data/lib/moov/models/operations/listproductcategories_response.rb +48 -0
- data/lib/moov/models/operations/listproductcategories_response.rbi +21 -0
- data/lib/moov/models/operations/listproducts_request.rb +8 -2
- data/lib/moov/models/operations/listproducts_request.rbi +2 -0
- data/lib/moov/models/operations/uploadavatar_request.rb +36 -0
- data/lib/moov/models/operations/uploadavatar_request.rbi +15 -0
- data/lib/moov/models/operations/uploadavatar_response.rb +44 -0
- data/lib/moov/models/operations/uploadavatar_response.rbi +19 -0
- data/lib/moov/models/operations/uploadavatar_security.rb +36 -0
- data/lib/moov/models/operations/uploadavatar_security.rbi +15 -0
- data/lib/moov/models/operations.rb +7 -0
- data/lib/moov/products.rb +113 -8
- data/lib/moov/sdk_hooks/clientcredentials.rb +386 -0
- data/lib/moov/sdk_hooks/hooks.rb +6 -0
- data/lib/moov/sdk_hooks/oauth2scopes.rb +18 -0
- data/lib/moov/sdkconfiguration.rb +3 -3
- metadata +76 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: fafc7b0d93ed413deb7eb6005bc83e36bc6b5fc6db51aea814e6449db7baa1bd
|
|
4
|
+
data.tar.gz: 1a6a9def6472376b7e572471343940c2f0446ed63c5eaa5f7926f9e9b3338c80
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 17b2167b314339319091696954cc8e732b129fb1b1a7358481c21dda2b1e984b36ba63c58f7d76334bdcc7a55c3e237d09610cd892e7cad9ec76b84225d2b1a7
|
|
7
|
+
data.tar.gz: 46758da4c783554ca5f33145910abe6a4acecfaf81f7fbf2a4f746d47b49f5702f022fe7a79d746ab675745ac7050ca151fd94f19d559dec612769483787279f
|
data/lib/moov/avatars.rb
CHANGED
|
@@ -159,5 +159,280 @@ module Moov
|
|
|
159
159
|
|
|
160
160
|
end
|
|
161
161
|
end
|
|
162
|
+
|
|
163
|
+
|
|
164
|
+
sig { params(security: Models::Operations::UploadAvatarSecurity, avatar_upload_request: Models::Components::AvatarUploadRequest, unique_id: ::String, timeout_ms: T.nilable(Integer), http_headers: T.nilable(T::Hash[T.any(String, Symbol), String])).returns(Models::Operations::UploadAvatarResponse) }
|
|
165
|
+
def upload(security:, avatar_upload_request:, unique_id:, timeout_ms: nil, http_headers: nil)
|
|
166
|
+
# upload - Upload a user avatar image for an account.
|
|
167
|
+
#
|
|
168
|
+
# The image will be normalized to 512x512 PNG format and stored separately from
|
|
169
|
+
# automatically discovered logos. User-uploaded avatars take precedence over enriched avatars at read time.
|
|
170
|
+
#
|
|
171
|
+
# This endpoint only accepts accountID values for the uniqueID parameter.
|
|
172
|
+
#
|
|
173
|
+
# To access this endpoint using an [access token](https://docs.moov.io/api/authentication/access-tokens/)
|
|
174
|
+
# you'll need to specify the `/accounts.write` scope.
|
|
175
|
+
request = Models::Operations::UploadAvatarRequest.new(
|
|
176
|
+
unique_id: unique_id,
|
|
177
|
+
avatar_upload_request: avatar_upload_request
|
|
178
|
+
)
|
|
179
|
+
url, params = @sdk_configuration.get_server_details
|
|
180
|
+
base_url = Utils.template_url(url, params)
|
|
181
|
+
url = Utils.generate_url(
|
|
182
|
+
Models::Operations::UploadAvatarRequest,
|
|
183
|
+
base_url,
|
|
184
|
+
'/avatars/{uniqueID}',
|
|
185
|
+
request
|
|
186
|
+
)
|
|
187
|
+
headers = {}
|
|
188
|
+
headers = T.cast(headers, T::Hash[String, String])
|
|
189
|
+
req_content_type, data, form = Utils.serialize_request_body(request, false, false, :avatar_upload_request, :multipart)
|
|
190
|
+
headers['content-type'] = req_content_type
|
|
191
|
+
raise StandardError, 'request body is required' if data.nil? && form.nil?
|
|
192
|
+
|
|
193
|
+
if form && !form.empty?
|
|
194
|
+
body = Utils.encode_form(form)
|
|
195
|
+
elsif Utils.match_content_type(req_content_type, 'application/x-www-form-urlencoded')
|
|
196
|
+
body = URI.encode_www_form(T.cast(data, T::Hash[Symbol, Object]))
|
|
197
|
+
else
|
|
198
|
+
body = data
|
|
199
|
+
end
|
|
200
|
+
headers['Accept'] = 'application/json'
|
|
201
|
+
headers['user-agent'] = @sdk_configuration.user_agent
|
|
202
|
+
|
|
203
|
+
timeout = (timeout_ms.to_f / 1000) unless timeout_ms.nil?
|
|
204
|
+
timeout ||= @sdk_configuration.timeout
|
|
205
|
+
|
|
206
|
+
|
|
207
|
+
connection = @sdk_configuration.client
|
|
208
|
+
|
|
209
|
+
hook_ctx = SDKHooks::HookContext.new(
|
|
210
|
+
config: @sdk_configuration,
|
|
211
|
+
base_url: base_url,
|
|
212
|
+
oauth2_scopes: ['/accounts.write'],
|
|
213
|
+
operation_id: 'uploadAvatar',
|
|
214
|
+
security_source: -> { security }
|
|
215
|
+
)
|
|
216
|
+
|
|
217
|
+
error = T.let(nil, T.nilable(StandardError))
|
|
218
|
+
http_response = T.let(nil, T.nilable(Faraday::Response))
|
|
219
|
+
|
|
220
|
+
|
|
221
|
+
begin
|
|
222
|
+
http_response = T.must(connection).put(url) do |req|
|
|
223
|
+
req.body = body
|
|
224
|
+
req.headers.merge!(headers)
|
|
225
|
+
req.options.timeout = timeout unless timeout.nil?
|
|
226
|
+
Utils.configure_request_security(req, security)
|
|
227
|
+
http_headers&.each do |key, value|
|
|
228
|
+
req.headers[key.to_s] = value
|
|
229
|
+
end
|
|
230
|
+
|
|
231
|
+
@sdk_configuration.hooks.before_request(
|
|
232
|
+
hook_ctx: SDKHooks::BeforeRequestHookContext.new(
|
|
233
|
+
hook_ctx: hook_ctx
|
|
234
|
+
),
|
|
235
|
+
request: req
|
|
236
|
+
)
|
|
237
|
+
end
|
|
238
|
+
rescue StandardError => e
|
|
239
|
+
error = e
|
|
240
|
+
ensure
|
|
241
|
+
if http_response.nil? || Utils.error_status?(http_response.status)
|
|
242
|
+
http_response = @sdk_configuration.hooks.after_error(
|
|
243
|
+
error: error,
|
|
244
|
+
hook_ctx: SDKHooks::AfterErrorHookContext.new(
|
|
245
|
+
hook_ctx: hook_ctx
|
|
246
|
+
),
|
|
247
|
+
response: http_response
|
|
248
|
+
)
|
|
249
|
+
else
|
|
250
|
+
http_response = @sdk_configuration.hooks.after_success(
|
|
251
|
+
hook_ctx: SDKHooks::AfterSuccessHookContext.new(
|
|
252
|
+
hook_ctx: hook_ctx
|
|
253
|
+
),
|
|
254
|
+
response: http_response
|
|
255
|
+
)
|
|
256
|
+
end
|
|
257
|
+
|
|
258
|
+
if http_response.nil?
|
|
259
|
+
raise error if !error.nil?
|
|
260
|
+
raise 'no response'
|
|
261
|
+
end
|
|
262
|
+
end
|
|
263
|
+
|
|
264
|
+
content_type = http_response.headers.fetch('Content-Type', 'application/octet-stream')
|
|
265
|
+
if Utils.match_status_code(http_response.status, ['204'])
|
|
266
|
+
http_response = @sdk_configuration.hooks.after_success(
|
|
267
|
+
hook_ctx: SDKHooks::AfterSuccessHookContext.new(
|
|
268
|
+
hook_ctx: hook_ctx
|
|
269
|
+
),
|
|
270
|
+
response: http_response
|
|
271
|
+
)
|
|
272
|
+
return Models::Operations::UploadAvatarResponse.new(
|
|
273
|
+
status_code: http_response.status,
|
|
274
|
+
content_type: content_type,
|
|
275
|
+
raw_response: http_response,
|
|
276
|
+
headers: {}
|
|
277
|
+
)
|
|
278
|
+
elsif Utils.match_status_code(http_response.status, ['400'])
|
|
279
|
+
if Utils.match_content_type(content_type, 'application/json')
|
|
280
|
+
http_response = @sdk_configuration.hooks.after_success(
|
|
281
|
+
hook_ctx: SDKHooks::AfterSuccessHookContext.new(
|
|
282
|
+
hook_ctx: hook_ctx
|
|
283
|
+
),
|
|
284
|
+
response: http_response
|
|
285
|
+
)
|
|
286
|
+
response_data = http_response.env.response_body
|
|
287
|
+
obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::GenericError)
|
|
288
|
+
obj.raw_response = http_response
|
|
289
|
+
raise obj
|
|
290
|
+
else
|
|
291
|
+
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'
|
|
292
|
+
end
|
|
293
|
+
elsif Utils.match_status_code(http_response.status, ['401', '403', '404', '413', '415', '429'])
|
|
294
|
+
raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
|
|
295
|
+
elsif Utils.match_status_code(http_response.status, ['500', '504'])
|
|
296
|
+
raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
|
|
297
|
+
elsif Utils.match_status_code(http_response.status, ['4XX'])
|
|
298
|
+
raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
|
|
299
|
+
elsif Utils.match_status_code(http_response.status, ['5XX'])
|
|
300
|
+
raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
|
|
301
|
+
else
|
|
302
|
+
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'
|
|
303
|
+
|
|
304
|
+
end
|
|
305
|
+
end
|
|
306
|
+
|
|
307
|
+
|
|
308
|
+
sig { params(security: Models::Operations::DeleteAvatarSecurity, unique_id: ::String, timeout_ms: T.nilable(Integer), http_headers: T.nilable(T::Hash[T.any(String, Symbol), String])).returns(Models::Operations::DeleteAvatarResponse) }
|
|
309
|
+
def delete(security:, unique_id:, timeout_ms: nil, http_headers: nil)
|
|
310
|
+
# delete - Delete a user-uploaded avatar for an account.
|
|
311
|
+
#
|
|
312
|
+
# After deletion, the avatar endpoint will fall back to the enriched avatar
|
|
313
|
+
# or an account-type-aware fallback icon.
|
|
314
|
+
#
|
|
315
|
+
# This endpoint only accepts accountID values for the uniqueID parameter.
|
|
316
|
+
#
|
|
317
|
+
# To access this endpoint using an [access token](https://docs.moov.io/api/authentication/access-tokens/)
|
|
318
|
+
# you'll need to specify the `/accounts.write` scope.
|
|
319
|
+
request = Models::Operations::DeleteAvatarRequest.new(
|
|
320
|
+
unique_id: unique_id
|
|
321
|
+
)
|
|
322
|
+
url, params = @sdk_configuration.get_server_details
|
|
323
|
+
base_url = Utils.template_url(url, params)
|
|
324
|
+
url = Utils.generate_url(
|
|
325
|
+
Models::Operations::DeleteAvatarRequest,
|
|
326
|
+
base_url,
|
|
327
|
+
'/avatars/{uniqueID}',
|
|
328
|
+
request
|
|
329
|
+
)
|
|
330
|
+
headers = {}
|
|
331
|
+
headers = T.cast(headers, T::Hash[String, String])
|
|
332
|
+
headers['Accept'] = 'application/json'
|
|
333
|
+
headers['user-agent'] = @sdk_configuration.user_agent
|
|
334
|
+
|
|
335
|
+
timeout = (timeout_ms.to_f / 1000) unless timeout_ms.nil?
|
|
336
|
+
timeout ||= @sdk_configuration.timeout
|
|
337
|
+
|
|
338
|
+
|
|
339
|
+
connection = @sdk_configuration.client
|
|
340
|
+
|
|
341
|
+
hook_ctx = SDKHooks::HookContext.new(
|
|
342
|
+
config: @sdk_configuration,
|
|
343
|
+
base_url: base_url,
|
|
344
|
+
oauth2_scopes: ['/accounts.write'],
|
|
345
|
+
operation_id: 'deleteAvatar',
|
|
346
|
+
security_source: -> { security }
|
|
347
|
+
)
|
|
348
|
+
|
|
349
|
+
error = T.let(nil, T.nilable(StandardError))
|
|
350
|
+
http_response = T.let(nil, T.nilable(Faraday::Response))
|
|
351
|
+
|
|
352
|
+
|
|
353
|
+
begin
|
|
354
|
+
http_response = T.must(connection).delete(url) do |req|
|
|
355
|
+
req.headers.merge!(headers)
|
|
356
|
+
req.options.timeout = timeout unless timeout.nil?
|
|
357
|
+
Utils.configure_request_security(req, security)
|
|
358
|
+
http_headers&.each do |key, value|
|
|
359
|
+
req.headers[key.to_s] = value
|
|
360
|
+
end
|
|
361
|
+
|
|
362
|
+
@sdk_configuration.hooks.before_request(
|
|
363
|
+
hook_ctx: SDKHooks::BeforeRequestHookContext.new(
|
|
364
|
+
hook_ctx: hook_ctx
|
|
365
|
+
),
|
|
366
|
+
request: req
|
|
367
|
+
)
|
|
368
|
+
end
|
|
369
|
+
rescue StandardError => e
|
|
370
|
+
error = e
|
|
371
|
+
ensure
|
|
372
|
+
if http_response.nil? || Utils.error_status?(http_response.status)
|
|
373
|
+
http_response = @sdk_configuration.hooks.after_error(
|
|
374
|
+
error: error,
|
|
375
|
+
hook_ctx: SDKHooks::AfterErrorHookContext.new(
|
|
376
|
+
hook_ctx: hook_ctx
|
|
377
|
+
),
|
|
378
|
+
response: http_response
|
|
379
|
+
)
|
|
380
|
+
else
|
|
381
|
+
http_response = @sdk_configuration.hooks.after_success(
|
|
382
|
+
hook_ctx: SDKHooks::AfterSuccessHookContext.new(
|
|
383
|
+
hook_ctx: hook_ctx
|
|
384
|
+
),
|
|
385
|
+
response: http_response
|
|
386
|
+
)
|
|
387
|
+
end
|
|
388
|
+
|
|
389
|
+
if http_response.nil?
|
|
390
|
+
raise error if !error.nil?
|
|
391
|
+
raise 'no response'
|
|
392
|
+
end
|
|
393
|
+
end
|
|
394
|
+
|
|
395
|
+
content_type = http_response.headers.fetch('Content-Type', 'application/octet-stream')
|
|
396
|
+
if Utils.match_status_code(http_response.status, ['204'])
|
|
397
|
+
http_response = @sdk_configuration.hooks.after_success(
|
|
398
|
+
hook_ctx: SDKHooks::AfterSuccessHookContext.new(
|
|
399
|
+
hook_ctx: hook_ctx
|
|
400
|
+
),
|
|
401
|
+
response: http_response
|
|
402
|
+
)
|
|
403
|
+
return Models::Operations::DeleteAvatarResponse.new(
|
|
404
|
+
status_code: http_response.status,
|
|
405
|
+
content_type: content_type,
|
|
406
|
+
raw_response: http_response,
|
|
407
|
+
headers: {}
|
|
408
|
+
)
|
|
409
|
+
elsif Utils.match_status_code(http_response.status, ['400'])
|
|
410
|
+
if Utils.match_content_type(content_type, 'application/json')
|
|
411
|
+
http_response = @sdk_configuration.hooks.after_success(
|
|
412
|
+
hook_ctx: SDKHooks::AfterSuccessHookContext.new(
|
|
413
|
+
hook_ctx: hook_ctx
|
|
414
|
+
),
|
|
415
|
+
response: http_response
|
|
416
|
+
)
|
|
417
|
+
response_data = http_response.env.response_body
|
|
418
|
+
obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::GenericError)
|
|
419
|
+
obj.raw_response = http_response
|
|
420
|
+
raise obj
|
|
421
|
+
else
|
|
422
|
+
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'
|
|
423
|
+
end
|
|
424
|
+
elsif Utils.match_status_code(http_response.status, ['401', '403', '404', '429'])
|
|
425
|
+
raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
|
|
426
|
+
elsif Utils.match_status_code(http_response.status, ['500', '504'])
|
|
427
|
+
raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
|
|
428
|
+
elsif Utils.match_status_code(http_response.status, ['4XX'])
|
|
429
|
+
raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
|
|
430
|
+
elsif Utils.match_status_code(http_response.status, ['5XX'])
|
|
431
|
+
raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
|
|
432
|
+
else
|
|
433
|
+
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'
|
|
434
|
+
|
|
435
|
+
end
|
|
436
|
+
end
|
|
162
437
|
end
|
|
163
438
|
end
|
|
@@ -0,0 +1,36 @@
|
|
|
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 AllowedScheduleError
|
|
12
|
+
extend T::Sig
|
|
13
|
+
include Crystalline::MetadataFields
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
field :timezone, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('timezone') } }
|
|
17
|
+
|
|
18
|
+
field :windows, Crystalline::Nilable.new(Crystalline::Hash.new(Symbol, Models::Components::ScheduleWindowError)), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('windows') } }
|
|
19
|
+
|
|
20
|
+
sig { params(timezone: T.nilable(::String), windows: T.nilable(T::Hash[Symbol, Models::Components::ScheduleWindowError])).void }
|
|
21
|
+
def initialize(timezone: nil, windows: nil)
|
|
22
|
+
@timezone = timezone
|
|
23
|
+
@windows = windows
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
sig { params(other: T.untyped).returns(T::Boolean) }
|
|
27
|
+
def ==(other)
|
|
28
|
+
return false unless other.is_a? self.class
|
|
29
|
+
return false unless @timezone == other.timezone
|
|
30
|
+
return false unless @windows == other.windows
|
|
31
|
+
true
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# typed: true
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class Moov::Models::Components::AllowedScheduleError
|
|
6
|
+
extend ::Crystalline::MetadataFields::ClassMethods
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class Moov::Models::Components::AllowedScheduleError
|
|
11
|
+
def timezone(); end
|
|
12
|
+
def timezone=(str_); end
|
|
13
|
+
def windows(); end
|
|
14
|
+
def windows=(str_); end
|
|
15
|
+
end
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
|
|
2
|
+
|
|
3
|
+
# typed: true
|
|
4
|
+
# frozen_string_literal: true
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
module Moov
|
|
8
|
+
module Models
|
|
9
|
+
module Components
|
|
10
|
+
|
|
11
|
+
class AvatarUploadRequest
|
|
12
|
+
extend T::Sig
|
|
13
|
+
include Crystalline::MetadataFields
|
|
14
|
+
|
|
15
|
+
# A JPEG, PNG, or WebP image file to upload as an avatar.
|
|
16
|
+
field :file, Models::Components::AvatarUploadRequestFile, { 'multipart_form': { 'file': true, 'field_name': 'file' } }
|
|
17
|
+
|
|
18
|
+
sig { params(file: Models::Components::AvatarUploadRequestFile).void }
|
|
19
|
+
def initialize(file:)
|
|
20
|
+
@file = file
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
sig { params(other: T.untyped).returns(T::Boolean) }
|
|
24
|
+
def ==(other)
|
|
25
|
+
return false unless other.is_a? self.class
|
|
26
|
+
return false unless @file == other.file
|
|
27
|
+
true
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# typed: true
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class Moov::Models::Components::AvatarUploadRequest
|
|
6
|
+
extend ::Crystalline::MetadataFields::ClassMethods
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class Moov::Models::Components::AvatarUploadRequest
|
|
11
|
+
def file(); end
|
|
12
|
+
def file=(str_); end
|
|
13
|
+
end
|
|
@@ -0,0 +1,36 @@
|
|
|
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 AvatarUploadRequestFile
|
|
12
|
+
extend T::Sig
|
|
13
|
+
include Crystalline::MetadataFields
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
field :file_name, ::String, { 'multipart_form': { 'field_name': 'fileName' } }
|
|
17
|
+
|
|
18
|
+
field :content, ::String, { 'multipart_form': { 'content': true } }
|
|
19
|
+
|
|
20
|
+
sig { params(file_name: ::String, content: ::String).void }
|
|
21
|
+
def initialize(file_name:, content:)
|
|
22
|
+
@file_name = file_name
|
|
23
|
+
@content = content
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
sig { params(other: T.untyped).returns(T::Boolean) }
|
|
27
|
+
def ==(other)
|
|
28
|
+
return false unless other.is_a? self.class
|
|
29
|
+
return false unless @file_name == other.file_name
|
|
30
|
+
return false unless @content == other.content
|
|
31
|
+
true
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# typed: true
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class Moov::Models::Components::AvatarUploadRequestFile
|
|
6
|
+
extend ::Crystalline::MetadataFields::ClassMethods
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class Moov::Models::Components::AvatarUploadRequestFile
|
|
11
|
+
def file_name(); end
|
|
12
|
+
def file_name=(str_); end
|
|
13
|
+
def content(); end
|
|
14
|
+
def content=(str_); end
|
|
15
|
+
end
|
|
@@ -25,6 +25,7 @@ module Moov
|
|
|
25
25
|
SEND_FUNDS_ACH = new('send-funds.ach')
|
|
26
26
|
SEND_FUNDS_RTP = new('send-funds.rtp')
|
|
27
27
|
SEND_FUNDS_INSTANT_BANK = new('send-funds.instant-bank')
|
|
28
|
+
SEND_FUNDS_WIRE = new('send-funds.wire')
|
|
28
29
|
COLLECT_FUNDS = new('collect-funds')
|
|
29
30
|
COLLECT_FUNDS_CARD_PAYMENTS = new('collect-funds.card-payments')
|
|
30
31
|
MONEY_TRANSFER_PULL_FROM_CARD = new('money-transfer.pull-from-card')
|
|
@@ -31,9 +31,11 @@ module Moov
|
|
|
31
31
|
field :line_items, Crystalline::Nilable.new(Models::Components::CreateTransferLineItems), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('lineItems') } }
|
|
32
32
|
|
|
33
33
|
field :amount_details, Crystalline::Nilable.new(Models::Components::CreateTransferAmountDetails), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('amountDetails') } }
|
|
34
|
+
# Indicates which party bears fees for the transfer, keyed by fee type.
|
|
35
|
+
field :fee_paid_by, Crystalline::Nilable.new(Models::Components::TransferFeePaidBy), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('feePaidBy') } }
|
|
34
36
|
|
|
35
|
-
sig { params(source: Models::Components::CreateTransferSource, destination: Models::Components::CreateTransferDestination, amount: Models::Components::Amount, facilitator_fee: T.nilable(Models::Components::FacilitatorFee), description: T.nilable(::String), metadata: T.nilable(T::Hash[Symbol, ::String]), foreign_id: T.nilable(::String), line_items: T.nilable(Models::Components::CreateTransferLineItems), amount_details: T.nilable(Models::Components::CreateTransferAmountDetails)).void }
|
|
36
|
-
def initialize(source:, destination:, amount:, facilitator_fee: nil, description: nil, metadata: nil, foreign_id: nil, line_items: nil, amount_details: nil)
|
|
37
|
+
sig { params(source: Models::Components::CreateTransferSource, destination: Models::Components::CreateTransferDestination, amount: Models::Components::Amount, facilitator_fee: T.nilable(Models::Components::FacilitatorFee), description: T.nilable(::String), metadata: T.nilable(T::Hash[Symbol, ::String]), foreign_id: T.nilable(::String), line_items: T.nilable(Models::Components::CreateTransferLineItems), amount_details: T.nilable(Models::Components::CreateTransferAmountDetails), fee_paid_by: T.nilable(Models::Components::TransferFeePaidBy)).void }
|
|
38
|
+
def initialize(source:, destination:, amount:, facilitator_fee: nil, description: nil, metadata: nil, foreign_id: nil, line_items: nil, amount_details: nil, fee_paid_by: nil)
|
|
37
39
|
@source = source
|
|
38
40
|
@destination = destination
|
|
39
41
|
@amount = amount
|
|
@@ -43,6 +45,7 @@ module Moov
|
|
|
43
45
|
@foreign_id = foreign_id
|
|
44
46
|
@line_items = line_items
|
|
45
47
|
@amount_details = amount_details
|
|
48
|
+
@fee_paid_by = fee_paid_by
|
|
46
49
|
end
|
|
47
50
|
|
|
48
51
|
sig { params(other: T.untyped).returns(T::Boolean) }
|
|
@@ -57,6 +60,7 @@ module Moov
|
|
|
57
60
|
return false unless @foreign_id == other.foreign_id
|
|
58
61
|
return false unless @line_items == other.line_items
|
|
59
62
|
return false unless @amount_details == other.amount_details
|
|
63
|
+
return false unless @fee_paid_by == other.fee_paid_by
|
|
60
64
|
true
|
|
61
65
|
end
|
|
62
66
|
end
|
|
@@ -0,0 +1,19 @@
|
|
|
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
|
+
# FeePaidBy - Indicates which party to a money movement bears an incurred fee.
|
|
11
|
+
class FeePaidBy < T::Enum
|
|
12
|
+
enums do
|
|
13
|
+
SOURCE = new('source')
|
|
14
|
+
DESTINATION = new('destination')
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -45,10 +45,10 @@ module Moov
|
|
|
45
45
|
field :metadata, Crystalline::Nilable.new(Crystalline::Hash.new(Symbol, ::String)), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('metadata') } }
|
|
46
46
|
# Billing address associated with the card.
|
|
47
47
|
field :billing_address, Crystalline::Nilable.new(Models::Components::Address), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('billingAddress') } }
|
|
48
|
+
# Spend controls applied to an issued card, including velocity runtime state.
|
|
49
|
+
field :controls, Crystalline::Nilable.new(Models::Components::IssuedControls), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('controls') } }
|
|
48
50
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
sig { params(issued_card_id: ::String, brand: Models::Components::CardBrand, last_four_card_number: ::String, expiration: Models::Components::CardExpiration, funding_wallet_id: ::String, state: Models::Components::IssuedCardState, form_factor: Models::Components::IssuedCardFormFactor, created_on: ::DateTime, updated_on: ::DateTime, pan: ::String, cvv: ::String, authorized_user_account_id: T.nilable(::String), nickname: T.nilable(::String), metadata: T.nilable(T::Hash[Symbol, ::String]), billing_address: T.nilable(Models::Components::Address), controls: T.nilable(Models::Components::IssuingControls)).void }
|
|
51
|
+
sig { params(issued_card_id: ::String, brand: Models::Components::CardBrand, last_four_card_number: ::String, expiration: Models::Components::CardExpiration, funding_wallet_id: ::String, state: Models::Components::IssuedCardState, form_factor: Models::Components::IssuedCardFormFactor, created_on: ::DateTime, updated_on: ::DateTime, pan: ::String, cvv: ::String, authorized_user_account_id: T.nilable(::String), nickname: T.nilable(::String), metadata: T.nilable(T::Hash[Symbol, ::String]), billing_address: T.nilable(Models::Components::Address), controls: T.nilable(Models::Components::IssuedControls)).void }
|
|
52
52
|
def initialize(issued_card_id:, brand:, last_four_card_number:, expiration:, funding_wallet_id:, state:, form_factor:, created_on:, updated_on:, pan:, cvv:, authorized_user_account_id: nil, nickname: nil, metadata: nil, billing_address: nil, controls: nil)
|
|
53
53
|
@issued_card_id = issued_card_id
|
|
54
54
|
@brand = brand
|
|
@@ -30,9 +30,11 @@ module Moov
|
|
|
30
30
|
field :fee_group, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('feeGroup') } }
|
|
31
31
|
# Unique identifier for this residual payment calculation.
|
|
32
32
|
field :residual_id, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('residualID') } }
|
|
33
|
+
# Indicates which party to the money movement bore this fee.
|
|
34
|
+
field :fee_paid_by, Crystalline::Nilable.new(Models::Components::FeePaidBy), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('feePaidBy'), 'decoder': ::Moov::Utils.enum_from_string(Models::Components::FeePaidBy, true) } }
|
|
33
35
|
|
|
34
|
-
sig { params(fee_id: T.nilable(::String), account_id: T.nilable(::String), wallet_id: T.nilable(::String), created_on: T.nilable(::DateTime), fee_name: T.nilable(::String), amount: T.nilable(Models::Components::AmountDecimal), generated_by: T.nilable(Models::Components::GeneratedBy), fee_group: T.nilable(::String), residual_id: T.nilable(::String)).void }
|
|
35
|
-
def initialize(fee_id: nil, account_id: nil, wallet_id: nil, created_on: nil, fee_name: nil, amount: nil, generated_by: nil, fee_group: nil, residual_id: nil)
|
|
36
|
+
sig { params(fee_id: T.nilable(::String), account_id: T.nilable(::String), wallet_id: T.nilable(::String), created_on: T.nilable(::DateTime), fee_name: T.nilable(::String), amount: T.nilable(Models::Components::AmountDecimal), generated_by: T.nilable(Models::Components::GeneratedBy), fee_group: T.nilable(::String), residual_id: T.nilable(::String), fee_paid_by: T.nilable(Models::Components::FeePaidBy)).void }
|
|
37
|
+
def initialize(fee_id: nil, account_id: nil, wallet_id: nil, created_on: nil, fee_name: nil, amount: nil, generated_by: nil, fee_group: nil, residual_id: nil, fee_paid_by: nil)
|
|
36
38
|
@fee_id = fee_id
|
|
37
39
|
@account_id = account_id
|
|
38
40
|
@wallet_id = wallet_id
|
|
@@ -42,6 +44,7 @@ module Moov
|
|
|
42
44
|
@generated_by = generated_by
|
|
43
45
|
@fee_group = fee_group
|
|
44
46
|
@residual_id = residual_id
|
|
47
|
+
@fee_paid_by = fee_paid_by
|
|
45
48
|
end
|
|
46
49
|
|
|
47
50
|
sig { params(other: T.untyped).returns(T::Boolean) }
|
|
@@ -56,6 +59,7 @@ module Moov
|
|
|
56
59
|
return false unless @generated_by == other.generated_by
|
|
57
60
|
return false unless @fee_group == other.fee_group
|
|
58
61
|
return false unless @residual_id == other.residual_id
|
|
62
|
+
return false unless @fee_paid_by == other.fee_paid_by
|
|
59
63
|
true
|
|
60
64
|
end
|
|
61
65
|
end
|
|
@@ -41,10 +41,10 @@ module Moov
|
|
|
41
41
|
field :metadata, Crystalline::Nilable.new(Crystalline::Hash.new(Symbol, ::String)), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('metadata') } }
|
|
42
42
|
# Billing address associated with the card.
|
|
43
43
|
field :billing_address, Crystalline::Nilable.new(Models::Components::Address), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('billingAddress') } }
|
|
44
|
+
# Spend controls applied to an issued card, including velocity runtime state.
|
|
45
|
+
field :controls, Crystalline::Nilable.new(Models::Components::IssuedControls), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('controls') } }
|
|
44
46
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
sig { params(issued_card_id: ::String, brand: Models::Components::CardBrand, last_four_card_number: ::String, expiration: Models::Components::CardExpiration, funding_wallet_id: ::String, state: Models::Components::IssuedCardState, form_factor: Models::Components::IssuedCardFormFactor, created_on: ::DateTime, updated_on: ::DateTime, authorized_user_account_id: T.nilable(::String), nickname: T.nilable(::String), metadata: T.nilable(T::Hash[Symbol, ::String]), billing_address: T.nilable(Models::Components::Address), controls: T.nilable(Models::Components::IssuingControls)).void }
|
|
47
|
+
sig { params(issued_card_id: ::String, brand: Models::Components::CardBrand, last_four_card_number: ::String, expiration: Models::Components::CardExpiration, funding_wallet_id: ::String, state: Models::Components::IssuedCardState, form_factor: Models::Components::IssuedCardFormFactor, created_on: ::DateTime, updated_on: ::DateTime, authorized_user_account_id: T.nilable(::String), nickname: T.nilable(::String), metadata: T.nilable(T::Hash[Symbol, ::String]), billing_address: T.nilable(Models::Components::Address), controls: T.nilable(Models::Components::IssuedControls)).void }
|
|
48
48
|
def initialize(issued_card_id:, brand:, last_four_card_number:, expiration:, funding_wallet_id:, state:, form_factor:, created_on:, updated_on:, authorized_user_account_id: nil, nickname: nil, metadata: nil, billing_address: nil, controls: nil)
|
|
49
49
|
@issued_card_id = issued_card_id
|
|
50
50
|
@brand = brand
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
|
|
2
|
+
|
|
3
|
+
# typed: true
|
|
4
|
+
# frozen_string_literal: true
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
module Moov
|
|
8
|
+
module Models
|
|
9
|
+
module Components
|
|
10
|
+
# Spend controls applied to an issued card, including velocity runtime state.
|
|
11
|
+
class IssuedControls
|
|
12
|
+
extend T::Sig
|
|
13
|
+
include Crystalline::MetadataFields
|
|
14
|
+
|
|
15
|
+
# Indicates if the card is single-use. If true, the card closes after the first authorization.
|
|
16
|
+
field :single_use, Crystalline::Nilable.new(Crystalline::Boolean.new), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('singleUse') } }
|
|
17
|
+
# The spending limits per time interval, including current runtime state.
|
|
18
|
+
field :velocity_limits, Crystalline::Nilable.new(Crystalline::Array.new(Models::Components::IssuedVelocityLimit)), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('velocityLimits') } }
|
|
19
|
+
# Restricts card usage by merchant category. When not set, all categories are allowed.
|
|
20
|
+
field :merchant_category_restrictions, Crystalline::Nilable.new(Models::Components::MerchantCategoryRestrictions), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('merchantCategoryRestrictions') } }
|
|
21
|
+
# Restricts card usage to specific merchants, or blocks specific merchants.
|
|
22
|
+
field :merchant_restrictions, Crystalline::Nilable.new(Models::Components::MerchantRestrictions), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('merchantRestrictions') } }
|
|
23
|
+
# Limits card usage to specific days and times.
|
|
24
|
+
field :allowed_schedule, Crystalline::Nilable.new(Models::Components::IssuedControlsAllowedSchedule), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('allowedSchedule') } }
|
|
25
|
+
# A spend cutoff date and time. When set, all authorizations after this datetime are declined regardless of other controls.
|
|
26
|
+
field :expires_on, Crystalline::Nilable.new(::DateTime), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('expiresOn'), 'decoder': ::Moov::Utils.datetime_from_iso_format(true) } }
|
|
27
|
+
|
|
28
|
+
sig { params(single_use: T.nilable(T::Boolean), velocity_limits: T.nilable(T::Array[Models::Components::IssuedVelocityLimit]), merchant_category_restrictions: T.nilable(Models::Components::MerchantCategoryRestrictions), merchant_restrictions: T.nilable(Models::Components::MerchantRestrictions), allowed_schedule: T.nilable(Models::Components::IssuedControlsAllowedSchedule), expires_on: T.nilable(::DateTime)).void }
|
|
29
|
+
def initialize(single_use: nil, velocity_limits: nil, merchant_category_restrictions: nil, merchant_restrictions: nil, allowed_schedule: nil, expires_on: nil)
|
|
30
|
+
@single_use = single_use
|
|
31
|
+
@velocity_limits = velocity_limits
|
|
32
|
+
@merchant_category_restrictions = merchant_category_restrictions
|
|
33
|
+
@merchant_restrictions = merchant_restrictions
|
|
34
|
+
@allowed_schedule = allowed_schedule
|
|
35
|
+
@expires_on = expires_on
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
sig { params(other: T.untyped).returns(T::Boolean) }
|
|
39
|
+
def ==(other)
|
|
40
|
+
return false unless other.is_a? self.class
|
|
41
|
+
return false unless @single_use == other.single_use
|
|
42
|
+
return false unless @velocity_limits == other.velocity_limits
|
|
43
|
+
return false unless @merchant_category_restrictions == other.merchant_category_restrictions
|
|
44
|
+
return false unless @merchant_restrictions == other.merchant_restrictions
|
|
45
|
+
return false unless @allowed_schedule == other.allowed_schedule
|
|
46
|
+
return false unless @expires_on == other.expires_on
|
|
47
|
+
true
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|