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.
Files changed (116) hide show
  1. checksums.yaml +4 -4
  2. data/lib/moov/avatars.rb +275 -0
  3. data/lib/moov/models/components/allowedscheduleerror.rb +36 -0
  4. data/lib/moov/models/components/allowedscheduleerror.rbi +15 -0
  5. data/lib/moov/models/components/avataruploadrequest.rb +32 -0
  6. data/lib/moov/models/components/avataruploadrequest.rbi +13 -0
  7. data/lib/moov/models/components/avataruploadrequest_file.rb +36 -0
  8. data/lib/moov/models/components/avataruploadrequest_file.rbi +15 -0
  9. data/lib/moov/models/components/capabilityid.rb +1 -0
  10. data/lib/moov/models/components/createtransfer.rb +6 -2
  11. data/lib/moov/models/components/createtransfer.rbi +2 -0
  12. data/lib/moov/models/components/feepaidby.rb +19 -0
  13. data/lib/moov/models/components/feepaidby.rbi +11 -0
  14. data/lib/moov/models/components/fullissuedcard.rb +3 -3
  15. data/lib/moov/models/components/incurredfee.rb +6 -2
  16. data/lib/moov/models/components/incurredfee.rbi +2 -0
  17. data/lib/moov/models/components/issuedcard.rb +3 -3
  18. data/lib/moov/models/components/issuedcontrols.rb +52 -0
  19. data/lib/moov/models/components/issuedcontrols.rbi +23 -0
  20. data/lib/moov/models/components/issuedcontrols_allowedschedule.rb +36 -0
  21. data/lib/moov/models/components/issuedcontrols_allowedschedule.rbi +15 -0
  22. data/lib/moov/models/components/issuedvelocitylimit.rb +60 -0
  23. data/lib/moov/models/components/issuedvelocitylimit.rbi +27 -0
  24. data/lib/moov/models/components/issuingcontrols.rb +18 -2
  25. data/lib/moov/models/components/issuingcontrols.rbi +8 -0
  26. data/lib/moov/models/components/issuingcontrols_allowedschedule.rb +36 -0
  27. data/lib/moov/models/components/issuingcontrols_allowedschedule.rbi +15 -0
  28. data/lib/moov/models/components/issuingcontrolserror.rb +18 -2
  29. data/lib/moov/models/components/issuingcontrolserror.rbi +8 -0
  30. data/lib/moov/models/components/issuingcontrolsrestrictionmode.rb +19 -0
  31. data/lib/moov/models/components/issuingcontrolsrestrictionmode.rbi +11 -0
  32. data/lib/moov/models/components/issuingintervallimit.rb +4 -1
  33. data/lib/moov/models/components/issuingmerchantcategory.rb +43 -0
  34. data/lib/moov/models/components/issuingmerchantcategory.rbi +11 -0
  35. data/lib/moov/models/components/issuingscheduleday.rb +24 -0
  36. data/lib/moov/models/components/issuingscheduleday.rbi +11 -0
  37. data/lib/moov/models/components/issuingvelocitylimit.rb +11 -7
  38. data/lib/moov/models/components/issuingvelocitylimit.rbi +4 -2
  39. data/lib/moov/models/components/issuingvelocitylimiterror.rb +6 -2
  40. data/lib/moov/models/components/issuingvelocitylimiterror.rbi +2 -0
  41. data/lib/moov/models/components/merchantcategoryrestrictions.rb +44 -0
  42. data/lib/moov/models/components/merchantcategoryrestrictions.rbi +19 -0
  43. data/lib/moov/models/components/merchantcategoryrestrictionserror.rb +44 -0
  44. data/lib/moov/models/components/merchantcategoryrestrictionserror.rbi +19 -0
  45. data/lib/moov/models/components/merchantentry.rb +40 -0
  46. data/lib/moov/models/components/merchantentry.rbi +17 -0
  47. data/lib/moov/models/components/merchantentryerror.rb +36 -0
  48. data/lib/moov/models/components/merchantentryerror.rbi +15 -0
  49. data/lib/moov/models/components/merchantrestrictions.rb +36 -0
  50. data/lib/moov/models/components/merchantrestrictions.rbi +15 -0
  51. data/lib/moov/models/components/merchantrestrictionserror.rb +36 -0
  52. data/lib/moov/models/components/merchantrestrictionserror.rbi +15 -0
  53. data/lib/moov/models/components/paymentlinkpayoutdetails.rb +8 -2
  54. data/lib/moov/models/components/paymentlinkpayoutdetails.rbi +2 -0
  55. data/lib/moov/models/components/paymentlinkpayoutdetailsupdate.rb +8 -2
  56. data/lib/moov/models/components/paymentlinkpayoutdetailsupdate.rbi +2 -0
  57. data/lib/moov/models/components/payoutdetailserror.rb +6 -2
  58. data/lib/moov/models/components/payoutdetailserror.rbi +2 -0
  59. data/lib/moov/models/components/product.rb +6 -2
  60. data/lib/moov/models/components/product.rbi +2 -0
  61. data/lib/moov/models/components/productcategories.rb +32 -0
  62. data/lib/moov/models/components/productcategories.rbi +13 -0
  63. data/lib/moov/models/components/productcategory.rb +48 -0
  64. data/lib/moov/models/components/productcategory.rbi +21 -0
  65. data/lib/moov/models/components/productrequest.rb +6 -2
  66. data/lib/moov/models/components/productrequest.rbi +2 -0
  67. data/lib/moov/models/components/schedulewindow.rb +40 -0
  68. data/lib/moov/models/components/schedulewindow.rbi +17 -0
  69. data/lib/moov/models/components/schedulewindowerror.rb +40 -0
  70. data/lib/moov/models/components/schedulewindowerror.rbi +17 -0
  71. data/lib/moov/models/components/schemebasicauth.rb +36 -0
  72. data/lib/moov/models/components/schemebasicauth.rbi +15 -0
  73. data/lib/moov/models/components/schemeoauth2auth.rb +40 -0
  74. data/lib/moov/models/components/schemeoauth2auth.rbi +17 -0
  75. data/lib/moov/models/components/transferfeepaidby.rb +32 -0
  76. data/lib/moov/models/components/transferfeepaidby.rbi +13 -0
  77. data/lib/moov/models/components/updateissuedcard.rb +6 -2
  78. data/lib/moov/models/components/updateissuedcard.rbi +2 -0
  79. data/lib/moov/models/components/updateissuingcontrols.rb +48 -0
  80. data/lib/moov/models/components/updateissuingcontrols.rbi +21 -0
  81. data/lib/moov/models/components/updateissuingcontrols_allowedschedule.rb +36 -0
  82. data/lib/moov/models/components/updateissuingcontrols_allowedschedule.rbi +15 -0
  83. data/lib/moov/models/components/updateissuingcontrols_merchantcategoryrestrictions.rb +44 -0
  84. data/lib/moov/models/components/updateissuingcontrols_merchantcategoryrestrictions.rbi +19 -0
  85. data/lib/moov/models/components/updateissuingcontrols_merchantrestrictions.rb +36 -0
  86. data/lib/moov/models/components/updateissuingcontrols_merchantrestrictions.rbi +15 -0
  87. data/lib/moov/models/components/updateissuingcontrolserror.rb +48 -0
  88. data/lib/moov/models/components/updateissuingcontrolserror.rbi +21 -0
  89. data/lib/moov/models/components.rb +29 -0
  90. data/lib/moov/models/errors/productrequestvalidationerror.rb +6 -2
  91. data/lib/moov/models/errors/productrequestvalidationerror.rbi +2 -0
  92. data/lib/moov/models/errors/updateissuedcarderror.rb +6 -2
  93. data/lib/moov/models/errors/updateissuedcarderror.rbi +2 -0
  94. data/lib/moov/models/operations/deleteavatar_request.rb +32 -0
  95. data/lib/moov/models/operations/deleteavatar_request.rbi +13 -0
  96. data/lib/moov/models/operations/deleteavatar_response.rb +44 -0
  97. data/lib/moov/models/operations/deleteavatar_response.rbi +19 -0
  98. data/lib/moov/models/operations/deleteavatar_security.rb +36 -0
  99. data/lib/moov/models/operations/deleteavatar_security.rbi +15 -0
  100. data/lib/moov/models/operations/listproductcategories_response.rb +48 -0
  101. data/lib/moov/models/operations/listproductcategories_response.rbi +21 -0
  102. data/lib/moov/models/operations/listproducts_request.rb +8 -2
  103. data/lib/moov/models/operations/listproducts_request.rbi +2 -0
  104. data/lib/moov/models/operations/uploadavatar_request.rb +36 -0
  105. data/lib/moov/models/operations/uploadavatar_request.rbi +15 -0
  106. data/lib/moov/models/operations/uploadavatar_response.rb +44 -0
  107. data/lib/moov/models/operations/uploadavatar_response.rbi +19 -0
  108. data/lib/moov/models/operations/uploadavatar_security.rb +36 -0
  109. data/lib/moov/models/operations/uploadavatar_security.rbi +15 -0
  110. data/lib/moov/models/operations.rb +7 -0
  111. data/lib/moov/products.rb +113 -8
  112. data/lib/moov/sdk_hooks/clientcredentials.rb +386 -0
  113. data/lib/moov/sdk_hooks/hooks.rb +6 -0
  114. data/lib/moov/sdk_hooks/oauth2scopes.rb +18 -0
  115. data/lib/moov/sdkconfiguration.rb +3 -3
  116. metadata +76 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4c39ee5d0dc0577969aea7cb6c45d1050a9d3222efb158ca64f3626270e08f60
