revox 0.0.2 → 0.1.0

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 (106) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +25 -0
  3. data/README.md +63 -22
  4. data/lib/revox/client.rb +4 -0
  5. data/lib/revox/internal/type/base_model.rb +3 -3
  6. data/lib/revox/internal/util.rb +31 -0
  7. data/lib/revox/models/assistant_create_params.rb +2 -2
  8. data/lib/revox/models/assistant_delete_params.rb +7 -1
  9. data/lib/revox/models/assistant_retrieve_params.rb +7 -1
  10. data/lib/revox/models/assistant_update_params.rb +10 -3
  11. data/lib/revox/models/call_create_params.rb +2 -2
  12. data/lib/revox/models/call_create_response.rb +720 -12
  13. data/lib/revox/models/call_list_params.rb +30 -7
  14. data/lib/revox/models/call_list_response.rb +63 -1
  15. data/lib/revox/models/call_retrieve_params.rb +7 -1
  16. data/lib/revox/models/call_retrieve_response.rb +723 -12
  17. data/lib/revox/models/campaign_cancel_params.rb +20 -0
  18. data/lib/revox/models/campaign_cancel_response.rb +16 -0
  19. data/lib/revox/models/campaign_create_params.rb +174 -0
  20. data/lib/revox/models/campaign_create_response.rb +775 -0
  21. data/lib/revox/models/campaign_delete_params.rb +20 -0
  22. data/lib/revox/models/campaign_delete_response.rb +16 -0
  23. data/lib/revox/models/campaign_export_rows_params.rb +20 -0
  24. data/lib/revox/models/campaign_export_rows_response.rb +22 -0
  25. data/lib/revox/models/campaign_get_rows_params.rb +65 -0
  26. data/lib/revox/models/campaign_get_rows_response.rb +1468 -0
  27. data/lib/revox/models/campaign_list_params.rb +14 -0
  28. data/lib/revox/models/campaign_list_response.rb +771 -0
  29. data/lib/revox/models/campaign_retrieve_params.rb +20 -0
  30. data/lib/revox/models/campaign_retrieve_response.rb +776 -0
  31. data/lib/revox/models/voice_preview_params.rb +1 -9
  32. data/lib/revox/models/voice_retrieve_params.rb +7 -1
  33. data/lib/revox/models.rb +14 -0
  34. data/lib/revox/resources/assistants.rb +26 -2
  35. data/lib/revox/resources/call.rb +20 -8
  36. data/lib/revox/resources/campaigns.rb +181 -0
  37. data/lib/revox/resources/voices.rb +12 -8
  38. data/lib/revox/version.rb +1 -1
  39. data/lib/revox.rb +15 -0
  40. data/rbi/revox/client.rbi +3 -0
  41. data/rbi/revox/internal/util.rbi +20 -0
  42. data/rbi/revox/models/assistant_create_params.rbi +3 -5
  43. data/rbi/revox/models/assistant_delete_params.rbi +11 -5
  44. data/rbi/revox/models/assistant_retrieve_params.rbi +11 -5
  45. data/rbi/revox/models/assistant_update_params.rbi +9 -5
  46. data/rbi/revox/models/call_create_params.rbi +3 -5
  47. data/rbi/revox/models/call_create_response.rbi +1537 -11
  48. data/rbi/revox/models/call_list_params.rbi +53 -6
  49. data/rbi/revox/models/call_list_response.rbi +162 -0
  50. data/rbi/revox/models/call_retrieve_params.rbi +11 -5
  51. data/rbi/revox/models/call_retrieve_response.rbi +1543 -11
  52. data/rbi/revox/models/campaign_cancel_params.rbi +33 -0
  53. data/rbi/revox/models/campaign_cancel_response.rbi +23 -0
  54. data/rbi/revox/models/campaign_create_params.rbi +297 -0
  55. data/rbi/revox/models/campaign_create_response.rbi +1490 -0
  56. data/rbi/revox/models/campaign_delete_params.rbi +33 -0
  57. data/rbi/revox/models/campaign_delete_response.rbi +23 -0
  58. data/rbi/revox/models/campaign_export_rows_params.rbi +33 -0
  59. data/rbi/revox/models/campaign_export_rows_response.rbi +29 -0
  60. data/rbi/revox/models/campaign_get_rows_params.rbi +113 -0
  61. data/rbi/revox/models/campaign_get_rows_response.rbi +2981 -0
  62. data/rbi/revox/models/campaign_list_params.rbi +27 -0
  63. data/rbi/revox/models/campaign_list_response.rbi +1482 -0
  64. data/rbi/revox/models/campaign_retrieve_params.rbi +33 -0
  65. data/rbi/revox/models/campaign_retrieve_response.rbi +1495 -0
  66. data/rbi/revox/models/voice_preview_params.rbi +0 -11
  67. data/rbi/revox/models/voice_retrieve_params.rbi +6 -1
  68. data/rbi/revox/models.rbi +14 -0
  69. data/rbi/revox/resources/assistants.rbi +21 -2
  70. data/rbi/revox/resources/call.rbi +18 -6
  71. data/rbi/revox/resources/campaigns.rbi +128 -0
  72. data/rbi/revox/resources/voices.rbi +9 -7
  73. data/sig/revox/client.rbs +2 -0
  74. data/sig/revox/internal/util.rbs +10 -0
  75. data/sig/revox/models/assistant_create_params.rbs +8 -4
  76. data/sig/revox/models/assistant_delete_params.rbs +8 -3
  77. data/sig/revox/models/assistant_retrieve_params.rbs +8 -3
  78. data/sig/revox/models/assistant_update_params.rbs +13 -4
  79. data/sig/revox/models/call_create_params.rbs +8 -4
  80. data/sig/revox/models/call_create_response.rbs +615 -8
  81. data/sig/revox/models/call_list_params.rbs +42 -7
  82. data/sig/revox/models/call_list_response.rbs +57 -2
  83. data/sig/revox/models/call_retrieve_params.rbs +9 -3
  84. data/sig/revox/models/call_retrieve_response.rbs +615 -8
  85. data/sig/revox/models/campaign_cancel_params.rbs +20 -0
  86. data/sig/revox/models/campaign_cancel_response.rbs +13 -0
  87. data/sig/revox/models/campaign_create_params.rbs +149 -0
  88. data/sig/revox/models/campaign_create_response.rbs +666 -0
  89. data/sig/revox/models/campaign_delete_params.rbs +20 -0
  90. data/sig/revox/models/campaign_delete_response.rbs +13 -0
  91. data/sig/revox/models/campaign_export_rows_params.rbs +20 -0
  92. data/sig/revox/models/campaign_export_rows_response.rbs +15 -0
  93. data/sig/revox/models/campaign_get_rows_params.rbs +82 -0
  94. data/sig/revox/models/campaign_get_rows_response.rbs +1220 -0
  95. data/sig/revox/models/campaign_list_params.rbs +14 -0
  96. data/sig/revox/models/campaign_list_response.rbs +666 -0
  97. data/sig/revox/models/campaign_retrieve_params.rbs +20 -0
  98. data/sig/revox/models/campaign_retrieve_response.rbs +666 -0
  99. data/sig/revox/models/voice_preview_params.rbs +1 -8
  100. data/sig/revox/models/voice_retrieve_params.rbs +5 -1
  101. data/sig/revox/models.rbs +14 -0
  102. data/sig/revox/resources/assistants.rbs +2 -2
  103. data/sig/revox/resources/call.rbs +3 -2
  104. data/sig/revox/resources/campaigns.rbs +52 -0
  105. data/sig/revox/resources/voices.rbs +0 -1
  106. metadata +47 -2
@@ -49,6 +49,23 @@ module Revox
49
49
  sig { returns(String) }
50
50
  attr_accessor :id
51
51
 
52
+ sig do
53
+ returns(
54
+ T.nilable(Revox::Models::CallRetrieveResponse::Call::Assistant)
55
+ )
56
+ end
57
+ attr_reader :assistant
58
+
59
+ sig do
60
+ params(
61
+ assistant:
62
+ T.nilable(
63
+ Revox::Models::CallRetrieveResponse::Call::Assistant::OrHash
64
+ )
65
+ ).void
66
+ end
67
+ attr_writer :assistant
68
+
52
69
  # All call attempts for this call order, ordered by most recent first.
53
70
  sig do
