moov_ruby 26.10.0.pre.dev.7 → 26.10.0.pre.dev.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. checksums.yaml +4 -4
  2. data/lib/moov/files.rb +186 -0
  3. data/lib/moov/issuing_transactions.rb +123 -0
  4. data/lib/moov/models/components/applicationscope.rb +1 -0
  5. data/lib/moov/models/components/bankaccount.rb +7 -2
  6. data/lib/moov/models/components/bankaccount.rbi +2 -0
  7. data/lib/moov/models/components/bankaccountpayload.rb +7 -2
  8. data/lib/moov/models/components/bankaccountpayload.rbi +2 -0
  9. data/lib/moov/models/components/cardpaymentrefundprocessingdetails.rb +6 -2
  10. data/lib/moov/models/components/cardpaymentrefundprocessingdetails.rbi +2 -0
  11. data/lib/moov/models/components/createdtransfer.rb +2 -1
  12. data/lib/moov/models/components/createinvoice.rb +6 -2
  13. data/lib/moov/models/components/createinvoice.rbi +2 -0
  14. data/lib/moov/models/components/createtransferdestination.rb +2 -6
  15. data/lib/moov/models/components/createtransferdestination.rbi +0 -2
  16. data/lib/moov/models/components/disbursementpaymentmethodtype.rb +1 -0
  17. data/lib/moov/models/components/incurredfee.rb +6 -2
  18. data/lib/moov/models/components/incurredfee.rbi +2 -0
  19. data/lib/moov/models/components/issuedcardactivity.rb +78 -0
  20. data/lib/moov/models/components/issuedcardactivity.rbi +33 -0
  21. data/lib/moov/models/components/paymentmethodsbankaccount.rb +7 -2
  22. data/lib/moov/models/components/paymentmethodsbankaccount.rbi +2 -0
  23. data/lib/moov/models/components/paymentmethodtype.rb +0 -1
  24. data/lib/moov/models/components/product.rb +1 -1
  25. data/lib/moov/models/components/productrequest.rb +1 -1
  26. data/lib/moov/models/components/riskverificationoutcome.rb +23 -0
  27. data/lib/moov/models/components/riskverificationoutcome.rbi +11 -0
  28. data/lib/moov/models/components/transfer.rb +2 -1
  29. data/lib/moov/models/components/transferauthorization.rb +9 -2
  30. data/lib/moov/models/components/transferauthorization.rbi +2 -0
  31. data/lib/moov/models/components/transferoptions.rb +3 -3
  32. data/lib/moov/models/components/transferpaymentmethodsbankaccount.rb +7 -2
  33. data/lib/moov/models/components/transferpaymentmethodsbankaccount.rbi +2 -0
  34. data/lib/moov/models/components/transferpaymentmethodtype.rb +0 -1
  35. data/lib/moov/models/components/transferprocessingdetails.rb +2 -6
  36. data/lib/moov/models/components/transferprocessingdetails.rbi +0 -2
  37. data/lib/moov/models/components/transferrailoptions.rb +2 -6
  38. data/lib/moov/models/components/transferrailoptions.rbi +0 -2
  39. data/lib/moov/models/components/transfertype.rb +0 -1
  40. data/lib/moov/models/components/wallettransactiontype.rb +0 -1
  41. data/lib/moov/models/components/webhookdatatransferstatus.rb +1 -0
  42. data/lib/moov/models/components.rb +2 -9
  43. data/lib/moov/models/errors/createinvoiceerror.rb +6 -2
  44. data/lib/moov/models/errors/createinvoiceerror.rbi +2 -0
  45. data/lib/moov/models/errors/transfer_error.rb +2 -1
  46. data/lib/moov/models/operations/downloadfile_request.rb +36 -0
  47. data/lib/moov/models/operations/downloadfile_request.rbi +15 -0
  48. data/lib/moov/models/operations/downloadfile_response.rb +64 -0
  49. data/lib/moov/models/operations/downloadfile_response.rbi +29 -0
  50. data/lib/moov/models/operations/getpaymentmethod_response.rb +2 -2
  51. data/lib/moov/models/operations/listissuedcardactivity_request.rb +60 -0
  52. data/lib/moov/models/operations/listissuedcardactivity_request.rbi +27 -0
  53. data/lib/moov/models/operations/listissuedcardactivity_response.rb +48 -0
  54. data/lib/moov/models/operations/listissuedcardactivity_response.rbi +21 -0
  55. data/lib/moov/models/operations/listpaymentmethods_response.rb +2 -2
  56. data/lib/moov/models/operations/listtransfers_request.rb +6 -2
  57. data/lib/moov/models/operations/listtransfers_request.rbi +2 -0
  58. data/lib/moov/models/operations.rb +4 -0
  59. data/lib/moov/payment_methods.rb +2 -2
  60. data/lib/moov/sdkconfiguration.rb +3 -3
  61. metadata +14 -20
  62. data/lib/moov/models/components/createtransferdestinationwire.rb +0 -32
  63. data/lib/moov/models/components/createtransferdestinationwire.rbi +0 -13
  64. data/lib/moov/models/components/wirecreditpaymentmethod.rb +0 -40
  65. data/lib/moov/models/components/wirecreditpaymentmethod.rbi +0 -17
  66. data/lib/moov/models/components/wirecreditpaymentmethod_paymentmethodtype.rb +0 -18
  67. data/lib/moov/models/components/wirecreditpaymentmethod_paymentmethodtype.rbi +0 -11
  68. data/lib/moov/models/components/wirecredittransferpaymentmethod.rb +0 -40
  69. data/lib/moov/models/components/wirecredittransferpaymentmethod.rbi +0 -17
  70. data/lib/moov/models/components/wirecredittransferpaymentmethod_paymentmethodtype.rb +0 -18
  71. data/lib/moov/models/components/wirecredittransferpaymentmethod_paymentmethodtype.rbi +0 -11
  72. data/lib/moov/models/components/wirefailurecode.rb +0 -28
  73. data/lib/moov/models/components/wirefailurecode.rbi +0 -11
  74. data/lib/moov/models/components/wireoptions.rb +0 -32
  75. data/lib/moov/models/components/wireoptions.rbi +0 -13
  76. data/lib/moov/models/components/wiretransactionstatus.rb +0 -23
  77. data/lib/moov/models/components/wiretransactionstatus.rbi +0 -11
  78. data/lib/moov/models/components/wiretransferprocessingdetails.rb +0 -40
  79. data/lib/moov/models/components/wiretransferprocessingdetails.rbi +0 -17
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c0a6efed619cdea7c3dbeed3a9c560ca01e7740552d80f7a93bda167a0a040a3
4
- data.tar.gz: 44c9eb061d64512ec491f672632b5df498badcb85e97844858f35369f713daf5
3
+ metadata.gz: 8dbdbc68e7896eefb7219930ddd547c849e04f82c49fcbbad75fd2842d518d93
4
+ data.tar.gz: 6fee0ae1562a269b90d4eb6d8e2066304dbe4b1282357a9b37e2a7dfa50439e1
5
5
  SHA512:
