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
@@ -168,14 +168,6 @@ module Revox
168
168
  sig { returns(T.nilable(String)) }
169
169
  attr_accessor :email_notification_address
170
170
 
171
- # The language used for the notification email content. One of "en" or "fr".
172
- sig do
173
- returns(
174
- Revox::Models::AssistantUpdateResponse::Assistant::EmailNotificationLanguage::TaggedSymbol
175
- )
176
- end
177
- attr_accessor :email_notification_language
178
-
179
171
  # Which call outcomes trigger an email notification. E.g. ["interested",
180
172
  # "completed", "none"]. Use "none" when outcome is null.
181
173
  sig do
@@ -211,8 +203,8 @@ module Revox
211
203
  sig { returns(T.nilable(String)) }
212
204
  attr_accessor :from_phone_number
213
205
 
214
- # Warm or cold transfer when transfer_phone_number is set; null when transfer is
215
- # not configured.
206
+ # Warm or cold transfer when transfer_destinations is non-empty; null when
207
+ # transfer is not configured.
216
208
  sig do
217
209
  returns(
218
210
  T.nilable(
@@ -275,6 +267,11 @@ module Revox
275
267
  end
276
268
  attr_writer :position
277
269
 
270
+ # URL fetched before an inbound call is answered to resolve the assistant's prompt
271
+ # variables. Null when no lookup is configured.
272
+ sig { returns(T.nilable(String)) }
273
+ attr_accessor :precall_lookup_url
274
+
278
275
  sig { returns(String) }
279
276
  attr_accessor :prompt
280
277
 
@@ -394,9 +391,18 @@ module Revox
394
391
  sig { returns(Float) }
395
392
  attr_accessor :thinking_sound_volume
396
393
 
397
- # Phone number to transfer calls to when users request to speak to a human agent.
398
- sig { returns(T.nilable(String)) }
399
- attr_accessor :transfer_phone_number
394
+ # Where calls can be transferred to when users ask to speak to a human. Null or
395
+ # empty when transfer is not configured.
396
+ sig do
397
+ returns(
398
+ T.nilable(
399
+ T::Array[
400
+ Revox::Models::AssistantUpdateResponse::Assistant::TransferDestination
401
+ ]
402
+ )
403
+ )
404
+ end
405
+ attr_accessor :transfer_destinations
400
406
 
401
407
  sig do
402
408
  returns(
@@ -502,6 +508,12 @@ module Revox
502
508
  end
503
509
  attr_writer :faq_items
504
510
 
511
+ sig { returns(T.nilable(T::Boolean)) }
512
+ attr_reader :is_inbound_receptionist
513
+
514
+ sig { params(is_inbound_receptionist: T::Boolean).void }
515
+ attr_writer :is_inbound_receptionist
516
+
505
517
  sig { returns(T.nilable(T::Boolean)) }
506
518
  attr_reader :is_realestate_assistant
507
519
 
@@ -546,8 +558,6 @@ module Revox
546
558
  ]
547
559
  ),
548
560
  email_notification_address: T.nilable(String),
549
- email_notification_language:
550
- Revox::Models::AssistantUpdateResponse::Assistant::EmailNotificationLanguage::OrSymbol,
551
561
  email_notification_outcomes:
552
562
  T.nilable(
553
563
  T::Array[
@@ -581,6 +591,7 @@ module Revox
581
591
  T.nilable(
582
592
  Revox::Models::AssistantUpdateResponse::Assistant::Position::OrHash
583
593
  ),
594
+ precall_lookup_url: T.nilable(String),
584
595
  prompt: String,
585
596
  prompt_flow:
586
597
  T.nilable(
@@ -611,7 +622,12 @@ module Revox
611
622
  ),
612
623
  thinking_sound_probability: Float,
613
624
  thinking_sound_volume: Float,
614
- transfer_phone_number: T.nilable(String),
625
+ transfer_destinations:
626
+ T.nilable(
627
+ T::Array[
628
+ Revox::Models::AssistantUpdateResponse::Assistant::TransferDestination::OrHash
629
+ ]
630
+ ),
615
631
  type:
616
632
  Revox::Models::AssistantUpdateResponse::Assistant::Type::OrSymbol,
617
633
  updated_at: T.anything,
@@ -635,6 +651,7 @@ module Revox
635
651
  T::Array[
636
652
  Revox::Models::AssistantUpdateResponse::Assistant::FaqItem::OrHash
637
653
  ],
654
+ is_inbound_receptionist: T::Boolean,
638
655
  is_realestate_assistant: T::Boolean,
639
656
  pending_faq_count: Float
640
657
  ).returns(T.attached_class)
@@ -663,8 +680,6 @@ module Revox
663
680
  # outcome. Accepts a single email or a comma-separated list (e.g. "alice@x.com,
664
681
  # bob@y.com").
665
682
  email_notification_address:,
666
- # The language used for the notification email content. One of "en" or "fr".
667
- email_notification_language:,
668
683
  # Which call outcomes trigger an email notification. E.g. ["interested",
669
684
  # "completed", "none"]. Use "none" when outcome is null.
670
685
  email_notification_outcomes:,
@@ -676,8 +691,8 @@ module Revox
676
691
  # Override the default outbound phone number for calls placed with this assistant.
677
692
  # When null, the organization's default phone number is used.
678
693
  from_phone_number:,
679
- # Warm or cold transfer when transfer_phone_number is set; null when transfer is
680
- # not configured.
694
+ # Warm or cold transfer when transfer_destinations is non-empty; null when
695
+ # transfer is not configured.
681
696
  human_transfer_mode:,
682
697
  # Enable IVR navigation tools. When enabled, the assistant can send DTMF tones and
683
698
  # skip turns to navigate phone menus.
@@ -696,6 +711,9 @@ module Revox
696
711
  name:,
697
712
  organization_id:,
698
713
  position:,
714
+ # URL fetched before an inbound call is answered to resolve the assistant's prompt
715
+ # variables. Null when no lookup is configured.
716
+ precall_lookup_url:,
699
717
  prompt:,
700
718
  prompt_flow:,
701
719
  slack:,
@@ -727,8 +745,9 @@ module Revox
727
745
  thinking_sound_probability:,
728
746
  # Volume of the thinking sound (0 = silent, 1 = max).
729
747
  thinking_sound_volume:,
730
- # Phone number to transfer calls to when users request to speak to a human agent.
731
- transfer_phone_number:,
748
+ # Where calls can be transferred to when users ask to speak to a human. Null or
749
+ # empty when transfer is not configured.
750
+ transfer_destinations:,
732
751
  type:,
733
752
  updated_at:,
734
753
  voice:,
@@ -747,6 +766,7 @@ module Revox
747
766
  # The user who created the assistant.
748
767
  created_by: nil,
749
768
  faq_items: nil,
769
+ is_inbound_receptionist: nil,
750
770
  is_realestate_assistant: nil,
751
771
  pending_faq_count: nil
752
772
  )
@@ -785,8 +805,6 @@ module Revox
785
805
  ]
