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
@@ -47,6 +47,21 @@ module Revox
47
47
  sig { returns(String) }
48
48
  attr_accessor :id
49
49
 
50
+ sig do
51
+ returns(T.nilable(Revox::Models::CallCreateResponse::Call::Assistant))
52
+ end
53
+ attr_reader :assistant
54
+
55
+ sig do
56
+ params(
57
+ assistant:
58
+ T.nilable(
59
+ Revox::Models::CallCreateResponse::Call::Assistant::OrHash
60
+ )
61
+ ).void
62
+ end
63
+ attr_writer :assistant
64
+
50
65
  # All call attempts for this call order, ordered by most recent first.
51
66
  sig do
52
67
  returns(
@@ -78,6 +93,21 @@ module Revox
78
93
  sig { returns(Float) }
79
94
  attr_accessor :calls_count
80
95
 
96
+ sig do
97
+ returns(T.nilable(Revox::Models::CallCreateResponse::Call::Campaign))
98
+ end
99
+ attr_reader :campaign
100
+
101
+ sig do
102
+ params(
103
+ campaign:
104
+ T.nilable(
105
+ Revox::Models::CallCreateResponse::Call::Campaign::OrHash
106
+ )
107
+ ).void
108
+ end
109
+ attr_writer :campaign
110
+
81
111
  # The time the call order was created.
82
112
  sig { returns(T.anything) }
83
113
  attr_accessor :created_at
@@ -99,11 +129,13 @@ module Revox
99
129
  sig { returns(String) }
100
130
  attr_accessor :from_phone_number
101
131
 
102
- # Whether the call was cancelled.
132
+ # DEPRECATED: Whether the call has been cancelled. This is derived from `status`.
133
+ # Use `status` instead.
103
134
  sig { returns(T::Boolean) }
104
135
  attr_accessor :is_cancelled
105
136
 
106
- # Whether the call is completed or still in progress.
137
+ # DEPRECATED: Whether the call has completed. This is derived from `status`. Use
138
+ # `status` instead.
107
139
  sig { returns(T::Boolean) }
108
140
  attr_accessor :is_completed
109
141
 
@@ -135,14 +167,20 @@ module Revox
135
167
  sig { returns(T.nilable(T::Hash[Symbol, String])) }
136
168
  attr_accessor :metadata
137
169
 
138
- # The next call attempt time.
139
- sig { returns(T.anything) }
140
- attr_accessor :next_call_at
170
+ # The ID of the organization that owns the call.
171
+ sig { returns(String) }
172
+ attr_accessor :organization_id
141
173
 
142
174
  # The time the call order is scheduled to start.
143
175
  sig { returns(T.anything) }
144
176
  attr_accessor :scheduled_at
145
177
 
178
+ # The status of the call.
179
+ sig do
180
+ returns(Revox::Models::CallCreateResponse::Call::Status::TaggedSymbol)
181
+ end
182
+ attr_accessor :status
183
+
146
184
  # The phone number that received the call. Formatted in E.164 format. Example:
147
185
  # +1234567890
148
186
  sig { returns(String) }
@@ -153,6 +191,10 @@ module Revox
153
191
  sig do
154
192
  params(
155
193
  id: String,
194
+ assistant:
195
+ T.nilable(
196
+ Revox::Models::CallCreateResponse::Call::Assistant::OrHash
197
+ ),
156
198
  call_attempts:
157
199
  T::Array[
158
200
  Revox::Models::CallCreateResponse::Call::CallAttempt::OrHash
@@ -162,6 +204,10 @@ module Revox
162
204
  Revox::Models::CallCreateResponse::Call::CallRetryConfig::OrHash
163
205
  ),
164
206
  calls_count: Float,
207
+ campaign:
208
+ T.nilable(
209
+ Revox::Models::CallCreateResponse::Call::Campaign::OrHash
210
+ ),
165
211
  created_at: T.anything,
166
212
  direction:
167
213
  Revox::Models::CallCreateResponse::Call::Direction::OrSymbol,
@@ -179,14 +225,16 @@ module Revox
179
225
  Revox::Models::CallCreateResponse::Call::LlmModel::UnionMember1::OrHash
180
226
  ),
181
227
  metadata: T.nilable(T::Hash[Symbol, String]),
182
- next_call_at: T.anything,
228
+ organization_id: String,
183
229
  scheduled_at: T.anything,
230
+ status: Revox::Models::CallCreateResponse::Call::Status::OrSymbol,
184
231
  to_phone_number: String
185
232
  ).returns(T.attached_class)
186
233
  end
187
234
  def self.new(
188
235
  # The ID of the call.
189
236
  id:,
237
+ assistant:,
190
238
  # All call attempts for this call order, ordered by most recent first.
191
239
  call_attempts:,
192
240
  # Configuration for call retry behavior including time windows, delays, and max
@@ -194,6 +242,7 @@ module Revox
194
242
  call_retry_config:,
195
243
  # The number of call attempts made.
196
244
  calls_count:,
245
+ campaign:,
197
246
  # The time the call order was created.
198
247
  created_at:,
199
248
  # Whether the call is inbound or outbound.
@@ -203,9 +252,11 @@ module Revox
203
252
  # The phone number that made the call. Formatted in E.164 format. Example:
204
253
  # +1234567890
205
254
  from_phone_number:,
206
- # Whether the call was cancelled.
255
+ # DEPRECATED: Whether the call has been cancelled. This is derived from `status`.
256
+ # Use `status` instead.
207
257
  is_cancelled:,
208
- # Whether the call is completed or still in progress.
258
+ # DEPRECATED: Whether the call has completed. This is derived from `status`. Use
259
+ # `status` instead.
209
260
  is_completed:,
210
261
  # This represent a single call attempt. A call attempt is a single call made to
211
262
  # the phone number.
@@ -213,10 +264,12 @@ module Revox
213
264
  llm_model:,
214
265
  # Metadata stored with the call.
215
266
  metadata:,
216
- # The next call attempt time.
217
- next_call_at:,
267
+ # The ID of the organization that owns the call.
268
+ organization_id:,
218
269
  # The time the call order is scheduled to start.
219
270
  scheduled_at:,
271
+ # The status of the call.
272
+ status:,
220
273
  # The phone number that received the call. Formatted in E.164 format. Example:
221
274
  # +1234567890
222
275
  to_phone_number:
@@ -227,6 +280,8 @@ module Revox
227
280
  override.returns(
228
281
  {
229
282
  id: String,
283
+ assistant:
284
+ T.nilable(Revox::Models::CallCreateResponse::Call::Assistant),
230
285
  call_attempts:
231
286
  T::Array[Revox::Models::CallCreateResponse::Call::CallAttempt],
232
287
  call_retry_config:
@@ -234,6 +289,8 @@ module Revox
234
289
  Revox::Models::CallCreateResponse::Call::CallRetryConfig
235
290
  ),
236
291
  calls_count: Float,
292
+ campaign:
293
+ T.nilable(Revox::Models::CallCreateResponse::Call::Campaign),
237
294
  created_at: T.anything,
238
295
  direction:
239
296
  Revox::Models::CallCreateResponse::Call::Direction::TaggedSymbol,
@@ -248,8 +305,10 @@ module Revox
248
305
  llm_model:
249
306
  Revox::Models::CallCreateResponse::Call::LlmModel::Variants,
250
307
  metadata: T.nilable(T::Hash[Symbol, String]),
251
- next_call_at: T.anything,
308
+ organization_id: String,
252
309
  scheduled_at: T.anything,
310
+ status:
311
+ Revox::Models::CallCreateResponse::Call::Status::TaggedSymbol,
253
312
  to_phone_number: String
254
313
  }
255
314
  )
@@ -257,6 +316,1056 @@ module Revox
257
316
  def to_hash
258
317
  end
259
318
 
