revox 0.0.2

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 (161) hide show
  1. checksums.yaml +7 -0
  2. data/.ignore +2 -0
  3. data/CHANGELOG.md +10 -0
  4. data/README.md +234 -0
  5. data/SECURITY.md +23 -0
  6. data/lib/revox/client.rb +86 -0
  7. data/lib/revox/errors.rb +228 -0
  8. data/lib/revox/file_part.rb +58 -0
  9. data/lib/revox/internal/transport/base_client.rb +570 -0
  10. data/lib/revox/internal/transport/pooled_net_requester.rb +210 -0
  11. data/lib/revox/internal/type/array_of.rb +168 -0
  12. data/lib/revox/internal/type/base_model.rb +529 -0
  13. data/lib/revox/internal/type/base_page.rb +55 -0
  14. data/lib/revox/internal/type/boolean.rb +77 -0
  15. data/lib/revox/internal/type/converter.rb +327 -0
  16. data/lib/revox/internal/type/enum.rb +131 -0
  17. data/lib/revox/internal/type/file_input.rb +110 -0
  18. data/lib/revox/internal/type/hash_of.rb +188 -0
  19. data/lib/revox/internal/type/request_parameters.rb +42 -0
  20. data/lib/revox/internal/type/union.rb +237 -0
  21. data/lib/revox/internal/type/unknown.rb +81 -0
  22. data/lib/revox/internal/util.rb +920 -0
  23. data/lib/revox/internal.rb +20 -0
  24. data/lib/revox/models/assistant_create_params.rb +467 -0
  25. data/lib/revox/models/assistant_create_response.rb +535 -0
  26. data/lib/revox/models/assistant_delete_params.rb +14 -0
  27. data/lib/revox/models/assistant_delete_response.rb +16 -0
  28. data/lib/revox/models/assistant_list_params.rb +14 -0
  29. data/lib/revox/models/assistant_list_response.rb +533 -0
  30. data/lib/revox/models/assistant_retrieve_params.rb +14 -0
  31. data/lib/revox/models/assistant_retrieve_response.rb +518 -0
  32. data/lib/revox/models/assistant_update_params.rb +467 -0
  33. data/lib/revox/models/assistant_update_response.rb +535 -0
  34. data/lib/revox/models/call_create_params.rb +592 -0
  35. data/lib/revox/models/call_create_response.rb +684 -0
  36. data/lib/revox/models/call_list_params.rb +29 -0
  37. data/lib/revox/models/call_list_response.rb +197 -0
  38. data/lib/revox/models/call_retrieve_params.rb +14 -0
  39. data/lib/revox/models/call_retrieve_response.rb +684 -0
  40. data/lib/revox/models/users/me_retrieve_params.rb +16 -0
  41. data/lib/revox/models/users/me_retrieve_response.rb +89 -0
  42. data/lib/revox/models/users/me_update_params.rb +22 -0
  43. data/lib/revox/models/users/me_update_response.rb +89 -0
  44. data/lib/revox/models/voice_list_params.rb +14 -0
  45. data/lib/revox/models/voice_list_response.rb +91 -0
  46. data/lib/revox/models/voice_preview_params.rb +49 -0
  47. data/lib/revox/models/voice_retrieve_params.rb +30 -0
  48. data/lib/revox/models/voice_retrieve_response.rb +39 -0
  49. data/lib/revox/models.rb +65 -0
  50. data/lib/revox/request_options.rb +77 -0
  51. data/lib/revox/resources/assistants.rb +180 -0
  52. data/lib/revox/resources/call.rb +100 -0
  53. data/lib/revox/resources/users/me.rb +55 -0
  54. data/lib/revox/resources/users.rb +18 -0
  55. data/lib/revox/resources/voices.rb +83 -0
  56. data/lib/revox/version.rb +5 -0
  57. data/lib/revox.rb +85 -0
  58. data/manifest.yaml +17 -0
  59. data/rbi/revox/client.rbi +58 -0
  60. data/rbi/revox/errors.rbi +205 -0
  61. data/rbi/revox/file_part.rbi +37 -0
  62. data/rbi/revox/internal/transport/base_client.rbi +297 -0
  63. data/rbi/revox/internal/transport/pooled_net_requester.rbi +82 -0
  64. data/rbi/revox/internal/type/array_of.rbi +104 -0
  65. data/rbi/revox/internal/type/base_model.rbi +299 -0
  66. data/rbi/revox/internal/type/base_page.rbi +42 -0
  67. data/rbi/revox/internal/type/boolean.rbi +58 -0
  68. data/rbi/revox/internal/type/converter.rbi +204 -0
  69. data/rbi/revox/internal/type/enum.rbi +82 -0
  70. data/rbi/revox/internal/type/file_input.rbi +58 -0
  71. data/rbi/revox/internal/type/hash_of.rbi +104 -0
  72. data/rbi/revox/internal/type/request_parameters.rbi +29 -0
  73. data/rbi/revox/internal/type/union.rbi +126 -0
  74. data/rbi/revox/internal/type/unknown.rbi +58 -0
  75. data/rbi/revox/internal/util.rbi +478 -0
  76. data/rbi/revox/internal.rbi +16 -0
  77. data/rbi/revox/models/assistant_create_params.rbi +929 -0
  78. data/rbi/revox/models/assistant_create_response.rbi +1089 -0
  79. data/rbi/revox/models/assistant_delete_params.rbi +27 -0
  80. data/rbi/revox/models/assistant_delete_response.rbi +26 -0
  81. data/rbi/revox/models/assistant_list_params.rbi +27 -0
  82. data/rbi/revox/models/assistant_list_response.rbi +1079 -0
  83. data/rbi/revox/models/assistant_retrieve_params.rbi +27 -0
  84. data/rbi/revox/models/assistant_retrieve_response.rbi +1024 -0
  85. data/rbi/revox/models/assistant_update_params.rbi +935 -0
  86. data/rbi/revox/models/assistant_update_response.rbi +1089 -0
  87. data/rbi/revox/models/call_create_params.rbi +1147 -0
  88. data/rbi/revox/models/call_create_response.rbi +1335 -0
  89. data/rbi/revox/models/call_list_params.rbi +47 -0
  90. data/rbi/revox/models/call_list_response.rbi +401 -0
  91. data/rbi/revox/models/call_retrieve_params.rbi +27 -0
  92. data/rbi/revox/models/call_retrieve_response.rbi +1346 -0
  93. data/rbi/revox/models/users/me_retrieve_params.rbi +29 -0
  94. data/rbi/revox/models/users/me_retrieve_response.rbi +139 -0
  95. data/rbi/revox/models/users/me_update_params.rbi +43 -0
  96. data/rbi/revox/models/users/me_update_response.rbi +139 -0
  97. data/rbi/revox/models/voice_list_params.rbi +25 -0
  98. data/rbi/revox/models/voice_list_response.rbi +204 -0
  99. data/rbi/revox/models/voice_preview_params.rbi +84 -0
  100. data/rbi/revox/models/voice_retrieve_params.rbi +59 -0
  101. data/rbi/revox/models/voice_retrieve_response.rbi +70 -0
  102. data/rbi/revox/models.rbi +27 -0
  103. data/rbi/revox/request_options.rbi +55 -0
  104. data/rbi/revox/resources/assistants.rbi +206 -0
  105. data/rbi/revox/resources/call.rbi +86 -0
  106. data/rbi/revox/resources/users/me.rbi +33 -0
  107. data/rbi/revox/resources/users.rbi +15 -0
  108. data/rbi/revox/resources/voices.rbi +58 -0
  109. data/rbi/revox/version.rbi +5 -0
  110. data/sig/revox/client.rbs +32 -0
  111. data/sig/revox/errors.rbs +117 -0
  112. data/sig/revox/file_part.rbs +21 -0
  113. data/sig/revox/internal/transport/base_client.rbs +133 -0
  114. data/sig/revox/internal/transport/pooled_net_requester.rbs +48 -0
  115. data/sig/revox/internal/type/array_of.rbs +48 -0
  116. data/sig/revox/internal/type/base_model.rbs +102 -0
  117. data/sig/revox/internal/type/base_page.rbs +24 -0
  118. data/sig/revox/internal/type/boolean.rbs +26 -0
  119. data/sig/revox/internal/type/converter.rbs +79 -0
  120. data/sig/revox/internal/type/enum.rbs +32 -0
  121. data/sig/revox/internal/type/file_input.rbs +25 -0
  122. data/sig/revox/internal/type/hash_of.rbs +48 -0
  123. data/sig/revox/internal/type/request_parameters.rbs +17 -0
  124. data/sig/revox/internal/type/union.rbs +52 -0
  125. data/sig/revox/internal/type/unknown.rbs +26 -0
  126. data/sig/revox/internal/util.rbs +185 -0
  127. data/sig/revox/internal.rbs +9 -0
  128. data/sig/revox/models/assistant_create_params.rbs +413 -0
  129. data/sig/revox/models/assistant_create_response.rbs +461 -0
  130. data/sig/revox/models/assistant_delete_params.rbs +15 -0
  131. data/sig/revox/models/assistant_delete_response.rbs +13 -0
  132. data/sig/revox/models/assistant_list_params.rbs +15 -0
  133. data/sig/revox/models/assistant_list_response.rbs +461 -0
  134. data/sig/revox/models/assistant_retrieve_params.rbs +15 -0
  135. data/sig/revox/models/assistant_retrieve_response.rbs +446 -0
  136. data/sig/revox/models/assistant_update_params.rbs +417 -0
  137. data/sig/revox/models/assistant_update_response.rbs +461 -0
  138. data/sig/revox/models/call_create_params.rbs +507 -0
  139. data/sig/revox/models/call_create_response.rbs +551 -0
  140. data/sig/revox/models/call_list_params.rbs +28 -0
  141. data/sig/revox/models/call_list_response.rbs +171 -0
  142. data/sig/revox/models/call_retrieve_params.rbs +14 -0
  143. data/sig/revox/models/call_retrieve_response.rbs +551 -0
  144. data/sig/revox/models/users/me_retrieve_params.rbs +16 -0
  145. data/sig/revox/models/users/me_retrieve_response.rbs +70 -0
  146. data/sig/revox/models/users/me_update_params.rbs +28 -0
  147. data/sig/revox/models/users/me_update_response.rbs +70 -0
  148. data/sig/revox/models/voice_list_params.rbs +14 -0
  149. data/sig/revox/models/voice_list_response.rbs +83 -0
  150. data/sig/revox/models/voice_preview_params.rbs +49 -0
  151. data/sig/revox/models/voice_retrieve_params.rbs +35 -0
  152. data/sig/revox/models/voice_retrieve_response.rbs +32 -0
  153. data/sig/revox/models.rbs +25 -0
  154. data/sig/revox/request_options.rbs +34 -0
  155. data/sig/revox/resources/assistants.rbs +66 -0
  156. data/sig/revox/resources/call.rbs +31 -0
  157. data/sig/revox/resources/users/me.rbs +18 -0
  158. data/sig/revox/resources/users.rbs +9 -0
  159. data/sig/revox/resources/voices.rbs +24 -0
  160. data/sig/revox/version.rbs +3 -0
  161. metadata +232 -0