786
806
  ),
787
807
  email_notification_address: T.nilable(String),
788
- email_notification_language:
789
- Revox::Models::AssistantUpdateResponse::Assistant::EmailNotificationLanguage::TaggedSymbol,
790
808
  email_notification_outcomes:
791
809
  T.nilable(
792
810
  T::Array[
@@ -815,6 +833,7 @@ module Revox
815
833
  T.nilable(
816
834
  Revox::Models::AssistantUpdateResponse::Assistant::Position
817
835
  ),
836
+ precall_lookup_url: T.nilable(String),
818
837
  prompt: String,
819
838
  prompt_flow:
820
839
  T.nilable(
@@ -845,7 +864,12 @@ module Revox
845
864
  ),
846
865
  thinking_sound_probability: Float,
847
866
  thinking_sound_volume: Float,
848
- transfer_phone_number: T.nilable(String),
867
+ transfer_destinations:
868
+ T.nilable(
869
+ T::Array[
870
+ Revox::Models::AssistantUpdateResponse::Assistant::TransferDestination
871
+ ]
872
+ ),
849
873
  type:
850
874
  Revox::Models::AssistantUpdateResponse::Assistant::Type::TaggedSymbol,
851
875
  updated_at: T.anything,
@@ -869,6 +893,7 @@ module Revox
869
893
  T::Array[
870
894
  Revox::Models::AssistantUpdateResponse::Assistant::FaqItem
871
895
  ],
896
+ is_inbound_receptionist: T::Boolean,
872
897
  is_realestate_assistant: T::Boolean,
873
898
  pending_faq_count: Float
874
899
  }
@@ -909,21 +934,6 @@ module Revox
909
934
  :requested_callback_later,
910
935
  Revox::Models::AssistantUpdateResponse::Assistant::AfterCallSMSOutcome::TaggedSymbol
911
936
  )