319
+ class Assistant < Revox::Internal::Type::BaseModel
320
+ OrHash =
321
+ T.type_alias do
322
+ T.any(
323
+ Revox::Models::CallCreateResponse::Call::Assistant,
324
+ Revox::Internal::AnyHash
325
+ )
326
+ end
327
+
328
+ sig { returns(String) }
329
+ attr_accessor :id
330
+
331
+ # The background sound to play during the call. Useful to give the impression that
332
+ # your AI agent is in an office.
333
+ sig do
334
+ returns(
335
+ T.nilable(
336
+ Revox::Models::CallCreateResponse::Call::Assistant::BackgroundSound::TaggedSymbol
337
+ )
338
+ )
339
+ end
340
+ attr_accessor :background_sound
341
+
342
+ sig do
343
+ returns(
344
+ T.nilable(
345
+ Revox::Models::CallCreateResponse::Call::Assistant::Calendly
346
+ )
347
+ )
348
+ end
349
+ attr_reader :calendly
350
+
351
+ sig do
352
+ params(
353
+ calendly:
354
+ T.nilable(
355
+ Revox::Models::CallCreateResponse::Call::Assistant::Calendly::OrHash
356
+ )
357
+ ).void
358
+ end
359
+ attr_writer :calendly
360
+
361
+ # Configuration for call retry behavior including time windows, delays, and max
362
+ # iterations. If not provided, defaults will be used.
363
+ sig do
364
+ returns(
365
+ T.nilable(
366
+ Revox::Models::CallCreateResponse::Call::Assistant::CallRetryConfig
367
+ )
368
+ )
369
+ end
370
+ attr_reader :call_retry_config
371
+
372
+ sig do
373
+ params(
374
+ call_retry_config:
375
+ T.nilable(
376
+ Revox::Models::CallCreateResponse::Call::Assistant::CallRetryConfig::OrHash
377
+ )
378
+ ).void
379
+ end
380
+ attr_writer :call_retry_config
381
+
382
+ sig { returns(T.anything) }
383
+ attr_accessor :created_at
384
+
385
+ sig { returns(T.nilable(String)) }
386
+ attr_accessor :end_of_call_sentence
387
+
388
+ sig { returns(T.nilable(String)) }
389
+ attr_accessor :first_sentence
390
+
391
+ # Delay in milliseconds before speaking the first sentence. Default: 400.
392
+ sig { returns(Integer) }
393
+ attr_accessor :first_sentence_delay_ms
394
+
395
+ sig do
396
+ returns(
397
+ Revox::Models::CallCreateResponse::Call::Assistant::FirstSentenceMode::TaggedSymbol
398
+ )
399
+ end
400
+ attr_accessor :first_sentence_mode
401
+
402
+ # Enable IVR navigation tools. When enabled, the assistant can send DTMF tones and
403
+ # skip turns to navigate phone menus.
404
+ sig { returns(T::Boolean) }
405
+ attr_accessor :ivr_navigation_enabled
406
+
407
+ sig do
408
+ returns(
409
+ Revox::Models::CallCreateResponse::Call::Assistant::LlmModel::Variants
410
+ )
411
+ end
412
+ attr_accessor :llm_model
413
+
414
+ # The maximum duration of the call in seconds. This is the maximum time the call
415
+ # will be allowed to run.
416
+ sig { returns(Float) }
417
+ attr_accessor :max_call_duration_secs
418
+
419
+ sig { returns(String) }
420
+ attr_accessor :name
421
+
422
+ sig { returns(String) }
423
+ attr_accessor :organization_id
424
+
425
+ sig { returns(String) }
426
+ attr_accessor :prompt
427
+
428
+ # The structured output config to use for the call. This is used to extract the
429
+ # data from the call (like email, name, company name, etc.).
430
+ sig do
431
+ returns(
432
+ T.nilable(
433
+ T::Array[
434
+ Revox::Models::CallCreateResponse::Call::Assistant::StructuredOutputConfig
435
+ ]
436
+ )
437
+ )
438
+ end
439
+ attr_accessor :structured_output_config
440
+
441
+ # Phone number to transfer calls to when users request to speak to a human agent.
442
+ sig { returns(T.nilable(String)) }
443
+ attr_accessor :transfer_phone_number
444
+
445
+ sig { returns(T.anything) }
446
+ attr_accessor :updated_at
447
+
448
+ sig do
449
+ returns(
450
+ T.nilable(
451
+ Revox::Models::CallCreateResponse::Call::Assistant::Voice
452
+ )
453
+ )
454
+ end
455
+ attr_reader :voice
456
+
457
+ sig do
458
+ params(
459
+ voice:
460
+ T.nilable(
461
+ Revox::Models::CallCreateResponse::Call::Assistant::Voice::OrHash
462
+ )
463
+ ).void
464
+ end
465
+ attr_writer :voice
466
+
467
+ # If set, when voicemail is detected the agent will speak this message then hang
468
+ # up; if null, hang up immediately.
469
+ sig { returns(T.nilable(String)) }
470
+ attr_accessor :voicemail_message
471
+
472
+ # The webhook URL to call when the call is completed.
473
+ sig { returns(T.nilable(String)) }
474
+ attr_accessor :webhook_url
475
+
476
+ sig do
477
+ returns(
478
+ T.nilable(
479
+ T::Array[
480
+ Revox::Models::CallCreateResponse::Call::Assistant::FaqItem
481
+ ]
482
+ )
483
+ )
484
+ end
485
+ attr_reader :faq_items
486
+
487
+ sig do
488
+ params(
489
+ faq_items:
490
+ T::Array[
491
+ Revox::Models::CallCreateResponse::Call::Assistant::FaqItem::OrHash
492
+ ]
493
+ ).void
494
+ end
495
+ attr_writer :faq_items
496
+
497
+ sig { returns(T.nilable(Float)) }
498
+ attr_reader :pending_faq_count
499
+
500
+ sig { params(pending_faq_count: Float).void }
501
+ attr_writer :pending_faq_count
502
+
503
+ sig do
504
+ params(
505
+ id: String,
506
+ background_sound:
507
+ T.nilable(
508
+ Revox::Models::CallCreateResponse::Call::Assistant::BackgroundSound::OrSymbol
509
+ ),
510
+ calendly:
511
+ T.nilable(
512
+ Revox::Models::CallCreateResponse::Call::Assistant::Calendly::OrHash
513
+ ),
514
+ call_retry_config:
515
+ T.nilable(
516
+ Revox::Models::CallCreateResponse::Call::Assistant::CallRetryConfig::OrHash
517
+ ),
518
+ created_at: T.anything,
519
+ end_of_call_sentence: T.nilable(String),
520
+ first_sentence: T.nilable(String),
521
+ first_sentence_delay_ms: Integer,
522
+ first_sentence_mode:
523
+ Revox::Models::CallCreateResponse::Call::Assistant::FirstSentenceMode::OrSymbol,
524
+ ivr_navigation_enabled: T::Boolean,
525
+ llm_model:
526
+ T.any(
527
+ Revox::Models::CallCreateResponse::Call::Assistant::LlmModel::UnionMember0::OrHash,
528
+ Revox::Models::CallCreateResponse::Call::Assistant::LlmModel::UnionMember1::OrHash
529
+ ),
530
+ max_call_duration_secs: Float,
531
+ name: String,
532
+ organization_id: String,
533
+ prompt: String,
534
+ structured_output_config:
535
+ T.nilable(
536
+ T::Array[
537
+ Revox::Models::CallCreateResponse::Call::Assistant::StructuredOutputConfig::OrHash
538
+ ]
539
+ ),
540
+ transfer_phone_number: T.nilable(String),
541
+ updated_at: T.anything,
542
+ voice:
543
+ T.nilable(
544
+ Revox::Models::CallCreateResponse::Call::Assistant::Voice::OrHash
545
+ ),
546
+ voicemail_message: T.nilable(String),
547
+ webhook_url: T.nilable(String),
548
+ faq_items:
549
+ T::Array[
550
+ Revox::Models::CallCreateResponse::Call::Assistant::FaqItem::OrHash
551
+ ],
552
+ pending_faq_count: Float
553
+ ).returns(T.attached_class)
554
+ end
555
+ def self.new(
556
+ id:,
557
+ # The background sound to play during the call. Useful to give the impression that
558
+ # your AI agent is in an office.
559
+ background_sound:,
560
+ calendly:,
561
+ # Configuration for call retry behavior including time windows, delays, and max
562
+ # iterations. If not provided, defaults will be used.
563
+ call_retry_config:,
564
+ created_at:,
565
+ end_of_call_sentence:,
566
+ first_sentence:,
567
+ # Delay in milliseconds before speaking the first sentence. Default: 400.
568
+ first_sentence_delay_ms:,
569
+ first_sentence_mode:,
570
+ # Enable IVR navigation tools. When enabled, the assistant can send DTMF tones and
571
+ # skip turns to navigate phone menus.
572
+ ivr_navigation_enabled:,
573
+ llm_model:,
574
+ # The maximum duration of the call in seconds. This is the maximum time the call
575
+ # will be allowed to run.
576
+ max_call_duration_secs:,
577
+ name:,
578
+ organization_id:,
579
+ prompt:,
580
+ # The structured output config to use for the call. This is used to extract the
581
+ # data from the call (like email, name, company name, etc.).
582
+ structured_output_config:,
583
+ # Phone number to transfer calls to when users request to speak to a human agent.
584
+ transfer_phone_number:,
585
+ updated_at:,
586
+ voice:,
587
+ # If set, when voicemail is detected the agent will speak this message then hang
588
+ # up; if null, hang up immediately.
589
+ voicemail_message:,
590
+ # The webhook URL to call when the call is completed.
591
+ webhook_url:,
592
+ faq_items: nil,
593
+ pending_faq_count: nil
594
+ )
595
+ end
596
+
597
+ sig do
598
+ override.returns(
599
+ {
600
+ id: String,
601
+ background_sound:
602
+ T.nilable(
603
+ Revox::Models::CallCreateResponse::Call::Assistant::BackgroundSound::TaggedSymbol
604
+ ),
605
+ calendly:
606
+ T.nilable(
607
+ Revox::Models::CallCreateResponse::Call::Assistant::Calendly
608
+ ),
609
+ call_retry_config:
610
+ T.nilable(
611
+ Revox::Models::CallCreateResponse::Call::Assistant::CallRetryConfig
612
+ ),
613
+ created_at: T.anything,
614
+ end_of_call_sentence: T.nilable(String),
615
+ first_sentence: T.nilable(String),
616
+ first_sentence_delay_ms: Integer,
617
+ first_sentence_mode:
618
+ Revox::Models::CallCreateResponse::Call::Assistant::FirstSentenceMode::TaggedSymbol,
619
+ ivr_navigation_enabled: T::Boolean,
620
+ llm_model:
621
+ Revox::Models::CallCreateResponse::Call::Assistant::LlmModel::Variants,
622
+ max_call_duration_secs: Float,
623
+ name: String,
624
+ organization_id: String,
625
+ prompt: String,
626
+ structured_output_config:
627
+ T.nilable(
628
+ T::Array[
629
+ Revox::Models::CallCreateResponse::Call::Assistant::StructuredOutputConfig
630
+ ]
631
+ ),
632
+ transfer_phone_number: T.nilable(String),
633
+ updated_at: T.anything,
634
+ voice:
635
+ T.nilable(
636
+ Revox::Models::CallCreateResponse::Call::Assistant::Voice
637
+ ),
638
+ voicemail_message: T.nilable(String),
639
+ webhook_url: T.nilable(String),
640
+ faq_items:
641
+ T::Array[
642
+ Revox::Models::CallCreateResponse::Call::Assistant::FaqItem
643
+ ],
644
+ pending_faq_count: Float
645
+ }
646
+ )
647
+ end
648
+ def to_hash
649
+ end
650
+
651
+ # The background sound to play during the call. Useful to give the impression that
652
+ # your AI agent is in an office.
653
+ module BackgroundSound
654
+ extend Revox::Internal::Type::Enum
655
+
656
+ TaggedSymbol =
657
+ T.type_alias do
658
+ T.all(
659
+ Symbol,
660
+ Revox::Models::CallCreateResponse::Call::Assistant::BackgroundSound
661
+ )
662
+ end
663
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
664
+
665
+ AUDIO_OFFICE_OGG =
666
+ T.let(
667
+ :"audio/office.ogg",
668
+ Revox::Models::CallCreateResponse::Call::Assistant::BackgroundSound::TaggedSymbol
669
+ )
670
+
671
+ sig do
672
+ override.returns(
673
+ T::Array[
674
+ Revox::Models::CallCreateResponse::Call::Assistant::BackgroundSound::TaggedSymbol
675
+ ]
676
+ )
677
+ end
678
+ def self.values
679
+ end
680
+ end
681
+
682
+ class Calendly < Revox::Internal::Type::BaseModel
683
+ OrHash =
684
+ T.type_alias do
685
+ T.any(
686
+ Revox::Models::CallCreateResponse::Call::Assistant::Calendly,
687
+ Revox::Internal::AnyHash
688
+ )
689
+ end
690
+
691
+ # The connection ID representing the link between your Calendly account and Revox.
692
+ sig { returns(String) }
693
+ attr_accessor :connection_id
694
+
695
+ # The event type ID representing the event type to schedule. (eg:
696
+ # https://api.calendly.com/event_types/b2330295-2a91-4a1d-bb73-99e7707663d5)
697
+ sig { returns(String) }
698
+ attr_accessor :event_type_id
699
+
700
+ sig do
701
+ params(connection_id: String, event_type_id: String).returns(
702
+ T.attached_class
703
+ )
704
+ end
705
+ def self.new(
706
+ # The connection ID representing the link between your Calendly account and Revox.
707
+ connection_id:,
708
+ # The event type ID representing the event type to schedule. (eg:
709
+ # https://api.calendly.com/event_types/b2330295-2a91-4a1d-bb73-99e7707663d5)
710
+ event_type_id:
711
+ )
712
+ end
713
+
714
+ sig do
715
+ override.returns({ connection_id: String, event_type_id: String })
716
+ end
717
+ def to_hash
718
+ end
719
+ end
720
+
721
+ class CallRetryConfig < Revox::Internal::Type::BaseModel
722
+ OrHash =
723
+ T.type_alias do
724
+ T.any(
725
+ Revox::Models::CallCreateResponse::Call::Assistant::CallRetryConfig,
726
+ Revox::Internal::AnyHash
727
+ )
728
+ end
729
+
730
+ sig do
731
+ returns(
732
+ T::Array[
733
+ Revox::Models::CallCreateResponse::Call::Assistant::CallRetryConfig::CallingWindow
734
+ ]
735
+ )
736
+ end
737
+ attr_accessor :calling_windows
738
+
739
+ # Maximum number of call retry attempts. Default: 3.
740
+ sig { returns(Integer) }
741
+ attr_accessor :max_retry_attempts
742
+
743
+ # Optional IANA timezone identifier to override the automatic timezone detection
744
+ # from phone number. If not provided, timezone is determined from the recipient's
745
+ # phone number country code. Examples: 'America/New_York', 'Europe/Paris'.
746
+ sig { returns(T.nilable(String)) }
747
+ attr_accessor :timezone
748
+
749
+ # Configuration for call retry behavior including time windows, delays, and max
750
+ # iterations. If not provided, defaults will be used.
751
+ sig do
752
+ params(
753
+ calling_windows:
754
+ T::Array[
755
+ Revox::Models::CallCreateResponse::Call::Assistant::CallRetryConfig::CallingWindow::OrHash
756
+ ],
757
+ max_retry_attempts: Integer,
758
+ timezone: T.nilable(String)
759
+ ).returns(T.attached_class)
760
+ end
761
+ def self.new(
762
+ calling_windows:,
763
+ # Maximum number of call retry attempts. Default: 3.
764
+ max_retry_attempts:,
765
+ # Optional IANA timezone identifier to override the automatic timezone detection
766
+ # from phone number. If not provided, timezone is determined from the recipient's
767
+ # phone number country code. Examples: 'America/New_York', 'Europe/Paris'.
768
+ timezone: nil
769
+ )
770
+ end
771
+
772
+ sig do
773
+ override.returns(
774
+ {
775
+ calling_windows:
776
+ T::Array[
777
+ Revox::Models::CallCreateResponse::Call::Assistant::CallRetryConfig::CallingWindow
778
+ ],
779
+ max_retry_attempts: Integer,
780
+ timezone: T.nilable(String)
781
+ }
782
+ )
783
+ end
784
+ def to_hash
785
+ end
786
+
787
+ class CallingWindow < Revox::Internal::Type::BaseModel
788
+ OrHash =
789
+ T.type_alias do
790
+ T.any(
791
+ Revox::Models::CallCreateResponse::Call::Assistant::CallRetryConfig::CallingWindow,
792
+ Revox::Internal::AnyHash
793
+ )
794
+ end
795
+
796
+ # End time for the calling window in the recipient's timezone (or
797
+ # timezone_override if provided). Format: 'HH:mm' (24-hour) or 'H:mma' (12-hour).
798
+ # Examples: '17:00', '6pm'. Default: '18:00'.
799
+ sig { returns(String) }
800
+ attr_accessor :calling_window_end_time
801
+
802
+ # Start time for the calling window in the recipient's timezone (or
803
+ # timezone_override if provided). Format: 'HH:mm' (24-hour) or 'H:mma' (12-hour).
804
+ # Examples: '09:00', '10am'. Default: '10:00'.
805
+ sig { returns(String) }
806
+ attr_accessor :calling_window_start_time
807
+
808
+ # Delay between retry attempts in seconds. Default: 7200 (2 hours).
809
+ sig { returns(Integer) }
810
+ attr_accessor :retry_delay_seconds
811
+
812
+ sig do
813
+ params(
814
+ calling_window_end_time: String,
815
+ calling_window_start_time: String,
816
+ retry_delay_seconds: Integer
817
+ ).returns(T.attached_class)
818
+ end
819
+ def self.new(
820
+ # End time for the calling window in the recipient's timezone (or
821
+ # timezone_override if provided). Format: 'HH:mm' (24-hour) or 'H:mma' (12-hour).
822
+ # Examples: '17:00', '6pm'. Default: '18:00'.
823
+ calling_window_end_time:,
824
+ # Start time for the calling window in the recipient's timezone (or
825
+ # timezone_override if provided). Format: 'HH:mm' (24-hour) or 'H:mma' (12-hour).
826
+ # Examples: '09:00', '10am'. Default: '10:00'.
827
+ calling_window_start_time:,
828
+ # Delay between retry attempts in seconds. Default: 7200 (2 hours).
829
+ retry_delay_seconds:
830
+ )
831
+ end
832
+
833
+ sig do
834
+ override.returns(
835
+ {
836
+ calling_window_end_time: String,
837
+ calling_window_start_time: String,
838
+ retry_delay_seconds: Integer
839
+ }
840
+ )
841
+ end
842
+ def to_hash
843
+ end
844
+ end
845
+ end
846
+
847
+ module FirstSentenceMode
848
+ extend Revox::Internal::Type::Enum
849
+
850
+ TaggedSymbol =
851
+ T.type_alias do
852
+ T.all(
853
+ Symbol,
854
+ Revox::Models::CallCreateResponse::Call::Assistant::FirstSentenceMode
855
+ )
856
+ end
857
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
858
+
859
+ GENERATED =
860
+ T.let(
861
+ :generated,
862
+ Revox::Models::CallCreateResponse::Call::Assistant::FirstSentenceMode::TaggedSymbol
863
+ )
864
+ STATIC =
865
+ T.let(
866
+ :static,
867
+ Revox::Models::CallCreateResponse::Call::Assistant::FirstSentenceMode::TaggedSymbol
868
+ )
869
+ NONE =
870
+ T.let(
871
+ :none,
872
+ Revox::Models::CallCreateResponse::Call::Assistant::FirstSentenceMode::TaggedSymbol
873
+ )
874
+
875
+ sig do
876
+ override.returns(
877
+ T::Array[
878
+ Revox::Models::CallCreateResponse::Call::Assistant::FirstSentenceMode::TaggedSymbol
879
+ ]
880
+ )
881
+ end
882
+ def self.values
883
+ end
884
+ end
885
+
886
+ module LlmModel
887
+ extend Revox::Internal::Type::Union
888
+
889
+ Variants =
890
+ T.type_alias do
891
+ T.any(
892
+ Revox::Models::CallCreateResponse::Call::Assistant::LlmModel::UnionMember0,
893
+ Revox::Models::CallCreateResponse::Call::Assistant::LlmModel::UnionMember1
894
+ )
895
+ end
896
+
897
+ class UnionMember0 < Revox::Internal::Type::BaseModel
898
+ OrHash =
899
+ T.type_alias do
900
+ T.any(
901
+ Revox::Models::CallCreateResponse::Call::Assistant::LlmModel::UnionMember0,
902
+ Revox::Internal::AnyHash
903
+ )
904
+ end
905
+
906
+ sig do
907
+ returns(
908
+ Revox::Models::CallCreateResponse::Call::Assistant::LlmModel::UnionMember0::Name::TaggedSymbol
909
+ )
910
+ end
911
+ attr_accessor :name
912
+
913
+ sig { returns(Symbol) }
914
+ attr_accessor :type
915
+
916
+ sig do
917
+ params(
918
+ name:
919
+ Revox::Models::CallCreateResponse::Call::Assistant::LlmModel::UnionMember0::Name::OrSymbol,
920
+ type: Symbol
921
+ ).returns(T.attached_class)
922
+ end
923
+ def self.new(name:, type: :"dedicated-instance")
924
+ end
925
+
926
+ sig do
927
+ override.returns(
928
+ {
929
+ name:
930
+ Revox::Models::CallCreateResponse::Call::Assistant::LlmModel::UnionMember0::Name::TaggedSymbol,
931
+ type: Symbol
932
+ }
933
+ )
934
+ end
935
+ def to_hash
936
+ end
937
+
938
+ module Name
939
+ extend Revox::Internal::Type::Enum
940
+
941
+ TaggedSymbol =
942
+ T.type_alias do
943
+ T.all(
944
+ Symbol,
945
+ Revox::Models::CallCreateResponse::Call::Assistant::LlmModel::UnionMember0::Name
946
+ )
947
+ end
948
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
949
+
950
+ GPT_4_1 =
951
+ T.let(
952
+ :"gpt-4.1",
953
+ Revox::Models::CallCreateResponse::Call::Assistant::LlmModel::UnionMember0::Name::TaggedSymbol
954
+ )
955
+ MINISTRAL_3_8B_INSTRUCT =
956
+ T.let(
957
+ :"ministral-3-8b-instruct",
958
+ Revox::Models::CallCreateResponse::Call::Assistant::LlmModel::UnionMember0::Name::TaggedSymbol
959
+ )
960
+
961
+ sig do
962
+ override.returns(
963
+ T::Array[
964
+ Revox::Models::CallCreateResponse::Call::Assistant::LlmModel::UnionMember0::Name::TaggedSymbol
965
+ ]
966
+ )
967
+ end
968
+ def self.values
969
+ end
970
+ end
971
+ end
972
+
973
+ class UnionMember1 < Revox::Internal::Type::BaseModel
974
+ OrHash =
975
+ T.type_alias do
976
+ T.any(
977
+ Revox::Models::CallCreateResponse::Call::Assistant::LlmModel::UnionMember1,
978
+ Revox::Internal::AnyHash
979
+ )
980
+ end
981
+
982
+ # The model ID to use from OpenRouter. eg: openai/gpt-4.1
983
+ sig { returns(String) }
984
+ attr_accessor :openrouter_model_id
985
+
986
+ # The provider to use from OpenRouter. eg: nebius, openai, azure, etc.
987
+ sig { returns(String) }
988
+ attr_accessor :openrouter_provider
989
+
990
+ # Use a model from OpenRouter.
991
+ sig { returns(Symbol) }
992
+ attr_accessor :type
993
+
994
+ sig do
995
+ params(
996
+ openrouter_model_id: String,
997
+ openrouter_provider: String,
998
+ type: Symbol
999
+ ).returns(T.attached_class)
1000
+ end
1001
+ def self.new(
1002
+ # The model ID to use from OpenRouter. eg: openai/gpt-4.1
1003
+ openrouter_model_id:,
1004
+ # The provider to use from OpenRouter. eg: nebius, openai, azure, etc.
1005
+ openrouter_provider:,
1006
+ # Use a model from OpenRouter.
1007
+ type: :openrouter
1008
+ )
1009
+ end
1010
+
1011
+ sig do
1012
+ override.returns(
1013
+ {
1014
+ openrouter_model_id: String,
1015
+ openrouter_provider: String,
1016
+ type: Symbol
1017
+ }
1018
+ )
1019
+ end
1020
+ def to_hash
1021
+ end
1022
+ end
1023
+
1024
+ sig do
1025
+ override.returns(
1026
+ T::Array[
1027
+ Revox::Models::CallCreateResponse::Call::Assistant::LlmModel::Variants
1028
+ ]
1029
+ )
1030
+ end
1031
+ def self.variants
1032
+ end
1033
+ end
1034
+
1035
+ class StructuredOutputConfig < Revox::Internal::Type::BaseModel
1036
+ OrHash =
1037
+ T.type_alias do
1038
+ T.any(
1039
+ Revox::Models::CallCreateResponse::Call::Assistant::StructuredOutputConfig,
1040
+ Revox::Internal::AnyHash
1041
+ )
1042
+ end
1043
+
1044
+ sig { returns(String) }
1045
+ attr_accessor :name
1046
+
1047
+ sig { returns(T::Boolean) }
1048
+ attr_accessor :required
1049
+
1050
+ sig do
1051
+ returns(
1052
+ Revox::Models::CallCreateResponse::Call::Assistant::StructuredOutputConfig::Type::TaggedSymbol
1053
+ )
1054
+ end
1055
+ attr_accessor :type
1056
+
1057
+ sig { returns(T.nilable(String)) }
1058
+ attr_reader :description
1059
+
1060
+ sig { params(description: String).void }
1061
+ attr_writer :description
1062
+
1063
+ sig { returns(T.nilable(T::Array[String])) }
1064
+ attr_reader :enum_options
1065
+
1066
+ sig { params(enum_options: T::Array[String]).void }
1067
+ attr_writer :enum_options
1068
+
1069
+ sig do
1070
+ params(
1071
+ name: String,
1072
+ required: T::Boolean,
1073
+ type:
1074
+ Revox::Models::CallCreateResponse::Call::Assistant::StructuredOutputConfig::Type::OrSymbol,
1075
+ description: String,
1076
+ enum_options: T::Array[String]
1077
+ ).returns(T.attached_class)
1078
+ end
1079
+ def self.new(
1080
+ name:,
1081
+ required:,
1082
+ type:,
1083
+ description: nil,
1084
+ enum_options: nil
1085
+ )
1086
+ end
1087
+
1088
+ sig do
1089
+ override.returns(
1090
+ {
1091
+ name: String,
1092
+ required: T::Boolean,
1093
+ type:
1094
+ Revox::Models::CallCreateResponse::Call::Assistant::StructuredOutputConfig::Type::TaggedSymbol,
1095
+ description: String,
1096
+ enum_options: T::Array[String]
1097
+ }
1098
+ )
1099
+ end
1100
+ def to_hash
1101
+ end
1102
+
1103
+ module Type
1104
+ extend Revox::Internal::Type::Enum
1105
+
1106
+ TaggedSymbol =
1107
+ T.type_alias do
1108
+ T.all(
1109
+ Symbol,
1110
+ Revox::Models::CallCreateResponse::Call::Assistant::StructuredOutputConfig::Type
1111
+ )
1112
+ end
1113
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
1114
+
1115
+ STRING =
1116
+ T.let(
1117
+ :string,
1118
+ Revox::Models::CallCreateResponse::Call::Assistant::StructuredOutputConfig::Type::TaggedSymbol
1119
+ )
1120
+ NUMBER =
1121
+ T.let(
1122
+ :number,
1123
+ Revox::Models::CallCreateResponse::Call::Assistant::StructuredOutputConfig::Type::TaggedSymbol
1124
+ )
1125
+ BOOLEAN =
1126
+ T.let(
1127
+ :boolean,
1128
+ Revox::Models::CallCreateResponse::Call::Assistant::StructuredOutputConfig::Type::TaggedSymbol
1129
+ )
1130
+ ENUM =
1131
+ T.let(
1132
+ :enum,
1133
+ Revox::Models::CallCreateResponse::Call::Assistant::StructuredOutputConfig::Type::TaggedSymbol
1134
+ )
1135
+ DATE =
1136
+ T.let(
1137
+ :date,
1138
+ Revox::Models::CallCreateResponse::Call::Assistant::StructuredOutputConfig::Type::TaggedSymbol
1139
+ )
1140
+ DATETIME =
1141
+ T.let(
1142
+ :datetime,
1143
+ Revox::Models::CallCreateResponse::Call::Assistant::StructuredOutputConfig::Type::TaggedSymbol
1144
+ )
1145
+
1146
+ sig do
1147
+ override.returns(
1148
+ T::Array[
1149
+ Revox::Models::CallCreateResponse::Call::Assistant::StructuredOutputConfig::Type::TaggedSymbol
1150
+ ]
1151
+ )
1152
+ end
1153
+ def self.values
1154
+ end
1155
+ end
1156
+ end
1157
+
1158
+ class Voice < Revox::Internal::Type::BaseModel
1159
+ OrHash =
1160
+ T.type_alias do
1161
+ T.any(
1162
+ Revox::Models::CallCreateResponse::Call::Assistant::Voice,
1163
+ Revox::Internal::AnyHash
1164
+ )
1165
+ end
1166
+
1167
+ # The ID of the voice.
1168
+ sig { returns(String) }
1169
+ attr_accessor :id
1170
+
1171
+ # The provider of the voice.
1172
+ sig do
1173
+ returns(
1174
+ Revox::Models::CallCreateResponse::Call::Assistant::Voice::Provider::TaggedSymbol
1175
+ )
1176
+ end
1177
+ attr_accessor :provider
1178
+
1179
+ # The speed of the voice. Range depends on provider: Cartesia 0.6–1.5, ElevenLabs
1180
+ # 0.7–1.2. Default is 1.0.
1181
+ sig { returns(T.nilable(Float)) }
1182
+ attr_reader :speed
1183
+
1184
+ sig { params(speed: Float).void }
1185
+ attr_writer :speed
1186
+
1187
+ sig do
1188
+ params(
1189
+ id: String,
1190
+ provider:
1191
+ Revox::Models::CallCreateResponse::Call::Assistant::Voice::Provider::OrSymbol,
1192
+ speed: Float
1193
+ ).returns(T.attached_class)
1194
+ end
1195
+ def self.new(
1196
+ # The ID of the voice.
1197
+ id:,
1198
+ # The provider of the voice.
1199
+ provider:,
1200
+ # The speed of the voice. Range depends on provider: Cartesia 0.6–1.5, ElevenLabs
1201
+ # 0.7–1.2. Default is 1.0.
1202
+ speed: nil
1203
+ )
1204
+ end
1205
+
1206
+ sig do
1207
+ override.returns(
1208
+ {
1209
+ id: String,
1210
+ provider:
1211
+ Revox::Models::CallCreateResponse::Call::Assistant::Voice::Provider::TaggedSymbol,
1212
+ speed: Float
1213
+ }
1214
+ )
1215
+ end
1216
+ def to_hash
1217
+ end
1218
+
1219
+ # The provider of the voice.
1220
+ module Provider
1221
+ extend Revox::Internal::Type::Enum
1222
+
1223
+ TaggedSymbol =
1224
+ T.type_alias do
1225
+ T.all(
1226
+ Symbol,
1227
+ Revox::Models::CallCreateResponse::Call::Assistant::Voice::Provider
1228
+ )
1229
+ end
1230
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
1231
+
1232
+ CARTESIA =
1233
+ T.let(
1234
+ :cartesia,
1235
+ Revox::Models::CallCreateResponse::Call::Assistant::Voice::Provider::TaggedSymbol
1236
+ )
1237
+ ELEVENLABS =
1238
+ T.let(
1239
+ :elevenlabs,
1240
+ Revox::Models::CallCreateResponse::Call::Assistant::Voice::Provider::TaggedSymbol
1241
+ )
1242
+
1243
+ sig do
1244
+ override.returns(
1245
+ T::Array[
1246
+ Revox::Models::CallCreateResponse::Call::Assistant::Voice::Provider::TaggedSymbol
1247
+ ]
1248
+ )
1249
+ end
1250
+ def self.values
1251
+ end
1252
+ end
1253
+ end
1254
+
1255
+ class FaqItem < Revox::Internal::Type::BaseModel
1256
+ OrHash =
1257
+ T.type_alias do
1258
+ T.any(
1259
+ Revox::Models::CallCreateResponse::Call::Assistant::FaqItem,
1260
+ Revox::Internal::AnyHash
1261
+ )
1262
+ end
1263
+
1264
+ sig { returns(String) }
1265
+ attr_accessor :answer
1266
+
1267
+ sig { returns(String) }
1268
+ attr_accessor :question
1269
+
1270
+ sig { returns(T.nilable(String)) }
1271
+ attr_reader :id
1272
+
1273
+ sig { params(id: String).void }
1274
+ attr_writer :id
1275
+
1276
+ sig { returns(T.nilable(T::Boolean)) }
1277
+ attr_reader :needs_human_answer
1278
+
1279
+ sig { params(needs_human_answer: T::Boolean).void }
1280
+ attr_writer :needs_human_answer
1281
+
1282
+ sig do
1283
+ returns(
1284
+ T.nilable(
1285
+ Revox::Models::CallCreateResponse::Call::Assistant::FaqItem::Source::TaggedSymbol
1286
+ )
1287
+ )
1288
+ end
1289
+ attr_reader :source
1290
+
1291
+ sig do
1292
+ params(
1293
+ source:
1294
+ Revox::Models::CallCreateResponse::Call::Assistant::FaqItem::Source::OrSymbol
1295
+ ).void
1296
+ end
1297
+ attr_writer :source
1298
+
1299
+ sig do
1300
+ params(
1301
+ answer: String,
1302
+ question: String,
1303
+ id: String,
1304
+ needs_human_answer: T::Boolean,
1305
+ source:
1306
+ Revox::Models::CallCreateResponse::Call::Assistant::FaqItem::Source::OrSymbol
1307
+ ).returns(T.attached_class)
1308
+ end
1309
+ def self.new(
1310
+ answer:,
1311
+ question:,
1312
+ id: nil,
1313
+ needs_human_answer: nil,
1314
+ source: nil
1315
+ )
1316
+ end
1317
+
1318
+ sig do
1319
+ override.returns(
1320
+ {
1321
+ answer: String,
1322
+ question: String,
1323
+ id: String,
1324
+ needs_human_answer: T::Boolean,
1325
+ source:
1326
+ Revox::Models::CallCreateResponse::Call::Assistant::FaqItem::Source::TaggedSymbol
1327
+ }
1328
+ )
1329
+ end
1330
+ def to_hash
1331
+ end
1332
+
1333
+ module Source
1334
+ extend Revox::Internal::Type::Enum
1335
+
1336
+ TaggedSymbol =
1337
+ T.type_alias do
1338
+ T.all(
1339
+ Symbol,
1340
+ Revox::Models::CallCreateResponse::Call::Assistant::FaqItem::Source
1341
+ )
1342
+ end
1343
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
1344
+
1345
+ HUMAN =
1346
+ T.let(
1347
+ :human,
1348
+ Revox::Models::CallCreateResponse::Call::Assistant::FaqItem::Source::TaggedSymbol
1349
+ )
1350
+ AI =
1351
+ T.let(
1352
+ :ai,
1353
+ Revox::Models::CallCreateResponse::Call::Assistant::FaqItem::Source::TaggedSymbol
1354
+ )
1355
+
1356
+ sig do
1357
+ override.returns(
1358
+ T::Array[
1359
+ Revox::Models::CallCreateResponse::Call::Assistant::FaqItem::Source::TaggedSymbol
1360
+ ]
1361
+ )
1362
+ end
1363
+ def self.values
1364
+ end
1365
+ end
1366
+ end
1367
+ end
1368
+
260
1369
  class CallAttempt < Revox::Internal::Type::BaseModel
