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