912
- REQUESTED_CALLBACK_NEW_NUMBER =
913
- T.let(
914
- :requested_callback_new_number,
915
- Revox::Models::AssistantUpdateResponse::Assistant::AfterCallSMSOutcome::TaggedSymbol
916
- )
917
- DO_NOT_CONTACT =
918
- T.let(
919
- :do_not_contact,
920
- Revox::Models::AssistantUpdateResponse::Assistant::AfterCallSMSOutcome::TaggedSymbol
921
- )
922
- AI_AVERSE =
923
- T.let(
924
- :ai_averse,
925
- Revox::Models::AssistantUpdateResponse::Assistant::AfterCallSMSOutcome::TaggedSymbol
926
- )
927
937
  NONE =
928
938
  T.let(
929
939
  :none,
@@ -1192,7 +1202,8 @@ module Revox
1192
1202
  sig { returns(String) }
1193
1203
  attr_accessor :calling_window_start_time
1194
1204
 
1195
- # Delay between retry attempts in seconds. Default: 7200 (2 hours).
1205
+ # Delay between retry attempts in seconds. 0 retries as soon as the calling window
1206
+ # allows. Default: 7200 (2 hours).
1196
1207
  sig { returns(Integer) }
1197
1208
  attr_accessor :retry_delay_seconds
1198
1209
 
@@ -1212,7 +1223,8 @@ module Revox
1212
1223
  # timezone_override if provided). Format: 'HH:mm' (24-hour) or 'H:mma' (12-hour).
1213
1224
  # Examples: '09:00', '10am'. Default: '10:00'.
1214
1225
  calling_window_start_time:,
1215
- # Delay between retry attempts in seconds. Default: 7200 (2 hours).
1226
+ # Delay between retry attempts in seconds. 0 retries as soon as the calling window
1227
+ # allows. Default: 7200 (2 hours).
1216
1228
  retry_delay_seconds:
1217
1229
  )
1218
1230
  end
@@ -1595,41 +1607,6 @@ module Revox
1595
1607
  end
1596
1608
  end
1597
1609
 
1598
- # The language used for the notification email content. One of "en" or "fr".
1599
- module EmailNotificationLanguage
1600
- extend Revox::Internal::Type::Enum
1601
-
1602
- TaggedSymbol =
1603
- T.type_alias do
1604
- T.all(
1605
- Symbol,
1606
- Revox::Models::AssistantUpdateResponse::Assistant::EmailNotificationLanguage
1607
- )
1608
- end
1609
- OrSymbol = T.type_alias { T.any(Symbol, String) }
1610
-
1611
- EN =
1612
- T.let(
1613
- :en,
1614
- Revox::Models::AssistantUpdateResponse::Assistant::EmailNotificationLanguage::TaggedSymbol
1615
- )
1616
- FR =
1617
- T.let(
1618
- :fr,
1619
- Revox::Models::AssistantUpdateResponse::Assistant::EmailNotificationLanguage::TaggedSymbol
1620
- )
1621
-
1622
- sig do
1623
- override.returns(
1624
- T::Array[
1625
- Revox::Models::AssistantUpdateResponse::Assistant::EmailNotificationLanguage::TaggedSymbol
1626
- ]
1627
- )
1628
- end
1629
- def self.values
1630
- end
1631
- end
1632
-
1633
1610
  module EmailNotificationOutcome