6
- metadata.gz: 8cb9ad4082093d420484b82d8c70fd1ad1d0a8cf62ba722c9399aca63ad23d31e8403eeb28f8a02f5e8141f9db0a1032f6a167f9c51530b62ecd3460ddaa0c6c
7
- data.tar.gz: f1139460ca108f90d7fe4eb718db527c687506af3d1002bc2d1f389b8e77b5c8c7cbd4ccad8f2d35a327d9621e07cf3a20bb5ce232eeb9a29ae09598faceba01
6
+ metadata.gz: 9124ae89fa73ce25530071ef6687acfb40864799ed602625ec9be0fb49388039da58b35754d4cb6c6ddab99569175f5e81076cc16ddf72dad2709f27a4724ade
7
+ data.tar.gz: 35f6d9d065b069cd9806afc3497a2342ff68ad935a28af463dd4034638d0d213d8e5e4a5635a6465c746e0e0d48052cb348c378dfc3da454f9c01dd2ac31dfaa
data/lib/moov/files.rb CHANGED
@@ -452,5 +452,191 @@ module Moov
452
452
 
453
453
  end
454
454
  end
455
+
456
+
457
+ sig { params(account_id: ::String, file_id: ::String, timeout_ms: T.nilable(Integer), accept_header_override: T.nilable(String), http_headers: T.nilable(T::Hash[T.any(String, Symbol), String])).returns(Models::Operations::DownloadFileResponse) }
458
+ def download(account_id:, file_id:, timeout_ms: nil, accept_header_override: nil, http_headers: nil)
459
+ # download - Download the contents of a file associated with a specific Moov account. Files reserved for
460
+ # internal Moov use are not available through this endpoint.
461
+ #
462
+ # To access this endpoint using an [access token](https://docs.moov.io/api/authentication/access-tokens/)
463
+ # you'll need to specify the `/accounts/{accountID}/files.download` scope.
464
+ request = Models::Operations::DownloadFileRequest.new(
465
+ account_id: account_id,
466
+ file_id: file_id
467
+ )
468
+ url, params = @sdk_configuration.get_server_details
469
+ base_url = Utils.template_url(url, params)
470
+ url = Utils.generate_url(
471
+ Models::Operations::DownloadFileRequest,
472
+ base_url,
473
+ '/accounts/{accountID}/files/{fileID}/contents',
474
+ request
475
+ )
476
+ headers = {}
477
+ headers = T.cast(headers, T::Hash[String, String])
478
+ headers['Accept'] = accept_header_override || 'text/plain; charset=utf-8;q=1, application/octet-stream;q=0.8, application/pdf;q=0.6, image/jpeg;q=0.4, image/png;q=0'
479
+ headers['user-agent'] = @sdk_configuration.user_agent
480
+
481
+ security = @sdk_configuration.security_source&.call
482
+
483
+ timeout = (timeout_ms.to_f / 1000) unless timeout_ms.nil?
484
+ timeout ||= @sdk_configuration.timeout
485
+
486
+
487
+ connection = @sdk_configuration.client
488
+
489
+ hook_ctx = SDKHooks::HookContext.new(
490
+ config: @sdk_configuration,
491
+ base_url: base_url,
492
+ oauth2_scopes: nil,
493
+ operation_id: 'downloadFile',
494
+ security_source: @sdk_configuration.security_source
495
+ )
496
+
497
+ error = T.let(nil, T.nilable(StandardError))
498
+ http_response = T.let(nil, T.nilable(Faraday::Response))
499
+
500
+
501
+ begin
502
+ http_response = T.must(connection).get(url) do |req|
503
+ req.headers.merge!(headers)
504
+ req.options.timeout = timeout unless timeout.nil?
505
+ Utils.configure_request_security(req, security)
506
+ http_headers&.each do |key, value|
507
+ req.headers[key.to_s] = value
508
+ end
509
+
510
+ @sdk_configuration.hooks.before_request(
511
+ hook_ctx: SDKHooks::BeforeRequestHookContext.new(
512
+ hook_ctx: hook_ctx
513
+ ),
514
+ request: req
515
+ )
516
+ end
517
+ rescue StandardError => e
518
+ error = e
519
+ ensure
520
+ if http_response.nil? || Utils.error_status?(http_response.status)
521
+ http_response = @sdk_configuration.hooks.after_error(
522
+ error: error,
523
+ hook_ctx: SDKHooks::AfterErrorHookContext.new(
524
+ hook_ctx: hook_ctx
525
+ ),
526
+ response: http_response
527
+ )
528
+ else
529
+ http_response = @sdk_configuration.hooks.after_success(
530
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
531
+ hook_ctx: hook_ctx
532
+ ),
533
+ response: http_response
534
+ )
535
+ end
536
+
537
+ if http_response.nil?
538
+ raise error if !error.nil?
539
+ raise 'no response'
540
+ end
541
+ end
542
+
543
+ content_type = http_response.headers.fetch('Content-Type', 'application/octet-stream')
544
+ if Utils.match_status_code(http_response.status, ['200'])
545
+ if Utils.match_content_type(content_type, 'application/pdf')
546
+ http_response = @sdk_configuration.hooks.after_success(
547
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
548
+ hook_ctx: hook_ctx
549
+ ),
550
+ response: http_response
551
+ )
552
+ obj = http_response.env.body.force_encoding('UTF-8')
553
+
554
+ return Models::Operations::DownloadFileResponse.new(
555
+ status_code: http_response.status,
556
+ content_type: content_type,
557
+ raw_response: http_response,
558
+ headers: http_response.headers,
559
+ two_hundred_application_pdf_bytes: T.unsafe(obj)
560
+ )
561
+ elsif Utils.match_content_type(content_type, 'image/png')
562
+ http_response = @sdk_configuration.hooks.after_success(
563
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
564
+ hook_ctx: hook_ctx
565
+ ),
566
+ response: http_response
567
+ )
568
+ obj = http_response.env.body.force_encoding('UTF-8')
569
+
570
+ return Models::Operations::DownloadFileResponse.new(
571
+ status_code: http_response.status,
572
+ content_type: content_type,
573
+ raw_response: http_response,
574
+ headers: http_response.headers,
575
+ two_hundred_image_png_bytes: T.unsafe(obj)
576
+ )
577
+ elsif Utils.match_content_type(content_type, 'image/jpeg')
578
+ http_response = @sdk_configuration.hooks.after_success(
579
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
580
+ hook_ctx: hook_ctx
581
+ ),
582
+ response: http_response
583
+ )
584
+ obj = http_response.env.body.force_encoding('UTF-8')
585
+
586
+ return Models::Operations::DownloadFileResponse.new(
587
+ status_code: http_response.status,
588
+ content_type: content_type,
589
+ raw_response: http_response,
590
+ headers: http_response.headers,
591
+ two_hundred_image_jpeg_bytes: T.unsafe(obj)
592
+ )
593
+ elsif Utils.match_content_type(content_type, 'text/plain; charset=utf-8')
594
+ http_response = @sdk_configuration.hooks.after_success(
595
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
596
+ hook_ctx: hook_ctx
597
+ ),
598
+ response: http_response
599
+ )
600
+ obj = http_response.env.body.force_encoding('UTF-8')
601
+
602
+ return Models::Operations::DownloadFileResponse.new(
603
+ status_code: http_response.status,
604
+ content_type: content_type,
605
+ raw_response: http_response,
606
+ headers: http_response.headers,
607
+ two_hundred_text_plain_bytes: T.unsafe(obj)
608
+ )
609
+ elsif Utils.match_content_type(content_type, 'application/octet-stream')
610
+ http_response = @sdk_configuration.hooks.after_success(
611
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
612
+ hook_ctx: hook_ctx
613
+ ),
614
+ response: http_response
615
+ )
616
+ obj = http_response.env.body.force_encoding('UTF-8')
617
+
618
+ return Models::Operations::DownloadFileResponse.new(
619
+ status_code: http_response.status,
620
+ content_type: content_type,
621
+ raw_response: http_response,
622
+ headers: http_response.headers,
623
+ two_hundred_application_octet_stream_bytes: T.unsafe(obj)
624
+ )
625
+ else
626
+ 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'
627
+ end
628
+ elsif Utils.match_status_code(http_response.status, ['401', '403', '404', '429'])
629
+ raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
630
+ elsif Utils.match_status_code(http_response.status, ['500', '504'])
631
+ raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
632
+ elsif Utils.match_status_code(http_response.status, ['4XX'])
633
+ raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
634
+ elsif Utils.match_status_code(http_response.status, ['5XX'])
635
+ raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
636
+ else
637
+ 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'
638
+
639
+ end
640
+ end
455
641
  end