261
1370
  OrHash =
262
1371
  T.type_alias do
@@ -274,6 +1383,16 @@ module Revox
274
1383
  sig { returns(T.anything) }
275
1384
  attr_accessor :answered_at
276
1385
 
1386
+ # The SIP error that occurred.
1387
+ sig do
1388
+ returns(
1389
+ T.nilable(
1390
+ Revox::Models::CallCreateResponse::Call::CallAttempt::DialError::TaggedSymbol
1391
+ )
1392
+ )
1393
+ end
1394
+ attr_accessor :dial_error
1395
+
277
1396
  # The time the call ended.
278
1397
  sig { returns(T.anything) }
279
1398
  attr_accessor :ended_at
@@ -308,6 +1427,22 @@ module Revox
308
1427
  end
309
1428
  attr_accessor :status
310
1429
 
1430
+ # Reason for ending the call when ended_by is 'agent'. E.g. 'tool_end_call',
1431
+ # 'voicemail', 'transfer', 'ivr_no_navigate'.
1432
+ sig { returns(T.nilable(String)) }
1433
+ attr_accessor :end_reason
1434
+
1435
+ # Who ended the call: 'agent' (AI agent), 'user' (caller/callee hung up), or
1436
+ # 'system' (e.g. max duration limit).
1437
+ sig do
1438
+ returns(
1439
+ T.nilable(
1440
+ Revox::Models::CallCreateResponse::Call::CallAttempt::EndedBy::TaggedSymbol
1441
+ )
1442
+ )
1443
+ end
1444
+ attr_accessor :ended_by
1445
+
311
1446
  # The data extracted from the call, using the structured output config from the
