revox 0.2.0 → 0.4.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 (208) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +36 -0
  3. data/README.md +38 -38
  4. data/lib/revox/client.rb +8 -0
  5. data/lib/revox/internal/type/base_model.rb +3 -3
  6. data/lib/revox/models/assistant_clone_params.rb +20 -0
  7. data/lib/revox/models/assistant_clone_response.rb +1616 -0
  8. data/lib/revox/models/assistant_create_params.rb +90 -66
  9. data/lib/revox/models/assistant_create_response.rb +87 -65
  10. data/lib/revox/models/assistant_list_response.rb +87 -65
  11. data/lib/revox/models/assistant_retrieve_response.rb +86 -65
  12. data/lib/revox/models/assistant_update_params.rb +90 -66
  13. data/lib/revox/models/assistant_update_response.rb +87 -65
  14. data/lib/revox/models/auth_status_retrieve_params.rb +14 -0
  15. data/lib/revox/models/auth_status_retrieve_response.rb +17 -0
  16. data/lib/revox/models/call_cancel_params.rb +20 -0
  17. data/lib/revox/models/call_cancel_response.rb +16 -0
  18. data/lib/revox/models/call_create_params.rb +117 -90
  19. data/lib/revox/models/call_create_response.rb +680 -90
  20. data/lib/revox/models/call_export_params.rb +203 -0
  21. data/lib/revox/models/call_export_response.rb +22 -0
  22. data/lib/revox/models/call_pause_params.rb +20 -0
  23. data/lib/revox/models/call_pause_response.rb +16 -0
  24. data/lib/revox/models/call_phone_history_params.rb +14 -0
  25. data/lib/revox/models/call_phone_history_response.rb +95 -0
  26. data/lib/revox/models/call_resume_params.rb +20 -0
  27. data/lib/revox/models/call_resume_response.rb +16 -0
  28. data/lib/revox/models/call_retrieve_response.rb +681 -90
  29. data/lib/revox/models/call_search_params.rb +169 -0
  30. data/lib/revox/models/call_search_response.rb +3694 -0
  31. data/lib/revox/models/campaign_create_params.rb +7 -57
  32. data/lib/revox/models/campaign_create_response.rb +108 -119
  33. data/lib/revox/models/campaign_get_rows_response.rb +682 -90
  34. data/lib/revox/models/campaign_list_response.rb +108 -119
  35. data/lib/revox/models/campaign_pause_params.rb +20 -0
  36. data/lib/revox/models/campaign_pause_response.rb +16 -0
  37. data/lib/revox/models/campaign_resume_params.rb +20 -0
  38. data/lib/revox/models/campaign_resume_response.rb +16 -0
  39. data/lib/revox/models/campaign_retrieve_response.rb +108 -119
  40. data/lib/revox/models/campaign_statistics_params.rb +20 -0
  41. data/lib/revox/models/campaign_statistics_response.rb +514 -0
  42. data/lib/revox/models/campaign_update_params.rb +165 -0
  43. data/lib/revox/models/campaign_update_response.rb +2019 -0
  44. data/lib/revox/models/phone_number_delete_params.rb +20 -0
  45. data/lib/revox/models/phone_number_delete_response.rb +16 -0
  46. data/lib/revox/models/phone_number_list_params.rb +14 -0
  47. data/lib/revox/models/phone_number_list_response.rb +1799 -0
  48. data/lib/revox/models/phone_number_update_params.rb +32 -0
  49. data/lib/revox/models/phone_number_update_response.rb +1799 -0
  50. data/lib/revox/models/user_retrieve_params.rb +14 -0
  51. data/lib/revox/models/user_retrieve_response.rb +99 -0
  52. data/lib/revox/models/voice_clone_params.rb +78 -0
  53. data/lib/revox/models/voice_clone_response.rb +40 -0
  54. data/lib/revox/models/voice_delete_params.rb +20 -0
  55. data/lib/revox/models/voice_delete_response.rb +16 -0
  56. data/lib/revox/models/voice_list_response.rb +1 -0
  57. data/lib/revox/models/voice_preview_params.rb +1 -0
  58. data/lib/revox/models/voice_retrieve_params.rb +1 -0
  59. data/lib/revox/models.rb +35 -1
  60. data/lib/revox/resources/assistants.rb +31 -10
  61. data/lib/revox/resources/auth_status.rb +32 -0
  62. data/lib/revox/resources/call.rb +149 -4
  63. data/lib/revox/resources/campaigns.rb +110 -11
  64. data/lib/revox/resources/phone_numbers.rb +74 -0
  65. data/lib/revox/resources/users.rb +17 -3
  66. data/lib/revox/resources/voices.rb +50 -0
  67. data/lib/revox/version.rb +1 -1
  68. data/lib/revox.rb +38 -5
  69. data/rbi/revox/client.rbi +6 -0
  70. data/rbi/revox/models/assistant_clone_params.rbi +33 -0
  71. data/rbi/revox/models/assistant_clone_response.rbi +3351 -0
  72. data/rbi/revox/models/assistant_create_params.rbi +148 -162
  73. data/rbi/revox/models/assistant_create_response.rbi +157 -147
  74. data/rbi/revox/models/assistant_list_response.rbi +157 -147
  75. data/rbi/revox/models/assistant_retrieve_response.rbi +153 -147
  76. data/rbi/revox/models/assistant_update_params.rbi +148 -162
  77. data/rbi/revox/models/assistant_update_response.rbi +157 -147
  78. data/rbi/revox/models/auth_status_retrieve_params.rbi +27 -0
  79. data/rbi/revox/models/auth_status_retrieve_response.rbi +30 -0
  80. data/rbi/revox/models/call_cancel_params.rbi +33 -0
  81. data/rbi/revox/models/call_cancel_response.rbi +23 -0
  82. data/rbi/revox/models/call_create_params.rbi +190 -187
  83. data/rbi/revox/models/call_create_response.rbi +1150 -227
  84. data/rbi/revox/models/call_export_params.rbi +446 -0
  85. data/rbi/revox/models/call_export_response.rbi +26 -0
  86. data/rbi/revox/models/call_pause_params.rbi +31 -0
  87. data/rbi/revox/models/call_pause_response.rbi +23 -0
  88. data/rbi/revox/models/call_phone_history_params.rbi +27 -0
  89. data/rbi/revox/models/call_phone_history_response.rbi +209 -0
  90. data/rbi/revox/models/call_resume_params.rbi +33 -0
  91. data/rbi/revox/models/call_resume_response.rbi +23 -0
  92. data/rbi/revox/models/call_retrieve_response.rbi +1150 -227
  93. data/rbi/revox/models/call_search_params.rbi +281 -0
  94. data/rbi/revox/models/call_search_response.rbi +7504 -0
  95. data/rbi/revox/models/campaign_create_params.rbi +9 -87
  96. data/rbi/revox/models/campaign_create_response.rbi +188 -266
  97. data/rbi/revox/models/campaign_get_rows_response.rbi +1150 -225
  98. data/rbi/revox/models/campaign_list_response.rbi +188 -262
  99. data/rbi/revox/models/campaign_pause_params.rbi +33 -0
  100. data/rbi/revox/models/campaign_pause_response.rbi +23 -0
  101. data/rbi/revox/models/campaign_resume_params.rbi +33 -0
  102. data/rbi/revox/models/campaign_resume_response.rbi +23 -0
  103. data/rbi/revox/models/campaign_retrieve_response.rbi +188 -266
  104. data/rbi/revox/models/campaign_statistics_params.rbi +33 -0
  105. data/rbi/revox/models/campaign_statistics_response.rbi +1069 -0
  106. data/rbi/revox/models/campaign_update_params.rbi +313 -0
  107. data/rbi/revox/models/campaign_update_response.rbi +4092 -0
  108. data/rbi/revox/models/phone_number_delete_params.rbi +33 -0
  109. data/rbi/revox/models/phone_number_delete_response.rbi +26 -0
  110. data/rbi/revox/models/phone_number_list_params.rbi +27 -0
  111. data/rbi/revox/models/phone_number_list_response.rbi +3690 -0
  112. data/rbi/revox/models/phone_number_update_params.rbi +53 -0
  113. data/rbi/revox/models/phone_number_update_response.rbi +3693 -0
  114. data/rbi/revox/models/user_retrieve_params.rbi +27 -0
  115. data/rbi/revox/models/user_retrieve_response.rbi +140 -0
  116. data/rbi/revox/models/voice_clone_params.rbi +141 -0
  117. data/rbi/revox/models/voice_clone_response.rbi +53 -0
  118. data/rbi/revox/models/voice_delete_params.rbi +33 -0
  119. data/rbi/revox/models/voice_delete_response.rbi +23 -0
  120. data/rbi/revox/models/voice_list_response.rbi +5 -0
  121. data/rbi/revox/models/voice_preview_params.rbi +2 -0
  122. data/rbi/revox/models/voice_retrieve_params.rbi +2 -0
  123. data/rbi/revox/models.rbi +35 -1
  124. data/rbi/revox/resources/assistants.rbi +52 -22
  125. data/rbi/revox/resources/auth_status.rbi +21 -0
  126. data/rbi/revox/resources/call.rbi +114 -4
  127. data/rbi/revox/resources/campaigns.rbi +77 -15
  128. data/rbi/revox/resources/phone_numbers.rbi +43 -0
  129. data/rbi/revox/resources/users.rbi +8 -2
  130. data/rbi/revox/resources/voices.rbi +39 -0
  131. data/sig/revox/client.rbs +4 -0
  132. data/sig/revox/models/assistant_clone_params.rbs +20 -0
  133. data/sig/revox/models/assistant_clone_response.rbs +1310 -0
  134. data/sig/revox/models/assistant_create_params.rbs +39 -58
  135. data/sig/revox/models/assistant_create_response.rbs +46 -54
  136. data/sig/revox/models/assistant_list_response.rbs +46 -54
  137. data/sig/revox/models/assistant_retrieve_response.rbs +46 -54
  138. data/sig/revox/models/assistant_update_params.rbs +39 -58
  139. data/sig/revox/models/assistant_update_response.rbs +46 -54
  140. data/sig/revox/models/auth_status_retrieve_params.rbs +15 -0
  141. data/sig/revox/models/auth_status_retrieve_response.rbs +13 -0
  142. data/sig/revox/models/call_cancel_params.rbs +20 -0
  143. data/sig/revox/models/call_cancel_response.rbs +13 -0
  144. data/sig/revox/models/call_create_params.rbs +50 -71
  145. data/sig/revox/models/call_create_response.rbs +473 -77
  146. data/sig/revox/models/call_export_params.rbs +230 -0
  147. data/sig/revox/models/call_export_response.rbs +15 -0
  148. data/sig/revox/models/call_pause_params.rbs +20 -0
  149. data/sig/revox/models/call_pause_response.rbs +13 -0
  150. data/sig/revox/models/call_phone_history_params.rbs +15 -0
  151. data/sig/revox/models/call_phone_history_response.rbs +93 -0
  152. data/sig/revox/models/call_resume_params.rbs +20 -0
  153. data/sig/revox/models/call_resume_response.rbs +13 -0
  154. data/sig/revox/models/call_retrieve_response.rbs +473 -77
  155. data/sig/revox/models/call_search_params.rbs +194 -0
  156. data/sig/revox/models/call_search_response.rbs +3045 -0
  157. data/sig/revox/models/campaign_create_params.rbs +5 -50
  158. data/sig/revox/models/campaign_create_response.rbs +62 -98
  159. data/sig/revox/models/campaign_get_rows_response.rbs +472 -73
  160. data/sig/revox/models/campaign_list_response.rbs +62 -98
  161. data/sig/revox/models/campaign_pause_params.rbs +20 -0
  162. data/sig/revox/models/campaign_pause_response.rbs +13 -0
  163. data/sig/revox/models/campaign_resume_params.rbs +20 -0
  164. data/sig/revox/models/campaign_resume_response.rbs +13 -0
  165. data/sig/revox/models/campaign_retrieve_response.rbs +62 -98
  166. data/sig/revox/models/campaign_statistics_params.rbs +20 -0
  167. data/sig/revox/models/campaign_statistics_response.rbs +489 -0
  168. data/sig/revox/models/campaign_update_params.rbs +135 -0
  169. data/sig/revox/models/campaign_update_response.rbs +1658 -0
  170. data/sig/revox/models/phone_number_delete_params.rbs +20 -0
  171. data/sig/revox/models/phone_number_delete_response.rbs +13 -0
  172. data/sig/revox/models/phone_number_list_params.rbs +15 -0
  173. data/sig/revox/models/phone_number_list_response.rbs +1454 -0
  174. data/sig/revox/models/phone_number_update_params.rbs +32 -0
  175. data/sig/revox/models/phone_number_update_response.rbs +1452 -0
  176. data/sig/revox/models/user_retrieve_params.rbs +14 -0
  177. data/sig/revox/models/user_retrieve_response.rbs +71 -0
  178. data/sig/revox/models/voice_clone_params.rbs +79 -0
  179. data/sig/revox/models/voice_clone_response.rbs +40 -0
  180. data/sig/revox/models/voice_delete_params.rbs +20 -0
  181. data/sig/revox/models/voice_delete_response.rbs +13 -0
  182. data/sig/revox/models/voice_list_response.rbs +2 -1
  183. data/sig/revox/models/voice_preview_params.rbs +2 -1
  184. data/sig/revox/models/voice_retrieve_params.rbs +2 -1
  185. data/sig/revox/models.rbs +35 -1
  186. data/sig/revox/resources/assistants.rbs +9 -4
  187. data/sig/revox/resources/auth_status.rbs +11 -0
  188. data/sig/revox/resources/call.rbs +46 -1
  189. data/sig/revox/resources/campaigns.rbs +24 -3
  190. data/sig/revox/resources/phone_numbers.rbs +23 -0
  191. data/sig/revox/resources/users.rbs +3 -1
  192. data/sig/revox/resources/voices.rbs +13 -0
  193. metadata +116 -17
  194. data/lib/revox/models/users/me_retrieve_params.rb +0 -16
  195. data/lib/revox/models/users/me_retrieve_response.rb +0 -101
  196. data/lib/revox/models/users/me_update_params.rb +0 -22
  197. data/lib/revox/models/users/me_update_response.rb +0 -101
  198. data/lib/revox/resources/users/me.rb +0 -55
  199. data/rbi/revox/models/users/me_retrieve_params.rbi +0 -29
  200. data/rbi/revox/models/users/me_retrieve_response.rbi +0 -149
  201. data/rbi/revox/models/users/me_update_params.rbi +0 -43
  202. data/rbi/revox/models/users/me_update_response.rbi +0 -149
  203. data/rbi/revox/resources/users/me.rbi +0 -33
  204. data/sig/revox/models/users/me_retrieve_params.rbs +0 -16
  205. data/sig/revox/models/users/me_retrieve_response.rbs +0 -75
  206. data/sig/revox/models/users/me_update_params.rbs +0 -28
  207. data/sig/revox/models/users/me_update_response.rbs +0 -75
  208. data/sig/revox/resources/users/me.rbs +0 -18