1634
1611
  extend Revox::Internal::Type::Enum
1635
1612
 
@@ -1662,21 +1639,6 @@ module Revox
1662
1639
  :requested_callback_later,
1663
1640
  Revox::Models::AssistantUpdateResponse::Assistant::EmailNotificationOutcome::TaggedSymbol
1664
1641
  )
1665
- REQUESTED_CALLBACK_NEW_NUMBER =
1666
- T.let(
1667
- :requested_callback_new_number,
1668
- Revox::Models::AssistantUpdateResponse::Assistant::EmailNotificationOutcome::TaggedSymbol
1669
- )
1670
- DO_NOT_CONTACT =
1671
- T.let(
1672
- :do_not_contact,
1673
- Revox::Models::AssistantUpdateResponse::Assistant::EmailNotificationOutcome::TaggedSymbol
1674
- )
1675
- AI_AVERSE =
1676
- T.let(
1677
- :ai_averse,
1678
- Revox::Models::AssistantUpdateResponse::Assistant::EmailNotificationOutcome::TaggedSymbol
1679
- )
1680
1642
  NONE =
1681
1643
  T.let(
1682
1644
  :none,
@@ -1733,8 +1695,8 @@ module Revox
1733
1695
  end
1734
1696
  end
1735
1697
 
1736
- # Warm or cold transfer when transfer_phone_number is set; null when transfer is
1737
- # not configured.
1698
+ # Warm or cold transfer when transfer_destinations is non-empty; null when
1699
+ # transfer is not configured.
1738
1700
  module HumanTransferMode
1739
1701
  extend Revox::Internal::Type::Enum
1740
1702
 
@@ -2332,9 +2294,17 @@ module Revox
2332
2294
  )
2333
2295
  end
2334
2296
 
2335
- # The Slack channel ID where the notification will be posted.
2336
- sig { returns(String) }
2337
- attr_accessor :channel_id
2297
+ # The Slack channels eligible to receive the notification. When more than one is
2298
+ # configured, the agent prompt may define routing rules to narrow it down per
2299
+ # call; with no such rules every channel here is notified.
2300
+ sig do
2301
+ returns(
2302
+ T::Array[
2303
+ Revox::Models::AssistantUpdateResponse::Assistant::Slack::Channel
2304
+ ]
2305
+ )
2306
+ end
2307
+ attr_accessor :channels
2338
2308
 
2339
2309
  # The Nango connection ID linking the org's Slack workspace to Revox.
2340
2310
  sig { returns(String) }
@@ -2351,45 +2321,43 @@ module Revox
2351
2321
  end
2352
2322
  attr_accessor :outcomes
2353
2323
 
2354
- # Human-readable Slack channel name, cached for display in the UI.
2355
- sig { returns(T.nilable(String)) }
2356
- attr_accessor :channel_name
2357
-
2358
2324
  # Optional message template. Supports {{summary}}, {{outcome}}, {{phone}},
2359
2325
  # {{call_url}}, {{assistant_name}}, {{campaign_name}}, {{first_name}},
2360
- # {{last_name}}, {{email}}, {{company}}, {{contact_name}}, {{contact_line}}, plus
2361
- # prompt_variables and structured_output keys. When null/empty a default template
2362
- # is used.
2326
+ # {{last_name}}, {{email}}, {{company}}, {{job_title}}, {{contact_name}},
2327
+ # {{contact_line}}, plus prompt_variables and structured_output keys. When
2328
+ # null/empty a default template is used.
2363
2329
  sig { returns(T.nilable(String)) }
2364
2330
  attr_accessor :template
2365
2331
 
2366
2332
  sig do
2367
2333
  params(
2368
- channel_id: String,
2334
+ channels:
2335
+ T::Array[
2336
+ Revox::Models::AssistantUpdateResponse::Assistant::Slack::Channel::OrHash
2337
+ ],
2369
2338
  connection_id: String,
2370
2339
  outcomes:
2371
2340
  T::Array[
2372
2341
  Revox::Models::AssistantUpdateResponse::Assistant::Slack::Outcome::OrSymbol
2373
2342
  ],
2374
- channel_name: T.nilable(String),
2375
2343
  template: T.nilable(String)
2376
2344
  ).returns(T.attached_class)