312
1447
  # parent call object.
313
1448
  sig { returns(T.nilable(T::Hash[Symbol, T.anything])) }
@@ -331,6 +1466,10 @@ module Revox
331
1466
  params(
332
1467
  id: String,
333
1468
  answered_at: T.anything,
1469
+ dial_error:
1470
+ T.nilable(
1471
+ Revox::Models::CallCreateResponse::Call::CallAttempt::DialError::OrSymbol
1472
+ ),
334
1473
  ended_at: T.anything,
335
1474
  phone_number: String,
336
1475
  recording_url: T.nilable(String),
@@ -341,6 +1480,11 @@ module Revox
341
1480
  started_at: T.anything,
342
1481
  status:
343
1482
  Revox::Models::CallCreateResponse::Call::CallAttempt::Status::OrSymbol,
1483
+ end_reason: T.nilable(String),
1484
+ ended_by:
1485
+ T.nilable(
1486
+ Revox::Models::CallCreateResponse::Call::CallAttempt::EndedBy::OrSymbol
1487
+ ),
344
1488
  structured_output: T.nilable(T::Hash[Symbol, T.anything]),
345
1489
  transcript:
346
1490
  T.nilable(
@@ -355,6 +1499,8 @@ module Revox
355
1499
  id:,
356
1500
  # The time the call was answered.
357
1501
  answered_at:,
1502
+ # The SIP error that occurred.
1503
+ dial_error:,
358
1504
  # The time the call ended.
359
1505
  ended_at:,
360
1506
  # The phone number that was called. Formatted in E.164 format. Example:
@@ -367,6 +1513,12 @@ module Revox
367
1513
  started_at:,
368
1514
  # The status of the call attempt.
369
1515
  status:,
1516
+ # Reason for ending the call when ended_by is 'agent'. E.g. 'tool_end_call',
1517
+ # 'voicemail', 'transfer', 'ivr_no_navigate'.
1518
+ end_reason: nil,
1519
+ # Who ended the call: 'agent' (AI agent), 'user' (caller/callee hung up), or
1520
+ # 'system' (e.g. max duration limit).
1521
+ ended_by: nil,
370
1522
  # The data extracted from the call, using the structured output config from the
371
1523
  # parent call object.
372
1524
  structured_output: nil,
@@ -380,6 +1532,10 @@ module Revox
380
1532
  {
381
1533
  id: String,
382
1534
  answered_at: T.anything,
1535
+ dial_error:
1536
+ T.nilable(
1537
+ Revox::Models::CallCreateResponse::Call::CallAttempt::DialError::TaggedSymbol
1538
+ ),
383
1539
  ended_at: T.anything,
384
1540
  phone_number: String,
385
1541
  recording_url: T.nilable(String),
@@ -390,6 +1546,11 @@ module Revox
390
1546
  started_at: T.anything,
391
1547
  status:
392
1548
  Revox::Models::CallCreateResponse::Call::CallAttempt::Status::TaggedSymbol,
1549
+ end_reason: T.nilable(String),
1550
+ ended_by:
1551
+ T.nilable(
1552
+ Revox::Models::CallCreateResponse::Call::CallAttempt::EndedBy::TaggedSymbol
1553
+ ),
393
1554
  structured_output: T.nilable(T::Hash[Symbol, T.anything]),
394
1555
  transcript:
395
1556
  T.nilable(
@@ -403,6 +1564,71 @@ module Revox
403
1564
  def to_hash
404
1565
  end
405
1566
 
1567
+ # The SIP error that occurred.
1568
+ module DialError
1569
+ extend Revox::Internal::Type::Enum
1570
+
1571
+ TaggedSymbol =
1572
+ T.type_alias do
1573
+ T.all(
1574
+ Symbol,
1575
+ Revox::Models::CallCreateResponse::Call::CallAttempt::DialError
1576
+ )
1577
+ end
1578
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
1579
+
1580
+ NUMBER_NON_ATTRIBUTED =
1581
+ T.let(
1582
+ :number_non_attributed,
1583
+ Revox::Models::CallCreateResponse::Call::CallAttempt::DialError::TaggedSymbol
1584
+ )
1585
+ TOO_MANY_CALLS =
1586
+ T.let(
1587
+ :too_many_calls,
1588
+ Revox::Models::CallCreateResponse::Call::CallAttempt::DialError::TaggedSymbol
1589
+ )
1590
+ BUSY =
1591
+ T.let(
1592
+ :busy,
1593
+ Revox::Models::CallCreateResponse::Call::CallAttempt::DialError::TaggedSymbol
1594
+ )
1595
+ TEMPORARILY_UNAVAILABLE =
1596
+ T.let(
1597
+ :temporarily_unavailable,
1598
+ Revox::Models::CallCreateResponse::Call::CallAttempt::DialError::TaggedSymbol
1599
+ )
1600
+ NO_ANSWER =
1601
+ T.let(
1602
+ :no_answer,
1603
+ Revox::Models::CallCreateResponse::Call::CallAttempt::DialError::TaggedSymbol
1604
+ )
1605
+ NO_INTERNATIONAL_PERMISSION =
1606
+ T.let(
1607
+ :no_international_permission,
1608
+ Revox::Models::CallCreateResponse::Call::CallAttempt::DialError::TaggedSymbol
1609
+ )
1610
+ PRECONDITION_FAILED =
1611
+ T.let(
1612
+ :precondition_failed,
1613
+ Revox::Models::CallCreateResponse::Call::CallAttempt::DialError::TaggedSymbol
1614
+ )
1615
+ NON_CLASSIFIED_ERROR =
1616
+ T.let(
1617
+ :non_classified_error,
1618
+ Revox::Models::CallCreateResponse::Call::CallAttempt::DialError::TaggedSymbol
1619
+ )
1620
+
1621
+ sig do
1622
+ override.returns(
1623
+ T::Array[
1624
+ Revox::Models::CallCreateResponse::Call::CallAttempt::DialError::TaggedSymbol
1625
+ ]
1626
+ )
1627
+ end
1628
+ def self.values
1629
+ end
1630
+ end
1631
+
406
1632
  module Result
407
1633
  extend Revox::Internal::Type::Enum
408
1634
 
@@ -435,6 +1661,11 @@ module Revox
435
1661
  :unknown,
436
1662
  Revox::Models::CallCreateResponse::Call::CallAttempt::Result::TaggedSymbol
437
1663
  )
1664
+ IOS_SCREENING_FILTER =
1665
+ T.let(
1666
+ :"ios-screening-filter",
1667
+ Revox::Models::CallCreateResponse::Call::CallAttempt::Result::TaggedSymbol
1668
+ )
438
1669
 
439
1670
  sig do
440
1671
  override.returns(
@@ -480,6 +1711,11 @@ module Revox
480
1711
  :completed,
481
1712
  Revox::Models::CallCreateResponse::Call::CallAttempt::Status::TaggedSymbol
482
1713
  )
1714
+ ERROR =
1715
+ T.let(
1716
+ :error,
1717
+ Revox::Models::CallCreateResponse::Call::CallAttempt::Status::TaggedSymbol
1718
+ )
483
1719
 
484
1720
  sig do
485
1721
  override.returns(
@@ -492,6 +1728,47 @@ module Revox
492
1728
  end
493
1729
  end
494
1730
 
1731
+ # Who ended the call: 'agent' (AI agent), 'user' (caller/callee hung up), or
1732
+ # 'system' (e.g. max duration limit).
1733
+ module EndedBy
1734
+ extend Revox::Internal::Type::Enum
1735
+
1736
+ TaggedSymbol =
1737
+ T.type_alias do
1738
+ T.all(
1739
+ Symbol,
1740
+ Revox::Models::CallCreateResponse::Call::CallAttempt::EndedBy
1741
+ )
1742
+ end
1743
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
1744
+
1745
+ AGENT =
1746
+ T.let(
1747
+ :agent,
1748
+ Revox::Models::CallCreateResponse::Call::CallAttempt::EndedBy::TaggedSymbol
1749
+ )
1750
+ USER =
1751
+ T.let(
1752
+ :user,
1753
+ Revox::Models::CallCreateResponse::Call::CallAttempt::EndedBy::TaggedSymbol
1754
+ )
1755
+ SYSTEM =
1756
+ T.let(
1757
+ :system,
1758
+ Revox::Models::CallCreateResponse::Call::CallAttempt::EndedBy::TaggedSymbol
1759
+ )
1760
+
1761
+ sig do
1762
+ override.returns(
1763
+ T::Array[
1764
+ Revox::Models::CallCreateResponse::Call::CallAttempt::EndedBy::TaggedSymbol
1765
+ ]
1766
+ )
1767
+ end
1768
+ def self.values
1769
+ end
1770
+ end
1771
+
495
1772
  class Transcript < Revox::Internal::Type::BaseModel
496
1773
  OrHash =
497
1774
  T.type_alias do
@@ -766,6 +2043,30 @@ module Revox
766
2043
  end
767
2044
  end
768
2045
 
2046
+ class Campaign < Revox::Internal::Type::BaseModel
2047
+ OrHash =
2048
+ T.type_alias do
2049
+ T.any(
2050
+ Revox::Models::CallCreateResponse::Call::Campaign,
2051
+ Revox::Internal::AnyHash
2052
+ )
2053
+ end
2054
+
2055
+ sig { returns(String) }
2056
+ attr_accessor :id
2057
+
2058
+ sig { returns(String) }
2059
+ attr_accessor :name
2060
+
2061
+ sig { params(id: String, name: String).returns(T.attached_class) }
2062
+ def self.new(id:, name:)
2063
+ end
2064
+
2065
+ sig { override.returns({ id: String, name: String }) }
2066
+ def to_hash
2067
+ end
2068
+ end
2069
+
769
2070
  # Whether the call is inbound or outbound.
770
2071
  module Direction
771
2072
  extend Revox::Internal::Type::Enum
@@ -815,6 +2116,16 @@ module Revox
815
2116
  sig { returns(T.anything) }
816
2117
  attr_accessor :answered_at
817
2118
 
2119
+ # The SIP error that occurred.
2120
+ sig do
2121
+ returns(
2122
+ T.nilable(
2123
+ Revox::Models::CallCreateResponse::Call::LastCallAttempt::DialError::TaggedSymbol
2124
+ )
2125
+ )
2126
+ end
2127
+ attr_accessor :dial_error
2128
+
818
2129
  # The time the call ended.
819
2130
  sig { returns(T.anything) }
820
2131
  attr_accessor :ended_at
@@ -849,6 +2160,22 @@ module Revox
849
2160
  end
850
2161
  attr_accessor :status
851
2162
 
2163
+ # Reason for ending the call when ended_by is 'agent'. E.g. 'tool_end_call',
2164
+ # 'voicemail', 'transfer', 'ivr_no_navigate'.
2165
+ sig { returns(T.nilable(String)) }
2166
+ attr_accessor :end_reason
2167
+
2168
+ # Who ended the call: 'agent' (AI agent), 'user' (caller/callee hung up), or
2169
+ # 'system' (e.g. max duration limit).
2170
+ sig do
2171
+ returns(
2172
+ T.nilable(
2173
+ Revox::Models::CallCreateResponse::Call::LastCallAttempt::EndedBy::TaggedSymbol
2174
+ )
2175
+ )
2176
+ end
2177
+ attr_accessor :ended_by
2178
+
852
2179
  # The data extracted from the call, using the structured output config from the
853
2180
  # parent call object.
854
2181
  sig { returns(T.nilable(T::Hash[Symbol, T.anything])) }
@@ -872,6 +2199,10 @@ module Revox
872
2199
  params(
873
2200
  id: String,
874
2201
  answered_at: T.anything,
2202
+ dial_error:
2203
+ T.nilable(
2204
+ Revox::Models::CallCreateResponse::Call::LastCallAttempt::DialError::OrSymbol
2205
+ ),
875
2206
  ended_at: T.anything,
876
2207
  phone_number: String,
877
2208
  recording_url: T.nilable(String),
@@ -882,6 +2213,11 @@ module Revox
882
2213
  started_at: T.anything,
883
2214
  status:
884
2215
  Revox::Models::CallCreateResponse::Call::LastCallAttempt::Status::OrSymbol,
2216
+ end_reason: T.nilable(String),
2217
+ ended_by:
2218
+ T.nilable(
2219
+ Revox::Models::CallCreateResponse::Call::LastCallAttempt::EndedBy::OrSymbol
2220
+ ),
885
2221
  structured_output: T.nilable(T::Hash[Symbol, T.anything]),
886
2222
  transcript:
887
2223
  T.nilable(
@@ -896,6 +2232,8 @@ module Revox
896
2232
  id:,
897
2233
  # The time the call was answered.
898
2234
  answered_at:,
2235
+ # The SIP error that occurred.
2236
+ dial_error:,
899
2237
  # The time the call ended.
900
2238
  ended_at:,
901
2239
  # The phone number that was called. Formatted in E.164 format. Example:
@@ -908,6 +2246,12 @@ module Revox
908
2246
  started_at:,
909
2247
  # The status of the call attempt.
910
2248
  status:,
2249
+ # Reason for ending the call when ended_by is 'agent'. E.g. 'tool_end_call',
2250
+ # 'voicemail', 'transfer', 'ivr_no_navigate'.
2251
+ end_reason: nil,
2252
+ # Who ended the call: 'agent' (AI agent), 'user' (caller/callee hung up), or
2253
+ # 'system' (e.g. max duration limit).
2254
+ ended_by: nil,
911
2255
  # The data extracted from the call, using the structured output config from the
912
2256
  # parent call object.
913
2257
  structured_output: nil,
@@ -921,6 +2265,10 @@ module Revox
921
2265
  {
922
2266
  id: String,
923
2267
  answered_at: T.anything,
2268
+ dial_error:
2269
+ T.nilable(
2270
+ Revox::Models::CallCreateResponse::Call::LastCallAttempt::DialError::TaggedSymbol
2271
+ ),
924
2272
  ended_at: T.anything,
925
2273
  phone_number: String,
926
2274
  recording_url: T.nilable(String),
@@ -931,6 +2279,11 @@ module Revox
931
2279
  started_at: T.anything,
932
2280
  status:
933
2281
  Revox::Models::CallCreateResponse::Call::LastCallAttempt::Status::TaggedSymbol,
2282
+ end_reason: T.nilable(String),
2283
+ ended_by:
2284
+ T.nilable(
2285
+ Revox::Models::CallCreateResponse::Call::LastCallAttempt::EndedBy::TaggedSymbol
2286
+ ),
934
2287
  structured_output: T.nilable(T::Hash[Symbol, T.anything]),
935
2288
  transcript:
936
2289
  T.nilable(
@@ -944,6 +2297,71 @@ module Revox
944
2297
  def to_hash
945
2298
  end
946
2299
 
2300
+ # The SIP error that occurred.
2301
+ module DialError
2302
+ extend Revox::Internal::Type::Enum
2303
+
2304
+ TaggedSymbol =
2305
+ T.type_alias do
2306
+ T.all(
2307
+ Symbol,
2308
+ Revox::Models::CallCreateResponse::Call::LastCallAttempt::DialError
2309
+ )
2310
+ end
2311
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
2312
+
2313
+ NUMBER_NON_ATTRIBUTED =
2314
+ T.let(
2315
+ :number_non_attributed,
2316
+ Revox::Models::CallCreateResponse::Call::LastCallAttempt::DialError::TaggedSymbol
2317
+ )
2318
+ TOO_MANY_CALLS =
2319
+ T.let(
2320
+ :too_many_calls,
2321
+ Revox::Models::CallCreateResponse::Call::LastCallAttempt::DialError::TaggedSymbol
2322
+ )
2323
+ BUSY =
2324
+ T.let(
2325
+ :busy,
2326
+ Revox::Models::CallCreateResponse::Call::LastCallAttempt::DialError::TaggedSymbol
2327
+ )
2328
+ TEMPORARILY_UNAVAILABLE =
2329
+ T.let(
2330
+ :temporarily_unavailable,
2331
+ Revox::Models::CallCreateResponse::Call::LastCallAttempt::DialError::TaggedSymbol
2332
+ )
2333
+ NO_ANSWER =
2334
+ T.let(
2335
+ :no_answer,
2336
+ Revox::Models::CallCreateResponse::Call::LastCallAttempt::DialError::TaggedSymbol
2337
+ )
2338
+ NO_INTERNATIONAL_PERMISSION =
2339
+ T.let(
2340
+ :no_international_permission,
2341
+ Revox::Models::CallCreateResponse::Call::LastCallAttempt::DialError::TaggedSymbol
2342
+ )
2343
+ PRECONDITION_FAILED =
2344
+ T.let(
2345
+ :precondition_failed,
2346
+ Revox::Models::CallCreateResponse::Call::LastCallAttempt::DialError::TaggedSymbol
2347
+ )
2348
+ NON_CLASSIFIED_ERROR =
2349
+ T.let(
2350
+ :non_classified_error,
2351
+ Revox::Models::CallCreateResponse::Call::LastCallAttempt::DialError::TaggedSymbol
2352
+ )
2353
+
2354
+ sig do
2355
+ override.returns(
2356
+ T::Array[
2357
+ Revox::Models::CallCreateResponse::Call::LastCallAttempt::DialError::TaggedSymbol
2358
+ ]
2359
+ )
2360
+ end
2361
+ def self.values
2362
+ end
2363
+ end
2364
+
947
2365
  module Result
948
2366
  extend Revox::Internal::Type::Enum
949
2367
 
@@ -976,6 +2394,11 @@ module Revox
976
2394
  :unknown,
977
2395
  Revox::Models::CallCreateResponse::Call::LastCallAttempt::Result::TaggedSymbol
978
2396
  )
2397
+ IOS_SCREENING_FILTER =
2398
+ T.let(
2399
+ :"ios-screening-filter",
2400
+ Revox::Models::CallCreateResponse::Call::LastCallAttempt::Result::TaggedSymbol
2401
+ )
979
2402
 
980
2403
  sig do
981
2404
  override.returns(
@@ -1021,6 +2444,11 @@ module Revox
1021
2444
  :completed,
1022
2445
  Revox::Models::CallCreateResponse::Call::LastCallAttempt::Status::TaggedSymbol
1023
2446
  )
2447
+ ERROR =
2448
+ T.let(
2449
+ :error,
2450
+ Revox::Models::CallCreateResponse::Call::LastCallAttempt::Status::TaggedSymbol
2451
+ )
1024
2452
 
1025
2453
  sig do
1026
2454
  override.returns(
@@ -1033,6 +2461,47 @@ module Revox
1033
2461
  end
1034
2462
  end
1035
2463
 
2464
+ # Who ended the call: 'agent' (AI agent), 'user' (caller/callee hung up), or
2465
+ # 'system' (e.g. max duration limit).
2466
+ module EndedBy
2467
+ extend Revox::Internal::Type::Enum
2468
+
2469
+ TaggedSymbol =
2470
+ T.type_alias do
2471
+ T.all(
2472
+ Symbol,
2473
+ Revox::Models::CallCreateResponse::Call::LastCallAttempt::EndedBy
2474
+ )
2475
+ end
2476
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
2477
+
2478
+ AGENT =
2479
+ T.let(
2480
+ :agent,
2481
+ Revox::Models::CallCreateResponse::Call::LastCallAttempt::EndedBy::TaggedSymbol
2482
+ )
2483
+ USER =
2484
+ T.let(
2485
+ :user,
2486
+ Revox::Models::CallCreateResponse::Call::LastCallAttempt::EndedBy::TaggedSymbol
2487
+ )
2488
+ SYSTEM =
2489
+ T.let(
2490
+ :system,
2491
+ Revox::Models::CallCreateResponse::Call::LastCallAttempt::EndedBy::TaggedSymbol
2492
+ )
2493
+
2494
+ sig do
2495
+ override.returns(
2496
+ T::Array[
2497
+ Revox::Models::CallCreateResponse::Call::LastCallAttempt::EndedBy::TaggedSymbol
2498
+ ]
2499
+ )
2500
+ end
2501
+ def self.values
2502
+ end
2503
+ end
2504
+
1036
2505
  class Transcript < Revox::Internal::Type::BaseModel
1037
2506
  OrHash =
1038
2507
  T.type_alias do
@@ -1329,6 +2798,63 @@ module Revox
1329
2798
  def self.variants
1330
2799
  end
1331
2800
  end
2801
+
2802
+ # The status of the call.
2803
+ module Status
2804
+ extend Revox::Internal::Type::Enum
2805
+
2806
+ TaggedSymbol =
2807
+ T.type_alias do
2808
+ T.all(Symbol, Revox::Models::CallCreateResponse::Call::Status)
2809
+ end
2810
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
2811
+
2812
+ INITIALIZING =
2813
+ T.let(
2814
+ :initializing,
2815
+ Revox::Models::CallCreateResponse::Call::Status::TaggedSymbol
2816
+ )
2817
+ QUEUED_FOR_CALLING =
2818
+ T.let(
2819
+ :queued_for_calling,
2820
+ Revox::Models::CallCreateResponse::Call::Status::TaggedSymbol
2821
+ )
2822
+ CALLING =
2823
+ T.let(
2824
+ :calling,
2825
+ Revox::Models::CallCreateResponse::Call::Status::TaggedSymbol
2826
+ )
2827
+ SCHEDULED =
2828
+ T.let(
2829
+ :scheduled,
2830
+ Revox::Models::CallCreateResponse::Call::Status::TaggedSymbol
2831
+ )
2832
+ COMPLETED =
2833
+ T.let(
2834
+ :completed,
2835
+ Revox::Models::CallCreateResponse::Call::Status::TaggedSymbol
2836
+ )
2837
+ CANCELLED =
2838
+ T.let(
2839
+ :cancelled,
2840
+ Revox::Models::CallCreateResponse::Call::Status::TaggedSymbol
2841
+ )
2842
+ ERRORED =
2843
+ T.let(
2844
+ :errored,
2845
+ Revox::Models::CallCreateResponse::Call::Status::TaggedSymbol
2846
+ )
2847
+
2848
+ sig do
2849
+ override.returns(
2850
+ T::Array[
2851
+ Revox::Models::CallCreateResponse::Call::Status::TaggedSymbol
2852
+ ]
2853
+ )
2854
+ end
2855
+ def self.values
2856
+ end
2857
+ end
1332
2858
  end
1333
2859
  end
1334
2860
  end