54
71
  returns(
@@ -82,6 +99,23 @@ module Revox
82
99
  sig { returns(Float) }
83
100
  attr_accessor :calls_count
84
101
 
102
+ sig do
103
+ returns(
104
+ T.nilable(Revox::Models::CallRetrieveResponse::Call::Campaign)
105
+ )
106
+ end
107
+ attr_reader :campaign
108
+
109
+ sig do
110
+ params(
111
+ campaign:
112
+ T.nilable(
113
+ Revox::Models::CallRetrieveResponse::Call::Campaign::OrHash
114
+ )
115
+ ).void
116
+ end
117
+ attr_writer :campaign
118
+
85
119
  # The time the call order was created.
86
120
  sig { returns(T.anything) }
87
121
  attr_accessor :created_at
@@ -103,11 +137,13 @@ module Revox
103
137
  sig { returns(String) }
104
138
  attr_accessor :from_phone_number
105
139
 
106
- # Whether the call was cancelled.
140
+ # DEPRECATED: Whether the call has been cancelled. This is derived from `status`.
141
+ # Use `status` instead.
107
142
  sig { returns(T::Boolean) }
108
143
  attr_accessor :is_cancelled
109
144
 
110
- # Whether the call is completed or still in progress.
145
+ # DEPRECATED: Whether the call has completed. This is derived from `status`. Use
146
+ # `status` instead.
111
147
  sig { returns(T::Boolean) }
112
148
  attr_accessor :is_completed
113
149
 
@@ -141,14 +177,22 @@ module Revox
141
177
  sig { returns(T.nilable(T::Hash[Symbol, String])) }
142
178
  attr_accessor :metadata
143
179
 
144
- # The next call attempt time.
145
- sig { returns(T.anything) }
146
- attr_accessor :next_call_at
180
+ # The ID of the organization that owns the call.
181
+ sig { returns(String) }
182
+ attr_accessor :organization_id
147
183
 
148
184
  # The time the call order is scheduled to start.
149
185
  sig { returns(T.anything) }
150
186
  attr_accessor :scheduled_at
151
187
 
188
+ # The status of the call.
189
+ sig do
190
+ returns(
191
+ Revox::Models::CallRetrieveResponse::Call::Status::TaggedSymbol
192
+ )
193
+ end
194
+ attr_accessor :status
195
+
152
196
  # The phone number that received the call. Formatted in E.164 format. Example:
153
197
  # +1234567890
154
198
  sig { returns(String) }
@@ -159,6 +203,10 @@ module Revox
159
203
  sig do
160
204
  params(
161
205
  id: String,
206
+ assistant:
207
+ T.nilable(
208
+ Revox::Models::CallRetrieveResponse::Call::Assistant::OrHash
209
+ ),
162
210
  call_attempts:
163
211
  T::Array[
164
212
  Revox::Models::CallRetrieveResponse::Call::CallAttempt::OrHash
@@ -168,6 +216,10 @@ module Revox
168
216
  Revox::Models::CallRetrieveResponse::Call::CallRetryConfig::OrHash
169
217
  ),
170
218
  calls_count: Float,
219
+ campaign:
220
+ T.nilable(
221
+ Revox::Models::CallRetrieveResponse::Call::Campaign::OrHash
222
+ ),
171
223
  created_at: T.anything,
172
224
  direction:
173
225
  Revox::Models::CallRetrieveResponse::Call::Direction::OrSymbol,
@@ -185,14 +237,16 @@ module Revox
185
237
  Revox::Models::CallRetrieveResponse::Call::LlmModel::UnionMember1::OrHash
186
238
  ),
187
239
  metadata: T.nilable(T::Hash[Symbol, String]),
188
- next_call_at: T.anything,
240
+ organization_id: String,
189
241
  scheduled_at: T.anything,
242
+ status: Revox::Models::CallRetrieveResponse::Call::Status::OrSymbol,
190
243
  to_phone_number: String
191
244
  ).returns(T.attached_class)
192
245
  end
