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,1024 @@
1
+ # typed: strong
2
+
3
+ module Revox
4
+ module Models
5
+ class AssistantRetrieveResponse < Revox::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(
9
+ Revox::Models::AssistantRetrieveResponse,
10
+ Revox::Internal::AnyHash
11
+ )
12
+ end
13
+
14
+ sig { returns(String) }
15
+ attr_accessor :id
16
+
17
+ # The background sound to play during the call. Useful to give the impression that
18
+ # your AI agent is in an office.
19
+ sig do
20
+ returns(
21
+ T.nilable(
22
+ Revox::Models::AssistantRetrieveResponse::BackgroundSound::TaggedSymbol
23
+ )
24
+ )
25
+ end
26
+ attr_accessor :background_sound
27
+
28
+ sig do
29
+ returns(T.nilable(Revox::Models::AssistantRetrieveResponse::Calendly))
30
+ end
31
+ attr_reader :calendly
32
+
33
+ sig do
34
+ params(
35
+ calendly:
36
+ T.nilable(
37
+ Revox::Models::AssistantRetrieveResponse::Calendly::OrHash
38
+ )
39
+ ).void
40
+ end
41
+ attr_writer :calendly
42
+
43
+ # Configuration for call retry behavior including time windows, delays, and max
44
+ # iterations. If not provided, defaults will be used.
45
+ sig do
46
+ returns(
47
+ T.nilable(Revox::Models::AssistantRetrieveResponse::CallRetryConfig)
48
+ )
49
+ end
50
+ attr_reader :call_retry_config
51
+
52
+ sig do
53
+ params(
54
+ call_retry_config:
55
+ T.nilable(
56
+ Revox::Models::AssistantRetrieveResponse::CallRetryConfig::OrHash
57
+ )
58
+ ).void
59
+ end
60
+ attr_writer :call_retry_config
61
+
62
+ sig { returns(T.anything) }
63
+ attr_accessor :created_at
64
+
65
+ sig { returns(T.nilable(String)) }
66
+ attr_accessor :end_of_call_sentence
67
+
68
+ sig { returns(T.nilable(String)) }
69
+ attr_accessor :first_sentence
70
+
71
+ # Delay in milliseconds before speaking the first sentence. Default: 400.
72
+ sig { returns(Integer) }
73
+ attr_accessor :first_sentence_delay_ms
74
+
75
+ sig do
76
+ returns(
77
+ Revox::Models::AssistantRetrieveResponse::FirstSentenceMode::TaggedSymbol
78
+ )
79
+ end
80
+ attr_accessor :first_sentence_mode
81
+
82
+ # Enable IVR navigation tools. When enabled, the assistant can send DTMF tones and
83
+ # skip turns to navigate phone menus.
84
+ sig { returns(T::Boolean) }
85
+ attr_accessor :ivr_navigation_enabled
86
+
87
+ sig do
88
+ returns(Revox::Models::AssistantRetrieveResponse::LlmModel::Variants)
89
+ end
90
+ attr_accessor :llm_model
91
+
92
+ # The maximum duration of the call in seconds. This is the maximum time the call
93
+ # will be allowed to run.
94
+ sig { returns(Float) }
95
+ attr_accessor :max_call_duration_secs
96
+
97
+ sig { returns(String) }
98
+ attr_accessor :name
99
+
100
+ sig { returns(String) }
101
+ attr_accessor :organization_id
102
+
103
+ sig { returns(String) }
104
+ attr_accessor :prompt
105
+
106
+ # The structured output config to use for the call. This is used to extract the
107
+ # data from the call (like email, name, company name, etc.).
108
+ sig do
109
+ returns(
110
+ T.nilable(
111
+ T::Array[
112
+ Revox::Models::AssistantRetrieveResponse::StructuredOutputConfig
113
+ ]
114
+ )
115
+ )
116
+ end
117
+ attr_accessor :structured_output_config
118
+
119
+ # Phone number to transfer calls to when users request to speak to a human agent.
120
+ sig { returns(T.nilable(String)) }
121
+ attr_accessor :transfer_phone_number
122
+
123
+ sig { returns(T.anything) }
124
+ attr_accessor :updated_at
125
+
126
+ sig do
127
+ returns(T.nilable(Revox::Models::AssistantRetrieveResponse::Voice))
128
+ end
129
+ attr_reader :voice
130
+
131
+ sig do
132
+ params(
133
+ voice:
134
+ T.nilable(Revox::Models::AssistantRetrieveResponse::Voice::OrHash)
135
+ ).void
136
+ end
137
+ attr_writer :voice
138
+
139
+ # If set, when voicemail is detected the agent will speak this message then hang
140
+ # up; if null, hang up immediately.
141
+ sig { returns(T.nilable(String)) }
142
+ attr_accessor :voicemail_message
143
+
144
+ # The webhook URL to call when the call is completed.
145
+ sig { returns(T.nilable(String)) }
146
+ attr_accessor :webhook_url
147
+
148
+ sig do
149
+ returns(
150
+ T.nilable(T::Array[Revox::Models::AssistantRetrieveResponse::FaqItem])
151
+ )
152
+ end
153
+ attr_reader :faq_items
154
+
155
+ sig do
156
+ params(
157
+ faq_items:
158
+ T::Array[Revox::Models::AssistantRetrieveResponse::FaqItem::OrHash]
159
+ ).void
160
+ end
161
+ attr_writer :faq_items
162
+
163
+ sig { returns(T.nilable(Float)) }
164
+ attr_reader :pending_faq_count
165
+
166
+ sig { params(pending_faq_count: Float).void }
167
+ attr_writer :pending_faq_count
168
+
169
+ sig do
170
+ params(
171
+ id: String,
172
+ background_sound:
173
+ T.nilable(
174
+ Revox::Models::AssistantRetrieveResponse::BackgroundSound::OrSymbol
175
+ ),
176
+ calendly:
177
+ T.nilable(
178
+ Revox::Models::AssistantRetrieveResponse::Calendly::OrHash
179
+ ),
180
+ call_retry_config:
181
+ T.nilable(
182
+ Revox::Models::AssistantRetrieveResponse::CallRetryConfig::OrHash
183
+ ),
184
+ created_at: T.anything,
185
+ end_of_call_sentence: T.nilable(String),
186
+ first_sentence: T.nilable(String),
187
+ first_sentence_delay_ms: Integer,
188
+ first_sentence_mode:
189
+ Revox::Models::AssistantRetrieveResponse::FirstSentenceMode::OrSymbol,
190
+ ivr_navigation_enabled: T::Boolean,
191
+ llm_model:
192
+ T.any(
193
+ Revox::Models::AssistantRetrieveResponse::LlmModel::UnionMember0::OrHash,
194
+ Revox::Models::AssistantRetrieveResponse::LlmModel::UnionMember1::OrHash
195
+ ),
196
+ max_call_duration_secs: Float,
197
+ name: String,
198
+ organization_id: String,
199
+ prompt: String,
200
+ structured_output_config:
201
+ T.nilable(
202
+ T::Array[
203
+ Revox::Models::AssistantRetrieveResponse::StructuredOutputConfig::OrHash
204
+ ]
205
+ ),
206
+ transfer_phone_number: T.nilable(String),
207
+ updated_at: T.anything,
208
+ voice:
209
+ T.nilable(Revox::Models::AssistantRetrieveResponse::Voice::OrHash),
210
+ voicemail_message: T.nilable(String),
211
+ webhook_url: T.nilable(String),
212
+ faq_items:
213
+ T::Array[Revox::Models::AssistantRetrieveResponse::FaqItem::OrHash],
214
+ pending_faq_count: Float
215
+ ).returns(T.attached_class)
216
+ end
217
+ def self.new(
218
+ id:,
219
+ # The background sound to play during the call. Useful to give the impression that
220
+ # your AI agent is in an office.
221
+ background_sound:,
222
+ calendly:,
223
+ # Configuration for call retry behavior including time windows, delays, and max
224
+ # iterations. If not provided, defaults will be used.
225
+ call_retry_config:,
226
+ created_at:,
227
+ end_of_call_sentence:,
228
+ first_sentence:,
229
+ # Delay in milliseconds before speaking the first sentence. Default: 400.
230
+ first_sentence_delay_ms:,
231
+ first_sentence_mode:,
232
+ # Enable IVR navigation tools. When enabled, the assistant can send DTMF tones and
233
+ # skip turns to navigate phone menus.
234
+ ivr_navigation_enabled:,
235
+ llm_model:,
236
+ # The maximum duration of the call in seconds. This is the maximum time the call
237
+ # will be allowed to run.
238
+ max_call_duration_secs:,
239
+ name:,
240
+ organization_id:,
241
+ prompt:,
242
+ # The structured output config to use for the call. This is used to extract the
243
+ # data from the call (like email, name, company name, etc.).
244
+ structured_output_config:,
245
+ # Phone number to transfer calls to when users request to speak to a human agent.
246
+ transfer_phone_number:,
247
+ updated_at:,
248
+ voice:,
249
+ # If set, when voicemail is detected the agent will speak this message then hang
250
+ # up; if null, hang up immediately.
251
+ voicemail_message:,
252
+ # The webhook URL to call when the call is completed.
253
+ webhook_url:,
254
+ faq_items: nil,
255
+ pending_faq_count: nil
256
+ )
257
+ end
258
+
259
+ sig do
260
+ override.returns(
261
+ {
262
+ id: String,
263
+ background_sound:
264
+ T.nilable(
265
+ Revox::Models::AssistantRetrieveResponse::BackgroundSound::TaggedSymbol
266
+ ),
267
+ calendly:
268
+ T.nilable(Revox::Models::AssistantRetrieveResponse::Calendly),
269
+ call_retry_config:
270
+ T.nilable(
271
+ Revox::Models::AssistantRetrieveResponse::CallRetryConfig
272
+ ),
273
+ created_at: T.anything,
274
+ end_of_call_sentence: T.nilable(String),
275
+ first_sentence: T.nilable(String),
276
+ first_sentence_delay_ms: Integer,
277
+ first_sentence_mode:
278
+ Revox::Models::AssistantRetrieveResponse::FirstSentenceMode::TaggedSymbol,
279
+ ivr_navigation_enabled: T::Boolean,
280
+ llm_model:
281
+ Revox::Models::AssistantRetrieveResponse::LlmModel::Variants,
282
+ max_call_duration_secs: Float,
283
+ name: String,
284
+ organization_id: String,
285
+ prompt: String,
286
+ structured_output_config:
287
+ T.nilable(
288
+ T::Array[
289
+ Revox::Models::AssistantRetrieveResponse::StructuredOutputConfig
290
+ ]
291
+ ),
292
+ transfer_phone_number: T.nilable(String),
293
+ updated_at: T.anything,
294
+ voice: T.nilable(Revox::Models::AssistantRetrieveResponse::Voice),
295
+ voicemail_message: T.nilable(String),
296
+ webhook_url: T.nilable(String),
297
+ faq_items:
298
+ T::Array[Revox::Models::AssistantRetrieveResponse::FaqItem],
299
+ pending_faq_count: Float
300
+ }
301
+ )
302
+ end
303
+ def to_hash
304
+ end
305
+
306
+ # The background sound to play during the call. Useful to give the impression that
307
+ # your AI agent is in an office.
308
+ module BackgroundSound
309
+ extend Revox::Internal::Type::Enum
310
+
311
+ TaggedSymbol =
312
+ T.type_alias do
313
+ T.all(
314
+ Symbol,
315
+ Revox::Models::AssistantRetrieveResponse::BackgroundSound
316
+ )
317
+ end
318
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
319
+
320
+ AUDIO_OFFICE_OGG =
321
+ T.let(
322
+ :"audio/office.ogg",
323
+ Revox::Models::AssistantRetrieveResponse::BackgroundSound::TaggedSymbol
324
+ )
325
+
326
+ sig do
327
+ override.returns(
328
+ T::Array[
329
+ Revox::Models::AssistantRetrieveResponse::BackgroundSound::TaggedSymbol
330
+ ]
331
+ )
332
+ end
333
+ def self.values
334
+ end
335
+ end
336
+
337
+ class Calendly < Revox::Internal::Type::BaseModel
338
+ OrHash =
339
+ T.type_alias do
340
+ T.any(
341
+ Revox::Models::AssistantRetrieveResponse::Calendly,
342
+ Revox::Internal::AnyHash
343
+ )
344
+ end
345
+
346
+ # The connection ID representing the link between your Calendly account and Revox.
347
+ sig { returns(String) }
348
+ attr_accessor :connection_id
349
+
350
+ # The event type ID representing the event type to schedule. (eg:
351
+ # https://api.calendly.com/event_types/b2330295-2a91-4a1d-bb73-99e7707663d5)
352
+ sig { returns(String) }
353
+ attr_accessor :event_type_id
354
+
355
+ sig do
356
+ params(connection_id: String, event_type_id: String).returns(
357
+ T.attached_class
358
+ )
359
+ end
360
+ def self.new(
361
+ # The connection ID representing the link between your Calendly account and Revox.
362
+ connection_id:,
363
+ # The event type ID representing the event type to schedule. (eg:
364
+ # https://api.calendly.com/event_types/b2330295-2a91-4a1d-bb73-99e7707663d5)
365
+ event_type_id:
366
+ )
367
+ end
368
+
369
+ sig do
370
+ override.returns({ connection_id: String, event_type_id: String })
371
+ end
372
+ def to_hash
373
+ end
374
+ end
375
+
376
+ class CallRetryConfig < Revox::Internal::Type::BaseModel
377
+ OrHash =
378
+ T.type_alias do
379
+ T.any(
380
+ Revox::Models::AssistantRetrieveResponse::CallRetryConfig,
381
+ Revox::Internal::AnyHash
382
+ )
383
+ end
384
+
385
+ sig do
386
+ returns(
387
+ T::Array[
388
+ Revox::Models::AssistantRetrieveResponse::CallRetryConfig::CallingWindow
389
+ ]
390
+ )
391
+ end
392
+ attr_accessor :calling_windows
393
+
394
+ # Maximum number of call retry attempts. Default: 3.
395
+ sig { returns(Integer) }
396
+ attr_accessor :max_retry_attempts
397
+
398
+ # Optional IANA timezone identifier to override the automatic timezone detection
399
+ # from phone number. If not provided, timezone is determined from the recipient's
400
+ # phone number country code. Examples: 'America/New_York', 'Europe/Paris'.
401
+ sig { returns(T.nilable(String)) }
402
+ attr_accessor :timezone
403
+
404
+ # Configuration for call retry behavior including time windows, delays, and max
405
+ # iterations. If not provided, defaults will be used.
406
+ sig do
407
+ params(
408
+ calling_windows:
409
+ T::Array[
410
+ Revox::Models::AssistantRetrieveResponse::CallRetryConfig::CallingWindow::OrHash
411
+ ],
412
+ max_retry_attempts: Integer,
413
+ timezone: T.nilable(String)
414
+ ).returns(T.attached_class)
415
+ end
416
+ def self.new(
417
+ calling_windows:,
418
+ # Maximum number of call retry attempts. Default: 3.
419
+ max_retry_attempts:,
420
+ # Optional IANA timezone identifier to override the automatic timezone detection
421
+ # from phone number. If not provided, timezone is determined from the recipient's
422
+ # phone number country code. Examples: 'America/New_York', 'Europe/Paris'.
423
+ timezone: nil
424
+ )
425
+ end
426
+
427
+ sig do
428
+ override.returns(
429
+ {
430
+ calling_windows:
431
+ T::Array[
432
+ Revox::Models::AssistantRetrieveResponse::CallRetryConfig::CallingWindow
433
+ ],
434
+ max_retry_attempts: Integer,
435
+ timezone: T.nilable(String)
436
+ }
437
+ )
438
+ end
439
+ def to_hash
440
+ end
441
+
442
+ class CallingWindow < Revox::Internal::Type::BaseModel
443
+ OrHash =
444
+ T.type_alias do
445
+ T.any(
446
+ Revox::Models::AssistantRetrieveResponse::CallRetryConfig::CallingWindow,
447
+ Revox::Internal::AnyHash
448
+ )
449
+ end
450
+
451
+ # End time for the calling window in the recipient's timezone (or
452
+ # timezone_override if provided). Format: 'HH:mm' (24-hour) or 'H:mma' (12-hour).
453
+ # Examples: '17:00', '6pm'. Default: '18:00'.
454
+ sig { returns(String) }
455
+ attr_accessor :calling_window_end_time
456
+
457
+ # Start time for the calling window in the recipient's timezone (or
458
+ # timezone_override if provided). Format: 'HH:mm' (24-hour) or 'H:mma' (12-hour).
459
+ # Examples: '09:00', '10am'. Default: '10:00'.
460
+ sig { returns(String) }
461
+ attr_accessor :calling_window_start_time
462
+
463
+ # Delay between retry attempts in seconds. Default: 7200 (2 hours).
464
+ sig { returns(Integer) }
465
+ attr_accessor :retry_delay_seconds
466
+
467
+ sig do
468
+ params(
469
+ calling_window_end_time: String,
470
+ calling_window_start_time: String,
471
+ retry_delay_seconds: Integer
472
+ ).returns(T.attached_class)
473
+ end
474
+ def self.new(
475
+ # End time for the calling window in the recipient's timezone (or
476
+ # timezone_override if provided). Format: 'HH:mm' (24-hour) or 'H:mma' (12-hour).
477
+ # Examples: '17:00', '6pm'. Default: '18:00'.
478
+ calling_window_end_time:,
479
+ # Start time for the calling window in the recipient's timezone (or
480
+ # timezone_override if provided). Format: 'HH:mm' (24-hour) or 'H:mma' (12-hour).
481
+ # Examples: '09:00', '10am'. Default: '10:00'.
482
+ calling_window_start_time:,
483
+ # Delay between retry attempts in seconds. Default: 7200 (2 hours).
484
+ retry_delay_seconds:
485
+ )
486
+ end
487
+
488
+ sig do
489
+ override.returns(
490
+ {
491
+ calling_window_end_time: String,
492
+ calling_window_start_time: String,
493
+ retry_delay_seconds: Integer
494
+ }
495
+ )
496
+ end
497
+ def to_hash
498
+ end
499
+ end
500
+ end
501
+
502
+ module FirstSentenceMode
503
+ extend Revox::Internal::Type::Enum
504
+
505
+ TaggedSymbol =
506
+ T.type_alias do
507
+ T.all(
508
+ Symbol,
509
+ Revox::Models::AssistantRetrieveResponse::FirstSentenceMode
510
+ )
511
+ end
512
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
513
+
514
+ GENERATED =
515
+ T.let(
516
+ :generated,
517
+ Revox::Models::AssistantRetrieveResponse::FirstSentenceMode::TaggedSymbol
518
+ )
519
+ STATIC =
520
+ T.let(
521
+ :static,
522
+ Revox::Models::AssistantRetrieveResponse::FirstSentenceMode::TaggedSymbol
523
+ )
524
+ NONE =
525
+ T.let(
526
+ :none,
527
+ Revox::Models::AssistantRetrieveResponse::FirstSentenceMode::TaggedSymbol
528
+ )
529
+
530
+ sig do
531
+ override.returns(
532
+ T::Array[
533
+ Revox::Models::AssistantRetrieveResponse::FirstSentenceMode::TaggedSymbol
534
+ ]
535
+ )
536
+ end
537
+ def self.values
538
+ end
539
+ end
540
+
541
+ module LlmModel
542
+ extend Revox::Internal::Type::Union
543
+
544
+ Variants =
545
+ T.type_alias do
546
+ T.any(
547
+ Revox::Models::AssistantRetrieveResponse::LlmModel::UnionMember0,
548
+ Revox::Models::AssistantRetrieveResponse::LlmModel::UnionMember1
549
+ )
550
+ end
551
+
552
+ class UnionMember0 < Revox::Internal::Type::BaseModel
553
+ OrHash =
554
+ T.type_alias do
555
+ T.any(
556
+ Revox::Models::AssistantRetrieveResponse::LlmModel::UnionMember0,
557
+ Revox::Internal::AnyHash
558
+ )
559
+ end
560
+
561
+ sig do
562
+ returns(
563
+ Revox::Models::AssistantRetrieveResponse::LlmModel::UnionMember0::Name::TaggedSymbol
564
+ )
565
+ end
566
+ attr_accessor :name
567
+
568
+ sig { returns(Symbol) }
569
+ attr_accessor :type
570
+
571
+ sig do
572
+ params(
573
+ name:
574
+ Revox::Models::AssistantRetrieveResponse::LlmModel::UnionMember0::Name::OrSymbol,
575
+ type: Symbol
576
+ ).returns(T.attached_class)
577
+ end
578
+ def self.new(name:, type: :"dedicated-instance")
579
+ end
580
+
581
+ sig do
582
+ override.returns(
583
+ {
584
+ name:
585
+ Revox::Models::AssistantRetrieveResponse::LlmModel::UnionMember0::Name::TaggedSymbol,
586
+ type: Symbol
587
+ }
588
+ )
589
+ end
590
+ def to_hash
591
+ end
592
+
593
+ module Name
594
+ extend Revox::Internal::Type::Enum
595
+
596
+ TaggedSymbol =
597
+ T.type_alias do
598
+ T.all(
599
+ Symbol,
600
+ Revox::Models::AssistantRetrieveResponse::LlmModel::UnionMember0::Name
601
+ )
602
+ end
603
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
604
+
605
+ GPT_4_1 =
606
+ T.let(
607
+ :"gpt-4.1",
608
+ Revox::Models::AssistantRetrieveResponse::LlmModel::UnionMember0::Name::TaggedSymbol
609
+ )
610
+ MINISTRAL_3_8B_INSTRUCT =
611
+ T.let(
612
+ :"ministral-3-8b-instruct",
613
+ Revox::Models::AssistantRetrieveResponse::LlmModel::UnionMember0::Name::TaggedSymbol
614
+ )
615
+
616
+ sig do
617
+ override.returns(
618
+ T::Array[
619
+ Revox::Models::AssistantRetrieveResponse::LlmModel::UnionMember0::Name::TaggedSymbol
620
+ ]
621
+ )
622
+ end
623
+ def self.values
624
+ end
625
+ end
626
+ end
627
+
628
+ class UnionMember1 < Revox::Internal::Type::BaseModel
629
+ OrHash =
630
+ T.type_alias do
631
+ T.any(
632
+ Revox::Models::AssistantRetrieveResponse::LlmModel::UnionMember1,
633
+ Revox::Internal::AnyHash
634
+ )
635
+ end
636
+
637
+ # The model ID to use from OpenRouter. eg: openai/gpt-4.1
638
+ sig { returns(String) }
639
+ attr_accessor :openrouter_model_id
640
+
641
+ # The provider to use from OpenRouter. eg: nebius, openai, azure, etc.
642
+ sig { returns(String) }
643
+ attr_accessor :openrouter_provider
644
+
645
+ # Use a model from OpenRouter.
646
+ sig { returns(Symbol) }
647
+ attr_accessor :type
648
+
649
+ sig do
650
+ params(
651
+ openrouter_model_id: String,
652
+ openrouter_provider: String,
653
+ type: Symbol
654
+ ).returns(T.attached_class)
655
+ end
656
+ def self.new(
657
+ # The model ID to use from OpenRouter. eg: openai/gpt-4.1
658
+ openrouter_model_id:,
659
+ # The provider to use from OpenRouter. eg: nebius, openai, azure, etc.
660
+ openrouter_provider:,
661
+ # Use a model from OpenRouter.
662
+ type: :openrouter
663
+ )
664
+ end
665
+
666
+ sig do
667
+ override.returns(
668
+ {
669
+ openrouter_model_id: String,
670
+ openrouter_provider: String,
671
+ type: Symbol
672
+ }
673
+ )
674
+ end
675
+ def to_hash
676
+ end
677
+ end
678
+
679
+ sig do
680
+ override.returns(
681
+ T::Array[
682
+ Revox::Models::AssistantRetrieveResponse::LlmModel::Variants
683
+ ]
684
+ )
685
+ end
686
+ def self.variants
687
+ end
688
+ end
689
+
690
+ class StructuredOutputConfig < Revox::Internal::Type::BaseModel
691
+ OrHash =
692
+ T.type_alias do
693
+ T.any(
694
+ Revox::Models::AssistantRetrieveResponse::StructuredOutputConfig,
695
+ Revox::Internal::AnyHash
696
+ )
697
+ end
698
+
699
+ sig { returns(String) }
700
+ attr_accessor :name
701
+
702
+ sig { returns(T::Boolean) }
703
+ attr_accessor :required
704
+
705
+ sig do
706
+ returns(
707
+ Revox::Models::AssistantRetrieveResponse::StructuredOutputConfig::Type::TaggedSymbol
708
+ )
709
+ end
710
+ attr_accessor :type
711
+
712
+ sig { returns(T.nilable(String)) }
713
+ attr_reader :description
714
+
715
+ sig { params(description: String).void }
716
+ attr_writer :description
717
+
718
+ sig { returns(T.nilable(T::Array[String])) }
719
+ attr_reader :enum_options
720
+
721
+ sig { params(enum_options: T::Array[String]).void }
722
+ attr_writer :enum_options
723
+
724
+ sig do
725
+ params(
726
+ name: String,
727
+ required: T::Boolean,
728
+ type:
729
+ Revox::Models::AssistantRetrieveResponse::StructuredOutputConfig::Type::OrSymbol,
730
+ description: String,
731
+ enum_options: T::Array[String]
732
+ ).returns(T.attached_class)
733
+ end
734
+ def self.new(
735
+ name:,
736
+ required:,
737
+ type:,
738
+ description: nil,
739
+ enum_options: nil
740
+ )
741
+ end
742
+
743
+ sig do
744
+ override.returns(
745
+ {
746
+ name: String,
747
+ required: T::Boolean,
748
+ type:
749
+ Revox::Models::AssistantRetrieveResponse::StructuredOutputConfig::Type::TaggedSymbol,
750
+ description: String,
751
+ enum_options: T::Array[String]
752
+ }
753
+ )
754
+ end
755
+ def to_hash
756
+ end
757
+
758
+ module Type
759
+ extend Revox::Internal::Type::Enum
760
+
761
+ TaggedSymbol =
762
+ T.type_alias do
763
+ T.all(
764
+ Symbol,
765
+ Revox::Models::AssistantRetrieveResponse::StructuredOutputConfig::Type
766
+ )
767
+ end
768
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
769
+
770
+ STRING =
771
+ T.let(
772
+ :string,
773
+ Revox::Models::AssistantRetrieveResponse::StructuredOutputConfig::Type::TaggedSymbol
774
+ )
775
+ NUMBER =
776
+ T.let(
777
+ :number,
778
+ Revox::Models::AssistantRetrieveResponse::StructuredOutputConfig::Type::TaggedSymbol
779
+ )
780
+ BOOLEAN =
781
+ T.let(
782
+ :boolean,
783
+ Revox::Models::AssistantRetrieveResponse::StructuredOutputConfig::Type::TaggedSymbol
784
+ )
785
+ ENUM =
786
+ T.let(
787
+ :enum,
788
+ Revox::Models::AssistantRetrieveResponse::StructuredOutputConfig::Type::TaggedSymbol
789
+ )
790
+ DATE =
791
+ T.let(
792
+ :date,
793
+ Revox::Models::AssistantRetrieveResponse::StructuredOutputConfig::Type::TaggedSymbol
794
+ )
795
+ DATETIME =
796
+ T.let(
797
+ :datetime,
798
+ Revox::Models::AssistantRetrieveResponse::StructuredOutputConfig::Type::TaggedSymbol
799
+ )
800
+
801
+ sig do
802
+ override.returns(
803
+ T::Array[
804
+ Revox::Models::AssistantRetrieveResponse::StructuredOutputConfig::Type::TaggedSymbol
805
+ ]
806
+ )
807
+ end
808
+ def self.values
809
+ end
810
+ end
811
+ end
812
+
813
+ class Voice < Revox::Internal::Type::BaseModel
814
+ OrHash =
815
+ T.type_alias do
816
+ T.any(
817
+ Revox::Models::AssistantRetrieveResponse::Voice,
818
+ Revox::Internal::AnyHash
819
+ )
820
+ end
821
+
822
+ # The ID of the voice.
823
+ sig { returns(String) }
824
+ attr_accessor :id
825
+
826
+ # The provider of the voice.
827
+ sig do
828
+ returns(
829
+ Revox::Models::AssistantRetrieveResponse::Voice::Provider::TaggedSymbol
830
+ )
831
+ end
832
+ attr_accessor :provider
833
+
834
+ # The speed of the voice. Range depends on provider: Cartesia 0.6–1.5, ElevenLabs
835
+ # 0.7–1.2. Default is 1.0.
836
+ sig { returns(T.nilable(Float)) }
837
+ attr_reader :speed
838
+
839
+ sig { params(speed: Float).void }
840
+ attr_writer :speed
841
+
842
+ sig do
843
+ params(
844
+ id: String,
845
+ provider:
846
+ Revox::Models::AssistantRetrieveResponse::Voice::Provider::OrSymbol,
847
+ speed: Float
848
+ ).returns(T.attached_class)
849
+ end
850
+ def self.new(
851
+ # The ID of the voice.
852
+ id:,
853
+ # The provider of the voice.
854
+ provider:,
855
+ # The speed of the voice. Range depends on provider: Cartesia 0.6–1.5, ElevenLabs
856
+ # 0.7–1.2. Default is 1.0.
857
+ speed: nil
858
+ )
859
+ end
860
+
861
+ sig do
862
+ override.returns(
863
+ {
864
+ id: String,
865
+ provider:
866
+ Revox::Models::AssistantRetrieveResponse::Voice::Provider::TaggedSymbol,
867
+ speed: Float
868
+ }
869
+ )
870
+ end
871
+ def to_hash
872
+ end
873
+
874
+ # The provider of the voice.
875
+ module Provider
876
+ extend Revox::Internal::Type::Enum
877
+
878
+ TaggedSymbol =
879
+ T.type_alias do
880
+ T.all(
881
+ Symbol,
882
+ Revox::Models::AssistantRetrieveResponse::Voice::Provider
883
+ )
884
+ end
885
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
886
+
887
+ CARTESIA =
888
+ T.let(
889
+ :cartesia,
890
+ Revox::Models::AssistantRetrieveResponse::Voice::Provider::TaggedSymbol
891
+ )
892
+ ELEVENLABS =
893
+ T.let(
894
+ :elevenlabs,
895
+ Revox::Models::AssistantRetrieveResponse::Voice::Provider::TaggedSymbol
896
+ )
897
+
898
+ sig do
899
+ override.returns(
900
+ T::Array[
901
+ Revox::Models::AssistantRetrieveResponse::Voice::Provider::TaggedSymbol
902
+ ]
903
+ )
904
+ end
905
+ def self.values
906
+ end
907
+ end
908
+ end
909
+
910
+ class FaqItem < Revox::Internal::Type::BaseModel
911
+ OrHash =
912
+ T.type_alias do
913
+ T.any(
914
+ Revox::Models::AssistantRetrieveResponse::FaqItem,
915
+ Revox::Internal::AnyHash
916
+ )
917
+ end
918
+
919
+ sig { returns(String) }
920
+ attr_accessor :answer
921
+
922
+ sig { returns(String) }
923
+ attr_accessor :question
924
+
925
+ sig { returns(T.nilable(String)) }
926
+ attr_reader :id
927
+
928
+ sig { params(id: String).void }
929
+ attr_writer :id
930
+
931
+ sig { returns(T.nilable(T::Boolean)) }
932
+ attr_reader :needs_human_answer
933
+
934
+ sig { params(needs_human_answer: T::Boolean).void }
935
+ attr_writer :needs_human_answer
936
+
937
+ sig do
938
+ returns(
939
+ T.nilable(
940
+ Revox::Models::AssistantRetrieveResponse::FaqItem::Source::TaggedSymbol
941
+ )
942
+ )
943
+ end
944
+ attr_reader :source
945
+
946
+ sig do
947
+ params(
948
+ source:
949
+ Revox::Models::AssistantRetrieveResponse::FaqItem::Source::OrSymbol
950
+ ).void
951
+ end
952
+ attr_writer :source
953
+
954
+ sig do
955
+ params(
956
+ answer: String,
957
+ question: String,
958
+ id: String,
959
+ needs_human_answer: T::Boolean,
960
+ source:
961
+ Revox::Models::AssistantRetrieveResponse::FaqItem::Source::OrSymbol
962
+ ).returns(T.attached_class)
963
+ end
964
+ def self.new(
965
+ answer:,
966
+ question:,
967
+ id: nil,
968
+ needs_human_answer: nil,
969
+ source: nil
970
+ )
971
+ end
972
+
973
+ sig do
974
+ override.returns(
975
+ {
976
+ answer: String,
977
+ question: String,
978
+ id: String,
979
+ needs_human_answer: T::Boolean,
980
+ source:
981
+ Revox::Models::AssistantRetrieveResponse::FaqItem::Source::TaggedSymbol
982
+ }
983
+ )
984
+ end
985
+ def to_hash
986
+ end
987
+
988
+ module Source
989
+ extend Revox::Internal::Type::Enum
990
+
991
+ TaggedSymbol =
992
+ T.type_alias do
993
+ T.all(
994
+ Symbol,
995
+ Revox::Models::AssistantRetrieveResponse::FaqItem::Source
996
+ )
997
+ end
998
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
999
+
1000
+ HUMAN =
1001
+ T.let(
1002
+ :human,
1003
+ Revox::Models::AssistantRetrieveResponse::FaqItem::Source::TaggedSymbol
1004
+ )
1005
+ AI =
1006
+ T.let(
1007
+ :ai,
1008
+ Revox::Models::AssistantRetrieveResponse::FaqItem::Source::TaggedSymbol
1009
+ )
1010
+
1011
+ sig do
1012
+ override.returns(
1013
+ T::Array[
1014
+ Revox::Models::AssistantRetrieveResponse::FaqItem::Source::TaggedSymbol
1015
+ ]
1016
+ )
1017
+ end
1018
+ def self.values
1019
+ end
1020
+ end
1021
+ end
1022
+ end
1023
+ end
1024
+ end