@@ -68,19 +68,9 @@ module Revox
68
68
  end
69
69
  attr_accessor :status
70
70
 
71
- sig do
72
- returns(
73
- Revox::Models::CampaignCreateResponse::Campaign::Type::TaggedSymbol
74
- )
75
- end
76
- attr_accessor :type
77
-
78
71
  sig { returns(T.anything) }
79
72
  attr_accessor :updated_at
80
73
 
81
- sig { returns(T.nilable(String)) }
82
- attr_accessor :active_takeover_call_id
83
-
84
74
  sig do
85
75
  returns(
86
76
  T.nilable(
@@ -162,20 +152,11 @@ module Revox
162
152
  sig { returns(T.nilable(Float)) }
163
153
  attr_accessor :max_concurrent_calls
164
154
 
165
- sig do
166
- returns(
167
- T.nilable(
168
- Revox::Models::CampaignCreateResponse::Campaign::PausedReason::TaggedSymbol
169
- )
170
- )
171
- end
172
- attr_accessor :paused_reason
173
-
174
- sig { returns(T.nilable(Float)) }
175
- attr_reader :present_count
155
+ sig { returns(T.nilable(T::Array[String])) }
156
+ attr_reader :metadata_keys
176
157
 
177
- sig { params(present_count: Float).void }
178
- attr_writer :present_count
158
+ sig { params(metadata_keys: T::Array[String]).void }
159
+ attr_writer :metadata_keys
179
160
 
180
161
  sig do
181
162
  returns(
@@ -226,10 +207,7 @@ module Revox
226
207
  organization_id: String,
227
208
  status:
228
209
  Revox::Models::CampaignCreateResponse::Campaign::Status::OrSymbol,
229
- type:
230
- Revox::Models::CampaignCreateResponse::Campaign::Type::OrSymbol,
231
210
  updated_at: T.anything,
232
- active_takeover_call_id: T.nilable(String),
233
211
  assistant:
234
212
  Revox::Models::CampaignCreateResponse::Campaign::Assistant::OrHash,
235
213
  call_retry_config:
@@ -244,11 +222,7 @@ module Revox
244
222
  funnel_stats:
245
223
  Revox::Models::CampaignCreateResponse::Campaign::FunnelStats::OrHash,
246
224
  max_concurrent_calls: T.nilable(Float),
247
- paused_reason:
248
- T.nilable(
249
- Revox::Models::CampaignCreateResponse::Campaign::PausedReason::OrSymbol
250
- ),
251
- present_count: Float,
225
+ metadata_keys: T::Array[String],
252
226
  row_stats:
253
227
  Revox::Models::CampaignCreateResponse::Campaign::RowStats::OrHash,
254
228
  scheduled_at: T.anything,
@@ -264,9 +238,7 @@ module Revox
264
238
  name:,
265
239
  organization_id:,
266
240
  status:,
267
- type:,
268
241
  updated_at:,
269
- active_takeover_call_id: nil,
270
242
  assistant: nil,
271
243
  # Configuration for call retry behavior including time windows, delays, and max
272
244
  # iterations. If not provided, defaults will be used.
@@ -276,8 +248,7 @@ module Revox
276
248
  from_phone_number: nil,
277
249
  funnel_stats: nil,
278
250
  max_concurrent_calls: nil,
279
- paused_reason: nil,
280
- present_count: nil,
251
+ metadata_keys: nil,
281
252
  row_stats: nil,
282
253
  scheduled_at: nil,
283
254
  # The status of the structured output extraction.
@@ -296,10 +267,7 @@ module Revox
296
267
  organization_id: String,
297
268
  status:
298
269
  Revox::Models::CampaignCreateResponse::Campaign::Status::TaggedSymbol,
299
- type:
300
- Revox::Models::CampaignCreateResponse::Campaign::Type::TaggedSymbol,
301
270
  updated_at: T.anything,
302
- active_takeover_call_id: T.nilable(String),
303
271
  assistant:
304
272
  Revox::Models::CampaignCreateResponse::Campaign::Assistant,
305
273
  call_retry_config:
@@ -314,11 +282,7 @@ module Revox
314
282
  funnel_stats:
315
283
  Revox::Models::CampaignCreateResponse::Campaign::FunnelStats,
316
284
  max_concurrent_calls: T.nilable(Float),
317
- paused_reason:
318
- T.nilable(
319
- Revox::Models::CampaignCreateResponse::Campaign::PausedReason::TaggedSymbol
320
- ),
321
- present_count: Float,
285
+ metadata_keys: T::Array[String],
322
286
  row_stats:
323
287
  Revox::Models::CampaignCreateResponse::Campaign::RowStats,
324
288
  scheduled_at: T.anything,
@@ -342,11 +306,6 @@ module Revox
342
306
  end
343
307
  OrSymbol = T.type_alias { T.any(Symbol, String) }
344
308
 
345
- DRAFT =
346
- T.let(
347
- :draft,
348
- Revox::Models::CampaignCreateResponse::Campaign::Status::TaggedSymbol
349
- )
350
309
  RUNNING =
351
310
  T.let(
352
311
  :running,
@@ -374,40 +333,6 @@ module Revox
374
333
  end
375
334
  end
376
335
 
377
- module Type
378
- extend Revox::Internal::Type::Enum
379
-
380
- TaggedSymbol =
381
- T.type_alias do
382
- T.all(
383
- Symbol,
384
- Revox::Models::CampaignCreateResponse::Campaign::Type
385
- )
386
- end
387
- OrSymbol = T.type_alias { T.any(Symbol, String) }
388
-
389
- REGULAR =
390
- T.let(
391
- :regular,
392
- Revox::Models::CampaignCreateResponse::Campaign::Type::TaggedSymbol
393
- )
394
- JUMP_IN =
395
- T.let(
396
- :jump_in,
397
- Revox::Models::CampaignCreateResponse::Campaign::Type::TaggedSymbol
398
- )
399
-
400
- sig do
401
- override.returns(
402
- T::Array[
403
- Revox::Models::CampaignCreateResponse::Campaign::Type::TaggedSymbol
404
- ]
405
- )
406
- end
407
- def self.values
408
- end
409
- end
410
-
411
336
  class Assistant < Revox::Internal::Type::BaseModel
412
337
  OrHash =
413
338
  T.type_alias do
@@ -516,14 +441,6 @@ module Revox
516
441
  sig { returns(T.nilable(String)) }
517
442
  attr_accessor :email_notification_address
518
443
 
519
- # The language used for the notification email content. One of "en" or "fr".
520
- sig do
521
- returns(
522
- Revox::Models::CampaignCreateResponse::Campaign::Assistant::EmailNotificationLanguage::TaggedSymbol
523
- )
524
- end
525
- attr_accessor :email_notification_language
526
-
527
444
  # Which call outcomes trigger an email notification. E.g. ["interested",
528
445
  # "completed", "none"]. Use "none" when outcome is null.
529
446
  sig do
@@ -559,8 +476,8 @@ module Revox
559
476
  sig { returns(T.nilable(String)) }
560
477
  attr_accessor :from_phone_number
561
478
 
562
- # Warm or cold transfer when transfer_phone_number is set; null when transfer is
563
- # not configured.
479
+ # Warm or cold transfer when transfer_destinations is non-empty; null when
480
+ # transfer is not configured.
564
481
  sig do
565
482
  returns(
566
483
  T.nilable(
@@ -623,6 +540,11 @@ module Revox
623
540
  end
624
541
  attr_writer :position
625
542
 
543
+ # URL fetched before an inbound call is answered to resolve the assistant's prompt
544
+ # variables. Null when no lookup is configured.
545
+ sig { returns(T.nilable(String)) }
546
+ attr_accessor :precall_lookup_url
547
+
626
548
  sig { returns(String) }
627
549
  attr_accessor :prompt
628
550
 
@@ -744,9 +666,18 @@ module Revox
744
666
  sig { returns(Float) }
745
667
  attr_accessor :thinking_sound_volume
746
668
 
747
- # Phone number to transfer calls to when users request to speak to a human agent.
748
- sig { returns(T.nilable(String)) }
749
- attr_accessor :transfer_phone_number
669
+ # Where calls can be transferred to when users ask to speak to a human. Null or
670
+ # empty when transfer is not configured.
671
+ sig do
672
+ returns(
673
+ T.nilable(
674
+ T::Array[
675
+ Revox::Models::CampaignCreateResponse::Campaign::Assistant::TransferDestination
676
+ ]
677
+ )
678
+ )
679
+ end
680
+ attr_accessor :transfer_destinations
750
681
 
751
682
  sig do
752
683
  returns(
@@ -856,6 +787,12 @@ module Revox
856
787
  end
857
788
  attr_writer :faq_items
858
789
 
790
+ sig { returns(T.nilable(T::Boolean)) }
791
+ attr_reader :is_inbound_receptionist
792
+
793
+ sig { params(is_inbound_receptionist: T::Boolean).void }
794
+ attr_writer :is_inbound_receptionist
795
+
859
796
  sig { returns(T.nilable(T::Boolean)) }
860
797
  attr_reader :is_realestate_assistant
861
798
 
@@ -900,8 +837,6 @@ module Revox
900
837
  ]
901
838
  ),
902
839
  email_notification_address: T.nilable(String),
903
- email_notification_language:
904
- Revox::Models::CampaignCreateResponse::Campaign::Assistant::EmailNotificationLanguage::OrSymbol,
905
840
  email_notification_outcomes:
906
841
  T.nilable(
907
842
  T::Array[
@@ -935,6 +870,7 @@ module Revox
935
870
  T.nilable(
936
871
  Revox::Models::CampaignCreateResponse::Campaign::Assistant::Position::OrHash
937
872
  ),
873
+ precall_lookup_url: T.nilable(String),
938
874
  prompt: String,
939
875
  prompt_flow:
940
876
  T.nilable(
@@ -965,7 +901,12 @@ module Revox
965
901
  ),
966
902
  thinking_sound_probability: Float,
967
903
  thinking_sound_volume: Float,
968
- transfer_phone_number: T.nilable(String),
904
+ transfer_destinations:
905
+ T.nilable(
906
+ T::Array[
907
+ Revox::Models::CampaignCreateResponse::Campaign::Assistant::TransferDestination::OrHash
908
+ ]
909
+ ),
969
910
  type:
970
911
  Revox::Models::CampaignCreateResponse::Campaign::Assistant::Type::OrSymbol,
971
912
  updated_at: T.anything,
@@ -989,6 +930,7 @@ module Revox
989
930
  T::Array[
990
931
  Revox::Models::CampaignCreateResponse::Campaign::Assistant::FaqItem::OrHash
991
932
  ],
933
+ is_inbound_receptionist: T::Boolean,
992
934
  is_realestate_assistant: T::Boolean,
993
935
  pending_faq_count: Float
994
936
  ).returns(T.attached_class)
@@ -1017,8 +959,6 @@ module Revox
1017
959
  # outcome. Accepts a single email or a comma-separated list (e.g. "alice@x.com,
1018
960
  # bob@y.com").
1019
961
  email_notification_address:,
1020
- # The language used for the notification email content. One of "en" or "fr".
1021
- email_notification_language:,
1022
962
  # Which call outcomes trigger an email notification. E.g. ["interested",
1023
963
  # "completed", "none"]. Use "none" when outcome is null.
1024
964
  email_notification_outcomes:,
@@ -1030,8 +970,8 @@ module Revox
1030
970
  # Override the default outbound phone number for calls placed with this assistant.
1031
971
  # When null, the organization's default phone number is used.
1032
972
  from_phone_number:,
1033
- # Warm or cold transfer when transfer_phone_number is set; null when transfer is
1034
- # not configured.
973
+ # Warm or cold transfer when transfer_destinations is non-empty; null when
974
+ # transfer is not configured.
1035
975
  human_transfer_mode:,
1036
976
  # Enable IVR navigation tools. When enabled, the assistant can send DTMF tones and
1037
977
  # skip turns to navigate phone menus.
@@ -1050,6 +990,9 @@ module Revox
1050
990
  name:,
1051
991
  organization_id:,
1052
992
  position:,
993
+ # URL fetched before an inbound call is answered to resolve the assistant's prompt
994
+ # variables. Null when no lookup is configured.
995
+ precall_lookup_url:,
1053
996
  prompt:,
1054
997
  prompt_flow:,
1055
998
  slack:,
@@ -1081,8 +1024,9 @@ module Revox
1081
1024
  thinking_sound_probability:,
1082
1025
  # Volume of the thinking sound (0 = silent, 1 = max).
1083
1026
  thinking_sound_volume:,
1084
- # Phone number to transfer calls to when users request to speak to a human agent.
1085
- transfer_phone_number:,
1027
+ # Where calls can be transferred to when users ask to speak to a human. Null or
1028
+ # empty when transfer is not configured.
1029
+ transfer_destinations:,
1086
1030
  type:,
1087
1031
  updated_at:,
1088
1032
  voice:,
@@ -1101,6 +1045,7 @@ module Revox
1101
1045
  # The user who created the assistant.
1102
1046
  created_by: nil,
1103
1047
  faq_items: nil,
1048
+ is_inbound_receptionist: nil,
1104
1049
  is_realestate_assistant: nil,
1105
1050
  pending_faq_count: nil
1106
1051
  )
@@ -1139,8 +1084,6 @@ module Revox
1139
1084
  ]
1140
1085
  ),
1141
1086
  email_notification_address: T.nilable(String),
1142
- email_notification_language:
1143
- Revox::Models::CampaignCreateResponse::Campaign::Assistant::EmailNotificationLanguage::TaggedSymbol,
1144
1087
  email_notification_outcomes:
1145
1088
  T.nilable(
1146
1089
  T::Array[
@@ -1169,6 +1112,7 @@ module Revox
1169
1112
  T.nilable(
1170
1113
  Revox::Models::CampaignCreateResponse::Campaign::Assistant::Position
1171
1114
  ),
1115
+ precall_lookup_url: T.nilable(String),
1172
1116
  prompt: String,
1173
1117
  prompt_flow:
1174
1118
  T.nilable(
@@ -1199,7 +1143,12 @@ module Revox
1199
1143
  ),
1200
1144
  thinking_sound_probability: Float,
1201
1145
  thinking_sound_volume: Float,
1202
- transfer_phone_number: T.nilable(String),
1146
+ transfer_destinations:
1147
+ T.nilable(
1148
+ T::Array[
1149
+ Revox::Models::CampaignCreateResponse::Campaign::Assistant::TransferDestination
1150
+ ]
1151
+ ),
1203
1152
  type:
1204
1153
  Revox::Models::CampaignCreateResponse::Campaign::Assistant::Type::TaggedSymbol,
1205
1154
  updated_at: T.anything,
@@ -1223,6 +1172,7 @@ module Revox
1223
1172
  T::Array[
1224
1173
  Revox::Models::CampaignCreateResponse::Campaign::Assistant::FaqItem
1225
1174
  ],
1175
+ is_inbound_receptionist: T::Boolean,
1226
1176
  is_realestate_assistant: T::Boolean,
1227
1177
  pending_faq_count: Float
1228
1178
  }
@@ -1263,21 +1213,6 @@ module Revox
1263
1213
  :requested_callback_later,
1264
1214
  Revox::Models::CampaignCreateResponse::Campaign::Assistant::AfterCallSMSOutcome::TaggedSymbol
1265
1215
  )
1266
- REQUESTED_CALLBACK_NEW_NUMBER =
1267
- T.let(
1268
- :requested_callback_new_number,
1269
- Revox::Models::CampaignCreateResponse::Campaign::Assistant::AfterCallSMSOutcome::TaggedSymbol
1270
- )
1271
- DO_NOT_CONTACT =
1272
- T.let(
1273
- :do_not_contact,
1274
- Revox::Models::CampaignCreateResponse::Campaign::Assistant::AfterCallSMSOutcome::TaggedSymbol
1275
- )
1276
- AI_AVERSE =
1277
- T.let(
1278
- :ai_averse,
1279
- Revox::Models::CampaignCreateResponse::Campaign::Assistant::AfterCallSMSOutcome::TaggedSymbol
1280
- )
1281
1216
  NONE =
1282
1217
  T.let(
1283
1218
  :none,
@@ -1546,7 +1481,8 @@ module Revox
1546
1481
  sig { returns(String) }
1547
1482
  attr_accessor :calling_window_start_time
1548
1483
 
1549
- # Delay between retry attempts in seconds. Default: 7200 (2 hours).
1484
+ # Delay between retry attempts in seconds. 0 retries as soon as the calling window
1485
+ # allows. Default: 7200 (2 hours).
1550
1486
  sig { returns(Integer) }
1551
1487
  attr_accessor :retry_delay_seconds
1552
1488
 
@@ -1566,7 +1502,8 @@ module Revox
1566
1502
  # timezone_override if provided). Format: 'HH:mm' (24-hour) or 'H:mma' (12-hour).
1567
1503
  # Examples: '09:00', '10am'. Default: '10:00'.
1568
1504
  calling_window_start_time:,
1569
- # Delay between retry attempts in seconds. Default: 7200 (2 hours).
1505
+ # Delay between retry attempts in seconds. 0 retries as soon as the calling window
1506
+ # allows. Default: 7200 (2 hours).
1570
1507
  retry_delay_seconds:
1571
1508
  )
1572
1509
  end
@@ -1953,41 +1890,6 @@ module Revox
1953
1890
  end
1954
1891
  end
1955
1892
 
1956
- # The language used for the notification email content. One of "en" or "fr".
1957
- module EmailNotificationLanguage
1958
- extend Revox::Internal::Type::Enum
1959
-
1960
- TaggedSymbol =
1961
- T.type_alias do
1962
- T.all(
1963
- Symbol,
1964
- Revox::Models::CampaignCreateResponse::Campaign::Assistant::EmailNotificationLanguage
1965
- )
1966
- end
1967
- OrSymbol = T.type_alias { T.any(Symbol, String) }
1968
-
1969
- EN =
1970
- T.let(
1971
- :en,
1972
- Revox::Models::CampaignCreateResponse::Campaign::Assistant::EmailNotificationLanguage::TaggedSymbol
1973
- )
1974
- FR =
1975
- T.let(
1976
- :fr,
1977
- Revox::Models::CampaignCreateResponse::Campaign::Assistant::EmailNotificationLanguage::TaggedSymbol
1978
- )
1979
-
1980
- sig do
1981
- override.returns(
1982
- T::Array[
1983
- Revox::Models::CampaignCreateResponse::Campaign::Assistant::EmailNotificationLanguage::TaggedSymbol
1984
- ]
1985
- )
1986
- end
1987
- def self.values
1988
- end
1989
- end
1990
-
1991
1893
  module EmailNotificationOutcome
1992
1894
  extend Revox::Internal::Type::Enum
1993
1895
 
@@ -2020,21 +1922,6 @@ module Revox
2020
1922
  :requested_callback_later,
2021
1923
  Revox::Models::CampaignCreateResponse::Campaign::Assistant::EmailNotificationOutcome::TaggedSymbol
2022
1924
  )
2023
- REQUESTED_CALLBACK_NEW_NUMBER =
2024
- T.let(
2025
- :requested_callback_new_number,
2026
- Revox::Models::CampaignCreateResponse::Campaign::Assistant::EmailNotificationOutcome::TaggedSymbol
2027
- )
2028
- DO_NOT_CONTACT =
2029
- T.let(
2030
- :do_not_contact,
2031
- Revox::Models::CampaignCreateResponse::Campaign::Assistant::EmailNotificationOutcome::TaggedSymbol
2032
- )
2033
- AI_AVERSE =
2034
- T.let(
2035
- :ai_averse,
2036
- Revox::Models::CampaignCreateResponse::Campaign::Assistant::EmailNotificationOutcome::TaggedSymbol
2037
- )
2038
1925
  NONE =
2039
1926
  T.let(
2040
1927
  :none,
@@ -2091,8 +1978,8 @@ module Revox
2091
1978
  end
2092
1979
  end
2093
1980
 
2094
- # Warm or cold transfer when transfer_phone_number is set; null when transfer is
2095
- # not configured.
1981
+ # Warm or cold transfer when transfer_destinations is non-empty; null when
1982
+ # transfer is not configured.
2096
1983
  module HumanTransferMode
2097
1984
  extend Revox::Internal::Type::Enum
2098
1985
 
@@ -2690,9 +2577,17 @@ module Revox
2690
2577
  )
2691
2578
  end
2692
2579
 
2693
- # The Slack channel ID where the notification will be posted.
2694
- sig { returns(String) }
2695
- attr_accessor :channel_id
2580
+ # The Slack channels eligible to receive the notification. When more than one is
2581
+ # configured, the agent prompt may define routing rules to narrow it down per
2582
+ # call; with no such rules every channel here is notified.
2583
+ sig do
2584
+ returns(
2585
+ T::Array[
2586
+ Revox::Models::CampaignCreateResponse::Campaign::Assistant::Slack::Channel
2587
+ ]
2588
+ )
2589
+ end
2590
+ attr_accessor :channels
2696
2591
 
2697
2592
  # The Nango connection ID linking the org's Slack workspace to Revox.
2698
2593
  sig { returns(String) }
@@ -2709,45 +2604,43 @@ module Revox
2709
2604
  end
2710
2605
  attr_accessor :outcomes
2711
2606
 
2712
- # Human-readable Slack channel name, cached for display in the UI.
2713
- sig { returns(T.nilable(String)) }
2714
- attr_accessor :channel_name
2715
-
2716
2607
  # Optional message template. Supports {{summary}}, {{outcome}}, {{phone}},
2717
2608
  # {{call_url}}, {{assistant_name}}, {{campaign_name}}, {{first_name}},
2718
- # {{last_name}}, {{email}}, {{company}}, {{contact_name}}, {{contact_line}}, plus
2719
- # prompt_variables and structured_output keys. When null/empty a default template
2720
- # is used.
2609
+ # {{last_name}}, {{email}}, {{company}}, {{job_title}}, {{contact_name}},
2610
+ # {{contact_line}}, plus prompt_variables and structured_output keys. When
2611
+ # null/empty a default template is used.
2721
2612
  sig { returns(T.nilable(String)) }
2722
2613
  attr_accessor :template
2723
2614
 
2724
2615
  sig do
2725
2616
  params(
2726
- channel_id: String,
2617
+ channels:
2618
+ T::Array[
2619
+ Revox::Models::CampaignCreateResponse::Campaign::Assistant::Slack::Channel::OrHash
2620
+ ],
2727
2621
  connection_id: String,
2728
2622
  outcomes:
2729
2623
  T::Array[
2730
2624
  Revox::Models::CampaignCreateResponse::Campaign::Assistant::Slack::Outcome::OrSymbol
2731
2625
  ],
2732
- channel_name: T.nilable(String),
2733
2626
  template: T.nilable(String)
2734
2627
  ).returns(T.attached_class)
2735
2628
  end
2736
2629
  def self.new(
2737
- # The Slack channel ID where the notification will be posted.
2738
- channel_id:,
2630
+ # The Slack channels eligible to receive the notification. When more than one is
2631
+ # configured, the agent prompt may define routing rules to narrow it down per
2632
+ # call; with no such rules every channel here is notified.
2633
+ channels:,
2739
2634
  # The Nango connection ID linking the org's Slack workspace to Revox.
2740
2635
  connection_id:,
2741
2636
  # Which call outcomes trigger a Slack notification (e.g. ['interested', 'none']).
2742
2637
  # Use 'none' to notify when outcome is null.
2743
2638
  outcomes:,
2744
- # Human-readable Slack channel name, cached for display in the UI.
2745
- channel_name: nil,
2746
2639
  # Optional message template. Supports {{summary}}, {{outcome}}, {{phone}},
2747
2640
  # {{call_url}}, {{assistant_name}}, {{campaign_name}}, {{first_name}},
2748
- # {{last_name}}, {{email}}, {{company}}, {{contact_name}}, {{contact_line}}, plus
2749
- # prompt_variables and structured_output keys. When null/empty a default template
2750
- # is used.
2641
+ # {{last_name}}, {{email}}, {{company}}, {{job_title}}, {{contact_name}},
2642
+ # {{contact_line}}, plus prompt_variables and structured_output keys. When
2643
+ # null/empty a default template is used.
2751
2644
  template: nil
2752
2645
  )
2753
2646
  end
@@ -2755,13 +2648,15 @@ module Revox
2755
2648
  sig do
2756
2649
  override.returns(
2757
2650
  {
2758
- channel_id: String,
2651
+ channels:
2652
+ T::Array[
2653
+ Revox::Models::CampaignCreateResponse::Campaign::Assistant::Slack::Channel
2654
+ ],
2759
2655
  connection_id: String,
2760
2656
  outcomes:
2761
2657
  T::Array[
2762
2658
  Revox::Models::CampaignCreateResponse::Campaign::Assistant::Slack::Outcome::TaggedSymbol
2763
2659
  ],
2764
- channel_name: T.nilable(String),
2765
2660
  template: T.nilable(String)
2766
2661
  }
2767
2662
  )
@@ -2769,6 +2664,43 @@ module Revox
2769
2664
  def to_hash
2770
2665
  end
2771
2666
 
2667
+ class Channel < Revox::Internal::Type::BaseModel
2668
+ OrHash =
2669
+ T.type_alias do
2670
+ T.any(
2671
+ Revox::Models::CampaignCreateResponse::Campaign::Assistant::Slack::Channel,
2672
+ Revox::Internal::AnyHash
2673
+ )
2674
+ end
2675
+
2676
+ # The Slack channel ID (e.g. 'C01234567').
2677
+ sig { returns(String) }
2678
+ attr_accessor :id
2679
+
2680
+ # Human-readable Slack channel name, cached for display in the UI and given to the
2681
+ # LLM when the agent prompt routes by channel name.
2682
+ sig { returns(T.nilable(String)) }
2683
+ attr_accessor :name
2684
+
2685
+ sig do
2686
+ params(id: String, name: T.nilable(String)).returns(
2687
+ T.attached_class
2688
+ )
2689
+ end
2690
+ def self.new(
2691
+ # The Slack channel ID (e.g. 'C01234567').
2692
+ id:,
2693
+ # Human-readable Slack channel name, cached for display in the UI and given to the
2694
+ # LLM when the agent prompt routes by channel name.
2695
+ name: nil
2696
+ )
2697
+ end
2698
+
2699
+ sig { override.returns({ id: String, name: T.nilable(String) }) }
2700
+ def to_hash
2701
+ end
2702
+ end
2703
+
2772
2704
  module Outcome
2773
2705
  extend Revox::Internal::Type::Enum
2774
2706
 
@@ -2801,21 +2733,6 @@ module Revox
2801
2733
  :requested_callback_later,
2802
2734
  Revox::Models::CampaignCreateResponse::Campaign::Assistant::Slack::Outcome::TaggedSymbol
2803
2735
  )
2804
- REQUESTED_CALLBACK_NEW_NUMBER =
2805
- T.let(
2806
- :requested_callback_new_number,
2807
- Revox::Models::CampaignCreateResponse::Campaign::Assistant::Slack::Outcome::TaggedSymbol
2808
- )
2809
- DO_NOT_CONTACT =
2810
- T.let(
2811
- :do_not_contact,
2812
- Revox::Models::CampaignCreateResponse::Campaign::Assistant::Slack::Outcome::TaggedSymbol
2813
- )
2814
- AI_AVERSE =
2815
- T.let(
2816
- :ai_averse,
2817
- Revox::Models::CampaignCreateResponse::Campaign::Assistant::Slack::Outcome::TaggedSymbol
2818
- )
2819
2736
  NONE =
2820
2737
  T.let(
2821
2738
  :none,
@@ -3130,6 +3047,34 @@ module Revox
3130
3047
  end
3131
3048
  end
3132
3049
 
3050
+ class TransferDestination < Revox::Internal::Type::BaseModel
3051
+ OrHash =
3052
+ T.type_alias do
3053
+ T.any(
3054
+ Revox::Models::CampaignCreateResponse::Campaign::Assistant::TransferDestination,
3055
+ Revox::Internal::AnyHash
3056
+ )
3057
+ end
3058
+
3059
+ sig { returns(String) }
3060
+ attr_accessor :label
3061
+
3062
+ sig { returns(String) }
3063
+ attr_accessor :phone_number
3064
+
3065
+ sig do
3066
+ params(label: String, phone_number: String).returns(
3067
+ T.attached_class
3068
+ )
3069
+ end
3070
+ def self.new(label:, phone_number:)
3071
+ end
3072
+
3073
+ sig { override.returns({ label: String, phone_number: String }) }
3074
+ def to_hash
3075
+ end
3076
+ end
3077
+
3133
3078
  module Type
3134
3079
  extend Revox::Internal::Type::Enum
3135
3080
 
@@ -3210,7 +3155,7 @@ module Revox
3210
3155
  attr_writer :model
3211
3156
 
3212
3157
  # The speed of the voice. Range depends on provider: Cartesia 0.6–1.5, ElevenLabs
3213
- # 0.7–1.2. Default is 1.0.
3158
+ # 0.7–1.2, Gradium 0.6–1.5. Default is 1.0.
3214
3159
  sig { returns(T.nilable(Float)) }
3215
3160
  attr_reader :speed
3216
3161
 
@@ -3245,7 +3190,7 @@ module Revox
3245
3190
  # for other providers.
3246
3191
  model: nil,
3247
3192
  # The speed of the voice. Range depends on provider: Cartesia 0.6–1.5, ElevenLabs
3248
- # 0.7–1.2. Default is 1.0.
3193
+ # 0.7–1.2, Gradium 0.6–1.5. Default is 1.0.
3249
3194
  speed: nil,
3250
3195
  # Volume of the voice (Cartesia only). 0.5–2.0, default 1.0. Ignored for other
3251
3196
  # providers.
@@ -3292,6 +3237,11 @@ module Revox
3292
3237
  :elevenlabs,
3293
3238
  Revox::Models::CampaignCreateResponse::Campaign::Assistant::Voice::Provider::TaggedSymbol
3294
3239
  )
3240
+ GRADIUM =
3241
+ T.let(
3242
+ :gradium,
3243
+ Revox::Models::CampaignCreateResponse::Campaign::Assistant::Voice::Provider::TaggedSymbol
3244
+ )
3295
3245
 
3296
3246
  sig do
3297
3247
  override.returns(
@@ -3522,21 +3472,6 @@ module Revox
3522
3472
  :requested_callback_later,
3523
3473
  Revox::Models::CampaignCreateResponse::Campaign::Assistant::Zoho::Outcome::TaggedSymbol
3524
3474
  )
3525
- REQUESTED_CALLBACK_NEW_NUMBER =
3526
- T.let(
3527
- :requested_callback_new_number,
3528
- Revox::Models::CampaignCreateResponse::Campaign::Assistant::Zoho::Outcome::TaggedSymbol
3529
- )
3530
- DO_NOT_CONTACT =
3531
- T.let(
3532
- :do_not_contact,
3533
- Revox::Models::CampaignCreateResponse::Campaign::Assistant::Zoho::Outcome::TaggedSymbol
3534
- )
3535
- AI_AVERSE =
3536
- T.let(
3537
- :ai_averse,
3538
- Revox::Models::CampaignCreateResponse::Campaign::Assistant::Zoho::Outcome::TaggedSymbol
3539
- )
3540
3475
  NONE =
3541
3476
  T.let(
3542
3477
  :none,
@@ -3905,7 +3840,8 @@ module Revox
3905
3840
  sig { returns(String) }
3906
3841
  attr_accessor :calling_window_start_time
3907
3842
 
3908
- # Delay between retry attempts in seconds. Default: 7200 (2 hours).
3843
+ # Delay between retry attempts in seconds. 0 retries as soon as the calling window
3844
+ # allows. Default: 7200 (2 hours).
3909
3845
  sig { returns(Integer) }
3910
3846
  attr_accessor :retry_delay_seconds
3911
3847
 
@@ -3925,7 +3861,8 @@ module Revox
3925
3861
  # timezone_override if provided). Format: 'HH:mm' (24-hour) or 'H:mma' (12-hour).
3926
3862
  # Examples: '09:00', '10am'. Default: '10:00'.
3927
3863
  calling_window_start_time:,
3928
- # Delay between retry attempts in seconds. Default: 7200 (2 hours).
3864
+ # Delay between retry attempts in seconds. 0 retries as soon as the calling window
3865
+ # allows. Default: 7200 (2 hours).
3929
3866
  retry_delay_seconds:
3930
3867
  )
3931
3868
  end
@@ -4035,40 +3972,6 @@ module Revox
4035
3972
  end
4036
3973
  end
4037
3974
 
4038
- module PausedReason
4039
- extend Revox::Internal::Type::Enum
4040
-
4041
- TaggedSymbol =
4042
- T.type_alias do
4043
- T.all(
4044
- Symbol,
4045
- Revox::Models::CampaignCreateResponse::Campaign::PausedReason
4046
- )
4047
- end
4048
- OrSymbol = T.type_alias { T.any(Symbol, String) }
4049
-
4050
- MANUAL =
4051
- T.let(
4052
- :manual,
4053
- Revox::Models::CampaignCreateResponse::Campaign::PausedReason::TaggedSymbol
4054
- )
4055
- NO_PRESENCE =
4056
- T.let(
4057
- :no_presence,
4058
- Revox::Models::CampaignCreateResponse::Campaign::PausedReason::TaggedSymbol
4059
- )
4060
-
4061
- sig do
4062
- override.returns(
4063
- T::Array[
4064
- Revox::Models::CampaignCreateResponse::Campaign::PausedReason::TaggedSymbol
4065
- ]
4066
- )
4067
- end
4068
- def self.values
4069
- end
4070
- end
4071
-
4072
3975
  class RowStats < Revox::Internal::Type::BaseModel
4073
3976
  OrHash =
4074
3977
  T.type_alias do
@@ -4087,12 +3990,18 @@ module Revox
4087
3990
  sig { returns(Float) }
4088
3991
  attr_accessor :failed
4089
3992
 
3993
+ sig { returns(Float) }
3994
+ attr_accessor :not_launched
3995
+
4090
3996
  sig { returns(Float) }
4091
3997
  attr_accessor :pending
4092
3998
 
4093
3999
  sig { returns(Float) }
4094
4000
  attr_accessor :retry_
4095
4001
 
4002
+ sig { returns(Float) }
4003
+ attr_accessor :skipped
4004
+
4096
4005
  sig { returns(Float) }
4097
4006
  attr_accessor :total
4098
4007
 
@@ -4101,12 +4010,23 @@ module Revox
4101
4010
  calling: Float,
4102
4011
  completed: Float,
4103
4012
  failed: Float,
4013
+ not_launched: Float,
4104
4014
  pending: Float,
4105
4015
  retry_: Float,
4016
+ skipped: Float,
4106
4017
  total: Float
4107
4018
  ).returns(T.attached_class)
4108
4019
  end
4109
- def self.new(calling:, completed:, failed:, pending:, retry_:, total:)
4020
+ def self.new(
4021
+ calling:,
4022
+ completed:,
4023
+ failed:,
4024
+ not_launched:,
4025
+ pending:,
4026
+ retry_:,
4027
+ skipped:,
4028
+ total:
4029
+ )
4110
4030
  end
4111
4031
 
4112
4032
  sig do
@@ -4115,8 +4035,10 @@ module Revox
4115
4035
  calling: Float,
4116
4036
  completed: Float,
4117
4037
  failed: Float,
4038
+ not_launched: Float,
4118
4039
  pending: Float,
4119
4040
  retry_: Float,
4041
+ skipped: Float,
4120
4042
  total: Float
4121
4043
  }
4122
4044
  )