@@ -0,0 +1,1346 @@
1
+ # typed: strong
2
+
3
+ module Revox
4
+ module Models
5
+ class CallRetrieveResponse < Revox::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(Revox::Models::CallRetrieveResponse, Revox::Internal::AnyHash)
9
+ end
10
+
11
+ # This represent a call "order" that was requested by the user. A call order can
12
+ # be resolved over multiple call attempts spanning up to a few days.
13
+ sig { returns(Revox::Models::CallRetrieveResponse::Call) }
14
+ attr_reader :call
15
+
16
+ sig do
17
+ params(call: Revox::Models::CallRetrieveResponse::Call::OrHash).void
18
+ end
19
+ attr_writer :call
20
+
21
+ sig do
22
+ params(call: Revox::Models::CallRetrieveResponse::Call::OrHash).returns(
23
+ T.attached_class
24
+ )
25
+ end
26
+ def self.new(
27
+ # This represent a call "order" that was requested by the user. A call order can
28
+ # be resolved over multiple call attempts spanning up to a few days.
29
+ call:
30
+ )
31
+ end
32
+
33
+ sig do
34
+ override.returns({ call: Revox::Models::CallRetrieveResponse::Call })
35
+ end
36
+ def to_hash
37
+ end
38
+
39
+ class Call < Revox::Internal::Type::BaseModel
40
+ OrHash =
41
+ T.type_alias do
42
+ T.any(
43
+ Revox::Models::CallRetrieveResponse::Call,
44
+ Revox::Internal::AnyHash
45
+ )
46
+ end
47
+
48
+ # The ID of the call.
49
+ sig { returns(String) }
50
+ attr_accessor :id
51
+
52
+ # All call attempts for this call order, ordered by most recent first.
53
+ sig do
54
+ returns(
55
+ T::Array[Revox::Models::CallRetrieveResponse::Call::CallAttempt]
56
+ )
57
+ end
58
+ attr_accessor :call_attempts
59
+
60
+ # Configuration for call retry behavior including time windows, delays, and max
61
+ # iterations. If not provided, defaults will be used.
62
+ sig do
63
+ returns(
64
+ T.nilable(
65
+ Revox::Models::CallRetrieveResponse::Call::CallRetryConfig
66
+ )
67
+ )
68
+ end
69
+ attr_reader :call_retry_config
70
+
71
+ sig do
72
+ params(
73
+ call_retry_config:
74
+ T.nilable(
75
+ Revox::Models::CallRetrieveResponse::Call::CallRetryConfig::OrHash
76
+ )
77
+ ).void
78
+ end
79
+ attr_writer :call_retry_config
80
+
81
+ # The number of call attempts made.
82
+ sig { returns(Float) }
83
+ attr_accessor :calls_count
84
+
85
+ # The time the call order was created.
86
+ sig { returns(T.anything) }
87
+ attr_accessor :created_at
88
+
89
+ # Whether the call is inbound or outbound.
90
+ sig do
91
+ returns(
92
+ Revox::Models::CallRetrieveResponse::Call::Direction::TaggedSymbol
93
+ )
94
+ end
95
+ attr_accessor :direction
96
+
97
+ # Delay in milliseconds before speaking the first sentence. Default: 400.
98
+ sig { returns(Integer) }
99
+ attr_accessor :first_sentence_delay_ms
100
+
101
+ # The phone number that made the call. Formatted in E.164 format. Example:
102
+ # +1234567890
103
+ sig { returns(String) }
104
+ attr_accessor :from_phone_number
105
+
106
+ # Whether the call was cancelled.
107
+ sig { returns(T::Boolean) }
108
+ attr_accessor :is_cancelled
109
+
110
+ # Whether the call is completed or still in progress.
111
+ sig { returns(T::Boolean) }
112
+ attr_accessor :is_completed
113
+
114
+ # This represent a single call attempt. A call attempt is a single call made to
115
+ # the phone number.
116
+ sig do
117
+ returns(
118
+ T.nilable(
119
+ Revox::Models::CallRetrieveResponse::Call::LastCallAttempt
120
+ )
121
+ )
122
+ end
123
+ attr_reader :last_call_attempt
124
+
125
+ sig do
126
+ params(
127
+ last_call_attempt:
128
+ T.nilable(
129
+ Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::OrHash
130
+ )
131
+ ).void
132
+ end
133
+ attr_writer :last_call_attempt
134
+
135
+ sig do
136
+ returns(Revox::Models::CallRetrieveResponse::Call::LlmModel::Variants)
137
+ end
138
+ attr_accessor :llm_model
139
+
140
+ # Metadata stored with the call.
141
+ sig { returns(T.nilable(T::Hash[Symbol, String])) }
142
+ attr_accessor :metadata
143
+
144
+ # The next call attempt time.
145
+ sig { returns(T.anything) }
146
+ attr_accessor :next_call_at
147
+
148
+ # The time the call order is scheduled to start.
149
+ sig { returns(T.anything) }
150
+ attr_accessor :scheduled_at
151
+
152
+ # The phone number that received the call. Formatted in E.164 format. Example:
153
+ # +1234567890
154
+ sig { returns(String) }
155
+ attr_accessor :to_phone_number
156
+
157
+ # This represent a call "order" that was requested by the user. A call order can
158
+ # be resolved over multiple call attempts spanning up to a few days.
159
+ sig do
160
+ params(
161
+ id: String,
162
+ call_attempts:
163
+ T::Array[
164
+ Revox::Models::CallRetrieveResponse::Call::CallAttempt::OrHash
165
+ ],
166
+ call_retry_config:
167
+ T.nilable(
168
+ Revox::Models::CallRetrieveResponse::Call::CallRetryConfig::OrHash
169
+ ),
170
+ calls_count: Float,
171
+ created_at: T.anything,
172
+ direction:
173
+ Revox::Models::CallRetrieveResponse::Call::Direction::OrSymbol,
174
+ first_sentence_delay_ms: Integer,
175
+ from_phone_number: String,
176
+ is_cancelled: T::Boolean,
177
+ is_completed: T::Boolean,
178
+ last_call_attempt:
179
+ T.nilable(
180
+ Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::OrHash
181
+ ),
182
+ llm_model:
183
+ T.any(
184
+ Revox::Models::CallRetrieveResponse::Call::LlmModel::UnionMember0::OrHash,
185
+ Revox::Models::CallRetrieveResponse::Call::LlmModel::UnionMember1::OrHash
186
+ ),
187
+ metadata: T.nilable(T::Hash[Symbol, String]),
188
+ next_call_at: T.anything,
189
+ scheduled_at: T.anything,
190
+ to_phone_number: String
191
+ ).returns(T.attached_class)
192
+ end
193
+ def self.new(
194
+ # The ID of the call.
195
+ id:,
196
+ # All call attempts for this call order, ordered by most recent first.
197
+ call_attempts:,
198
+ # Configuration for call retry behavior including time windows, delays, and max
199
+ # iterations. If not provided, defaults will be used.
200
+ call_retry_config:,
201
+ # The number of call attempts made.
202
+ calls_count:,
203
+ # The time the call order was created.
204
+ created_at:,
205
+ # Whether the call is inbound or outbound.
206
+ direction:,
207
+ # Delay in milliseconds before speaking the first sentence. Default: 400.
208
+ first_sentence_delay_ms:,
209
+ # The phone number that made the call. Formatted in E.164 format. Example:
210
+ # +1234567890
211
+ from_phone_number:,
212
+ # Whether the call was cancelled.
213
+ is_cancelled:,
214
+ # Whether the call is completed or still in progress.
215
+ is_completed:,
216
+ # This represent a single call attempt. A call attempt is a single call made to
217
+ # the phone number.
218
+ last_call_attempt:,
219
+ llm_model:,
220
+ # Metadata stored with the call.
221
+ metadata:,
222
+ # The next call attempt time.
223
+ next_call_at:,
224
+ # The time the call order is scheduled to start.
225
+ scheduled_at:,
226
+ # The phone number that received the call. Formatted in E.164 format. Example:
227
+ # +1234567890
228
+ to_phone_number:
229
+ )
230
+ end
231
+
232
+ sig do
233
+ override.returns(
234
+ {
235
+ id: String,
236
+ call_attempts:
237
+ T::Array[
238
+ Revox::Models::CallRetrieveResponse::Call::CallAttempt
239
+ ],
240
+ call_retry_config:
241
+ T.nilable(
242
+ Revox::Models::CallRetrieveResponse::Call::CallRetryConfig
243
+ ),
244
+ calls_count: Float,
245
+ created_at: T.anything,
246
+ direction:
247
+ Revox::Models::CallRetrieveResponse::Call::Direction::TaggedSymbol,
248
+ first_sentence_delay_ms: Integer,
249
+ from_phone_number: String,
250
+ is_cancelled: T::Boolean,
251
+ is_completed: T::Boolean,
252
+ last_call_attempt:
253
+ T.nilable(
254
+ Revox::Models::CallRetrieveResponse::Call::LastCallAttempt
255
+ ),
256
+ llm_model:
257
+ Revox::Models::CallRetrieveResponse::Call::LlmModel::Variants,
258
+ metadata: T.nilable(T::Hash[Symbol, String]),
259
+ next_call_at: T.anything,
260
+ scheduled_at: T.anything,
261
+ to_phone_number: String
262
+ }
263
+ )
264
+ end
265
+ def to_hash
266
+ end
267
+
268
+ class CallAttempt < Revox::Internal::Type::BaseModel
269
+ OrHash =
270
+ T.type_alias do
271
+ T.any(
272
+ Revox::Models::CallRetrieveResponse::Call::CallAttempt,
273
+ Revox::Internal::AnyHash
274
+ )
275
+ end
276
+
277
+ # The ID of the call attempt.
278
+ sig { returns(String) }
279
+ attr_accessor :id
280
+
281
+ # The time the call was answered.
282
+ sig { returns(T.anything) }
283
+ attr_accessor :answered_at
284
+
285
+ # The time the call ended.
286
+ sig { returns(T.anything) }
287
+ attr_accessor :ended_at
288
+
289
+ # The phone number that was called. Formatted in E.164 format. Example:
290
+ # +1234567890
291
+ sig { returns(String) }
292
+ attr_accessor :phone_number
293
+
294
+ # The URL of the audio recording of the call.
295
+ sig { returns(T.nilable(String)) }
296
+ attr_accessor :recording_url
297
+
298
+ sig do
299
+ returns(
300
+ T.nilable(
301
+ Revox::Models::CallRetrieveResponse::Call::CallAttempt::Result::TaggedSymbol
302
+ )
303
+ )
304
+ end
305
+ attr_accessor :result
306
+
307
+ # The time the call started.
308
+ sig { returns(T.anything) }
309
+ attr_accessor :started_at
310
+
311
+ # The status of the call attempt.
312
+ sig do
313
+ returns(
314
+ Revox::Models::CallRetrieveResponse::Call::CallAttempt::Status::TaggedSymbol
315
+ )
316
+ end
317
+ attr_accessor :status
318
+
319
+ # The data extracted from the call, using the structured output config from the
320
+ # parent call object.
321
+ sig { returns(T.nilable(T::Hash[Symbol, T.anything])) }
322
+ attr_accessor :structured_output
323
+
324
+ # The transcript of the call.
325
+ sig do
326
+ returns(
327
+ T.nilable(
328
+ T::Array[
329
+ Revox::Models::CallRetrieveResponse::Call::CallAttempt::Transcript
330
+ ]
331
+ )
332
+ )
333
+ end
334
+ attr_accessor :transcript
335
+
336
+ # This represent a single call attempt. A call attempt is a single call made to
337
+ # the phone number.
338
+ sig do
339
+ params(
340
+ id: String,
341
+ answered_at: T.anything,
342
+ ended_at: T.anything,
343
+ phone_number: String,
344
+ recording_url: T.nilable(String),
345
+ result:
346
+ T.nilable(
347
+ Revox::Models::CallRetrieveResponse::Call::CallAttempt::Result::OrSymbol
348
+ ),
349
+ started_at: T.anything,
350
+ status:
351
+ Revox::Models::CallRetrieveResponse::Call::CallAttempt::Status::OrSymbol,
352
+ structured_output: T.nilable(T::Hash[Symbol, T.anything]),
353
+ transcript:
354
+ T.nilable(
355
+ T::Array[
356
+ Revox::Models::CallRetrieveResponse::Call::CallAttempt::Transcript::OrHash
357
+ ]
358
+ )
359
+ ).returns(T.attached_class)
360
+ end
361
+ def self.new(
362
+ # The ID of the call attempt.
363
+ id:,
364
+ # The time the call was answered.
365
+ answered_at:,
366
+ # The time the call ended.
367
+ ended_at:,
368
+ # The phone number that was called. Formatted in E.164 format. Example:
369
+ # +1234567890
370
+ phone_number:,
371
+ # The URL of the audio recording of the call.
372
+ recording_url:,
373
+ result:,
374
+ # The time the call started.
375
+ started_at:,
376
+ # The status of the call attempt.
377
+ status:,
378
+ # The data extracted from the call, using the structured output config from the
379
+ # parent call object.
380
+ structured_output: nil,
381
+ # The transcript of the call.
382
+ transcript: nil
383
+ )
384
+ end
385
+
386
+ sig do
387
+ override.returns(
388
+ {
389
+ id: String,
390
+ answered_at: T.anything,
391
+ ended_at: T.anything,
392
+ phone_number: String,
393
+ recording_url: T.nilable(String),
394
+ result:
395
+ T.nilable(
396
+ Revox::Models::CallRetrieveResponse::Call::CallAttempt::Result::TaggedSymbol
397
+ ),
398
+ started_at: T.anything,
399
+ status:
400
+ Revox::Models::CallRetrieveResponse::Call::CallAttempt::Status::TaggedSymbol,
401
+ structured_output: T.nilable(T::Hash[Symbol, T.anything]),
402
+ transcript:
403
+ T.nilable(
404
+ T::Array[
405
+ Revox::Models::CallRetrieveResponse::Call::CallAttempt::Transcript
406
+ ]
407
+ )
408
+ }
409
+ )
410
+ end
411
+ def to_hash
412
+ end
413
+
414
+ module Result
415
+ extend Revox::Internal::Type::Enum
416
+
417
+ TaggedSymbol =
418
+ T.type_alias do
419
+ T.all(
420
+ Symbol,
421
+ Revox::Models::CallRetrieveResponse::Call::CallAttempt::Result
422
+ )
423
+ end
424
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
425
+
426
+ IVR =
427
+ T.let(
428
+ :IVR,
429
+ Revox::Models::CallRetrieveResponse::Call::CallAttempt::Result::TaggedSymbol
430
+ )
431
+ VOICEMAIL =
432
+ T.let(
433
+ :voicemail,
434
+ Revox::Models::CallRetrieveResponse::Call::CallAttempt::Result::TaggedSymbol
435
+ )
436
+ HUMAN =
437
+ T.let(
438
+ :human,
439
+ Revox::Models::CallRetrieveResponse::Call::CallAttempt::Result::TaggedSymbol
440
+ )
441
+ UNKNOWN =
442
+ T.let(
443
+ :unknown,
444
+ Revox::Models::CallRetrieveResponse::Call::CallAttempt::Result::TaggedSymbol
445
+ )
446
+
447
+ sig do
448
+ override.returns(
449
+ T::Array[
450
+ Revox::Models::CallRetrieveResponse::Call::CallAttempt::Result::TaggedSymbol
451
+ ]
452
+ )
453
+ end
454
+ def self.values
455
+ end
456
+ end
457
+
458
+ # The status of the call attempt.
459
+ module Status
460
+ extend Revox::Internal::Type::Enum
461
+
462
+ TaggedSymbol =
463
+ T.type_alias do
464
+ T.all(
465
+ Symbol,
466
+ Revox::Models::CallRetrieveResponse::Call::CallAttempt::Status
467
+ )
468
+ end
469
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
470
+
471
+ QUEUED =
472
+ T.let(
473
+ :queued,
474
+ Revox::Models::CallRetrieveResponse::Call::CallAttempt::Status::TaggedSymbol
475
+ )
476
+ RINGING =
477
+ T.let(
478
+ :ringing,
479
+ Revox::Models::CallRetrieveResponse::Call::CallAttempt::Status::TaggedSymbol
480
+ )
481
+ ONGOING =
482
+ T.let(
483
+ :ongoing,
484
+ Revox::Models::CallRetrieveResponse::Call::CallAttempt::Status::TaggedSymbol
485
+ )
486
+ COMPLETED =
487
+ T.let(
488
+ :completed,
489
+ Revox::Models::CallRetrieveResponse::Call::CallAttempt::Status::TaggedSymbol
490
+ )
491
+
492
+ sig do
493
+ override.returns(
494
+ T::Array[
495
+ Revox::Models::CallRetrieveResponse::Call::CallAttempt::Status::TaggedSymbol
496
+ ]
497
+ )
498
+ end
499
+ def self.values
500
+ end
501
+ end
502
+
503
+ class Transcript < Revox::Internal::Type::BaseModel
504
+ OrHash =
505
+ T.type_alias do
506
+ T.any(
507
+ Revox::Models::CallRetrieveResponse::Call::CallAttempt::Transcript,
508
+ Revox::Internal::AnyHash
509
+ )
510
+ end
511
+
512
+ sig { returns(String) }
513
+ attr_accessor :content
514
+
515
+ sig do
516
+ returns(
517
+ Revox::Models::CallRetrieveResponse::Call::CallAttempt::Transcript::Role::TaggedSymbol
518
+ )
519
+ end
520
+ attr_accessor :role
521
+
522
+ sig do
523
+ returns(
524
+ T.nilable(
525
+ Revox::Models::CallRetrieveResponse::Call::CallAttempt::Transcript::ToolArguments::Variants
526
+ )
527
+ )
528
+ end
529
+ attr_reader :tool_arguments
530
+
531
+ sig do
532
+ params(
533
+ tool_arguments:
534
+ Revox::Models::CallRetrieveResponse::Call::CallAttempt::Transcript::ToolArguments::Variants
535
+ ).void
536
+ end
537
+ attr_writer :tool_arguments
538
+
539
+ sig { returns(T.nilable(T::Boolean)) }
540
+ attr_reader :tool_is_error
541
+
542
+ sig { params(tool_is_error: T::Boolean).void }
543
+ attr_writer :tool_is_error
544
+
545
+ sig { returns(T.nilable(String)) }
546
+ attr_reader :tool_name
547
+
548
+ sig { params(tool_name: String).void }
549
+ attr_writer :tool_name
550
+
551
+ sig do
552
+ params(
553
+ content: String,
554
+ role:
555
+ Revox::Models::CallRetrieveResponse::Call::CallAttempt::Transcript::Role::OrSymbol,
556
+ tool_arguments:
557
+ Revox::Models::CallRetrieveResponse::Call::CallAttempt::Transcript::ToolArguments::Variants,
558
+ tool_is_error: T::Boolean,
559
+ tool_name: String
560
+ ).returns(T.attached_class)
561
+ end
562
+ def self.new(
563
+ content:,
564
+ role:,
565
+ tool_arguments: nil,
566
+ tool_is_error: nil,
567
+ tool_name: nil
568
+ )
569
+ end
570
+
571
+ sig do
572
+ override.returns(
573
+ {
574
+ content: String,
575
+ role:
576
+ Revox::Models::CallRetrieveResponse::Call::CallAttempt::Transcript::Role::TaggedSymbol,
577
+ tool_arguments:
578
+ Revox::Models::CallRetrieveResponse::Call::CallAttempt::Transcript::ToolArguments::Variants,
579
+ tool_is_error: T::Boolean,
580
+ tool_name: String
581
+ }
582
+ )
583
+ end
584
+ def to_hash
585
+ end
586
+
587
+ module Role
588
+ extend Revox::Internal::Type::Enum
589
+
590
+ TaggedSymbol =
591
+ T.type_alias do
592
+ T.all(
593
+ Symbol,
594
+ Revox::Models::CallRetrieveResponse::Call::CallAttempt::Transcript::Role
595
+ )
596
+ end
597
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
598
+
599
+ USER =
600
+ T.let(
601
+ :user,
602
+ Revox::Models::CallRetrieveResponse::Call::CallAttempt::Transcript::Role::TaggedSymbol
603
+ )
604
+ ASSISTANT =
605
+ T.let(
606
+ :assistant,
607
+ Revox::Models::CallRetrieveResponse::Call::CallAttempt::Transcript::Role::TaggedSymbol
608
+ )
609
+ TOOL =
610
+ T.let(
611
+ :tool,
612
+ Revox::Models::CallRetrieveResponse::Call::CallAttempt::Transcript::Role::TaggedSymbol
613
+ )
614
+
615
+ sig do
616
+ override.returns(
617
+ T::Array[
618
+ Revox::Models::CallRetrieveResponse::Call::CallAttempt::Transcript::Role::TaggedSymbol
619
+ ]
620
+ )
621
+ end
622
+ def self.values
623
+ end
624
+ end
625
+
626
+ module ToolArguments
627
+ extend Revox::Internal::Type::Union
628
+
629
+ Variants =
630
+ T.type_alias { T.any(T::Hash[Symbol, T.anything], String) }
631
+
632
+ sig do
633
+ override.returns(
634
+ T::Array[
635
+ Revox::Models::CallRetrieveResponse::Call::CallAttempt::Transcript::ToolArguments::Variants
636
+ ]
637
+ )
638
+ end
639
+ def self.variants
640
+ end
641
+
642
+ UnionMember0Map =
643
+ T.let(
644
+ Revox::Internal::Type::HashOf[Revox::Internal::Type::Unknown],
645
+ Revox::Internal::Type::Converter
646
+ )
647
+ end
648
+ end
649
+ end
650
+
651
+ class CallRetryConfig < Revox::Internal::Type::BaseModel
652
+ OrHash =
653
+ T.type_alias do
654
+ T.any(
655
+ Revox::Models::CallRetrieveResponse::Call::CallRetryConfig,
656
+ Revox::Internal::AnyHash
657
+ )
658
+ end
659
+
660
+ sig do
661
+ returns(
662
+ T::Array[
663
+ Revox::Models::CallRetrieveResponse::Call::CallRetryConfig::CallingWindow
664
+ ]
665
+ )
666
+ end
667
+ attr_accessor :calling_windows
668
+
669
+ # Maximum number of call retry attempts. Default: 3.
670
+ sig { returns(Integer) }
671
+ attr_accessor :max_retry_attempts
672
+
673
+ # Optional IANA timezone identifier to override the automatic timezone detection
674
+ # from phone number. If not provided, timezone is determined from the recipient's
675
+ # phone number country code. Examples: 'America/New_York', 'Europe/Paris'.
676
+ sig { returns(T.nilable(String)) }
677
+ attr_accessor :timezone
678
+
679
+ # Configuration for call retry behavior including time windows, delays, and max
680
+ # iterations. If not provided, defaults will be used.
681
+ sig do
682
+ params(
683
+ calling_windows:
684
+ T::Array[
685
+ Revox::Models::CallRetrieveResponse::Call::CallRetryConfig::CallingWindow::OrHash
686
+ ],
687
+ max_retry_attempts: Integer,
688
+ timezone: T.nilable(String)
689
+ ).returns(T.attached_class)
690
+ end
691
+ def self.new(
692
+ calling_windows:,
693
+ # Maximum number of call retry attempts. Default: 3.
694
+ max_retry_attempts:,
695
+ # Optional IANA timezone identifier to override the automatic timezone detection
696
+ # from phone number. If not provided, timezone is determined from the recipient's
697
+ # phone number country code. Examples: 'America/New_York', 'Europe/Paris'.
698
+ timezone: nil
699
+ )
700
+ end
701
+
702
+ sig do
703
+ override.returns(
704
+ {
705
+ calling_windows:
706
+ T::Array[
707
+ Revox::Models::CallRetrieveResponse::Call::CallRetryConfig::CallingWindow
708
+ ],
709
+ max_retry_attempts: Integer,
710
+ timezone: T.nilable(String)
711
+ }
712
+ )
713
+ end
714
+ def to_hash
715
+ end
716
+
717
+ class CallingWindow < Revox::Internal::Type::BaseModel
718
+ OrHash =
719
+ T.type_alias do
720
+ T.any(
721
+ Revox::Models::CallRetrieveResponse::Call::CallRetryConfig::CallingWindow,
722
+ Revox::Internal::AnyHash
723
+ )
724
+ end
725
+
726
+ # End time for the calling window in the recipient's timezone (or
727
+ # timezone_override if provided). Format: 'HH:mm' (24-hour) or 'H:mma' (12-hour).
728
+ # Examples: '17:00', '6pm'. Default: '18:00'.
729
+ sig { returns(String) }
730
+ attr_accessor :calling_window_end_time
731
+
732
+ # Start time for the calling window in the recipient's timezone (or
733
+ # timezone_override if provided). Format: 'HH:mm' (24-hour) or 'H:mma' (12-hour).
734
+ # Examples: '09:00', '10am'. Default: '10:00'.
735
+ sig { returns(String) }
736
+ attr_accessor :calling_window_start_time
737
+
738
+ # Delay between retry attempts in seconds. Default: 7200 (2 hours).
739
+ sig { returns(Integer) }
740
+ attr_accessor :retry_delay_seconds
741
+
742
+ sig do
743
+ params(
744
+ calling_window_end_time: String,
745
+ calling_window_start_time: String,
746
+ retry_delay_seconds: Integer
747
+ ).returns(T.attached_class)
748
+ end
749
+ def self.new(
750
+ # End time for the calling window in the recipient's timezone (or
751
+ # timezone_override if provided). Format: 'HH:mm' (24-hour) or 'H:mma' (12-hour).
752
+ # Examples: '17:00', '6pm'. Default: '18:00'.
753
+ calling_window_end_time:,
754
+ # Start time for the calling window in the recipient's timezone (or
755
+ # timezone_override if provided). Format: 'HH:mm' (24-hour) or 'H:mma' (12-hour).
756
+ # Examples: '09:00', '10am'. Default: '10:00'.
757
+ calling_window_start_time:,
758
+ # Delay between retry attempts in seconds. Default: 7200 (2 hours).
759
+ retry_delay_seconds:
760
+ )
761
+ end
762
+
763
+ sig do
764
+ override.returns(
765
+ {
766
+ calling_window_end_time: String,
767
+ calling_window_start_time: String,
768
+ retry_delay_seconds: Integer
769
+ }
770
+ )
771
+ end
772
+ def to_hash
773
+ end
774
+ end
775
+ end
776
+
777
+ # Whether the call is inbound or outbound.
778
+ module Direction
779
+ extend Revox::Internal::Type::Enum
780
+
781
+ TaggedSymbol =
782
+ T.type_alias do
783
+ T.all(
784
+ Symbol,
785
+ Revox::Models::CallRetrieveResponse::Call::Direction
786
+ )
787
+ end
788
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
789
+
790
+ INBOUND =
791
+ T.let(
792
+ :inbound,
793
+ Revox::Models::CallRetrieveResponse::Call::Direction::TaggedSymbol
794
+ )
795
+ OUTBOUND =
796
+ T.let(
797
+ :outbound,
798
+ Revox::Models::CallRetrieveResponse::Call::Direction::TaggedSymbol
799
+ )
800
+
801
+ sig do
802
+ override.returns(
803
+ T::Array[
804
+ Revox::Models::CallRetrieveResponse::Call::Direction::TaggedSymbol
805
+ ]
806
+ )
807
+ end
808
+ def self.values
809
+ end
810
+ end
811
+
812
+ class LastCallAttempt < Revox::Internal::Type::BaseModel
813
+ OrHash =
814
+ T.type_alias do
815
+ T.any(
816
+ Revox::Models::CallRetrieveResponse::Call::LastCallAttempt,
817
+ Revox::Internal::AnyHash
818
+ )
819
+ end
820
+
821
+ # The ID of the call attempt.
822
+ sig { returns(String) }
823
+ attr_accessor :id
824
+
825
+ # The time the call was answered.
826
+ sig { returns(T.anything) }
827
+ attr_accessor :answered_at
828
+
829
+ # The time the call ended.
830
+ sig { returns(T.anything) }
831
+ attr_accessor :ended_at
832
+
833
+ # The phone number that was called. Formatted in E.164 format. Example:
834
+ # +1234567890
835
+ sig { returns(String) }
836
+ attr_accessor :phone_number
837
+
838
+ # The URL of the audio recording of the call.
839
+ sig { returns(T.nilable(String)) }
840
+ attr_accessor :recording_url
841
+
842
+ sig do
843
+ returns(
844
+ T.nilable(
845
+ Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::Result::TaggedSymbol
846
+ )
847
+ )
848
+ end
849
+ attr_accessor :result
850
+
851
+ # The time the call started.
852
+ sig { returns(T.anything) }
853
+ attr_accessor :started_at
854
+
855
+ # The status of the call attempt.
856
+ sig do
857
+ returns(
858
+ Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::Status::TaggedSymbol
859
+ )
860
+ end
861
+ attr_accessor :status
862
+
863
+ # The data extracted from the call, using the structured output config from the
864
+ # parent call object.
865
+ sig { returns(T.nilable(T::Hash[Symbol, T.anything])) }
866
+ attr_accessor :structured_output
867
+
868
+ # The transcript of the call.
869
+ sig do
870
+ returns(
871
+ T.nilable(
872
+ T::Array[
873
+ Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::Transcript
874
+ ]
875
+ )
876
+ )
877
+ end
878
+ attr_accessor :transcript
879
+
880
+ # This represent a single call attempt. A call attempt is a single call made to
881
+ # the phone number.
882
+ sig do
883
+ params(
884
+ id: String,
885
+ answered_at: T.anything,
886
+ ended_at: T.anything,
887
+ phone_number: String,
888
+ recording_url: T.nilable(String),
889
+ result:
890
+ T.nilable(
891
+ Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::Result::OrSymbol
892
+ ),
893
+ started_at: T.anything,
894
+ status:
895
+ Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::Status::OrSymbol,
896
+ structured_output: T.nilable(T::Hash[Symbol, T.anything]),
897
+ transcript:
898
+ T.nilable(
899
+ T::Array[
900
+ Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::Transcript::OrHash
901
+ ]
902
+ )
903
+ ).returns(T.attached_class)
904
+ end
905
+ def self.new(
906
+ # The ID of the call attempt.
907
+ id:,
908
+ # The time the call was answered.
909
+ answered_at:,
910
+ # The time the call ended.
911
+ ended_at:,
912
+ # The phone number that was called. Formatted in E.164 format. Example:
913
+ # +1234567890
914
+ phone_number:,
915
+ # The URL of the audio recording of the call.
916
+ recording_url:,
917
+ result:,
918
+ # The time the call started.
919
+ started_at:,
920
+ # The status of the call attempt.
921
+ status:,
922
+ # The data extracted from the call, using the structured output config from the
923
+ # parent call object.
924
+ structured_output: nil,
925
+ # The transcript of the call.
926
+ transcript: nil
927
+ )
928
+ end
929
+
930
+ sig do
931
+ override.returns(
932
+ {
933
+ id: String,
934
+ answered_at: T.anything,
935
+ ended_at: T.anything,
936
+ phone_number: String,
937
+ recording_url: T.nilable(String),
938
+ result:
939
+ T.nilable(
940
+ Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::Result::TaggedSymbol
941
+ ),
942
+ started_at: T.anything,
943
+ status:
944
+ Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::Status::TaggedSymbol,
945
+ structured_output: T.nilable(T::Hash[Symbol, T.anything]),
946
+ transcript:
947
+ T.nilable(
948
+ T::Array[
949
+ Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::Transcript
950
+ ]
951
+ )
952
+ }
953
+ )
954
+ end
955
+ def to_hash
956
+ end
957
+
958
+ module Result
959
+ extend Revox::Internal::Type::Enum
960
+
961
+ TaggedSymbol =
962
+ T.type_alias do
963
+ T.all(
964
+ Symbol,
965
+ Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::Result
966
+ )
967
+ end
968
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
969
+
970
+ IVR =
971
+ T.let(
972
+ :IVR,
973
+ Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::Result::TaggedSymbol
974
+ )
975
+ VOICEMAIL =
976
+ T.let(
977
+ :voicemail,
978
+ Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::Result::TaggedSymbol
979
+ )
980
+ HUMAN =
981
+ T.let(
982
+ :human,
983
+ Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::Result::TaggedSymbol
984
+ )
985
+ UNKNOWN =
986
+ T.let(
987
+ :unknown,
988
+ Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::Result::TaggedSymbol
989
+ )
990
+
991
+ sig do
992
+ override.returns(
993
+ T::Array[
994
+ Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::Result::TaggedSymbol
995
+ ]
996
+ )
997
+ end
998
+ def self.values
999
+ end
1000
+ end
1001
+
1002
+ # The status of the call attempt.
1003
+ module Status
1004
+ extend Revox::Internal::Type::Enum
1005
+
1006
+ TaggedSymbol =
1007
+ T.type_alias do
1008
+ T.all(
1009
+ Symbol,
1010
+ Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::Status
1011
+ )
1012
+ end
1013
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
1014
+
1015
+ QUEUED =
1016
+ T.let(
1017
+ :queued,
1018
+ Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::Status::TaggedSymbol
1019
+ )
1020
+ RINGING =
1021
+ T.let(
1022
+ :ringing,
1023
+ Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::Status::TaggedSymbol
1024
+ )
1025
+ ONGOING =
1026
+ T.let(
1027
+ :ongoing,
1028
+ Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::Status::TaggedSymbol
1029
+ )
1030
+ COMPLETED =
1031
+ T.let(
1032
+ :completed,
1033
+ Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::Status::TaggedSymbol
1034
+ )
1035
+
1036
+ sig do
1037
+ override.returns(
1038
+ T::Array[
1039
+ Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::Status::TaggedSymbol
1040
+ ]
1041
+ )
1042
+ end
1043
+ def self.values
1044
+ end
1045
+ end
1046
+
1047
+ class Transcript < Revox::Internal::Type::BaseModel
1048
+ OrHash =
1049
+ T.type_alias do
1050
+ T.any(
1051
+ Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::Transcript,
1052
+ Revox::Internal::AnyHash
1053
+ )
1054
+ end
1055
+
1056
+ sig { returns(String) }
1057
+ attr_accessor :content
1058
+
1059
+ sig do
1060
+ returns(
1061
+ Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::Transcript::Role::TaggedSymbol
1062
+ )
1063
+ end
1064
+ attr_accessor :role
1065
+
1066
+ sig do
1067
+ returns(
1068
+ T.nilable(
1069
+ Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::Transcript::ToolArguments::Variants
1070
+ )
1071
+ )
1072
+ end
1073
+ attr_reader :tool_arguments
1074
+
1075
+ sig do
1076
+ params(
1077
+ tool_arguments:
1078
+ Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::Transcript::ToolArguments::Variants
1079
+ ).void
1080
+ end
1081
+ attr_writer :tool_arguments
1082
+
1083
+ sig { returns(T.nilable(T::Boolean)) }
1084
+ attr_reader :tool_is_error
1085
+
1086
+ sig { params(tool_is_error: T::Boolean).void }
1087
+ attr_writer :tool_is_error
1088
+
1089
+ sig { returns(T.nilable(String)) }
1090
+ attr_reader :tool_name
1091
+
1092
+ sig { params(tool_name: String).void }
1093
+ attr_writer :tool_name
1094
+
1095
+ sig do
1096
+ params(
1097
+ content: String,
1098
+ role:
1099
+ Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::Transcript::Role::OrSymbol,
1100
+ tool_arguments:
1101
+ Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::Transcript::ToolArguments::Variants,
1102
+ tool_is_error: T::Boolean,
1103
+ tool_name: String
1104
+ ).returns(T.attached_class)
1105
+ end
1106
+ def self.new(
1107
+ content:,
1108
+ role:,
1109
+ tool_arguments: nil,
1110
+ tool_is_error: nil,
1111
+ tool_name: nil
1112
+ )
1113
+ end
1114
+
1115
+ sig do
1116
+ override.returns(
1117
+ {
1118
+ content: String,
1119
+ role:
1120
+ Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::Transcript::Role::TaggedSymbol,
1121
+ tool_arguments:
1122
+ Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::Transcript::ToolArguments::Variants,
1123
+ tool_is_error: T::Boolean,
1124
+ tool_name: String
1125
+ }
1126
+ )
1127
+ end
1128
+ def to_hash
1129
+ end
1130
+
1131
+ module Role
1132
+ extend Revox::Internal::Type::Enum
1133
+
1134
+ TaggedSymbol =
1135
+ T.type_alias do
1136
+ T.all(
1137
+ Symbol,
1138
+ Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::Transcript::Role
1139
+ )
1140
+ end
1141
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
1142
+
1143
+ USER =
1144
+ T.let(
1145
+ :user,
1146
+ Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::Transcript::Role::TaggedSymbol
1147
+ )
1148
+ ASSISTANT =
1149
+ T.let(
1150
+ :assistant,
1151
+ Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::Transcript::Role::TaggedSymbol
1152
+ )
1153
+ TOOL =
1154
+ T.let(
1155
+ :tool,
1156
+ Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::Transcript::Role::TaggedSymbol
1157
+ )
1158
+
1159
+ sig do
1160
+ override.returns(
1161
+ T::Array[
1162
+ Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::Transcript::Role::TaggedSymbol
1163
+ ]
1164
+ )
1165
+ end
1166
+ def self.values
1167
+ end
1168
+ end
1169
+
1170
+ module ToolArguments
1171
+ extend Revox::Internal::Type::Union
1172
+
1173
+ Variants =
1174
+ T.type_alias { T.any(T::Hash[Symbol, T.anything], String) }
1175
+
1176
+ sig do
1177
+ override.returns(
1178
+ T::Array[
1179
+ Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::Transcript::ToolArguments::Variants
1180
+ ]
1181
+ )
1182
+ end
1183
+ def self.variants
1184
+ end
1185
+
1186
+ UnionMember0Map =
1187
+ T.let(
1188
+ Revox::Internal::Type::HashOf[Revox::Internal::Type::Unknown],
1189
+ Revox::Internal::Type::Converter
1190
+ )
1191
+ end
1192
+ end
1193
+ end
1194
+
1195
+ module LlmModel
1196
+ extend Revox::Internal::Type::Union
1197
+
1198
+ Variants =
1199
+ T.type_alias do
1200
+ T.any(
1201
+ Revox::Models::CallRetrieveResponse::Call::LlmModel::UnionMember0,
1202
+ Revox::Models::CallRetrieveResponse::Call::LlmModel::UnionMember1
1203
+ )
1204
+ end
1205
+
1206
+ class UnionMember0 < Revox::Internal::Type::BaseModel
1207
+ OrHash =
1208
+ T.type_alias do
1209
+ T.any(
1210
+ Revox::Models::CallRetrieveResponse::Call::LlmModel::UnionMember0,
1211
+ Revox::Internal::AnyHash
1212
+ )
1213
+ end
1214
+
1215
+ sig do
1216
+ returns(
1217
+ Revox::Models::CallRetrieveResponse::Call::LlmModel::UnionMember0::Name::TaggedSymbol
1218
+ )
1219
+ end
1220
+ attr_accessor :name
1221
+
1222
+ sig { returns(Symbol) }
1223
+ attr_accessor :type
1224
+
1225
+ sig do
1226
+ params(
1227
+ name:
1228
+ Revox::Models::CallRetrieveResponse::Call::LlmModel::UnionMember0::Name::OrSymbol,
1229
+ type: Symbol
1230
+ ).returns(T.attached_class)
1231
+ end
1232
+ def self.new(name:, type: :"dedicated-instance")
1233
+ end
1234
+
1235
+ sig do
1236
+ override.returns(
1237
+ {
1238
+ name:
1239
+ Revox::Models::CallRetrieveResponse::Call::LlmModel::UnionMember0::Name::TaggedSymbol,
1240
+ type: Symbol
1241
+ }
1242
+ )
1243
+ end
1244
+ def to_hash
1245
+ end
1246
+
1247
+ module Name
1248
+ extend Revox::Internal::Type::Enum
1249
+
1250
+ TaggedSymbol =
1251
+ T.type_alias do
1252
+ T.all(
1253
+ Symbol,
1254
+ Revox::Models::CallRetrieveResponse::Call::LlmModel::UnionMember0::Name
1255
+ )
1256
+ end
1257
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
1258
+
1259
+ GPT_4_1 =
1260
+ T.let(
1261
+ :"gpt-4.1",
1262
+ Revox::Models::CallRetrieveResponse::Call::LlmModel::UnionMember0::Name::TaggedSymbol
1263
+ )
1264
+ MINISTRAL_3_8B_INSTRUCT =
1265
+ T.let(
1266
+ :"ministral-3-8b-instruct",
1267
+ Revox::Models::CallRetrieveResponse::Call::LlmModel::UnionMember0::Name::TaggedSymbol
1268
+ )
1269
+
1270
+ sig do
1271
+ override.returns(
1272
+ T::Array[
1273
+ Revox::Models::CallRetrieveResponse::Call::LlmModel::UnionMember0::Name::TaggedSymbol
1274
+ ]
1275
+ )
1276
+ end
1277
+ def self.values
1278
+ end
1279
+ end
1280
+ end
1281
+
1282
+ class UnionMember1 < Revox::Internal::Type::BaseModel
1283
+ OrHash =
1284
+ T.type_alias do
1285
+ T.any(
1286
+ Revox::Models::CallRetrieveResponse::Call::LlmModel::UnionMember1,
1287
+ Revox::Internal::AnyHash
1288
+ )
1289
+ end
1290
+
1291
+ # The model ID to use from OpenRouter. eg: openai/gpt-4.1
1292
+ sig { returns(String) }
1293
+ attr_accessor :openrouter_model_id
1294
+
1295
+ # The provider to use from OpenRouter. eg: nebius, openai, azure, etc.
1296
+ sig { returns(String) }
1297
+ attr_accessor :openrouter_provider
1298
+
1299
+ # Use a model from OpenRouter.
1300
+ sig { returns(Symbol) }
1301
+ attr_accessor :type
1302
+
1303
+ sig do
1304
+ params(
1305
+ openrouter_model_id: String,
1306
+ openrouter_provider: String,
1307
+ type: Symbol
1308
+ ).returns(T.attached_class)
1309
+ end
1310
+ def self.new(
1311
+ # The model ID to use from OpenRouter. eg: openai/gpt-4.1
1312
+ openrouter_model_id:,
1313
+ # The provider to use from OpenRouter. eg: nebius, openai, azure, etc.
1314
+ openrouter_provider:,
1315
+ # Use a model from OpenRouter.
1316
+ type: :openrouter
1317
+ )
1318
+ end
1319
+
1320
+ sig do
1321
+ override.returns(
1322
+ {
1323
+ openrouter_model_id: String,
1324
+ openrouter_provider: String,
1325
+ type: Symbol
1326
+ }
1327
+ )
1328
+ end
1329
+ def to_hash
1330
+ end
1331
+ end
1332
+
1333
+ sig do
1334
+ override.returns(
1335
+ T::Array[
1336
+ Revox::Models::CallRetrieveResponse::Call::LlmModel::Variants
1337
+ ]
1338
+ )
1339
+ end
1340
+ def self.variants
1341
+ end
1342
+ end
1343
+ end
1344
+ end
1345
+ end
1346
+ end