456
642
  end
@@ -41,6 +41,129 @@ module Moov
41
41
 
42
42
 
43
43
 
44
+ sig { params(request: Models::Operations::ListIssuedCardActivityRequest, timeout_ms: T.nilable(Integer), http_headers: T.nilable(T::Hash[T.any(String, Symbol), String])).returns(Models::Operations::ListIssuedCardActivityResponse) }
45
+ def list_activity(request:, timeout_ms: nil, http_headers: nil)
46
+ # list_activity - List issued card activity associated with a Moov account.
47
+ #
48
+ # Activity includes authorizations and settlements in a single list.
49
+ #
50
+ # To access this endpoint using an [access token](https://docs.moov.io/api/authentication/access-tokens/)
51
+ # you'll need to specify the `/accounts/{accountID}/issued-cards.read` scope.
52
+ url, params = @sdk_configuration.get_server_details
53
+ base_url = Utils.template_url(url, params)
54
+ url = Utils.generate_url(
55
+ Models::Operations::ListIssuedCardActivityRequest,
56
+ base_url,
57
+ '/issuing/{accountID}/activity',
58
+ request
59
+ )
60
+ headers = {}
61
+ headers = T.cast(headers, T::Hash[String, String])
62
+ query_params = Utils.get_query_params(Models::Operations::ListIssuedCardActivityRequest, request, nil)
63
+ headers['Accept'] = 'application/json'
64
+ headers['user-agent'] = @sdk_configuration.user_agent
65
+
66
+ security = @sdk_configuration.security_source&.call
67
+
68
+ timeout = (timeout_ms.to_f / 1000) unless timeout_ms.nil?
69
+ timeout ||= @sdk_configuration.timeout
70
+
71
+
72
+ connection = @sdk_configuration.client
73
+
74
+ hook_ctx = SDKHooks::HookContext.new(
75
+ config: @sdk_configuration,
76
+ base_url: base_url,
77
+ oauth2_scopes: nil,
78
+ operation_id: 'listIssuedCardActivity',
79
+ security_source: @sdk_configuration.security_source
80
+ )
81
+
82
+ error = T.let(nil, T.nilable(StandardError))
83
+ http_response = T.let(nil, T.nilable(Faraday::Response))
84
+
85
+
86
+ begin
87
+ http_response = T.must(connection).get(url) do |req|
88
+ req.headers.merge!(headers)
89
+ req.options.timeout = timeout unless timeout.nil?
90
+ req.params = query_params
91
+ Utils.configure_request_security(req, security)
92
+ http_headers&.each do |key, value|
93
+ req.headers[key.to_s] = value
94
+ end
95
+
96
+ @sdk_configuration.hooks.before_request(
97
+ hook_ctx: SDKHooks::BeforeRequestHookContext.new(
98
+ hook_ctx: hook_ctx
99
+ ),
100
+ request: req
101
+ )
102
+ end
103
+ rescue StandardError => e
104
+ error = e
105
+ ensure
106
+ if http_response.nil? || Utils.error_status?(http_response.status)
107
+ http_response = @sdk_configuration.hooks.after_error(
108
+ error: error,
109
+ hook_ctx: SDKHooks::AfterErrorHookContext.new(
110
+ hook_ctx: hook_ctx
111
+ ),
112
+ response: http_response
113
+ )
114
+ else
115
+ http_response = @sdk_configuration.hooks.after_success(
116
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
117
+ hook_ctx: hook_ctx
118
+ ),
119
+ response: http_response
120
+ )
121
+ end
122
+
123
+ if http_response.nil?
124
+ raise error if !error.nil?
125
+ raise 'no response'
126
+ end
127
+ end
128
+
129
+ content_type = http_response.headers.fetch('Content-Type', 'application/octet-stream')
130
+ if Utils.match_status_code(http_response.status, ['200'])
131
+ if Utils.match_content_type(content_type, 'application/json')
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
+ response_data = http_response.env.response_body
139
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Crystalline::Array.new(Models::Components::IssuedCardActivity))
140
+ response = Models::Operations::ListIssuedCardActivityResponse.new(
141
+ status_code: http_response.status,
142
+ content_type: content_type,
143
+ raw_response: http_response,
144
+ headers: http_response.headers,
145
+ issued_card_activities: T.unsafe(obj)
146
+ )
147
+
148
+ return response
149
+ else
150
+ 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'
151
+ end
152
+ elsif Utils.match_status_code(http_response.status, ['401', '403', '429'])
153
+ raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
154
+ elsif Utils.match_status_code(http_response.status, ['500', '504'])
155
+ raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
156
+ elsif Utils.match_status_code(http_response.status, ['4XX'])
157
+ raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
158
+ elsif Utils.match_status_code(http_response.status, ['5XX'])
159
+ raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
160
+ else
161
+ 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'
162
+
163
+ end
164
+ end
165
+
166
+
44
167
  sig { params(request: Models::Operations::ListIssuedCardAuthorizationsRequest, timeout_ms: T.nilable(Integer), http_headers: T.nilable(T::Hash[T.any(String, Symbol), String])).returns(Models::Operations::ListIssuedCardAuthorizationsResponse) }
