moov_ruby 0.3.22 → 0.3.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 (114) hide show
  1. checksums.yaml +4 -4
  2. data/lib/moov/client.rb +2 -1
  3. data/lib/moov/invoices.rb +288 -0
  4. data/lib/moov/models/components/createinvoice.rb +6 -6
  5. data/lib/moov/models/components/createinvoice.rbi +2 -2
  6. data/lib/moov/models/components/createinvoicepayment.rb +45 -0
  7. data/lib/moov/models/components/createinvoicepayment.rbi +19 -0
  8. data/lib/moov/models/components/createruntransfer.rb +58 -0
  9. data/lib/moov/models/components/createruntransfer.rbi +25 -0
  10. data/lib/moov/models/components/createscheduledtransferlineitem.rb +53 -0
  11. data/lib/moov/models/components/createscheduledtransferlineitem.rbi +23 -0
  12. data/lib/moov/models/components/createscheduledtransferlineitemoption.rb +49 -0
  13. data/lib/moov/models/components/createscheduledtransferlineitemoption.rbi +21 -0
  14. data/lib/moov/models/components/createscheduledtransferlineitems.rb +34 -0
  15. data/lib/moov/models/components/createscheduledtransferlineitems.rbi +13 -0
  16. data/lib/moov/models/components/createwebhook.rb +45 -0
  17. data/lib/moov/models/components/createwebhook.rbi +19 -0
  18. data/lib/moov/models/components/eventtype.rb +41 -0
  19. data/lib/moov/models/components/eventtype.rbi +17 -0
  20. data/lib/moov/models/components/incurredfee.rb +6 -2
  21. data/lib/moov/models/components/incurredfee.rbi +2 -0
  22. data/lib/moov/models/components/invoice.rb +9 -9
  23. data/lib/moov/models/components/invoice.rbi +4 -4
  24. data/lib/moov/models/components/invoiceexternalpayment.rb +3 -11
  25. data/lib/moov/models/components/invoiceexternalpayment.rbi +0 -4
  26. data/lib/moov/models/components/invoicepayment.rb +13 -5
  27. data/lib/moov/models/components/invoicepayment.rbi +6 -2
  28. data/lib/moov/models/components/invoicetransferpayment.rb +2 -6
  29. data/lib/moov/models/components/invoicetransferpayment.rbi +0 -2
  30. data/lib/moov/models/components/occurrence.rb +2 -2
  31. data/lib/moov/models/components/occurrencesresponse.rb +1 -1
  32. data/lib/moov/models/components/pingresponse.rb +41 -0
  33. data/lib/moov/models/components/pingresponse.rbi +17 -0
  34. data/lib/moov/models/components/recur.rb +2 -2
  35. data/lib/moov/models/components/recurresponse.rb +46 -0
  36. data/lib/moov/models/components/recurresponse.rbi +19 -0
  37. data/lib/moov/models/components/runtransfer.rb +2 -3
  38. data/lib/moov/models/components/scheduledtransferimagemetadata.rb +45 -0
  39. data/lib/moov/models/components/scheduledtransferimagemetadata.rbi +19 -0
  40. data/lib/moov/models/components/scheduledtransferlineitem.rb +6 -2
  41. data/lib/moov/models/components/scheduledtransferlineitem.rbi +2 -0
  42. data/lib/moov/models/components/scheduledtransferlineitemoption.rb +6 -2
  43. data/lib/moov/models/components/scheduledtransferlineitemoption.rbi +2 -0
  44. data/lib/moov/models/components/scheduledtransferlineitems.rb +1 -2
  45. data/lib/moov/models/components/schedulelistresponse.rb +3 -3
  46. data/lib/moov/models/components/scheduleresponse.rb +3 -3
  47. data/lib/moov/models/components/updatewebhook.rb +45 -0
  48. data/lib/moov/models/components/updatewebhook.rbi +19 -0
  49. data/lib/moov/models/components/webhook.rb +61 -0
  50. data/lib/moov/models/components/webhook.rbi +27 -0
  51. data/lib/moov/models/components/webhooksecret.rb +33 -0
  52. data/lib/moov/models/components/webhooksecret.rbi +13 -0
  53. data/lib/moov/models/components/{invoiceexternalpayment_paymenttype.rb → webhookstatus.rb} +4 -3
  54. data/lib/moov/models/components/webhookstatus.rbi +11 -0
  55. data/lib/moov/models/components.rb +14 -2
  56. data/lib/moov/models/errors/createinvoicepaymenterror.rb +49 -0
  57. data/lib/moov/models/errors/createinvoicepaymenterror.rbi +21 -0
  58. data/lib/moov/models/errors/createwebhookvalidationerror.rb +49 -0
  59. data/lib/moov/models/errors/createwebhookvalidationerror.rbi +21 -0
  60. data/lib/moov/models/errors/updatewebhookvalidationerror.rb +49 -0
  61. data/lib/moov/models/errors/updatewebhookvalidationerror.rbi +21 -0
  62. data/lib/moov/models/errors.rb +3 -0
  63. data/lib/moov/models/operations/createinvoicepayment_request.rb +54 -0
  64. data/lib/moov/models/operations/createinvoicepayment_request.rbi +19 -0
  65. data/lib/moov/models/operations/createinvoicepayment_response.rb +49 -0
  66. data/lib/moov/models/operations/createinvoicepayment_response.rbi +21 -0
  67. data/lib/moov/models/operations/createwebhook_request.rb +46 -0
  68. data/lib/moov/models/operations/createwebhook_request.rbi +15 -0
  69. data/lib/moov/models/operations/createwebhook_response.rb +49 -0
  70. data/lib/moov/models/operations/createwebhook_response.rbi +21 -0
  71. data/lib/moov/models/operations/disablewebhook_request.rb +46 -0
  72. data/lib/moov/models/operations/disablewebhook_request.rbi +15 -0
  73. data/lib/moov/models/operations/disablewebhook_response.rb +45 -0
  74. data/lib/moov/models/operations/disablewebhook_response.rbi +19 -0
  75. data/lib/moov/models/operations/getwebhook_request.rb +46 -0
  76. data/lib/moov/models/operations/getwebhook_request.rbi +15 -0
  77. data/lib/moov/models/operations/getwebhook_response.rb +49 -0
  78. data/lib/moov/models/operations/getwebhook_response.rbi +21 -0
  79. data/lib/moov/models/operations/getwebhooksecret_request.rb +46 -0
  80. data/lib/moov/models/operations/getwebhooksecret_request.rbi +15 -0
  81. data/lib/moov/models/operations/getwebhooksecret_response.rb +49 -0
  82. data/lib/moov/models/operations/getwebhooksecret_response.rbi +21 -0
  83. data/lib/moov/models/operations/listeventtypes_request.rb +42 -0
  84. data/lib/moov/models/operations/listeventtypes_request.rbi +13 -0
  85. data/lib/moov/models/operations/listeventtypes_response.rb +49 -0
  86. data/lib/moov/models/operations/listeventtypes_response.rbi +21 -0
  87. data/lib/moov/models/operations/listfeerevenue_request.rb +14 -2
  88. data/lib/moov/models/operations/listfeerevenue_request.rbi +6 -0
  89. data/lib/moov/models/operations/listinvoicepayments_request.rb +50 -0
  90. data/lib/moov/models/operations/listinvoicepayments_request.rbi +17 -0
  91. data/lib/moov/models/operations/listinvoicepayments_response.rb +49 -0
  92. data/lib/moov/models/operations/listinvoicepayments_response.rbi +21 -0
  93. data/lib/moov/models/operations/listwebhooks_request.rb +42 -0
  94. data/lib/moov/models/operations/listwebhooks_request.rbi +13 -0
  95. data/lib/moov/models/operations/listwebhooks_response.rb +49 -0
  96. data/lib/moov/models/operations/listwebhooks_response.rbi +21 -0
  97. data/lib/moov/models/operations/pingwebhook_request.rb +46 -0
  98. data/lib/moov/models/operations/pingwebhook_request.rbi +15 -0
  99. data/lib/moov/models/operations/pingwebhook_response.rb +49 -0
  100. data/lib/moov/models/operations/pingwebhook_response.rbi +21 -0
  101. data/lib/moov/models/operations/retrievefees_request.rb +6 -2
  102. data/lib/moov/models/operations/retrievefees_request.rbi +2 -0
  103. data/lib/moov/models/operations/updatewebhook_request.rb +50 -0
  104. data/lib/moov/models/operations/updatewebhook_request.rbi +17 -0
  105. data/lib/moov/models/operations/updatewebhook_response.rb +49 -0
  106. data/lib/moov/models/operations/updatewebhook_response.rbi +21 -0
  107. data/lib/moov/models/operations.rb +20 -0
  108. data/lib/moov/sdkconfiguration.rb +2 -2
  109. data/lib/moov/webhooks.rb +1056 -0
  110. data/lib/moov_ruby.rb +1 -0
  111. metadata +77 -6
  112. data/lib/moov/models/components/invoiceexternalpayment_paymenttype.rbi +0 -11
  113. data/lib/moov/models/components/invoicetransferpayment_paymenttype.rb +0 -21
  114. data/lib/moov/models/components/invoicetransferpayment_paymenttype.rbi +0 -11