193
246
  def self.new(
194
247
  # The ID of the call.
195
248
  id:,
249
+ assistant:,
196
250
  # All call attempts for this call order, ordered by most recent first.
197
251
  call_attempts:,
198
252
  # Configuration for call retry behavior including time windows, delays, and max
@@ -200,6 +254,7 @@ module Revox
200
254
  call_retry_config:,
201
255
  # The number of call attempts made.
202
256
  calls_count:,
257
+ campaign:,
203
258
  # The time the call order was created.
204
259
  created_at:,
205
260
  # Whether the call is inbound or outbound.
@@ -209,9 +264,11 @@ module Revox
209
264
  # The phone number that made the call. Formatted in E.164 format. Example:
210
265
  # +1234567890
211
266
  from_phone_number:,
212
- # Whether the call was cancelled.
267
+ # DEPRECATED: Whether the call has been cancelled. This is derived from `status`.
268
+ # Use `status` instead.
213
269
  is_cancelled:,
214
- # Whether the call is completed or still in progress.
270
+ # DEPRECATED: Whether the call has completed. This is derived from `status`. Use
271
+ # `status` instead.
215
272
  is_completed:,
216
273
  # This represent a single call attempt. A call attempt is a single call made to
217
274
  # the phone number.
@@ -219,10 +276,12 @@ module Revox
219
276
  llm_model:,
220
277
  # Metadata stored with the call.
221
278
  metadata:,
222
- # The next call attempt time.
223
- next_call_at:,
279
+ # The ID of the organization that owns the call.
280
+ organization_id:,
224
281
  # The time the call order is scheduled to start.
225
282
  scheduled_at:,
283
+ # The status of the call.
284
+ status:,
226
285
  # The phone number that received the call. Formatted in E.164 format. Example:
227
286
  # +1234567890
228
287
  to_phone_number:
@@ -233,6 +292,8 @@ module Revox
233
292
  override.returns(
234
293
  {
235
294
  id: String,
295
+ assistant:
296
+ T.nilable(Revox::Models::CallRetrieveResponse::Call::Assistant),
236
297
  call_attempts:
237
298
  T::Array[
238
299
  Revox::Models::CallRetrieveResponse::Call::CallAttempt
@@ -242,6 +303,8 @@ module Revox
242
303
  Revox::Models::CallRetrieveResponse::Call::CallRetryConfig
243
304
  ),
244
305
  calls_count: Float,
306
+ campaign:
307
+ T.nilable(Revox::Models::CallRetrieveResponse::Call::Campaign),
245
308
  created_at: T.anything,
246
309
  direction:
247
310
  Revox::Models::CallRetrieveResponse::Call::Direction::TaggedSymbol,
@@ -256,8 +319,10 @@ module Revox
256
319
  llm_model:
257
320
  Revox::Models::CallRetrieveResponse::Call::LlmModel::Variants,
258
321
  metadata: T.nilable(T::Hash[Symbol, String]),
259
- next_call_at: T.anything,
322
+ organization_id: String,
260
323
  scheduled_at: T.anything,
324
+ status:
325
+ Revox::Models::CallRetrieveResponse::Call::Status::TaggedSymbol,
261
326
  to_phone_number: String
262
327
  }
263
328
  )
@@ -265,6 +330,1056 @@ module Revox
265
330
  def to_hash
266
331
  end
267
332
 
333
+ class Assistant < Revox::Internal::Type::BaseModel
334
+ OrHash =
335
+ T.type_alias do
336
+ T.any(
337
+ Revox::Models::CallRetrieveResponse::Call::Assistant,
338
+ Revox::Internal::AnyHash
339
+ )
340
+ end
341
+
342
+ sig { returns(String) }
343
+ attr_accessor :id
344
+
345
+ # The background sound to play during the call. Useful to give the impression that
346
+ # your AI agent is in an office.
347
+ sig do
348
+ returns(
349
+ T.nilable(
350
+ Revox::Models::CallRetrieveResponse::Call::Assistant::BackgroundSound::TaggedSymbol
351
+ )
352
+ )
353
+ end
354
+ attr_accessor :background_sound
355
+
356
+ sig do
357
+ returns(
358
+ T.nilable(
359
+ Revox::Models::CallRetrieveResponse::Call::Assistant::Calendly
360
+ )
361
+ )
362
+ end
363
+ attr_reader :calendly
364
+
365
+ sig do
366
+ params(
367
+ calendly:
368
+ T.nilable(
369
+ Revox::Models::CallRetrieveResponse::Call::Assistant::Calendly::OrHash
370
+ )
371
+ ).void
372
+ end
373
+ attr_writer :calendly
374
+
375
+ # Configuration for call retry behavior including time windows, delays, and max
376
+ # iterations. If not provided, defaults will be used.
377
+ sig do
378
+ returns(
379
+ T.nilable(
380
+ Revox::Models::CallRetrieveResponse::Call::Assistant::CallRetryConfig
381
+ )
382
+ )
383
+ end
384
+ attr_reader :call_retry_config
385
+
386
+ sig do
387
+ params(
388
+ call_retry_config:
389
+ T.nilable(
390
+ Revox::Models::CallRetrieveResponse::Call::Assistant::CallRetryConfig::OrHash
391
+ )
392
+ ).void
393
+ end
394
+ attr_writer :call_retry_config
395
+
396
+ sig { returns(T.anything) }
397
+ attr_accessor :created_at
398
+
399
+ sig { returns(T.nilable(String)) }
400
+ attr_accessor :end_of_call_sentence
401
+
402
+ sig { returns(T.nilable(String)) }
403
+ attr_accessor :first_sentence
404
+
405
+ # Delay in milliseconds before speaking the first sentence. Default: 400.
406
+ sig { returns(Integer) }
407
+ attr_accessor :first_sentence_delay_ms
408
+
409
+ sig do
410
+ returns(
411
+ Revox::Models::CallRetrieveResponse::Call::Assistant::FirstSentenceMode::TaggedSymbol
412
+ )
413
+ end
414
+ attr_accessor :first_sentence_mode
415
+
416
+ # Enable IVR navigation tools. When enabled, the assistant can send DTMF tones and
417
+ # skip turns to navigate phone menus.
418
+ sig { returns(T::Boolean) }
419
+ attr_accessor :ivr_navigation_enabled
420
+
421
+ sig do
422
+ returns(
423
+ Revox::Models::CallRetrieveResponse::Call::Assistant::LlmModel::Variants
424
+ )
425
+ end
426
+ attr_accessor :llm_model
427
+
428
+ # The maximum duration of the call in seconds. This is the maximum time the call
429
+ # will be allowed to run.
430
+ sig { returns(Float) }
431
+ attr_accessor :max_call_duration_secs
432
+
433
+ sig { returns(String) }
434
+ attr_accessor :name
435
+
436
+ sig { returns(String) }
437
+ attr_accessor :organization_id
438
+
439
+ sig { returns(String) }
440
+ attr_accessor :prompt
441
+
442
+ # The structured output config to use for the call. This is used to extract the
443
+ # data from the call (like email, name, company name, etc.).
444
+ sig do
445
+ returns(
446
+ T.nilable(
447
+ T::Array[
448
+ Revox::Models::CallRetrieveResponse::Call::Assistant::StructuredOutputConfig
449
+ ]
450
+ )
451
+ )
452
+ end
453
+ attr_accessor :structured_output_config
454
+
455
+ # Phone number to transfer calls to when users request to speak to a human agent.
456
+ sig { returns(T.nilable(String)) }
457
+ attr_accessor :transfer_phone_number
458
+
459
+ sig { returns(T.anything) }
460
+ attr_accessor :updated_at
461
+
462
+ sig do
463
+ returns(
464
+ T.nilable(
465
+ Revox::Models::CallRetrieveResponse::Call::Assistant::Voice
466
+ )
467
+ )
468
+ end
469
+ attr_reader :voice
470
+
471
+ sig do
472
+ params(
473
+ voice:
474
+ T.nilable(
475
+ Revox::Models::CallRetrieveResponse::Call::Assistant::Voice::OrHash
476
+ )
477
+ ).void
478
+ end
479
+ attr_writer :voice
480
+
481
+ # If set, when voicemail is detected the agent will speak this message then hang
482
+ # up; if null, hang up immediately.
483
+ sig { returns(T.nilable(String)) }
484
+ attr_accessor :voicemail_message
485
+
486
+ # The webhook URL to call when the call is completed.
487
+ sig { returns(T.nilable(String)) }
488
+ attr_accessor :webhook_url
489
+
490
+ sig do
491
+ returns(
492
+ T.nilable(
493
+ T::Array[
494
+ Revox::Models::CallRetrieveResponse::Call::Assistant::FaqItem
495
+ ]
496
+ )
497
+ )
498
+ end
499
+ attr_reader :faq_items
500
+
501
+ sig do
502
+ params(
503
+ faq_items:
504
+ T::Array[
505
+ Revox::Models::CallRetrieveResponse::Call::Assistant::FaqItem::OrHash
506
+ ]
507
+ ).void
508
+ end
509
+ attr_writer :faq_items
510
+
511
+ sig { returns(T.nilable(Float)) }
512
+ attr_reader :pending_faq_count
513
+
514
+ sig { params(pending_faq_count: Float).void }
515
+ attr_writer :pending_faq_count
516
+
517
+ sig do
518
+ params(
519
+ id: String,
520
+ background_sound:
521
+ T.nilable(
522
+ Revox::Models::CallRetrieveResponse::Call::Assistant::BackgroundSound::OrSymbol
523
+ ),
524
+ calendly:
525
+ T.nilable(
526
+ Revox::Models::CallRetrieveResponse::Call::Assistant::Calendly::OrHash
527
+ ),
528
+ call_retry_config:
529
+ T.nilable(
530
+ Revox::Models::CallRetrieveResponse::Call::Assistant::CallRetryConfig::OrHash
531
+ ),
532
+ created_at: T.anything,
533
+ end_of_call_sentence: T.nilable(String),
534
+ first_sentence: T.nilable(String),
535
+ first_sentence_delay_ms: Integer,
536
+ first_sentence_mode:
537
+ Revox::Models::CallRetrieveResponse::Call::Assistant::FirstSentenceMode::OrSymbol,
538
+ ivr_navigation_enabled: T::Boolean,
539
+ llm_model:
540
+ T.any(
541
+ Revox::Models::CallRetrieveResponse::Call::Assistant::LlmModel::UnionMember0::OrHash,
542
+ Revox::Models::CallRetrieveResponse::Call::Assistant::LlmModel::UnionMember1::OrHash
543
+ ),
544
+ max_call_duration_secs: Float,
545
+ name: String,
546
+ organization_id: String,
547
+ prompt: String,
548
+ structured_output_config:
549
+ T.nilable(
550
+ T::Array[
551
+ Revox::Models::CallRetrieveResponse::Call::Assistant::StructuredOutputConfig::OrHash
552
+ ]
553
+ ),
554
+ transfer_phone_number: T.nilable(String),
555
+ updated_at: T.anything,
556
+ voice:
557
+ T.nilable(
558
+ Revox::Models::CallRetrieveResponse::Call::Assistant::Voice::OrHash
559
+ ),
560
+ voicemail_message: T.nilable(String),
561
+ webhook_url: T.nilable(String),
562
+ faq_items:
563
+ T::Array[
564
+ Revox::Models::CallRetrieveResponse::Call::Assistant::FaqItem::OrHash
565
+ ],
566
+ pending_faq_count: Float
567
+ ).returns(T.attached_class)
568
+ end
569
+ def self.new(
570
+ id:,
571
+ # The background sound to play during the call. Useful to give the impression that
572
+ # your AI agent is in an office.
573
+ background_sound:,
574
+ calendly:,
575
+ # Configuration for call retry behavior including time windows, delays, and max
576
+ # iterations. If not provided, defaults will be used.
577
+ call_retry_config:,
578
+ created_at:,
579
+ end_of_call_sentence:,
580
+ first_sentence:,
581
+ # Delay in milliseconds before speaking the first sentence. Default: 400.
582
+ first_sentence_delay_ms:,
583
+ first_sentence_mode:,
584
+ # Enable IVR navigation tools. When enabled, the assistant can send DTMF tones and
585
+ # skip turns to navigate phone menus.
586
+ ivr_navigation_enabled:,
587
+ llm_model:,
588
+ # The maximum duration of the call in seconds. This is the maximum time the call
589
+ # will be allowed to run.
590
+ max_call_duration_secs:,
591
+ name:,
592
+ organization_id:,
593
+ prompt:,
594
+ # The structured output config to use for the call. This is used to extract the
595
+ # data from the call (like email, name, company name, etc.).
596
+ structured_output_config:,
597
+ # Phone number to transfer calls to when users request to speak to a human agent.
598
+ transfer_phone_number:,
599
+ updated_at:,
600
+ voice:,
601
+ # If set, when voicemail is detected the agent will speak this message then hang
602
+ # up; if null, hang up immediately.
603
+ voicemail_message:,
604
+ # The webhook URL to call when the call is completed.
605
+ webhook_url:,
606
+ faq_items: nil,
607
+ pending_faq_count: nil
608
+ )
609
+ end
610
+
611
+ sig do
612
+ override.returns(
613
+ {
614
+ id: String,
615
+ background_sound:
616
+ T.nilable(
617
+ Revox::Models::CallRetrieveResponse::Call::Assistant::BackgroundSound::TaggedSymbol
618
+ ),
619
+ calendly:
620
+ T.nilable(
621
+ Revox::Models::CallRetrieveResponse::Call::Assistant::Calendly
622
+ ),
623
+ call_retry_config:
624
+ T.nilable(
625
+ Revox::Models::CallRetrieveResponse::Call::Assistant::CallRetryConfig
626
+ ),
627
+ created_at: T.anything,
628
+ end_of_call_sentence: T.nilable(String),
629
+ first_sentence: T.nilable(String),
630
+ first_sentence_delay_ms: Integer,
631
+ first_sentence_mode:
632
+ Revox::Models::CallRetrieveResponse::Call::Assistant::FirstSentenceMode::TaggedSymbol,
633
+ ivr_navigation_enabled: T::Boolean,
634
+ llm_model:
635
+ Revox::Models::CallRetrieveResponse::Call::Assistant::LlmModel::Variants,
636
+ max_call_duration_secs: Float,
637
+ name: String,
638
+ organization_id: String,
639
+ prompt: String,
640
+ structured_output_config:
641
+ T.nilable(
642
+ T::Array[
643
+ Revox::Models::CallRetrieveResponse::Call::Assistant::StructuredOutputConfig
644
+ ]
645
+ ),
646
+ transfer_phone_number: T.nilable(String),
647
+ updated_at: T.anything,
648
+ voice:
649
+ T.nilable(
650
+ Revox::Models::CallRetrieveResponse::Call::Assistant::Voice
651
+ ),
652
+ voicemail_message: T.nilable(String),
653
+ webhook_url: T.nilable(String),
654
+ faq_items:
655
+ T::Array[
656
+ Revox::Models::CallRetrieveResponse::Call::Assistant::FaqItem
657
+ ],
658
+ pending_faq_count: Float
659
+ }
660
+ )
661
+ end
662
+ def to_hash
663
+ end
664
+
665
+ # The background sound to play during the call. Useful to give the impression that
666
+ # your AI agent is in an office.
667
+ module BackgroundSound
668
+ extend Revox::Internal::Type::Enum
669
+
670
+ TaggedSymbol =
671
+ T.type_alias do
672
+ T.all(
673
+ Symbol,
674
+ Revox::Models::CallRetrieveResponse::Call::Assistant::BackgroundSound
675
+ )
676
+ end
677
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
678
+
679
+ AUDIO_OFFICE_OGG =
680
+ T.let(
681
+ :"audio/office.ogg",
682
+ Revox::Models::CallRetrieveResponse::Call::Assistant::BackgroundSound::TaggedSymbol
683
+ )
684
+
685
+ sig do
686
+ override.returns(
687
+ T::Array[
688
+ Revox::Models::CallRetrieveResponse::Call::Assistant::BackgroundSound::TaggedSymbol
689
+ ]
690
+ )
691
+ end
692
+ def self.values
693
+ end
694
+ end
695
+
696
+ class Calendly < Revox::Internal::Type::BaseModel
697
+ OrHash =
698
+ T.type_alias do
699
+ T.any(
700
+ Revox::Models::CallRetrieveResponse::Call::Assistant::Calendly,
701
+ Revox::Internal::AnyHash
702
+ )
703
+ end
704
+
705
+ # The connection ID representing the link between your Calendly account and Revox.
706
+ sig { returns(String) }
707
+ attr_accessor :connection_id
708
+
709
+ # The event type ID representing the event type to schedule. (eg:
710
+ # https://api.calendly.com/event_types/b2330295-2a91-4a1d-bb73-99e7707663d5)
711
+ sig { returns(String) }
712
+ attr_accessor :event_type_id
713
+
714
+ sig do
715
+ params(connection_id: String, event_type_id: String).returns(
716
+ T.attached_class
717
+ )
718
+ end
719
+ def self.new(
720
+ # The connection ID representing the link between your Calendly account and Revox.
721
+ connection_id:,
722
+ # The event type ID representing the event type to schedule. (eg:
723
+ # https://api.calendly.com/event_types/b2330295-2a91-4a1d-bb73-99e7707663d5)
724
+ event_type_id:
725
+ )
726
+ end
727
+
728
+ sig do
729
+ override.returns({ connection_id: String, event_type_id: String })
730
+ end
731
+ def to_hash
732
+ end
733
+ end
734
+
735
+ class CallRetryConfig < Revox::Internal::Type::BaseModel
736
+ OrHash =
737
+ T.type_alias do
738
+ T.any(
739
+ Revox::Models::CallRetrieveResponse::Call::Assistant::CallRetryConfig,
740
+ Revox::Internal::AnyHash
741
+ )
742
+ end
743
+
744
+ sig do
745
+ returns(
746
+ T::Array[
747
+ Revox::Models::CallRetrieveResponse::Call::Assistant::CallRetryConfig::CallingWindow
748
+ ]
749
+ )
750
+ end
751
+ attr_accessor :calling_windows
752
+
753
+ # Maximum number of call retry attempts. Default: 3.
754
+ sig { returns(Integer) }
755
+ attr_accessor :max_retry_attempts
756
+
757
+ # Optional IANA timezone identifier to override the automatic timezone detection
758
+ # from phone number. If not provided, timezone is determined from the recipient's
759
+ # phone number country code. Examples: 'America/New_York', 'Europe/Paris'.
760
+ sig { returns(T.nilable(String)) }
761
+ attr_accessor :timezone
762
+
763
+ # Configuration for call retry behavior including time windows, delays, and max
764
+ # iterations. If not provided, defaults will be used.
765
+ sig do
766
+ params(
767
+ calling_windows:
768
+ T::Array[
769
+ Revox::Models::CallRetrieveResponse::Call::Assistant::CallRetryConfig::CallingWindow::OrHash
770
+ ],
771
+ max_retry_attempts: Integer,
772
+ timezone: T.nilable(String)
773
+ ).returns(T.attached_class)
774
+ end
775
+ def self.new(
776
+ calling_windows:,
777
+ # Maximum number of call retry attempts. Default: 3.
778
+ max_retry_attempts:,
779
+ # Optional IANA timezone identifier to override the automatic timezone detection
780
+ # from phone number. If not provided, timezone is determined from the recipient's
781
+ # phone number country code. Examples: 'America/New_York', 'Europe/Paris'.
782
+ timezone: nil
783
+ )
784
+ end
785
+
786
+ sig do
787
+ override.returns(
788
+ {
789
+ calling_windows:
790
+ T::Array[
791
+ Revox::Models::CallRetrieveResponse::Call::Assistant::CallRetryConfig::CallingWindow
792
+ ],
793
+ max_retry_attempts: Integer,
794
+ timezone: T.nilable(String)
795
+ }
796
+ )
797
+ end
798
+ def to_hash
799
+ end
800
+
801
+ class CallingWindow < Revox::Internal::Type::BaseModel
802
+ OrHash =
803
+ T.type_alias do
804
+ T.any(
805
+ Revox::Models::CallRetrieveResponse::Call::Assistant::CallRetryConfig::CallingWindow,
806
+ Revox::Internal::AnyHash
807
+ )
808
+ end
809
+
810
+ # End time for the calling window in the recipient's timezone (or
811
+ # timezone_override if provided). Format: 'HH:mm' (24-hour) or 'H:mma' (12-hour).
812
+ # Examples: '17:00', '6pm'. Default: '18:00'.
813
+ sig { returns(String) }
814
+ attr_accessor :calling_window_end_time
815
+
816
+ # Start time for the calling window in the recipient's timezone (or
817
+ # timezone_override if provided). Format: 'HH:mm' (24-hour) or 'H:mma' (12-hour).
818
+ # Examples: '09:00', '10am'. Default: '10:00'.
819
+ sig { returns(String) }
820
+ attr_accessor :calling_window_start_time
821
+
822
+ # Delay between retry attempts in seconds. Default: 7200 (2 hours).
823
+ sig { returns(Integer) }
824
+ attr_accessor :retry_delay_seconds
825
+
826
+ sig do
827
+ params(
828
+ calling_window_end_time: String,
829
+ calling_window_start_time: String,
830
+ retry_delay_seconds: Integer
831
+ ).returns(T.attached_class)
832
+ end
833
+ def self.new(
834
+ # End time for the calling window in the recipient's timezone (or
835
+ # timezone_override if provided). Format: 'HH:mm' (24-hour) or 'H:mma' (12-hour).
836
+ # Examples: '17:00', '6pm'. Default: '18:00'.
837
+ calling_window_end_time:,
838
+ # Start time for the calling window in the recipient's timezone (or
839
+ # timezone_override if provided). Format: 'HH:mm' (24-hour) or 'H:mma' (12-hour).
840
+ # Examples: '09:00', '10am'. Default: '10:00'.
841
+ calling_window_start_time:,
842
+ # Delay between retry attempts in seconds. Default: 7200 (2 hours).
843
+ retry_delay_seconds:
844
+ )
845
+ end
846
+
847
+ sig do
848
+ override.returns(
849
+ {
850
+ calling_window_end_time: String,
851
+ calling_window_start_time: String,
852
+ retry_delay_seconds: Integer
853
+ }
854
+ )
855
+ end
856
+ def to_hash
857
+ end
858
+ end
859
+ end
860
+
861
+ module FirstSentenceMode
862
+ extend Revox::Internal::Type::Enum
863
+
864
+ TaggedSymbol =
865
+ T.type_alias do
866
+ T.all(
867
+ Symbol,
868
+ Revox::Models::CallRetrieveResponse::Call::Assistant::FirstSentenceMode
869
+ )
870
+ end
871
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
872
+
873
+ GENERATED =
874
+ T.let(
875
+ :generated,
876
+ Revox::Models::CallRetrieveResponse::Call::Assistant::FirstSentenceMode::TaggedSymbol
877
+ )
878
+ STATIC =
879
+ T.let(
880
+ :static,
881
+ Revox::Models::CallRetrieveResponse::Call::Assistant::FirstSentenceMode::TaggedSymbol
882
+ )
883
+ NONE =
884
+ T.let(
885
+ :none,
886
+ Revox::Models::CallRetrieveResponse::Call::Assistant::FirstSentenceMode::TaggedSymbol
887
+ )
888
+
889
+ sig do
890
+ override.returns(
891
+ T::Array[
892
+ Revox::Models::CallRetrieveResponse::Call::Assistant::FirstSentenceMode::TaggedSymbol
893
+ ]
894
+ )
895
+ end
896
+ def self.values
897
+ end
898
+ end
899
+
900
+ module LlmModel
901
+ extend Revox::Internal::Type::Union
902
+
903
+ Variants =
904
+ T.type_alias do
905
+ T.any(
906
+ Revox::Models::CallRetrieveResponse::Call::Assistant::LlmModel::UnionMember0,
907
+ Revox::Models::CallRetrieveResponse::Call::Assistant::LlmModel::UnionMember1
908
+ )
909
+ end
910
+
911
+ class UnionMember0 < Revox::Internal::Type::BaseModel
912
+ OrHash =
913
+ T.type_alias do
914
+ T.any(
915
+ Revox::Models::CallRetrieveResponse::Call::Assistant::LlmModel::UnionMember0,
916
+ Revox::Internal::AnyHash
917
+ )
918
+ end
919
+
920
+ sig do
921
+ returns(
922
+ Revox::Models::CallRetrieveResponse::Call::Assistant::LlmModel::UnionMember0::Name::TaggedSymbol
923
+ )
924
+ end
925
+ attr_accessor :name
926
+
927
+ sig { returns(Symbol) }
928
+ attr_accessor :type
929
+
930
+ sig do
931
+ params(
932
+ name:
933
+ Revox::Models::CallRetrieveResponse::Call::Assistant::LlmModel::UnionMember0::Name::OrSymbol,
934
+ type: Symbol
935
+ ).returns(T.attached_class)
936
+ end
937
+ def self.new(name:, type: :"dedicated-instance")
938
+ end
939
+
940
+ sig do
941
+ override.returns(
942
+ {
943
+ name:
944
+ Revox::Models::CallRetrieveResponse::Call::Assistant::LlmModel::UnionMember0::Name::TaggedSymbol,
945
+ type: Symbol
946
+ }
947
+ )
948
+ end
949
+ def to_hash
950
+ end
951
+
952
+ module Name
953
+ extend Revox::Internal::Type::Enum
954
+
955
+ TaggedSymbol =
956
+ T.type_alias do
957
+ T.all(
958
+ Symbol,
959
+ Revox::Models::CallRetrieveResponse::Call::Assistant::LlmModel::UnionMember0::Name
960
+ )
961
+ end
962
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
963
+
964
+ GPT_4_1 =
965
+ T.let(
966
+ :"gpt-4.1",
967
+ Revox::Models::CallRetrieveResponse::Call::Assistant::LlmModel::UnionMember0::Name::TaggedSymbol
968
+ )
969
+ MINISTRAL_3_8B_INSTRUCT =
970
+ T.let(
971
+ :"ministral-3-8b-instruct",
972
+ Revox::Models::CallRetrieveResponse::Call::Assistant::LlmModel::UnionMember0::Name::TaggedSymbol
973
+ )
974
+
975
+ sig do
976
+ override.returns(
977
+ T::Array[
978
+ Revox::Models::CallRetrieveResponse::Call::Assistant::LlmModel::UnionMember0::Name::TaggedSymbol
979
+ ]
980
+ )
981
+ end
982
+ def self.values
983
+ end
984
+ end
985
+ end
986
+
987
+ class UnionMember1 < Revox::Internal::Type::BaseModel
988
+ OrHash =
989
+ T.type_alias do
990
+ T.any(
991
+ Revox::Models::CallRetrieveResponse::Call::Assistant::LlmModel::UnionMember1,
992
+ Revox::Internal::AnyHash
993
+ )
994
+ end
995
+
996
+ # The model ID to use from OpenRouter. eg: openai/gpt-4.1
997
+ sig { returns(String) }
998
+ attr_accessor :openrouter_model_id
999
+
1000
+ # The provider to use from OpenRouter. eg: nebius, openai, azure, etc.
1001
+ sig { returns(String) }
1002
+ attr_accessor :openrouter_provider
1003
+
1004
+ # Use a model from OpenRouter.
1005
+ sig { returns(Symbol) }
1006
+ attr_accessor :type
1007
+
1008
+ sig do
1009
+ params(
1010
+ openrouter_model_id: String,
1011
+ openrouter_provider: String,
1012
+ type: Symbol
1013
+ ).returns(T.attached_class)
1014
+ end
1015
+ def self.new(
1016
+ # The model ID to use from OpenRouter. eg: openai/gpt-4.1
1017
+ openrouter_model_id:,
1018
+ # The provider to use from OpenRouter. eg: nebius, openai, azure, etc.
1019
+ openrouter_provider:,
1020
+ # Use a model from OpenRouter.
1021
+ type: :openrouter
1022
+ )
1023
+ end
1024
+
1025
+ sig do
1026
+ override.returns(
1027
+ {
1028
+ openrouter_model_id: String,
1029
+ openrouter_provider: String,
1030
+ type: Symbol
1031
+ }
1032
+ )
1033
+ end
1034
+ def to_hash
1035
+ end
1036
+ end
1037
+
1038
+ sig do
1039
+ override.returns(
1040
+ T::Array[
1041
+ Revox::Models::CallRetrieveResponse::Call::Assistant::LlmModel::Variants
1042
+ ]
1043
+ )
1044
+ end
1045
+ def self.variants
1046
+ end
1047
+ end
1048
+
1049
+ class StructuredOutputConfig < Revox::Internal::Type::BaseModel
1050
+ OrHash =
1051
+ T.type_alias do
1052
+ T.any(
1053
+ Revox::Models::CallRetrieveResponse::Call::Assistant::StructuredOutputConfig,
1054
+ Revox::Internal::AnyHash
1055
+ )
1056
+ end
1057
+
1058
+ sig { returns(String) }
1059
+ attr_accessor :name
1060
+
1061
+ sig { returns(T::Boolean) }
1062
+ attr_accessor :required
1063
+
1064
+ sig do
1065
+ returns(
1066
+ Revox::Models::CallRetrieveResponse::Call::Assistant::StructuredOutputConfig::Type::TaggedSymbol
1067
+ )
1068
+ end
1069
+ attr_accessor :type
1070
+
1071
+ sig { returns(T.nilable(String)) }
1072
+ attr_reader :description
1073
+
1074
+ sig { params(description: String).void }
1075
+ attr_writer :description
1076
+
1077
+ sig { returns(T.nilable(T::Array[String])) }
1078
+ attr_reader :enum_options
1079
+
1080
+ sig { params(enum_options: T::Array[String]).void }
1081
+ attr_writer :enum_options
1082
+
1083
+ sig do
1084
+ params(
1085
+ name: String,
1086
+ required: T::Boolean,
1087
+ type:
1088
+ Revox::Models::CallRetrieveResponse::Call::Assistant::StructuredOutputConfig::Type::OrSymbol,
1089
+ description: String,
1090
+ enum_options: T::Array[String]
1091
+ ).returns(T.attached_class)
1092
+ end
1093
+ def self.new(
1094
+ name:,
1095
+ required:,
1096
+ type:,
1097
+ description: nil,
1098
+ enum_options: nil
1099
+ )
1100
+ end
1101
+
1102
+ sig do
1103
+ override.returns(
1104
+ {
1105
+ name: String,
1106
+ required: T::Boolean,
1107
+ type:
1108
+ Revox::Models::CallRetrieveResponse::Call::Assistant::StructuredOutputConfig::Type::TaggedSymbol,
1109
+ description: String,
1110
+ enum_options: T::Array[String]
1111
+ }
1112
+ )
1113
+ end
1114
+ def to_hash
1115
+ end
1116
+
1117
+ module Type
1118
+ extend Revox::Internal::Type::Enum
1119
+
1120
+ TaggedSymbol =
1121
+ T.type_alias do
1122
+ T.all(
1123
+ Symbol,
1124
+ Revox::Models::CallRetrieveResponse::Call::Assistant::StructuredOutputConfig::Type
1125
+ )
1126
+ end
1127
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
1128
+
1129
+ STRING =
1130
+ T.let(
1131
+ :string,
1132
+ Revox::Models::CallRetrieveResponse::Call::Assistant::StructuredOutputConfig::Type::TaggedSymbol
1133
+ )
1134
+ NUMBER =
1135
+ T.let(
1136
+ :number,
1137
+ Revox::Models::CallRetrieveResponse::Call::Assistant::StructuredOutputConfig::Type::TaggedSymbol
1138
+ )
1139
+ BOOLEAN =
1140
+ T.let(
1141
+ :boolean,
1142
+ Revox::Models::CallRetrieveResponse::Call::Assistant::StructuredOutputConfig::Type::TaggedSymbol
1143
+ )
1144
+ ENUM =
1145
+ T.let(
1146
+ :enum,
1147
+ Revox::Models::CallRetrieveResponse::Call::Assistant::StructuredOutputConfig::Type::TaggedSymbol
1148
+ )
1149
+ DATE =
1150
+ T.let(
1151
+ :date,
1152
+ Revox::Models::CallRetrieveResponse::Call::Assistant::StructuredOutputConfig::Type::TaggedSymbol
1153
+ )
1154
+ DATETIME =
1155
+ T.let(
1156
+ :datetime,
1157
+ Revox::Models::CallRetrieveResponse::Call::Assistant::StructuredOutputConfig::Type::TaggedSymbol
1158
+ )
1159
+
1160
+ sig do
1161
+ override.returns(
1162
+ T::Array[
1163
+ Revox::Models::CallRetrieveResponse::Call::Assistant::StructuredOutputConfig::Type::TaggedSymbol
1164
+ ]
1165
+ )
1166
+ end
1167
+ def self.values
1168
+ end
1169
+ end
1170
+ end
1171
+
1172
+ class Voice < Revox::Internal::Type::BaseModel
1173
+ OrHash =
1174
+ T.type_alias do
1175
+ T.any(
1176
+ Revox::Models::CallRetrieveResponse::Call::Assistant::Voice,
1177
+ Revox::Internal::AnyHash
1178
+ )
1179
+ end
1180
+
1181
+ # The ID of the voice.
1182
+ sig { returns(String) }
1183
+ attr_accessor :id
1184
+
1185
+ # The provider of the voice.
1186
+ sig do
1187
+ returns(
1188
+ Revox::Models::CallRetrieveResponse::Call::Assistant::Voice::Provider::TaggedSymbol
1189
+ )
1190
+ end
1191
+ attr_accessor :provider
1192
+
1193
+ # The speed of the voice. Range depends on provider: Cartesia 0.6–1.5, ElevenLabs
1194
+ # 0.7–1.2. Default is 1.0.
1195
+ sig { returns(T.nilable(Float)) }
1196
+ attr_reader :speed
1197
+
1198
+ sig { params(speed: Float).void }
1199
+ attr_writer :speed
1200
+
1201
+ sig do
1202
+ params(
1203
+ id: String,
1204
+ provider:
1205
+ Revox::Models::CallRetrieveResponse::Call::Assistant::Voice::Provider::OrSymbol,
1206
+ speed: Float
1207
+ ).returns(T.attached_class)
1208
+ end
1209
+ def self.new(
1210
+ # The ID of the voice.
1211
+ id:,
1212
+ # The provider of the voice.
1213
+ provider:,
1214
+ # The speed of the voice. Range depends on provider: Cartesia 0.6–1.5, ElevenLabs
1215
+ # 0.7–1.2. Default is 1.0.
1216
+ speed: nil
1217
+ )
1218
+ end
1219
+
1220
+ sig do
1221
+ override.returns(
1222
+ {
1223
+ id: String,
1224
+ provider:
1225
+ Revox::Models::CallRetrieveResponse::Call::Assistant::Voice::Provider::TaggedSymbol,
1226
+ speed: Float
1227
+ }
1228
+ )
1229
+ end
1230
+ def to_hash
1231
+ end
1232
+
1233
+ # The provider of the voice.
1234
+ module Provider
1235
+ extend Revox::Internal::Type::Enum
1236
+
1237
+ TaggedSymbol =
1238
+ T.type_alias do
1239
+ T.all(
1240
+ Symbol,
1241
+ Revox::Models::CallRetrieveResponse::Call::Assistant::Voice::Provider
1242
+ )
1243
+ end
1244
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
1245
+
1246
+ CARTESIA =
1247
+ T.let(
1248
+ :cartesia,
1249
+ Revox::Models::CallRetrieveResponse::Call::Assistant::Voice::Provider::TaggedSymbol
1250
+ )
1251
+ ELEVENLABS =
1252
+ T.let(
1253
+ :elevenlabs,
1254
+ Revox::Models::CallRetrieveResponse::Call::Assistant::Voice::Provider::TaggedSymbol
1255
+ )
1256
+
1257
+ sig do
1258
+ override.returns(
1259
+ T::Array[
1260
+ Revox::Models::CallRetrieveResponse::Call::Assistant::Voice::Provider::TaggedSymbol
1261
+ ]
1262
+ )
1263
+ end
1264
+ def self.values
1265
+ end
1266
+ end
1267
+ end
1268
+
1269
+ class FaqItem < Revox::Internal::Type::BaseModel
1270
+ OrHash =
1271
+ T.type_alias do
1272
+ T.any(
1273
+ Revox::Models::CallRetrieveResponse::Call::Assistant::FaqItem,
1274
+ Revox::Internal::AnyHash
1275
+ )
1276
+ end
1277
+
1278
+ sig { returns(String) }
1279
+ attr_accessor :answer
1280
+
1281
+ sig { returns(String) }
1282
+ attr_accessor :question
1283
+
1284
+ sig { returns(T.nilable(String)) }
1285
+ attr_reader :id
1286
+
1287
+ sig { params(id: String).void }
1288
+ attr_writer :id
1289
+
1290
+ sig { returns(T.nilable(T::Boolean)) }
1291
+ attr_reader :needs_human_answer
1292
+
1293
+ sig { params(needs_human_answer: T::Boolean).void }
1294
+ attr_writer :needs_human_answer
1295
+
1296
+ sig do
1297
+ returns(
1298
+ T.nilable(
1299
+ Revox::Models::CallRetrieveResponse::Call::Assistant::FaqItem::Source::TaggedSymbol
1300
+ )
1301
+ )
1302
+ end
1303
+ attr_reader :source
1304
+
1305
+ sig do
1306
+ params(
1307
+ source:
1308
+ Revox::Models::CallRetrieveResponse::Call::Assistant::FaqItem::Source::OrSymbol
1309
+ ).void
1310
+ end
1311
+ attr_writer :source
1312
+
1313
+ sig do
1314
+ params(
1315
+ answer: String,
1316
+ question: String,
1317
+ id: String,
1318
+ needs_human_answer: T::Boolean,
1319
+ source:
1320
+ Revox::Models::CallRetrieveResponse::Call::Assistant::FaqItem::Source::OrSymbol
1321
+ ).returns(T.attached_class)
1322
+ end
1323
+ def self.new(
1324
+ answer:,
1325
+ question:,
1326
+ id: nil,
1327
+ needs_human_answer: nil,
1328
+ source: nil
1329
+ )
1330
+ end
1331
+
1332
+ sig do
1333
+ override.returns(
1334
+ {
1335
+ answer: String,
1336
+ question: String,
1337
+ id: String,
1338
+ needs_human_answer: T::Boolean,
1339
+ source:
1340
+ Revox::Models::CallRetrieveResponse::Call::Assistant::FaqItem::Source::TaggedSymbol
1341
+ }
1342
+ )
1343
+ end
1344
+ def to_hash
1345
+ end
1346
+
1347
+ module Source
1348
+ extend Revox::Internal::Type::Enum
1349
+
1350
+ TaggedSymbol =
1351
+ T.type_alias do
1352
+ T.all(
1353
+ Symbol,
1354
+ Revox::Models::CallRetrieveResponse::Call::Assistant::FaqItem::Source
1355
+ )
1356
+ end
1357
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
1358
+
1359
+ HUMAN =
1360
+ T.let(
1361
+ :human,
1362
+ Revox::Models::CallRetrieveResponse::Call::Assistant::FaqItem::Source::TaggedSymbol
1363
+ )
1364
+ AI =
1365
+ T.let(
1366
+ :ai,
1367
+ Revox::Models::CallRetrieveResponse::Call::Assistant::FaqItem::Source::TaggedSymbol
1368
+ )
1369
+
1370
+ sig do
1371
+ override.returns(
1372
+ T::Array[
1373
+ Revox::Models::CallRetrieveResponse::Call::Assistant::FaqItem::Source::TaggedSymbol
1374
+ ]
1375
+ )
1376
+ end
1377
+ def self.values
1378
+ end
1379
+ end
1380
+ end
1381
+ end
1382
+
268
1383
  class CallAttempt < Revox::Internal::Type::BaseModel
269
1384
  OrHash =
270
1385
  T.type_alias do
@@ -282,6 +1397,16 @@ module Revox
282
1397
  sig { returns(T.anything) }
283
1398
  attr_accessor :answered_at
284
1399
 
1400
+ # The SIP error that occurred.
1401
+ sig do
1402
+ returns(
1403
+ T.nilable(
1404
+ Revox::Models::CallRetrieveResponse::Call::CallAttempt::DialError::TaggedSymbol
1405
+ )
1406
+ )
1407
+ end
1408
+ attr_accessor :dial_error
1409
+
285
1410
  # The time the call ended.
286
1411
  sig { returns(T.anything) }
287
1412
  attr_accessor :ended_at
@@ -316,6 +1441,22 @@ module Revox
316
1441
  end
317
1442
  attr_accessor :status
318
1443
 
1444
+ # Reason for ending the call when ended_by is 'agent'. E.g. 'tool_end_call',
1445
+ # 'voicemail', 'transfer', 'ivr_no_navigate'.
1446
+ sig { returns(T.nilable(String)) }
1447
+ attr_accessor :end_reason
1448
+
1449
+ # Who ended the call: 'agent' (AI agent), 'user' (caller/callee hung up), or
1450
+ # 'system' (e.g. max duration limit).
1451
+ sig do
1452
+ returns(
1453
+ T.nilable(
1454
+ Revox::Models::CallRetrieveResponse::Call::CallAttempt::EndedBy::TaggedSymbol
1455
+ )
1456
+ )
1457
+ end
1458
+ attr_accessor :ended_by
1459
+
319
1460
  # The data extracted from the call, using the structured output config from the
320
1461
  # parent call object.
321
1462
  sig { returns(T.nilable(T::Hash[Symbol, T.anything])) }
@@ -339,6 +1480,10 @@ module Revox
339
1480
  params(
340
1481
  id: String,
341
1482
  answered_at: T.anything,
1483
+ dial_error:
1484
+ T.nilable(
1485
+ Revox::Models::CallRetrieveResponse::Call::CallAttempt::DialError::OrSymbol
1486
+ ),
342
1487
  ended_at: T.anything,
343
1488
  phone_number: String,
344
1489
  recording_url: T.nilable(String),
@@ -349,6 +1494,11 @@ module Revox
349
1494
  started_at: T.anything,
350
1495
  status:
351
1496
  Revox::Models::CallRetrieveResponse::Call::CallAttempt::Status::OrSymbol,
1497
+ end_reason: T.nilable(String),
1498
+ ended_by:
1499
+ T.nilable(
1500
+ Revox::Models::CallRetrieveResponse::Call::CallAttempt::EndedBy::OrSymbol
1501
+ ),
352
1502
  structured_output: T.nilable(T::Hash[Symbol, T.anything]),
353
1503
  transcript:
354
1504
  T.nilable(
@@ -363,6 +1513,8 @@ module Revox
363
1513
  id:,
364
1514
  # The time the call was answered.
365
1515
  answered_at:,
1516
+ # The SIP error that occurred.
1517
+ dial_error:,
366
1518
  # The time the call ended.
367
1519
  ended_at:,
368
1520
  # The phone number that was called. Formatted in E.164 format. Example:
@@ -375,6 +1527,12 @@ module Revox
375
1527
  started_at:,
376
1528
  # The status of the call attempt.
377
1529
  status:,
1530
+ # Reason for ending the call when ended_by is 'agent'. E.g. 'tool_end_call',
1531
+ # 'voicemail', 'transfer', 'ivr_no_navigate'.
1532
+ end_reason: nil,
1533
+ # Who ended the call: 'agent' (AI agent), 'user' (caller/callee hung up), or
1534
+ # 'system' (e.g. max duration limit).
1535
+ ended_by: nil,
378
1536
  # The data extracted from the call, using the structured output config from the
379
1537
  # parent call object.
380
1538
  structured_output: nil,
@@ -388,6 +1546,10 @@ module Revox
388
1546
  {
389
1547
  id: String,
390
1548
  answered_at: T.anything,
1549
+ dial_error:
1550
+ T.nilable(
1551
+ Revox::Models::CallRetrieveResponse::Call::CallAttempt::DialError::TaggedSymbol
1552
+ ),
391
1553
  ended_at: T.anything,
392
1554
  phone_number: String,
393
1555
  recording_url: T.nilable(String),
@@ -398,6 +1560,11 @@ module Revox
398
1560
  started_at: T.anything,
399
1561
  status:
400
1562
  Revox::Models::CallRetrieveResponse::Call::CallAttempt::Status::TaggedSymbol,
1563
+ end_reason: T.nilable(String),
1564
+ ended_by:
1565
+ T.nilable(
1566
+ Revox::Models::CallRetrieveResponse::Call::CallAttempt::EndedBy::TaggedSymbol
1567
+ ),
401
1568
  structured_output: T.nilable(T::Hash[Symbol, T.anything]),
402
1569
  transcript:
403
1570
  T.nilable(
@@ -411,6 +1578,71 @@ module Revox
411
1578
  def to_hash
412
1579
  end
413
1580
 
1581
+ # The SIP error that occurred.
1582
+ module DialError
1583
+ extend Revox::Internal::Type::Enum
1584
+
1585
+ TaggedSymbol =
1586
+ T.type_alias do
1587
+ T.all(
1588
+ Symbol,
1589
+ Revox::Models::CallRetrieveResponse::Call::CallAttempt::DialError
1590
+ )
1591
+ end
1592
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
1593
+
1594
+ NUMBER_NON_ATTRIBUTED =
1595
+ T.let(
1596
+ :number_non_attributed,
1597
+ Revox::Models::CallRetrieveResponse::Call::CallAttempt::DialError::TaggedSymbol
1598
+ )
1599
+ TOO_MANY_CALLS =
1600
+ T.let(
1601
+ :too_many_calls,
1602
+ Revox::Models::CallRetrieveResponse::Call::CallAttempt::DialError::TaggedSymbol
1603
+ )
1604
+ BUSY =
1605
+ T.let(
1606
+ :busy,
1607
+ Revox::Models::CallRetrieveResponse::Call::CallAttempt::DialError::TaggedSymbol
1608
+ )
1609
+ TEMPORARILY_UNAVAILABLE =
1610
+ T.let(
1611
+ :temporarily_unavailable,
1612
+ Revox::Models::CallRetrieveResponse::Call::CallAttempt::DialError::TaggedSymbol
1613
+ )
1614
+ NO_ANSWER =
1615
+ T.let(
1616
+ :no_answer,
1617
+ Revox::Models::CallRetrieveResponse::Call::CallAttempt::DialError::TaggedSymbol
1618
+ )
1619
+ NO_INTERNATIONAL_PERMISSION =
1620
+ T.let(
1621
+ :no_international_permission,
1622
+ Revox::Models::CallRetrieveResponse::Call::CallAttempt::DialError::TaggedSymbol
1623
+ )
1624
+ PRECONDITION_FAILED =
1625
+ T.let(
1626
+ :precondition_failed,
1627
+ Revox::Models::CallRetrieveResponse::Call::CallAttempt::DialError::TaggedSymbol
1628
+ )
1629
+ NON_CLASSIFIED_ERROR =
1630
+ T.let(
1631
+ :non_classified_error,
1632
+ Revox::Models::CallRetrieveResponse::Call::CallAttempt::DialError::TaggedSymbol
1633
+ )
1634
+
1635
+ sig do
1636
+ override.returns(
1637
+ T::Array[
1638
+ Revox::Models::CallRetrieveResponse::Call::CallAttempt::DialError::TaggedSymbol
1639
+ ]
1640
+ )
1641
+ end
1642
+ def self.values
1643
+ end
1644
+ end
1645
+
414
1646
  module Result
415
1647
  extend Revox::Internal::Type::Enum
416
1648
 
@@ -443,6 +1675,11 @@ module Revox
443
1675
  :unknown,
444
1676
  Revox::Models::CallRetrieveResponse::Call::CallAttempt::Result::TaggedSymbol
445
1677
  )
1678
+ IOS_SCREENING_FILTER =
1679
+ T.let(
1680
+ :"ios-screening-filter",
1681
+ Revox::Models::CallRetrieveResponse::Call::CallAttempt::Result::TaggedSymbol
1682
+ )
446
1683
 
447
1684
  sig do
448
1685
  override.returns(
@@ -488,6 +1725,11 @@ module Revox
488
1725
  :completed,
489
1726
  Revox::Models::CallRetrieveResponse::Call::CallAttempt::Status::TaggedSymbol
490
1727
  )
1728
+ ERROR =
1729
+ T.let(
1730
+ :error,
1731
+ Revox::Models::CallRetrieveResponse::Call::CallAttempt::Status::TaggedSymbol
1732
+ )
491
1733
 
492
1734
  sig do
493
1735
  override.returns(
@@ -500,6 +1742,47 @@ module Revox
500
1742
  end
501
1743
  end
502
1744
 
1745
+ # Who ended the call: 'agent' (AI agent), 'user' (caller/callee hung up), or
1746
+ # 'system' (e.g. max duration limit).
1747
+ module EndedBy
1748
+ extend Revox::Internal::Type::Enum
1749
+
1750
+ TaggedSymbol =
1751
+ T.type_alias do
1752
+ T.all(
1753
+ Symbol,
1754
+ Revox::Models::CallRetrieveResponse::Call::CallAttempt::EndedBy
1755
+ )
1756
+ end
1757
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
1758
+
1759
+ AGENT =
1760
+ T.let(
1761
+ :agent,
1762
+ Revox::Models::CallRetrieveResponse::Call::CallAttempt::EndedBy::TaggedSymbol
1763
+ )
1764
+ USER =
1765
+ T.let(
1766
+ :user,
1767
+ Revox::Models::CallRetrieveResponse::Call::CallAttempt::EndedBy::TaggedSymbol
1768
+ )
1769
+ SYSTEM =
1770
+ T.let(
1771
+ :system,
1772
+ Revox::Models::CallRetrieveResponse::Call::CallAttempt::EndedBy::TaggedSymbol
1773
+ )
1774
+
1775
+ sig do
1776
+ override.returns(
1777
+ T::Array[
1778
+ Revox::Models::CallRetrieveResponse::Call::CallAttempt::EndedBy::TaggedSymbol
1779
+ ]
1780
+ )
1781
+ end
1782
+ def self.values
1783
+ end
1784
+ end
1785
+
503
1786
  class Transcript < Revox::Internal::Type::BaseModel
504
1787
  OrHash =
505
1788
  T.type_alias do
@@ -774,6 +2057,30 @@ module Revox
774
2057
  end
775
2058
  end
776
2059
 
2060
+ class Campaign < Revox::Internal::Type::BaseModel
2061
+ OrHash =
2062
+ T.type_alias do
2063
+ T.any(
2064
+ Revox::Models::CallRetrieveResponse::Call::Campaign,
2065
+ Revox::Internal::AnyHash
2066
+ )
2067
+ end
2068
+
2069
+ sig { returns(String) }
2070
+ attr_accessor :id
2071
+
2072
+ sig { returns(String) }
2073
+ attr_accessor :name
2074
+
2075
+ sig { params(id: String, name: String).returns(T.attached_class) }
2076
+ def self.new(id:, name:)
2077
+ end
2078
+
2079
+ sig { override.returns({ id: String, name: String }) }
2080
+ def to_hash
2081
+ end
2082
+ end
2083
+
777
2084
  # Whether the call is inbound or outbound.
778
2085
  module Direction
779
2086
  extend Revox::Internal::Type::Enum
@@ -826,6 +2133,16 @@ module Revox
826
2133
  sig { returns(T.anything) }
827
2134
  attr_accessor :answered_at
828
2135
 
2136
+ # The SIP error that occurred.
2137
+ sig do
2138
+ returns(
2139
+ T.nilable(
2140
+ Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::DialError::TaggedSymbol
2141
+ )
2142
+ )
2143
+ end
2144
+ attr_accessor :dial_error
2145
+
829
2146
  # The time the call ended.
830
2147
  sig { returns(T.anything) }
831
2148
  attr_accessor :ended_at
@@ -860,6 +2177,22 @@ module Revox
860
2177
  end
861
2178
  attr_accessor :status
862
2179
 
2180
+ # Reason for ending the call when ended_by is 'agent'. E.g. 'tool_end_call',
2181
+ # 'voicemail', 'transfer', 'ivr_no_navigate'.
2182
+ sig { returns(T.nilable(String)) }
2183
+ attr_accessor :end_reason
2184
+
2185
+ # Who ended the call: 'agent' (AI agent), 'user' (caller/callee hung up), or
2186
+ # 'system' (e.g. max duration limit).
2187
+ sig do
2188
+ returns(
2189
+ T.nilable(
2190
+ Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::EndedBy::TaggedSymbol
2191
+ )
2192
+ )
2193
+ end
2194
+ attr_accessor :ended_by
2195
+
863
2196
  # The data extracted from the call, using the structured output config from the
864
2197
  # parent call object.
865
2198
  sig { returns(T.nilable(T::Hash[Symbol, T.anything])) }
@@ -883,6 +2216,10 @@ module Revox
883
2216
  params(
884
2217
  id: String,
885
2218
  answered_at: T.anything,
2219
+ dial_error:
2220
+ T.nilable(
2221
+ Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::DialError::OrSymbol
2222
+ ),
886
2223
  ended_at: T.anything,
887
2224
  phone_number: String,
888
2225
  recording_url: T.nilable(String),
@@ -893,6 +2230,11 @@ module Revox
893
2230
  started_at: T.anything,
894
2231
  status:
895
2232
  Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::Status::OrSymbol,
2233
+ end_reason: T.nilable(String),
2234
+ ended_by:
2235
+ T.nilable(
2236
+ Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::EndedBy::OrSymbol
2237
+ ),
896
2238
  structured_output: T.nilable(T::Hash[Symbol, T.anything]),
897
2239
  transcript:
898
2240
  T.nilable(
@@ -907,6 +2249,8 @@ module Revox
907
2249
  id:,
908
2250
  # The time the call was answered.
909
2251
  answered_at:,
2252
+ # The SIP error that occurred.
2253
+ dial_error:,
910
2254
  # The time the call ended.
911
2255
  ended_at:,
912
2256
  # The phone number that was called. Formatted in E.164 format. Example:
@@ -919,6 +2263,12 @@ module Revox
919
2263
  started_at:,
920
2264
  # The status of the call attempt.
921
2265
  status:,
2266
+ # Reason for ending the call when ended_by is 'agent'. E.g. 'tool_end_call',
2267
+ # 'voicemail', 'transfer', 'ivr_no_navigate'.
2268
+ end_reason: nil,
2269
+ # Who ended the call: 'agent' (AI agent), 'user' (caller/callee hung up), or
2270
+ # 'system' (e.g. max duration limit).
2271
+ ended_by: nil,
922
2272
  # The data extracted from the call, using the structured output config from the
923
2273
  # parent call object.
924
2274
  structured_output: nil,
@@ -932,6 +2282,10 @@ module Revox
932
2282
  {
933
2283
  id: String,
934
2284
  answered_at: T.anything,
2285
+ dial_error:
2286
+ T.nilable(
2287
+ Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::DialError::TaggedSymbol
2288
+ ),
935
2289
  ended_at: T.anything,
936
2290
  phone_number: String,
937
2291
  recording_url: T.nilable(String),
@@ -942,6 +2296,11 @@ module Revox
942
2296
  started_at: T.anything,
943
2297
  status:
944
2298
  Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::Status::TaggedSymbol,
2299
+ end_reason: T.nilable(String),
2300
+ ended_by:
2301
+ T.nilable(
2302
+ Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::EndedBy::TaggedSymbol
2303
+ ),
945
2304
  structured_output: T.nilable(T::Hash[Symbol, T.anything]),
946
2305
  transcript:
947
2306
  T.nilable(
@@ -955,6 +2314,71 @@ module Revox
955
2314
  def to_hash
956
2315
  end
957
2316
 
2317
+ # The SIP error that occurred.
2318
+ module DialError
2319
+ extend Revox::Internal::Type::Enum
2320
+
2321
+ TaggedSymbol =
2322
+ T.type_alias do
2323
+ T.all(
2324
+ Symbol,
2325
+ Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::DialError
2326
+ )
2327
+ end
2328
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
2329
+
2330
+ NUMBER_NON_ATTRIBUTED =
2331
+ T.let(
2332
+ :number_non_attributed,
2333
+ Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::DialError::TaggedSymbol
2334
+ )
2335
+ TOO_MANY_CALLS =
2336
+ T.let(
2337
+ :too_many_calls,
2338
+ Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::DialError::TaggedSymbol
2339
+ )
2340
+ BUSY =
2341
+ T.let(
2342
+ :busy,
2343
+ Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::DialError::TaggedSymbol
2344
+ )
2345
+ TEMPORARILY_UNAVAILABLE =
2346
+ T.let(
2347
+ :temporarily_unavailable,
2348
+ Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::DialError::TaggedSymbol
2349
+ )
2350
+ NO_ANSWER =
2351
+ T.let(
2352
+ :no_answer,
2353
+ Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::DialError::TaggedSymbol
2354
+ )
2355
+ NO_INTERNATIONAL_PERMISSION =
2356
+ T.let(
2357
+ :no_international_permission,
2358
+ Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::DialError::TaggedSymbol
2359
+ )
2360
+ PRECONDITION_FAILED =
2361
+ T.let(
2362
+ :precondition_failed,
2363
+ Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::DialError::TaggedSymbol
2364
+ )
2365
+ NON_CLASSIFIED_ERROR =
2366
+ T.let(
2367
+ :non_classified_error,
2368
+ Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::DialError::TaggedSymbol
2369
+ )
2370
+
2371
+ sig do
2372
+ override.returns(
2373
+ T::Array[
2374
+ Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::DialError::TaggedSymbol
2375
+ ]
2376
+ )
2377
+ end
2378
+ def self.values
2379
+ end
2380
+ end
2381
+
958
2382
  module Result
959
2383
  extend Revox::Internal::Type::Enum
960
2384
 
@@ -987,6 +2411,11 @@ module Revox
987
2411
  :unknown,
988
2412
  Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::Result::TaggedSymbol
989
2413
  )
2414
+ IOS_SCREENING_FILTER =
2415
+ T.let(
2416
+ :"ios-screening-filter",
2417
+ Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::Result::TaggedSymbol
2418
+ )
990
2419
 
991
2420
  sig do
992
2421
  override.returns(
@@ -1032,6 +2461,11 @@ module Revox
1032
2461
  :completed,
1033
2462
  Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::Status::TaggedSymbol
1034
2463
  )
2464
+ ERROR =
2465
+ T.let(
2466
+ :error,
2467
+ Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::Status::TaggedSymbol
2468
+ )
1035
2469
 
1036
2470
  sig do
1037
2471
  override.returns(
@@ -1044,6 +2478,47 @@ module Revox
1044
2478
  end
1045
2479
  end
1046
2480
 
2481
+ # Who ended the call: 'agent' (AI agent), 'user' (caller/callee hung up), or
2482
+ # 'system' (e.g. max duration limit).
2483
+ module EndedBy
2484
+ extend Revox::Internal::Type::Enum
2485
+
2486
+ TaggedSymbol =
2487
+ T.type_alias do
2488
+ T.all(
2489
+ Symbol,
2490
+ Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::EndedBy
2491
+ )
2492
+ end
2493
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
2494
+
2495
+ AGENT =
2496
+ T.let(
2497
+ :agent,
2498
+ Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::EndedBy::TaggedSymbol
2499
+ )
2500
+ USER =
2501
+ T.let(
2502
+ :user,
2503
+ Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::EndedBy::TaggedSymbol
2504
+ )
2505
+ SYSTEM =
2506
+ T.let(
2507
+ :system,
2508
+ Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::EndedBy::TaggedSymbol
2509
+ )
2510
+
2511
+ sig do
2512
+ override.returns(
2513
+ T::Array[
2514
+ Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::EndedBy::TaggedSymbol
2515
+ ]
2516
+ )
2517
+ end
2518
+ def self.values
2519
+ end
2520
+ end
2521
+
1047
2522
  class Transcript < Revox::Internal::Type::BaseModel
1048
2523
  OrHash =
1049
2524
  T.type_alias do
@@ -1340,6 +2815,63 @@ module Revox
1340
2815
  def self.variants
1341
2816
  end
1342
2817
  end
2818
+
2819
+ # The status of the call.
2820
+ module Status
2821
+ extend Revox::Internal::Type::Enum
2822
+
2823
+ TaggedSymbol =
2824
+ T.type_alias do
2825
+ T.all(Symbol, Revox::Models::CallRetrieveResponse::Call::Status)
2826
+ end
2827
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
2828
+
2829
+ INITIALIZING =
2830
+ T.let(
2831
+ :initializing,
2832
+ Revox::Models::CallRetrieveResponse::Call::Status::TaggedSymbol
2833
+ )
2834
+ QUEUED_FOR_CALLING =
2835
+ T.let(
2836
+ :queued_for_calling,
2837
+ Revox::Models::CallRetrieveResponse::Call::Status::TaggedSymbol
2838
+ )
2839
+ CALLING =
2840
+ T.let(
2841
+ :calling,
2842
+ Revox::Models::CallRetrieveResponse::Call::Status::TaggedSymbol
2843
+ )
2844
+ SCHEDULED =
2845
+ T.let(
2846
+ :scheduled,
2847
+ Revox::Models::CallRetrieveResponse::Call::Status::TaggedSymbol
2848
+ )
2849
+ COMPLETED =
2850
+ T.let(
2851
+ :completed,
2852
+ Revox::Models::CallRetrieveResponse::Call::Status::TaggedSymbol
2853
+ )
2854
+ CANCELLED =
2855
+ T.let(
2856
+ :cancelled,
2857
+ Revox::Models::CallRetrieveResponse::Call::Status::TaggedSymbol
2858
+ )
2859
+ ERRORED =
2860
+ T.let(
2861
+ :errored,
2862
+ Revox::Models::CallRetrieveResponse::Call::Status::TaggedSymbol
2863
+ )
2864
+
2865
+ sig do
2866
+ override.returns(
2867
+ T::Array[
2868
+ Revox::Models::CallRetrieveResponse::Call::Status::TaggedSymbol
2869
+ ]
2870
+ )
2871
+ end
2872
+ def self.values
2873
+ end
2874
+ end
1343
2875
  end
1344
2876
  end
1345
2877
  end