45
168
  def list_authorizations(request:, timeout_ms: nil, http_headers: nil)
46
169
  # list_authorizations - List issued card authorizations associated with a Moov account.
@@ -27,6 +27,7 @@ module Moov
27
27
  DOCUMENTS_READ = new('documents.read')
28
28
  DOCUMENTS_WRITE = new('documents.write')
29
29
  FED_READ = new('fed.read')
30
+ FILES_DOWNLOAD = new('files.download')
30
31
  FILES_READ = new('files.read')
31
32
  FILES_WRITE = new('files.write')
32
33
  ISSUED_CARDS_READ = new('issued-cards.read')
@@ -43,9 +43,12 @@ module Moov
43
43
  #
44
44
  # **NOTE: This field is only populated for Create BankAccount requests made with the `X-Wait-For` header.**
45
45
  field :payment_methods, Crystalline::Nilable.new(Crystalline::Array.new(Models::Components::BasicPaymentMethod)), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('paymentMethods') } }
46
+ # The outcome of a requested risk-verification attempt. `notAttempted` when
47
+ # `requestRiskVerification` was not set, or the calling account was not allowlisted.
48
+ field :risk_verification_outcome, Crystalline::Nilable.new(Models::Components::RiskVerificationOutcome), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('riskVerificationOutcome'), 'decoder': ::Moov::Utils.open_enum_from_string(Models::Components::RiskVerificationOutcome, true) } }
46
49
 