@@ -0,0 +1,1056 @@
1
+ # Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
2
+
3
+ # typed: true
4
+ # frozen_string_literal: true
5
+
6
+ require 'faraday'
7
+ require 'faraday/multipart'
8
+ require 'faraday/retry'
9
+ require 'sorbet-runtime'
10
+ require_relative 'sdk_hooks/hooks'
11
+ require_relative 'utils/retries'
12
+
13
+ module Moov
14
+ extend T::Sig
15
+ class Webhooks
16
+ extend T::Sig
17
+
18
+
19
+
20
+ sig { params(sdk_config: SDKConfiguration).void }
21
+ def initialize(sdk_config)
22
+ @sdk_configuration = sdk_config
23
+
24
+ end
25
+
26
+ sig { params(base_url: String, url_variables: T.nilable(T::Hash[Symbol, T.any(String, T::Enum)])).returns(String) }
27
+ def get_url(base_url:, url_variables: nil)
28
+ sd_base_url, sd_options = @sdk_configuration.get_server_details
29
+
30
+ if base_url.nil?
31
+ base_url = sd_base_url
32
+ end
33
+
34
+ if url_variables.nil?
35
+ url_variables = sd_options
36
+ end
37
+
38
+ return Utils.template_url base_url, url_variables
39
+ end
40
+
41
+
42
+ sig { params(x_moov_version: T.nilable(::String), timeout_ms: T.nilable(Integer)).returns(Models::Operations::ListEventTypesResponse) }
43
+ def list_event_types(x_moov_version: nil, timeout_ms: nil)
44
+ # list_event_types - List all available event types that can be subscribed to.
45
+ request = Models::Operations::ListEventTypesRequest.new(
46
+ x_moov_version: x_moov_version
47
+ )
48
+ url, params = @sdk_configuration.get_server_details
49
+ base_url = Utils.template_url(url, params)
50
+ url = "#{base_url}/event-types"
51
+ headers = Utils.get_headers(request, @sdk_configuration.globals)
52
+ headers = T.cast(headers, T::Hash[String, String])
53
+ headers['Accept'] = 'application/json'
54
+ headers['user-agent'] = @sdk_configuration.user_agent
55
+
56
+ security = @sdk_configuration.security_source&.call
57
+
58
+ timeout = (timeout_ms.to_f / 1000) unless timeout_ms.nil?
59
+ timeout ||= @sdk_configuration.timeout
60
+
61
+
62
+ connection = @sdk_configuration.client
63
+
64
+ hook_ctx = SDKHooks::HookContext.new(
65
+ config: @sdk_configuration,
66
+ base_url: base_url,
67
+ oauth2_scopes: nil,
68
+ operation_id: 'listEventTypes',
69
+ security_source: @sdk_configuration.security_source
70
+ )
71
+
72
+ error = T.let(nil, T.nilable(StandardError))
73
+ http_response = T.let(nil, T.nilable(Faraday::Response))
74
+
75
+
76
+ begin
77
+ http_response = T.must(connection).get(url) do |req|
78
+ req.headers.merge!(headers)
79
+ req.options.timeout = timeout unless timeout.nil?
80
+ Utils.configure_request_security(req, security)
81
+
82
+ @sdk_configuration.hooks.before_request(
83
+ hook_ctx: SDKHooks::BeforeRequestHookContext.new(
84
+ hook_ctx: hook_ctx
85
+ ),
86
+ request: req
87
+ )
88
+ end
89
+ rescue StandardError => e
90
+ error = e
91
+ ensure
92
+ if http_response.nil? || Utils.error_status?(http_response.status)
93
+ http_response = @sdk_configuration.hooks.after_error(
94
+ error: error,
95
+ hook_ctx: SDKHooks::AfterErrorHookContext.new(
96
+ hook_ctx: hook_ctx
97
+ ),
98
+ response: http_response
99
+ )
100
+ else
101
+ http_response = @sdk_configuration.hooks.after_success(
102
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
103
+ hook_ctx: hook_ctx
104
+ ),
105
+ response: http_response
106
+ )
107
+ end
108
+
109
+ if http_response.nil?
110
+ raise error if !error.nil?
111
+ raise 'no response'
112
+ end
113
+ end
114
+
115
+ content_type = http_response.headers.fetch('Content-Type', 'application/octet-stream')
116
+ if Utils.match_status_code(http_response.status, ['200'])
117
+ if Utils.match_content_type(content_type, 'application/json')
118
+ http_response = @sdk_configuration.hooks.after_success(
119
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
120
+ hook_ctx: hook_ctx
121
+ ),
122
+ response: http_response
123
+ )
124
+ response_data = http_response.env.response_body
125
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Crystalline::Array.new(Models::Components::EventType))
126
+ response = Models::Operations::ListEventTypesResponse.new(
127
+ status_code: http_response.status,
128
+ content_type: content_type,
129
+ raw_response: http_response,
130
+ headers: http_response.headers,
131
+ event_types: T.unsafe(obj)
132
+ )
133
+
134
+ return response
135
+ else
136
+ 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'
137
+ end
138
+ elsif Utils.match_status_code(http_response.status, ['401', '403', '429'])
139
+ raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
140
+ elsif Utils.match_status_code(http_response.status, ['500', '504'])
141
+ raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
142
+ elsif Utils.match_status_code(http_response.status, ['4XX'])
143
+ raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
144
+ elsif Utils.match_status_code(http_response.status, ['5XX'])
145
+ raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
146
+ else
147
+ 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'
148
+
149
+ end
150
+ end
151
+
152
+
153
+ sig { params(x_moov_version: T.nilable(::String), timeout_ms: T.nilable(Integer)).returns(Models::Operations::ListWebhooksResponse) }
154
+ def list(x_moov_version: nil, timeout_ms: nil)
155
+ # list - List all webhooks configured for the account.
156
+ request = Models::Operations::ListWebhooksRequest.new(
157
+ x_moov_version: x_moov_version
158
+ )
159
+ url, params = @sdk_configuration.get_server_details
160
+ base_url = Utils.template_url(url, params)
161
+ url = "#{base_url}/webhooks"
162
+ headers = Utils.get_headers(request, @sdk_configuration.globals)
163
+ headers = T.cast(headers, T::Hash[String, String])
164
+ headers['Accept'] = 'application/json'
165
+ headers['user-agent'] = @sdk_configuration.user_agent
166
+
167
+ security = @sdk_configuration.security_source&.call
168
+
169
+ timeout = (timeout_ms.to_f / 1000) unless timeout_ms.nil?
170
+ timeout ||= @sdk_configuration.timeout
171
+
172
+
173
+ connection = @sdk_configuration.client
174
+
175
+ hook_ctx = SDKHooks::HookContext.new(
176
+ config: @sdk_configuration,
177
+ base_url: base_url,
178
+ oauth2_scopes: nil,
179
+ operation_id: 'listWebhooks',
180
+ security_source: @sdk_configuration.security_source
181
+ )
182
+
183
+ error = T.let(nil, T.nilable(StandardError))
184
+ http_response = T.let(nil, T.nilable(Faraday::Response))
185
+
186
+
187
+ begin
188
+ http_response = T.must(connection).get(url) do |req|
189
+ req.headers.merge!(headers)
190
+ req.options.timeout = timeout unless timeout.nil?
191
+ Utils.configure_request_security(req, security)
192
+
193
+ @sdk_configuration.hooks.before_request(
194
+ hook_ctx: SDKHooks::BeforeRequestHookContext.new(
195
+ hook_ctx: hook_ctx
196
+ ),
197
+ request: req
198
+ )
199
+ end
200
+ rescue StandardError => e
201
+ error = e
202
+ ensure
203
+ if http_response.nil? || Utils.error_status?(http_response.status)
204
+ http_response = @sdk_configuration.hooks.after_error(
205
+ error: error,
206
+ hook_ctx: SDKHooks::AfterErrorHookContext.new(
207
+ hook_ctx: hook_ctx
208
+ ),
209
+ response: http_response
210
+ )
211
+ else
212
+ http_response = @sdk_configuration.hooks.after_success(
213
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
214
+ hook_ctx: hook_ctx
215
+ ),
216
+ response: http_response
217
+ )
218
+ end
219
+
220
+ if http_response.nil?
221
+ raise error if !error.nil?
222
+ raise 'no response'
223
+ end
224
+ end
225
+
226
+ content_type = http_response.headers.fetch('Content-Type', 'application/octet-stream')
227
+ if Utils.match_status_code(http_response.status, ['200'])
228
+ if Utils.match_content_type(content_type, 'application/json')
229
+ http_response = @sdk_configuration.hooks.after_success(
230
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
231
+ hook_ctx: hook_ctx
232
+ ),
233
+ response: http_response
234
+ )
235
+ response_data = http_response.env.response_body
236
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Crystalline::Array.new(Models::Components::Webhook))
237
+ response = Models::Operations::ListWebhooksResponse.new(
238
+ status_code: http_response.status,
239
+ content_type: content_type,
240
+ raw_response: http_response,
241
+ headers: http_response.headers,
242
+ webhooks: T.unsafe(obj)
243
+ )
244
+
245
+ return response
246
+ else
247
+ 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'
248
+ end
249
+ elsif Utils.match_status_code(http_response.status, ['401', '403', '429'])
250
+ raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
251
+ elsif Utils.match_status_code(http_response.status, ['500', '504'])
252
+ raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
253
+ elsif Utils.match_status_code(http_response.status, ['4XX'])
254
+ raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
255
+ elsif Utils.match_status_code(http_response.status, ['5XX'])
256
+ raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
257
+ else
258
+ 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'
259
+
260
+ end
261
+ end
262
+
263
+
264
+ sig { params(create_webhook: Models::Components::CreateWebhook, x_moov_version: T.nilable(::String), timeout_ms: T.nilable(Integer)).returns(Models::Operations::CreateWebhookResponse) }
265
+ def create(create_webhook:, x_moov_version: nil, timeout_ms: nil)
266
+ # create - Create a new webhook for the account.
267
+ request = Models::Operations::CreateWebhookRequest.new(
268
+ create_webhook: create_webhook,
269
+ x_moov_version: x_moov_version
270
+ )
271
+ url, params = @sdk_configuration.get_server_details
272
+ base_url = Utils.template_url(url, params)
273
+ url = "#{base_url}/webhooks"
274
+ headers = Utils.get_headers(request, @sdk_configuration.globals)
275
+ headers = T.cast(headers, T::Hash[String, String])
276
+ req_content_type, data, form = Utils.serialize_request_body(request, false, false, :create_webhook, :json)
277
+ headers['content-type'] = req_content_type
278
+ raise StandardError, 'request body is required' if data.nil? && form.nil?
279
+
280
+ if form
281
+ body = Utils.encode_form(form)
282
+ elsif Utils.match_content_type(req_content_type, 'application/x-www-form-urlencoded')
283
+ body = URI.encode_www_form(T.cast(data, T::Hash[Symbol, Object]))
284
+ else
285
+ body = data
286
+ end
287
+ headers['Accept'] = 'application/json'
288
+ headers['user-agent'] = @sdk_configuration.user_agent
289
+
290
+ security = @sdk_configuration.security_source&.call
291
+
292
+ timeout = (timeout_ms.to_f / 1000) unless timeout_ms.nil?
293
+ timeout ||= @sdk_configuration.timeout
294
+
295
+
296
+ connection = @sdk_configuration.client
297
+
298
+ hook_ctx = SDKHooks::HookContext.new(
299
+ config: @sdk_configuration,
300
+ base_url: base_url,
301
+ oauth2_scopes: nil,
302
+ operation_id: 'createWebhook',
303
+ security_source: @sdk_configuration.security_source
304
+ )
305
+
306
+ error = T.let(nil, T.nilable(StandardError))
307
+ http_response = T.let(nil, T.nilable(Faraday::Response))
308
+
309
+
310
+ begin
311
+ http_response = T.must(connection).post(url) do |req|
312
+ req.body = body
313
+ req.headers.merge!(headers)
314
+ req.options.timeout = timeout unless timeout.nil?
315
+ Utils.configure_request_security(req, security)
316
+
317
+ @sdk_configuration.hooks.before_request(
318
+ hook_ctx: SDKHooks::BeforeRequestHookContext.new(
319
+ hook_ctx: hook_ctx
320
+ ),
321
+ request: req
322
+ )
323
+ end
324
+ rescue StandardError => e
325
+ error = e
326
+ ensure
327
+ if http_response.nil? || Utils.error_status?(http_response.status)
328
+ http_response = @sdk_configuration.hooks.after_error(
329
+ error: error,
330
+ hook_ctx: SDKHooks::AfterErrorHookContext.new(
331
+ hook_ctx: hook_ctx
332
+ ),
333
+ response: http_response
334
+ )
335
+ else
336
+ http_response = @sdk_configuration.hooks.after_success(
337
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
338
+ hook_ctx: hook_ctx
339
+ ),
340
+ response: http_response
341
+ )
342
+ end
343
+
344
+ if http_response.nil?
345
+ raise error if !error.nil?
346
+ raise 'no response'
347
+ end
348
+ end
349
+
350
+ content_type = http_response.headers.fetch('Content-Type', 'application/octet-stream')
351
+ if Utils.match_status_code(http_response.status, ['201'])
352
+ if Utils.match_content_type(content_type, 'application/json')
353
+ http_response = @sdk_configuration.hooks.after_success(
354
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
355
+ hook_ctx: hook_ctx
356
+ ),
357
+ response: http_response
358
+ )
359
+ response_data = http_response.env.response_body
360
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Components::Webhook)
361
+ response = Models::Operations::CreateWebhookResponse.new(
362
+ status_code: http_response.status,
363
+ content_type: content_type,
364
+ raw_response: http_response,
365
+ headers: http_response.headers,
366
+ webhook: T.unsafe(obj)
367
+ )
368
+
369
+ return response
370
+ else
371
+ 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'
372
+ end
373
+ elsif Utils.match_status_code(http_response.status, ['400', '409'])
374
+ if Utils.match_content_type(content_type, 'application/json')
375
+ http_response = @sdk_configuration.hooks.after_success(
376
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
377
+ hook_ctx: hook_ctx
378
+ ),
379
+ response: http_response
380
+ )
381
+ response_data = http_response.env.response_body
382
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::GenericError)
383
+ obj.raw_response = http_response
384
+ raise obj
385
+ else
386
+ 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'
387
+ end
388
+ elsif Utils.match_status_code(http_response.status, ['422'])
389
+ if Utils.match_content_type(content_type, 'application/json')
390
+ http_response = @sdk_configuration.hooks.after_success(
391
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
392
+ hook_ctx: hook_ctx
393
+ ),
394
+ response: http_response
395
+ )
396
+ response_data = http_response.env.response_body
397
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::CreateWebhookValidationError)
398
+ obj.raw_response = http_response
399
+ raise obj
400
+ else
401
+ 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'
402
+ end
403
+ elsif Utils.match_status_code(http_response.status, ['401', '403', '404', '429'])
404
+ raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
405
+ elsif Utils.match_status_code(http_response.status, ['500', '504'])
406
+ raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
407
+ elsif Utils.match_status_code(http_response.status, ['4XX'])
408
+ raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
409
+ elsif Utils.match_status_code(http_response.status, ['5XX'])
410
+ raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
411
+ else
412
+ 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'
413
+
414
+ end
415
+ end
416
+
417
+
418
+ sig { params(webhook_id: ::String, x_moov_version: T.nilable(::String), timeout_ms: T.nilable(Integer)).returns(Models::Operations::GetWebhookResponse) }
419
+ def get(webhook_id:, x_moov_version: nil, timeout_ms: nil)
420
+ # get - Get details of a specific webhook.
421
+ request = Models::Operations::GetWebhookRequest.new(
422
+ webhook_id: webhook_id,
423
+ x_moov_version: x_moov_version
424
+ )
425
+ url, params = @sdk_configuration.get_server_details
426
+ base_url = Utils.template_url(url, params)
427
+ url = Utils.generate_url(
428
+ Models::Operations::GetWebhookRequest,
429
+ base_url,
430
+ '/webhooks/{webhookID}',
431
+ request,
432
+ @sdk_configuration.globals
433
+ )
434
+ headers = Utils.get_headers(request, @sdk_configuration.globals)
435
+ headers = T.cast(headers, T::Hash[String, String])
436
+ headers['Accept'] = 'application/json'
437
+ headers['user-agent'] = @sdk_configuration.user_agent
438
+
439
+ security = @sdk_configuration.security_source&.call
440
+
441
+ timeout = (timeout_ms.to_f / 1000) unless timeout_ms.nil?
442
+ timeout ||= @sdk_configuration.timeout
443
+
444
+
445
+ connection = @sdk_configuration.client
446
+
447
+ hook_ctx = SDKHooks::HookContext.new(
448
+ config: @sdk_configuration,
449
+ base_url: base_url,
450
+ oauth2_scopes: nil,
451
+ operation_id: 'getWebhook',
452
+ security_source: @sdk_configuration.security_source
453
+ )
454
+
455
+ error = T.let(nil, T.nilable(StandardError))
456
+ http_response = T.let(nil, T.nilable(Faraday::Response))
457
+
458
+
459
+ begin
460
+ http_response = T.must(connection).get(url) do |req|
461
+ req.headers.merge!(headers)
462
+ req.options.timeout = timeout unless timeout.nil?
463
+ Utils.configure_request_security(req, security)
464
+
465
+ @sdk_configuration.hooks.before_request(
466
+ hook_ctx: SDKHooks::BeforeRequestHookContext.new(
467
+ hook_ctx: hook_ctx
468
+ ),
469
+ request: req
470
+ )
471
+ end
472
+ rescue StandardError => e
473
+ error = e
474
+ ensure
475
+ if http_response.nil? || Utils.error_status?(http_response.status)
476
+ http_response = @sdk_configuration.hooks.after_error(
477
+ error: error,
478
+ hook_ctx: SDKHooks::AfterErrorHookContext.new(
479
+ hook_ctx: hook_ctx
480
+ ),
481
+ response: http_response
482
+ )
483
+ else
484
+ http_response = @sdk_configuration.hooks.after_success(
485
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
486
+ hook_ctx: hook_ctx
487
+ ),
488
+ response: http_response
489
+ )
490
+ end
491
+
492
+ if http_response.nil?
493
+ raise error if !error.nil?
494
+ raise 'no response'
495
+ end
496
+ end
497
+
498
+ content_type = http_response.headers.fetch('Content-Type', 'application/octet-stream')
499
+ if Utils.match_status_code(http_response.status, ['200'])
500
+ if Utils.match_content_type(content_type, 'application/json')
501
+ http_response = @sdk_configuration.hooks.after_success(
502
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
503
+ hook_ctx: hook_ctx
504
+ ),
505
+ response: http_response
506
+ )
507
+ response_data = http_response.env.response_body
508
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Components::Webhook)
509
+ response = Models::Operations::GetWebhookResponse.new(
510
+ status_code: http_response.status,
511
+ content_type: content_type,
512
+ raw_response: http_response,
513
+ headers: http_response.headers,
514
+ webhook: T.unsafe(obj)
515
+ )
516
+
517
+ return response
518
+ else
519
+ 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'
520
+ end
521
+ elsif Utils.match_status_code(http_response.status, ['401', '403', '404', '429'])
522
+ raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
523
+ elsif Utils.match_status_code(http_response.status, ['500', '504'])
524
+ raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
525
+ elsif Utils.match_status_code(http_response.status, ['4XX'])
526
+ raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
527
+ elsif Utils.match_status_code(http_response.status, ['5XX'])
528
+ raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
529
+ else
530
+ 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'
531
+
532
+ end
533
+ end
534
+
535
+
536
+ sig { params(update_webhook: Models::Components::UpdateWebhook, webhook_id: ::String, x_moov_version: T.nilable(::String), timeout_ms: T.nilable(Integer)).returns(Models::Operations::UpdateWebhookResponse) }
537
+ def update(update_webhook:, webhook_id:, x_moov_version: nil, timeout_ms: nil)
538
+ # update - Update an existing webhook.
539
+ request = Models::Operations::UpdateWebhookRequest.new(
540
+ webhook_id: webhook_id,
541
+ update_webhook: update_webhook,
542
+ x_moov_version: x_moov_version
543
+ )
544
+ url, params = @sdk_configuration.get_server_details
545
+ base_url = Utils.template_url(url, params)
546
+ url = Utils.generate_url(
547
+ Models::Operations::UpdateWebhookRequest,
548
+ base_url,
549
+ '/webhooks/{webhookID}',
550
+ request,
551
+ @sdk_configuration.globals
552
+ )
553
+ headers = Utils.get_headers(request, @sdk_configuration.globals)
554
+ headers = T.cast(headers, T::Hash[String, String])
555
+ req_content_type, data, form = Utils.serialize_request_body(request, false, false, :update_webhook, :json)
556
+ headers['content-type'] = req_content_type
557
+ raise StandardError, 'request body is required' if data.nil? && form.nil?
558
+
559
+ if form
560
+ body = Utils.encode_form(form)
561
+ elsif Utils.match_content_type(req_content_type, 'application/x-www-form-urlencoded')
562
+ body = URI.encode_www_form(T.cast(data, T::Hash[Symbol, Object]))
563
+ else
564
+ body = data
565
+ end
566
+ headers['Accept'] = 'application/json'
567
+ headers['user-agent'] = @sdk_configuration.user_agent
568
+
569
+ security = @sdk_configuration.security_source&.call
570
+
571
+ timeout = (timeout_ms.to_f / 1000) unless timeout_ms.nil?
572
+ timeout ||= @sdk_configuration.timeout
573
+
574
+
575
+ connection = @sdk_configuration.client
576
+
577
+ hook_ctx = SDKHooks::HookContext.new(
578
+ config: @sdk_configuration,
579
+ base_url: base_url,
580
+ oauth2_scopes: nil,
581
+ operation_id: 'updateWebhook',
582
+ security_source: @sdk_configuration.security_source
583
+ )
584
+
585
+ error = T.let(nil, T.nilable(StandardError))
586
+ http_response = T.let(nil, T.nilable(Faraday::Response))
587
+
588
+
589
+ begin
590
+ http_response = T.must(connection).put(url) do |req|
591
+ req.body = body
592
+ req.headers.merge!(headers)
593
+ req.options.timeout = timeout unless timeout.nil?
594
+ Utils.configure_request_security(req, security)
595
+
596
+ @sdk_configuration.hooks.before_request(
597
+ hook_ctx: SDKHooks::BeforeRequestHookContext.new(
598
+ hook_ctx: hook_ctx
599
+ ),
600
+ request: req
601
+ )
602
+ end
603
+ rescue StandardError => e
604
+ error = e
605
+ ensure
606
+ if http_response.nil? || Utils.error_status?(http_response.status)
607
+ http_response = @sdk_configuration.hooks.after_error(
608
+ error: error,
609
+ hook_ctx: SDKHooks::AfterErrorHookContext.new(
610
+ hook_ctx: hook_ctx
611
+ ),
612
+ response: http_response
613
+ )
614
+ else
615
+ http_response = @sdk_configuration.hooks.after_success(
616
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
617
+ hook_ctx: hook_ctx
618
+ ),
619
+ response: http_response
620
+ )
621
+ end
622
+
623
+ if http_response.nil?
624
+ raise error if !error.nil?
625
+ raise 'no response'
626
+ end
627
+ end
628
+
629
+ content_type = http_response.headers.fetch('Content-Type', 'application/octet-stream')
630
+ if Utils.match_status_code(http_response.status, ['200'])
631
+ if Utils.match_content_type(content_type, 'application/json')
632
+ http_response = @sdk_configuration.hooks.after_success(
633
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
634
+ hook_ctx: hook_ctx
635
+ ),
636
+ response: http_response
637
+ )
638
+ response_data = http_response.env.response_body
639
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Components::Webhook)
640
+ response = Models::Operations::UpdateWebhookResponse.new(
641
+ status_code: http_response.status,
642
+ content_type: content_type,
643
+ raw_response: http_response,
644
+ headers: http_response.headers,
645
+ webhook: T.unsafe(obj)
646
+ )
647
+
648
+ return response
649
+ else
650
+ 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'
651
+ end
652
+ elsif Utils.match_status_code(http_response.status, ['400', '409'])
653
+ if Utils.match_content_type(content_type, 'application/json')
654
+ http_response = @sdk_configuration.hooks.after_success(
655
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
656
+ hook_ctx: hook_ctx
657
+ ),
658
+ response: http_response
659
+ )
660
+ response_data = http_response.env.response_body
661
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::GenericError)
662
+ obj.raw_response = http_response
663
+ raise obj
664
+ else
665
+ 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'
666
+ end
667
+ elsif Utils.match_status_code(http_response.status, ['422'])
668
+ if Utils.match_content_type(content_type, 'application/json')
669
+ http_response = @sdk_configuration.hooks.after_success(
670
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
671
+ hook_ctx: hook_ctx
672
+ ),
673
+ response: http_response
674
+ )
675
+ response_data = http_response.env.response_body
676
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::UpdateWebhookValidationError)
677
+ obj.raw_response = http_response
678
+ raise obj
679
+ else
680
+ 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'
681
+ end
682
+ elsif Utils.match_status_code(http_response.status, ['401', '403', '404', '429'])
683
+ raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
684
+ elsif Utils.match_status_code(http_response.status, ['500', '504'])
685
+ raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
686
+ elsif Utils.match_status_code(http_response.status, ['4XX'])
687
+ raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
688
+ elsif Utils.match_status_code(http_response.status, ['5XX'])
689
+ raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
690
+ else
691
+ 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'
692
+
693
+ end
694
+ end
695
+
696
+
697
+ sig { params(webhook_id: ::String, x_moov_version: T.nilable(::String), timeout_ms: T.nilable(Integer)).returns(Models::Operations::DisableWebhookResponse) }
698
+ def disable(webhook_id:, x_moov_version: nil, timeout_ms: nil)
699
+ # disable - Disable a webhook. Disabled webhooks will no longer receive events.
700
+ request = Models::Operations::DisableWebhookRequest.new(
701
+ webhook_id: webhook_id,
702
+ x_moov_version: x_moov_version
703
+ )
704
+ url, params = @sdk_configuration.get_server_details
705
+ base_url = Utils.template_url(url, params)
706
+ url = Utils.generate_url(
707
+ Models::Operations::DisableWebhookRequest,
708
+ base_url,
709
+ '/webhooks/{webhookID}',
710
+ request,
711
+ @sdk_configuration.globals
712
+ )
713
+ headers = Utils.get_headers(request, @sdk_configuration.globals)
714
+ headers = T.cast(headers, T::Hash[String, String])
715
+ headers['Accept'] = 'application/json'
716
+ headers['user-agent'] = @sdk_configuration.user_agent
717
+
718
+ security = @sdk_configuration.security_source&.call
719
+
720
+ timeout = (timeout_ms.to_f / 1000) unless timeout_ms.nil?
721
+ timeout ||= @sdk_configuration.timeout
722
+
723
+
724
+ connection = @sdk_configuration.client
725
+
726
+ hook_ctx = SDKHooks::HookContext.new(
727
+ config: @sdk_configuration,
728
+ base_url: base_url,
729
+ oauth2_scopes: nil,
730
+ operation_id: 'disableWebhook',
731
+ security_source: @sdk_configuration.security_source
732
+ )
733
+
734
+ error = T.let(nil, T.nilable(StandardError))
735
+ http_response = T.let(nil, T.nilable(Faraday::Response))
736
+
737
+
738
+ begin
739
+ http_response = T.must(connection).delete(url) do |req|
740
+ req.headers.merge!(headers)
741
+ req.options.timeout = timeout unless timeout.nil?
742
+ Utils.configure_request_security(req, security)
743
+
744
+ @sdk_configuration.hooks.before_request(
745
+ hook_ctx: SDKHooks::BeforeRequestHookContext.new(
746
+ hook_ctx: hook_ctx
747
+ ),
748
+ request: req
749
+ )
750
+ end
751
+ rescue StandardError => e
752
+ error = e
753
+ ensure
754
+ if http_response.nil? || Utils.error_status?(http_response.status)
755
+ http_response = @sdk_configuration.hooks.after_error(
756
+ error: error,
757
+ hook_ctx: SDKHooks::AfterErrorHookContext.new(
758
+ hook_ctx: hook_ctx
759
+ ),
760
+ response: http_response
761
+ )
762
+ else
763
+ http_response = @sdk_configuration.hooks.after_success(
764
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
765
+ hook_ctx: hook_ctx
766
+ ),
767
+ response: http_response
768
+ )
769
+ end
770
+
771
+ if http_response.nil?
772
+ raise error if !error.nil?
773
+ raise 'no response'
774
+ end
775
+ end
776
+
777
+ content_type = http_response.headers.fetch('Content-Type', 'application/octet-stream')
778
+ if Utils.match_status_code(http_response.status, ['204'])
779
+ http_response = @sdk_configuration.hooks.after_success(
780
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
781
+ hook_ctx: hook_ctx
782
+ ),
783
+ response: http_response
784
+ )
785
+ return Models::Operations::DisableWebhookResponse.new(
786
+ status_code: http_response.status,
787
+ content_type: content_type,
788
+ raw_response: http_response,
789
+ headers: {}
790
+ )
791
+ elsif Utils.match_status_code(http_response.status, ['400', '409'])
792
+ if Utils.match_content_type(content_type, 'application/json')
793
+ http_response = @sdk_configuration.hooks.after_success(
794
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
795
+ hook_ctx: hook_ctx
796
+ ),
797
+ response: http_response
798
+ )
799
+ response_data = http_response.env.response_body
800
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Errors::GenericError)
801
+ obj.raw_response = http_response
802
+ raise obj
803
+ else
804
+ 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'
805
+ end
806
+ elsif Utils.match_status_code(http_response.status, ['401', '403', '404', '429'])
807
+ raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
808
+ elsif Utils.match_status_code(http_response.status, ['500', '504'])
809
+ raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
810
+ elsif Utils.match_status_code(http_response.status, ['4XX'])
811
+ raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
812
+ elsif Utils.match_status_code(http_response.status, ['5XX'])
813
+ raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
814
+ else
815
+ 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'
816
+
817
+ end
818
+ end
819
+
820
+
821
+ sig { params(webhook_id: ::String, x_moov_version: T.nilable(::String), timeout_ms: T.nilable(Integer)).returns(Models::Operations::PingWebhookResponse) }
822
+ def ping(webhook_id:, x_moov_version: nil, timeout_ms: nil)
823
+ # ping - Send a test ping to a webhook to verify it is configured correctly.
824
+ request = Models::Operations::PingWebhookRequest.new(
825
+ webhook_id: webhook_id,
826
+ x_moov_version: x_moov_version
827
+ )
828
+ url, params = @sdk_configuration.get_server_details
829
+ base_url = Utils.template_url(url, params)
830
+ url = Utils.generate_url(
831
+ Models::Operations::PingWebhookRequest,
832
+ base_url,
833
+ '/webhooks/{webhookID}/ping',
834
+ request,
835
+ @sdk_configuration.globals
836
+ )
837
+ headers = Utils.get_headers(request, @sdk_configuration.globals)
838
+ headers = T.cast(headers, T::Hash[String, String])
839
+ headers['Accept'] = 'application/json'
840
+ headers['user-agent'] = @sdk_configuration.user_agent
841
+
842
+ security = @sdk_configuration.security_source&.call
843
+
844
+ timeout = (timeout_ms.to_f / 1000) unless timeout_ms.nil?
845
+ timeout ||= @sdk_configuration.timeout
846
+
847
+
848
+ connection = @sdk_configuration.client
849
+
850
+ hook_ctx = SDKHooks::HookContext.new(
851
+ config: @sdk_configuration,
852
+ base_url: base_url,
853
+ oauth2_scopes: nil,
854
+ operation_id: 'pingWebhook',
855
+ security_source: @sdk_configuration.security_source
856
+ )
857
+
858
+ error = T.let(nil, T.nilable(StandardError))
859
+ http_response = T.let(nil, T.nilable(Faraday::Response))
860
+
861
+
862
+ begin
863
+ http_response = T.must(connection).post(url) do |req|
864
+ req.headers.merge!(headers)
865
+ req.options.timeout = timeout unless timeout.nil?
866
+ Utils.configure_request_security(req, security)
867
+
868
+ @sdk_configuration.hooks.before_request(
869
+ hook_ctx: SDKHooks::BeforeRequestHookContext.new(
870
+ hook_ctx: hook_ctx
871
+ ),
872
+ request: req
873
+ )
874
+ end
875
+ rescue StandardError => e
876
+ error = e
877
+ ensure
878
+ if http_response.nil? || Utils.error_status?(http_response.status)
879
+ http_response = @sdk_configuration.hooks.after_error(
880
+ error: error,
881
+ hook_ctx: SDKHooks::AfterErrorHookContext.new(
882
+ hook_ctx: hook_ctx
883
+ ),
884
+ response: http_response
885
+ )
886
+ else
887
+ http_response = @sdk_configuration.hooks.after_success(
888
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
889
+ hook_ctx: hook_ctx
890
+ ),
891
+ response: http_response
892
+ )
893
+ end
894
+
895
+ if http_response.nil?
896
+ raise error if !error.nil?
897
+ raise 'no response'
898
+ end
899
+ end
900
+
901
+ content_type = http_response.headers.fetch('Content-Type', 'application/octet-stream')
902
+ if Utils.match_status_code(http_response.status, ['200'])
903
+ if Utils.match_content_type(content_type, 'application/json')
904
+ http_response = @sdk_configuration.hooks.after_success(
905
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
906
+ hook_ctx: hook_ctx
907
+ ),
908
+ response: http_response
909
+ )
910
+ response_data = http_response.env.response_body
911
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Components::PingResponse)
912
+ response = Models::Operations::PingWebhookResponse.new(
913
+ status_code: http_response.status,
914
+ content_type: content_type,
915
+ raw_response: http_response,
916
+ headers: http_response.headers,
917
+ ping_response: T.unsafe(obj)
918
+ )
919
+
920
+ return response
921
+ else
922
+ 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'
923
+ end
924
+ elsif Utils.match_status_code(http_response.status, ['401', '403', '404', '429'])
925
+ raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
926
+ elsif Utils.match_status_code(http_response.status, ['500', '504'])
927
+ raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
928
+ elsif Utils.match_status_code(http_response.status, ['4XX'])
929
+ raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
930
+ elsif Utils.match_status_code(http_response.status, ['5XX'])
931
+ raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
932
+ else
933
+ 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'
934
+
935
+ end
936
+ end
937
+
938
+
939
+ sig { params(webhook_id: ::String, x_moov_version: T.nilable(::String), timeout_ms: T.nilable(Integer)).returns(Models::Operations::GetWebhookSecretResponse) }
940
+ def get_secret(webhook_id:, x_moov_version: nil, timeout_ms: nil)
941
+ # get_secret - Get the secret key for verifying webhook payloads.
942
+ request = Models::Operations::GetWebhookSecretRequest.new(
943
+ webhook_id: webhook_id,
944
+ x_moov_version: x_moov_version
945
+ )
946
+ url, params = @sdk_configuration.get_server_details
947
+ base_url = Utils.template_url(url, params)
948
+ url = Utils.generate_url(
949
+ Models::Operations::GetWebhookSecretRequest,
950
+ base_url,
951
+ '/webhooks/{webhookID}/secret',
952
+ request,
953
+ @sdk_configuration.globals
954
+ )
955
+ headers = Utils.get_headers(request, @sdk_configuration.globals)
956
+ headers = T.cast(headers, T::Hash[String, String])
957
+ headers['Accept'] = 'application/json'
958
+ headers['user-agent'] = @sdk_configuration.user_agent
959
+
960
+ security = @sdk_configuration.security_source&.call
961
+
962
+ timeout = (timeout_ms.to_f / 1000) unless timeout_ms.nil?
963
+ timeout ||= @sdk_configuration.timeout
964
+
965
+
966
+ connection = @sdk_configuration.client
967
+
968
+ hook_ctx = SDKHooks::HookContext.new(
969
+ config: @sdk_configuration,
970
+ base_url: base_url,
971
+ oauth2_scopes: nil,
972
+ operation_id: 'getWebhookSecret',
973
+ security_source: @sdk_configuration.security_source
974
+ )
975
+
976
+ error = T.let(nil, T.nilable(StandardError))
977
+ http_response = T.let(nil, T.nilable(Faraday::Response))
978
+
979
+
980
+ begin
981
+ http_response = T.must(connection).get(url) do |req|
982
+ req.headers.merge!(headers)
983
+ req.options.timeout = timeout unless timeout.nil?
984
+ Utils.configure_request_security(req, security)
985
+
986
+ @sdk_configuration.hooks.before_request(
987
+ hook_ctx: SDKHooks::BeforeRequestHookContext.new(
988
+ hook_ctx: hook_ctx
989
+ ),
990
+ request: req
991
+ )
992
+ end
993
+ rescue StandardError => e
994
+ error = e
995
+ ensure
996
+ if http_response.nil? || Utils.error_status?(http_response.status)
997
+ http_response = @sdk_configuration.hooks.after_error(
998
+ error: error,
999
+ hook_ctx: SDKHooks::AfterErrorHookContext.new(
1000
+ hook_ctx: hook_ctx
1001
+ ),
1002
+ response: http_response
1003
+ )
1004
+ else
1005
+ http_response = @sdk_configuration.hooks.after_success(
1006
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
1007
+ hook_ctx: hook_ctx
1008
+ ),
1009
+ response: http_response
1010
+ )
1011
+ end
1012
+
1013
+ if http_response.nil?
1014
+ raise error if !error.nil?
1015
+ raise 'no response'
1016
+ end
1017
+ end
1018
+
1019
+ content_type = http_response.headers.fetch('Content-Type', 'application/octet-stream')
1020
+ if Utils.match_status_code(http_response.status, ['200'])
1021
+ if Utils.match_content_type(content_type, 'application/json')
1022
+ http_response = @sdk_configuration.hooks.after_success(
1023
+ hook_ctx: SDKHooks::AfterSuccessHookContext.new(
1024
+ hook_ctx: hook_ctx
1025
+ ),
1026
+ response: http_response
1027
+ )
1028
+ response_data = http_response.env.response_body
1029
+ obj = Crystalline.unmarshal_json(JSON.parse(response_data), Models::Components::WebhookSecret)
1030
+ response = Models::Operations::GetWebhookSecretResponse.new(
1031
+ status_code: http_response.status,
1032
+ content_type: content_type,
1033
+ raw_response: http_response,
1034
+ headers: http_response.headers,
1035
+ webhook_secret: T.unsafe(obj)
1036
+ )
1037
+
1038
+ return response
1039
+ else
1040
+ 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'
1041
+ end
1042
+ elsif Utils.match_status_code(http_response.status, ['401', '403', '404', '429'])
1043
+ raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
1044
+ elsif Utils.match_status_code(http_response.status, ['500', '504'])
1045
+ raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
1046
+ elsif Utils.match_status_code(http_response.status, ['4XX'])
1047
+ raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
1048
+ elsif Utils.match_status_code(http_response.status, ['5XX'])
1049
+ raise ::Moov::Models::Errors::APIError.new(status_code: http_response.status, body: http_response.env.response_body, raw_response: http_response), 'API error occurred'
1050
+ else
1051
+ 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'
1052
+
1053
+ end
1054
+ end
1055
+ end
1056
+ end