2377
2345
  end
2378
2346
  def self.new(
2379
- # The Slack channel ID where the notification will be posted.
2380
- channel_id:,
2347
+ # The Slack channels eligible to receive the notification. When more than one is
2348
+ # configured, the agent prompt may define routing rules to narrow it down per
2349
+ # call; with no such rules every channel here is notified.
2350
+ channels:,
2381
2351
  # The Nango connection ID linking the org's Slack workspace to Revox.
2382
2352
  connection_id:,
2383
2353
  # Which call outcomes trigger a Slack notification (e.g. ['interested', 'none']).
2384
2354
  # Use 'none' to notify when outcome is null.
2385
2355
  outcomes:,
2386
- # Human-readable Slack channel name, cached for display in the UI.
2387
- channel_name: nil,
2388
2356
  # Optional message template. Supports {{summary}}, {{outcome}}, {{phone}},
2389
2357
  # {{call_url}}, {{assistant_name}}, {{campaign_name}}, {{first_name}},
2390
- # {{last_name}}, {{email}}, {{company}}, {{contact_name}}, {{contact_line}}, plus
2391
- # prompt_variables and structured_output keys. When null/empty a default template
2392
- # is used.
2358
+ # {{last_name}}, {{email}}, {{company}}, {{job_title}}, {{contact_name}},
2359
+ # {{contact_line}}, plus prompt_variables and structured_output keys. When
2360
+ # null/empty a default template is used.
2393
2361
  template: nil
2394
2362
  )
2395
2363
  end
@@ -2397,13 +2365,15 @@ module Revox
2397
2365
  sig do
2398
2366
  override.returns(
2399
2367
  {
2400
- channel_id: String,
2368
+ channels:
2369
+ T::Array[
2370
+ Revox::Models::AssistantUpdateResponse::Assistant::Slack::Channel
2371
+ ],
2401
2372
  connection_id: String,
2402
2373
  outcomes:
2403
2374
  T::Array[
2404
2375
  Revox::Models::AssistantUpdateResponse::Assistant::Slack::Outcome::TaggedSymbol
2405
2376
  ],
2406
- channel_name: T.nilable(String),
2407
2377
  template: T.nilable(String)
2408
2378
  }
2409
2379
  )
@@ -2411,6 +2381,43 @@ module Revox
2411
2381
  def to_hash
2412
2382
  end
2413
2383
 
2384
+ class Channel < Revox::Internal::Type::BaseModel
2385
+ OrHash =
2386
+ T.type_alias do
2387
+ T.any(
2388
+ Revox::Models::AssistantUpdateResponse::Assistant::Slack::Channel,
2389
+ Revox::Internal::AnyHash
2390
+ )
2391
+ end
2392
+
2393
+ # The Slack channel ID (e.g. 'C01234567').
2394
+ sig { returns(String) }
2395
+ attr_accessor :id
2396
+
2397
+ # Human-readable Slack channel name, cached for display in the UI and given to the
2398
+ # LLM when the agent prompt routes by channel name.
2399
+ sig { returns(T.nilable(String)) }
2400
+ attr_accessor :name
2401
+
2402
+ sig do
2403
+ params(id: String, name: T.nilable(String)).returns(
2404
+ T.attached_class
2405
+ )
2406
+ end
2407
+ def self.new(
2408
+ # The Slack channel ID (e.g. 'C01234567').
2409
+ id:,
2410
+ # Human-readable Slack channel name, cached for display in the UI and given to the
2411
+ # LLM when the agent prompt routes by channel name.
2412
+ name: nil
2413
+ )
2414
+ end
2415
+
2416
+ sig { override.returns({ id: String, name: T.nilable(String) }) }
2417
+ def to_hash
2418
+ end
2419
+ end
2420
+
2414
2421
  module Outcome