47
- sig { params(bank_account_id: ::String, fingerprint: ::String, status: Models::Components::BankAccountStatus, holder_name: ::String, holder_type: Models::Components::BankAccountHolderType, bank_name: ::String, bank_account_type: Models::Components::BankAccountType, routing_number: ::String, last_four_account_number: ::String, updated_on: ::DateTime, status_reason: T.nilable(Models::Components::BankAccountStatusReason), exception_details: T.nilable(Models::Components::BankAccountException), payment_methods: T.nilable(T::Array[Models::Components::BasicPaymentMethod])).void }
48
- def initialize(bank_account_id:, fingerprint:, status:, holder_name:, holder_type:, bank_name:, bank_account_type:, routing_number:, last_four_account_number:, updated_on:, status_reason: nil, exception_details: nil, payment_methods: nil)
50
+ sig { params(bank_account_id: ::String, fingerprint: ::String, status: Models::Components::BankAccountStatus, holder_name: ::String, holder_type: Models::Components::BankAccountHolderType, bank_name: ::String, bank_account_type: Models::Components::BankAccountType, routing_number: ::String, last_four_account_number: ::String, updated_on: ::DateTime, status_reason: T.nilable(Models::Components::BankAccountStatusReason), exception_details: T.nilable(Models::Components::BankAccountException), payment_methods: T.nilable(T::Array[Models::Components::BasicPaymentMethod]), risk_verification_outcome: T.nilable(Models::Components::RiskVerificationOutcome)).void }
51
+ def initialize(bank_account_id:, fingerprint:, status:, holder_name:, holder_type:, bank_name:, bank_account_type:, routing_number:, last_four_account_number:, updated_on:, status_reason: nil, exception_details: nil, payment_methods: nil, risk_verification_outcome: nil)
49
52
  @bank_account_id = bank_account_id