4
- data.tar.gz: 9d900c61859138bf9e345805cf3933f7affd2c7448c18d6e27f23b1448c9cfa3
3
+ metadata.gz: fafc7b0d93ed413deb7eb6005bc83e36bc6b5fc6db51aea814e6449db7baa1bd
4
+ data.tar.gz: 1a6a9def6472376b7e572471343940c2f0446ed63c5eaa5f7926f9e9b3338c80
5
5
  SHA512:
6
- metadata.gz: 18f86683ce43cf2a6910985bbb58084d87043bf5aa018d455491dd70496fd750787d09590e363a610fa018b9eba80fdbf78a3d08fa46c91d67a083bb09c0c83b
7
- data.tar.gz: fa9b893a0d7426b983a01ed471f78844c3f2a96a80163843a48171b8e6794459b4aff1a82eab49a61362b8e9974517bee84ed38f04b3b2ed8833af144c1a6398
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
@@ -26,4 +26,6 @@ class Moov::Models::Components::CreateTransfer
26
26
  def line_items=(str_); end
27
27
  def amount_details(); end
28
28
  def amount_details=(str_); end
29
+ def fee_paid_by(); end
30
+ def fee_paid_by=(str_); end
29
31
  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
@@ -0,0 +1,11 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+
5
+ class Moov::Models::Components::FeePaidBy
6
+ extend ::Crystalline::MetadataFields::ClassMethods
7
+ end
8
+
9
+
10
+ class Moov::Models::Components::FeePaidBy
11
+ 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
- field :controls, Crystalline::Nilable.new(Models::Components::IssuingControls), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('controls') } }
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
@@ -26,4 +26,6 @@ class Moov::Models::Components::IncurredFee
26
26
  def fee_group=(str_); end
27
27
  def residual_id(); end
28
28
  def residual_id=(str_); end
29
+ def fee_paid_by(); end
30
+ def fee_paid_by=(str_); end
29
31
  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
- field :controls, Crystalline::Nilable.new(Models::Components::IssuingControls), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('controls') } }
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