2415
2422
  extend Revox::Internal::Type::Enum
2416
2423
 
@@ -2443,21 +2450,6 @@ module Revox
2443
2450
  :requested_callback_later,
2444
2451
  Revox::Models::AssistantUpdateResponse::Assistant::Slack::Outcome::TaggedSymbol
2445
2452
  )
2446
- REQUESTED_CALLBACK_NEW_NUMBER =
2447
- T.let(
2448
- :requested_callback_new_number,
2449
- Revox::Models::AssistantUpdateResponse::Assistant::Slack::Outcome::TaggedSymbol
2450
- )
2451
- DO_NOT_CONTACT =
2452
- T.let(
2453
- :do_not_contact,
2454
- Revox::Models::AssistantUpdateResponse::Assistant::Slack::Outcome::TaggedSymbol
2455
- )
2456
- AI_AVERSE =
2457
- T.let(
2458
- :ai_averse,
2459
- Revox::Models::AssistantUpdateResponse::Assistant::Slack::Outcome::TaggedSymbol
2460
- )
2461
2453
  NONE =
2462
2454
  T.let(
2463
2455
  :none,
@@ -2770,6 +2762,34 @@ module Revox
2770
2762
  end
2771
2763
  end
2772
2764
 
2765
+ class TransferDestination < Revox::Internal::Type::BaseModel
2766
+ OrHash =
2767
+ T.type_alias do
2768
+ T.any(
2769
+ Revox::Models::AssistantUpdateResponse::Assistant::TransferDestination,
2770
+ Revox::Internal::AnyHash
2771
+ )
2772
+ end
2773
+
2774
+ sig { returns(String) }
2775
+ attr_accessor :label
2776
+
2777
+ sig { returns(String) }
2778
+ attr_accessor :phone_number
2779
+
2780
+ sig do
2781
+ params(label: String, phone_number: String).returns(
2782
+ T.attached_class
2783
+ )
2784
+ end
2785
+ def self.new(label:, phone_number:)
2786
+ end
2787
+
2788
+ sig { override.returns({ label: String, phone_number: String }) }
2789
+ def to_hash
2790
+ end
2791
+ end
2792
+
2773
2793
  module Type
2774
2794
  extend Revox::Internal::Type::Enum
2775
2795
 
@@ -2850,7 +2870,7 @@ module Revox
2850
2870
  attr_writer :model
2851
2871
 
2852
2872
  # The speed of the voice. Range depends on provider: Cartesia 0.6–1.5, ElevenLabs
2853
- # 0.7–1.2. Default is 1.0.
2873
+ # 0.7–1.2, Gradium 0.6–1.5. Default is 1.0.
2854
2874
  sig { returns(T.nilable(Float)) }
2855
2875
  attr_reader :speed
2856
2876
 
@@ -2885,7 +2905,7 @@ module Revox
2885
2905
  # for other providers.
2886
2906
  model: nil,
2887
2907
  # The speed of the voice. Range depends on provider: Cartesia 0.6–1.5, ElevenLabs
2888
- # 0.7–1.2. Default is 1.0.
2908
+ # 0.7–1.2, Gradium 0.6–1.5. Default is 1.0.
2889
2909
  speed: nil,
2890
2910
  # Volume of the voice (Cartesia only). 0.5–2.0, default 1.0. Ignored for other
2891
2911
  # providers.
@@ -2932,6 +2952,11 @@ module Revox
2932
2952
  :elevenlabs,
2933
2953
  Revox::Models::AssistantUpdateResponse::Assistant::Voice::Provider::TaggedSymbol
2934
2954
  )
2955
+ GRADIUM =
2956
+ T.let(
2957
+ :gradium,
2958
+ Revox::Models::AssistantUpdateResponse::Assistant::Voice::Provider::TaggedSymbol
2959
+ )
2935
2960
 
2936
2961
  sig do
2937
2962
  override.returns(
@@ -3162,21 +3187,6 @@ module Revox
3162
3187
  :requested_callback_later,
3163
3188
  Revox::Models::AssistantUpdateResponse::Assistant::Zoho::Outcome::TaggedSymbol
3164
3189
  )