50
53
  @fingerprint = fingerprint
51
54
  @status = status
@@ -59,6 +62,7 @@ module Moov
59
62
  @status_reason = status_reason
60
63
  @exception_details = exception_details
61
64
  @payment_methods = payment_methods
65
+ @risk_verification_outcome = risk_verification_outcome
62
66
  end
63
67
 
64
68
  sig { params(other: T.untyped).returns(T::Boolean) }
@@ -77,6 +81,7 @@ module Moov
77
81
  return false unless @status_reason == other.status_reason
78
82
  return false unless @exception_details == other.exception_details
79
83
  return false unless @payment_methods == other.payment_methods
84
+ return false unless @risk_verification_outcome == other.risk_verification_outcome
80
85
  true
81
86
  end
82
87
  end
@@ -34,4 +34,6 @@ class Moov::Models::Components::BankAccount
34
34
  def exception_details=(str_); end
35
35
  def payment_methods(); end
36
36
  def payment_methods=(str_); end
37
+ def risk_verification_outcome(); end
38
+ def risk_verification_outcome=(str_); end
37
39
  end
@@ -14,16 +14,21 @@ module Moov
14
14
 
15
15
 
16
16
  field :account, Models::Components::BankAccountIntegration, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('account'), required: true } }
17
+ # Requests a synchronous risk-verification attempt on create or re-link. Only honored for
18
+ # allowlisted calling accounts; ignored otherwise.
19
+ field :request_risk_verification, Crystalline::Nilable.new(Crystalline::Boolean.new), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('requestRiskVerification') } }
17
20
 
18
- sig { params(account: Models::Components::BankAccountIntegration).void }
19
- def initialize(account:)
21
+ sig { params(account: Models::Components::BankAccountIntegration, request_risk_verification: T.nilable(T::Boolean)).void }
22
+ def initialize(account:, request_risk_verification: nil)
20
23
  @account = account
24
+ @request_risk_verification = request_risk_verification
21
25
  end
22
26
 
23
27
  sig { params(other: T.untyped).returns(T::Boolean) }
24
28
  def ==(other)
25
29
  return false unless other.is_a? self.class
26
30
  return false unless @account == other.account
31
+ return false unless @request_risk_verification == other.request_risk_verification
27
32
  true
28
33
  end
29
34
  end
@@ -10,4 +10,6 @@ end
10
10
  class Moov::Models::Components::BankAccountPayload
11
11
  def account(); end
12
12
  def account=(str_); end
13
+ def request_risk_verification(); end
14
+ def request_risk_verification=(str_); end
13
15
  end
@@ -13,16 +13,20 @@ module Moov
13
13
  include Crystalline::MetadataFields
14
14
 
15
15
 
16
+ field :network_transaction_id, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('networkTransactionID') } }
17
+
16
18
  field :failure_code, Crystalline::Nilable.new(Models::Components::CardTransactionFailureCode), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('failureCode'), 'decoder': ::Moov::Utils.open_enum_from_string(Models::Components::CardTransactionFailureCode, true) } }
17
19
 
18
- sig { params(failure_code: T.nilable(Models::Components::CardTransactionFailureCode)).void }
19
- def initialize(failure_code: nil)
20
+ sig { params(network_transaction_id: T.nilable(::String), failure_code: T.nilable(Models::Components::CardTransactionFailureCode)).void }
21
+ def initialize(network_transaction_id: nil, failure_code: nil)
22
+ @network_transaction_id = network_transaction_id
20
23
  @failure_code = failure_code
21
24
  end
22
25
 
23
26
  sig { params(other: T.untyped).returns(T::Boolean) }
24
27
  def ==(other)
25
28
  return false unless other.is_a? self.class
29
+ return false unless @network_transaction_id == other.network_transaction_id
26
30
  return false unless @failure_code == other.failure_code
27
31
  true
28
32
  end
@@ -8,6 +8,8 @@ end
8
8
 
9
9
 
10
10
  class Moov::Models::Components::CardPaymentRefundProcessingDetails
11
+ def network_transaction_id(); end
12
+ def network_transaction_id=(str_); end
11
13
  def failure_code(); end
12
14
  def failure_code=(str_); end
13
15
  end
@@ -66,7 +66,8 @@ module Moov
66
66
  # An optional collection of line items for a transfer.
67
67
  # When line items are provided, their total plus tax must equal the transfer amount.
68
68
  field :line_items, Crystalline::Nilable.new(Models::Components::TransferLineItems), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('lineItems') } }
69
-
69
+ # The tip, tax, and surcharge portion of the transfer amount.
70
+ # For an auth-capture `card-payment` transfer, this is the aggregate of all captures' `amountDetails`.
70
71
  field :amount_details, Crystalline::Nilable.new(Models::Components::TransferAmountDetails), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('amountDetails') } }
71
72
  # Authorization amounts.
72
73
  # This field is present only for an auth-capture `card-payment` transfer.
@@ -16,6 +16,8 @@ module Moov
16
16
  field :customer_account_id, ::String, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('customerAccountID'), required: true } }
17
17
  # A collection of line items for an invoice.
18
18
  field :line_items, Models::Components::CreateInvoiceLineItems, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('lineItems'), required: true } }
19
+ # Email address to use for invoice checkout OTP verification instead of the customer account email.
20
+ field :customer_email, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('customerEmail') } }
19
21
 
20
22
  field :description, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('description') } }
21
23
 
@@ -25,10 +27,11 @@ module Moov
25
27
 
26
28
  field :amount_details, Crystalline::Nilable.new(Models::Components::AmountDetails), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('amountDetails') } }
27
29
 
28
- sig { params(customer_account_id: ::String, line_items: Models::Components::CreateInvoiceLineItems, description: T.nilable(::String), invoice_date: T.nilable(::DateTime), due_date: T.nilable(::DateTime), amount_details: T.nilable(Models::Components::AmountDetails)).void }
29
- def initialize(customer_account_id:, line_items:, description: nil, invoice_date: nil, due_date: nil, amount_details: nil)
30
+ sig { params(customer_account_id: ::String, line_items: Models::Components::CreateInvoiceLineItems, customer_email: T.nilable(::String), description: T.nilable(::String), invoice_date: T.nilable(::DateTime), due_date: T.nilable(::DateTime), amount_details: T.nilable(Models::Components::AmountDetails)).void }
31
+ def initialize(customer_account_id:, line_items:, customer_email: nil, description: nil, invoice_date: nil, due_date: nil, amount_details: nil)
30
32
  @customer_account_id = customer_account_id
31
33
  @line_items = line_items
34
+ @customer_email = customer_email
32
35
  @description = description
33
36
  @invoice_date = invoice_date
34
37
  @due_date = due_date
@@ -40,6 +43,7 @@ module Moov
40
43
  return false unless other.is_a? self.class
41
44
  return false unless @customer_account_id == other.customer_account_id
42
45
  return false unless @line_items == other.line_items
46
+ return false unless @customer_email == other.customer_email
43
47
  return false unless @description == other.description
44
48
  return false unless @invoice_date == other.invoice_date
45
49
  return false unless @due_date == other.due_date
@@ -12,6 +12,8 @@ class Moov::Models::Components::CreateInvoice
12
12
  def customer_account_id=(str_); end
13
13
  def line_items(); end
14
14
  def line_items=(str_); end
15
+ def customer_email(); end
16
+ def customer_email=(str_); end
15
17
  def description(); end
16
18
  def description=(str_); end
17
19
  def invoice_date(); end
@@ -18,15 +18,12 @@ module Moov
18
18
  field :card_details, Crystalline::Nilable.new(Models::Components::CreateTransferDestinationCard), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('cardDetails') } }
19
19
 
20
20
  field :ach_details, Crystalline::Nilable.new(Models::Components::CreateTransferDestinationACH), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('achDetails') } }