3165
- REQUESTED_CALLBACK_NEW_NUMBER =
3166
- T.let(
3167
- :requested_callback_new_number,
3168
- Revox::Models::AssistantUpdateResponse::Assistant::Zoho::Outcome::TaggedSymbol
3169
- )
3170
- DO_NOT_CONTACT =
3171
- T.let(
3172
- :do_not_contact,
3173
- Revox::Models::AssistantUpdateResponse::Assistant::Zoho::Outcome::TaggedSymbol
3174
- )
3175
- AI_AVERSE =
3176
- T.let(
3177
- :ai_averse,
3178
- Revox::Models::AssistantUpdateResponse::Assistant::Zoho::Outcome::TaggedSymbol
3179
- )
3180
3190
  NONE =
3181
3191
  T.let(
3182
3192
  :none,
@@ -0,0 +1,27 @@
1
+ # typed: strong
2
+
3
+ module Revox
4
+ module Models
5
+ class AuthStatusRetrieveParams < Revox::Internal::Type::BaseModel
6
+ extend Revox::Internal::Type::RequestParameters::Converter
7
+ include Revox::Internal::Type::RequestParameters
8
+
9
+ OrHash =
10
+ T.type_alias do
11
+ T.any(Revox::AuthStatusRetrieveParams, Revox::Internal::AnyHash)
12
+ end
13
+
14
+ sig do
15
+ params(request_options: Revox::RequestOptions::OrHash).returns(
16
+ T.attached_class
17
+ )
18
+ end
19
+ def self.new(request_options: {})
20
+ end
21
+
22
+ sig { override.returns({ request_options: Revox::RequestOptions }) }
23
+ def to_hash
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,30 @@
1
+ # typed: strong
2
+
3
+ module Revox
4
+ module Models
5
+ class AuthStatusRetrieveResponse < Revox::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(
9
+ Revox::Models::AuthStatusRetrieveResponse,
10
+ Revox::Internal::AnyHash
11
+ )
12
+ end
13
+
14
+ # True if the API key is still valid.
15
+ sig { returns(T::Boolean) }
16
+ attr_accessor :authenticated
17
+
18
+ sig { params(authenticated: T::Boolean).returns(T.attached_class) }
19
+ def self.new(
20
+ # True if the API key is still valid.
21
+ authenticated:
22
+ )
23
+ end
24
+
25
+ sig { override.returns({ authenticated: T::Boolean }) }
26
+ def to_hash
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,33 @@
1
+ # typed: strong
2
+
3
+ module Revox
4
+ module Models
5
+ class CallCancelParams < Revox::Internal::Type::BaseModel
6
+ extend Revox::Internal::Type::RequestParameters::Converter
7
+ include Revox::Internal::Type::RequestParameters
8
+
9
+ OrHash =
10
+ T.type_alias do
11
+ T.any(Revox::CallCancelParams, Revox::Internal::AnyHash)
12
+ end
13
+
14
+ sig { returns(String) }
15
+ attr_accessor :id
16
+
17
+ sig do
18
+ params(
19
+ id: String,
20
+ request_options: Revox::RequestOptions::OrHash
21
+ ).returns(T.attached_class)
22
+ end
23
+ def self.new(id:, request_options: {})
24
+ end
25
+
26
+ sig do
27
+ override.returns({ id: String, request_options: Revox::RequestOptions })
28
+ end
29
+ def to_hash
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,23 @@
1
+ # typed: strong
2
+
3
+ module Revox
4
+ module Models
5
+ class CallCancelResponse < Revox::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(Revox::Models::CallCancelResponse, Revox::Internal::AnyHash)
9
+ end
10
+
11
+ sig { returns(T::Boolean) }
12
+ attr_accessor :success
13
+
14
+ sig { params(success: T::Boolean).returns(T.attached_class) }
15
+ def self.new(success:)
16
+ end
17
+
18
+ sig { override.returns({ success: T::Boolean }) }
19
+ def to_hash
20
+ end
21
+ end
22
+ end
23
+ end