21
- # Wire-specific options supplied when creating a transfer.
22
- field :wire_details, Crystalline::Nilable.new(Models::Components::CreateTransferDestinationWire), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('wireDetails') } }
23
21
 
24
- sig { params(payment_method_id: ::String, card_details: T.nilable(Models::Components::CreateTransferDestinationCard), ach_details: T.nilable(Models::Components::CreateTransferDestinationACH), wire_details: T.nilable(Models::Components::CreateTransferDestinationWire)).void }
25
- def initialize(payment_method_id:, card_details: nil, ach_details: nil, wire_details: nil)
22
+ sig { params(payment_method_id: ::String, card_details: T.nilable(Models::Components::CreateTransferDestinationCard), ach_details: T.nilable(Models::Components::CreateTransferDestinationACH)).void }
23
+ def initialize(payment_method_id:, card_details: nil, ach_details: nil)
26
24
  @payment_method_id = payment_method_id
27
25
  @card_details = card_details
28
26
  @ach_details = ach_details
29
- @wire_details = wire_details
30
27
  end
31
28
 
32
29
  sig { params(other: T.untyped).returns(T::Boolean) }
@@ -35,7 +32,6 @@ module Moov
35
32
  return false unless @payment_method_id == other.payment_method_id
36
33
  return false unless @card_details == other.card_details
37
34
  return false unless @ach_details == other.ach_details
38
- return false unless @wire_details == other.wire_details
39
35
  true
40
36
  end
41
37
  end
@@ -14,6 +14,4 @@ class Moov::Models::Components::CreateTransferDestination
14
14
  def card_details=(str_); end
15
15
  def ach_details(); end
16
16
  def ach_details=(str_); end
17
- def wire_details(); end
18
- def wire_details=(str_); end
19
17
  end
@@ -17,6 +17,7 @@ module Moov
17
17
  ACH_CREDIT_STANDARD = new('ach-credit-standard')
18
18
  PUSH_TO_APPLE_PAY = new('push-to-apple-pay')
19
19
  PUSH_TO_GOOGLE_PAY = new('push-to-google-pay')
20
+ INSTANT_BANK_CREDIT = new('instant-bank-credit')
20
21
  end
21
22
  open!
22
23
  end
@@ -28,13 +28,15 @@ module Moov
28
28
  field :generated_by, Crystalline::Nilable.new(Models::Components::GeneratedBy), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('generatedBy') } }
29
29
  # Describes the source of the fee, such as a Moov-set processing fee, a network pass-through fee, or an interchange or discount fee.
30
30
  field :fee_group, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('feeGroup') } }
31
+ # The program assigned by the card network that determines the interchange rate for the fee. Present only for interchange or discount fees.
32
+ field :fee_program, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('feeProgram') } }
31
33
  # Unique identifier for this residual payment calculation.
32
34
  field :residual_id, Crystalline::Nilable.new(::String), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('residualID') } }
33
35
  # Indicates which party to the money movement bore this fee.
34
36
  field :fee_paid_by, Crystalline::Nilable.new(Models::Components::FeePaidBy), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('feePaidBy'), 'decoder': ::Moov::Utils.open_enum_from_string(Models::Components::FeePaidBy, true) } }
35
37
 
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)
38
+ 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), fee_program: T.nilable(::String), residual_id: T.nilable(::String), fee_paid_by: T.nilable(Models::Components::FeePaidBy)).void }
39
+ 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, fee_program: nil, residual_id: nil, fee_paid_by: nil)
38
40
  @fee_id = fee_id
39
41
  @account_id = account_id
40
42
  @wallet_id = wallet_id
@@ -43,6 +45,7 @@ module Moov
43
45
  @amount = amount
44
46
  @generated_by = generated_by
45
47
  @fee_group = fee_group
48
+ @fee_program = fee_program
46
49
  @residual_id = residual_id
47
50
  @fee_paid_by = fee_paid_by
48
51
  end
@@ -58,6 +61,7 @@ module Moov
58
61
  return false unless @amount == other.amount
59
62
  return false unless @generated_by == other.generated_by
60
63
  return false unless @fee_group == other.fee_group
64
+ return false unless @fee_program == other.fee_program
61
65
  return false unless @residual_id == other.residual_id
62
66
  return false unless @fee_paid_by == other.fee_paid_by
63
67
  true
@@ -24,6 +24,8 @@ class Moov::Models::Components::IncurredFee
24
24
  def generated_by=(str_); end
25
25
  def fee_group(); end
26
26
  def fee_group=(str_); end
27
+ def fee_program(); end
28
+ def fee_program=(str_); end
27
29
  def residual_id(); end
28
30
  def residual_id=(str_); end
29
31
  def fee_paid_by(); end