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
@@ -0,0 +1,27 @@
1
+ # typed: strong
2
+
3
+ module Revox
4
+ module Models
5
+ class UserRetrieveParams < 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::UserRetrieveParams, 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,140 @@
1
+ # typed: strong
2
+
3
+ module Revox
4
+ module Models
5
+ class UserRetrieveResponse < Revox::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(Revox::Models::UserRetrieveResponse, Revox::Internal::AnyHash)
9
+ end
10
+
11
+ # The current authenticated user.
12
+ sig { returns(Revox::Models::UserRetrieveResponse::User) }
13
+ attr_reader :user
14
+
15
+ sig do
16
+ params(user: Revox::Models::UserRetrieveResponse::User::OrHash).void
17
+ end
18
+ attr_writer :user
19
+
20
+ sig do
21
+ params(user: Revox::Models::UserRetrieveResponse::User::OrHash).returns(
22
+ T.attached_class
23
+ )
24
+ end
25
+ def self.new(
26
+ # The current authenticated user.
27
+ user:
28
+ )
29
+ end
30
+
31
+ sig do
32
+ override.returns({ user: Revox::Models::UserRetrieveResponse::User })
33
+ end
34
+ def to_hash
35
+ end
36
+
37
+ class User < Revox::Internal::Type::BaseModel
38
+ OrHash =
39
+ T.type_alias do
40
+ T.any(
41
+ Revox::Models::UserRetrieveResponse::User,
42
+ Revox::Internal::AnyHash
43
+ )
44
+ end
45
+
46
+ # The unique identifier of the user.
47
+ sig { returns(String) }
48
+ attr_accessor :id
49
+
50
+ # The time the user was created.
51
+ sig { returns(T.anything) }
52
+ attr_accessor :created_at
53
+
54
+ # The email address of the user.
55
+ sig { returns(String) }
56
+ attr_accessor :email
57
+
58
+ # The first name of the user.
59
+ sig { returns(T.nilable(String)) }
60
+ attr_accessor :first_name
61
+
62
+ # Whether the user has completed the onboarding tutorial.
63
+ sig { returns(T::Boolean) }
64
+ attr_accessor :has_completed_onboarding
65
+
66
+ # The last name of the user.
67
+ sig { returns(T.nilable(String)) }
68
+ attr_accessor :last_name
69
+
70
+ # The ID of the organization the user belongs to.
71
+ sig { returns(String) }
72
+ attr_accessor :organization_id
73
+
74
+ # The time the user was last updated.
75
+ sig { returns(T.anything) }
76
+ attr_accessor :updated_at
77
+
78
+ # ISO 3166-1 alpha-2 country code of the organization (e.g. FR). Used as the
79
+ # default region when normalizing national-format phone numbers.
80
+ sig { returns(T.nilable(String)) }
81
+ attr_accessor :organization_country
82
+
83
+ # The current authenticated user.
84
+ sig do
85
+ params(
86
+ id: String,
87
+ created_at: T.anything,
88
+ email: String,
89
+ first_name: T.nilable(String),
90
+ has_completed_onboarding: T::Boolean,
91
+ last_name: T.nilable(String),
92
+ organization_id: String,
93
+ updated_at: T.anything,
94
+ organization_country: T.nilable(String)
95
+ ).returns(T.attached_class)
96
+ end
97
+ def self.new(
98
+ # The unique identifier of the user.
99
+ id:,
100
+ # The time the user was created.
101
+ created_at:,
102
+ # The email address of the user.
103
+ email:,
104
+ # The first name of the user.
105
+ first_name:,
106
+ # Whether the user has completed the onboarding tutorial.
107
+ has_completed_onboarding:,
108
+ # The last name of the user.
109
+ last_name:,
110
+ # The ID of the organization the user belongs to.
111
+ organization_id:,
112
+ # The time the user was last updated.
113
+ updated_at:,
114
+ # ISO 3166-1 alpha-2 country code of the organization (e.g. FR). Used as the
115
+ # default region when normalizing national-format phone numbers.
116
+ organization_country: nil
117
+ )
118
+ end
119
+
120
+ sig do
121
+ override.returns(
122
+ {
123
+ id: String,
124
+ created_at: T.anything,
125
+ email: String,
126
+ first_name: T.nilable(String),
127
+ has_completed_onboarding: T::Boolean,
128
+ last_name: T.nilable(String),
129
+ organization_id: String,
130
+ updated_at: T.anything,
131
+ organization_country: T.nilable(String)
132
+ }
133
+ )
134
+ end
135
+ def to_hash
136
+ end
137
+ end
138
+ end
139
+ end
140
+ end
@@ -0,0 +1,141 @@
1
+ # typed: strong
2
+
3
+ module Revox
4
+ module Models
5
+ class VoiceCloneParams < 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::VoiceCloneParams, Revox::Internal::AnyHash)
12
+ end
13
+
14
+ # Base64-encoded audio data (max ~7.5MB decoded)
15
+ sig { returns(String) }
16
+ attr_accessor :audio
17
+
18
+ # MIME type of the audio
19
+ sig { returns(Revox::VoiceCloneParams::ContentType::OrSymbol) }
20
+ attr_accessor :content_type
21
+
22
+ # Language of the voice
23
+ sig { returns(Revox::VoiceCloneParams::Language::OrSymbol) }
24
+ attr_accessor :language
25
+
26
+ # Name for the cloned voice
27
+ sig { returns(String) }
28
+ attr_accessor :name
29
+
30
+ sig do
31
+ params(
32
+ audio: String,
33
+ content_type: Revox::VoiceCloneParams::ContentType::OrSymbol,
34
+ language: Revox::VoiceCloneParams::Language::OrSymbol,
35
+ name: String,
36
+ request_options: Revox::RequestOptions::OrHash
37
+ ).returns(T.attached_class)
38
+ end
39
+ def self.new(
40
+ # Base64-encoded audio data (max ~7.5MB decoded)
41
+ audio:,
42
+ # MIME type of the audio
43
+ content_type:,
44
+ # Language of the voice
45
+ language:,
46
+ # Name for the cloned voice
47
+ name:,
48
+ request_options: {}
49
+ )
50
+ end
51
+
52
+ sig do
53
+ override.returns(
54
+ {
55
+ audio: String,
56
+ content_type: Revox::VoiceCloneParams::ContentType::OrSymbol,
57
+ language: Revox::VoiceCloneParams::Language::OrSymbol,
58
+ name: String,
59
+ request_options: Revox::RequestOptions
60
+ }
61
+ )
62
+ end
63
+ def to_hash
64
+ end
65
+
66
+ # MIME type of the audio
67
+ module ContentType
68
+ extend Revox::Internal::Type::Enum
69
+
70
+ TaggedSymbol =
71
+ T.type_alias { T.all(Symbol, Revox::VoiceCloneParams::ContentType) }
72
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
73
+
74
+ AUDIO_WEBM =
75
+ T.let(
76
+ :"audio/webm",
77
+ Revox::VoiceCloneParams::ContentType::TaggedSymbol
78
+ )
79
+ AUDIO_WAV =
80
+ T.let(
81
+ :"audio/wav",
82
+ Revox::VoiceCloneParams::ContentType::TaggedSymbol
83
+ )
84
+ AUDIO_MPEG =
85
+ T.let(
86
+ :"audio/mpeg",
87
+ Revox::VoiceCloneParams::ContentType::TaggedSymbol
88
+ )
89
+ AUDIO_OGG =
90
+ T.let(
91
+ :"audio/ogg",
92
+ Revox::VoiceCloneParams::ContentType::TaggedSymbol
93
+ )
94
+ AUDIO_MP4 =
95
+ T.let(
96
+ :"audio/mp4",
97
+ Revox::VoiceCloneParams::ContentType::TaggedSymbol
98
+ )
99
+ VIDEO_WEBM =
100
+ T.let(
101
+ :"video/webm",
102
+ Revox::VoiceCloneParams::ContentType::TaggedSymbol
103
+ )
104
+
105
+ sig do
106
+ override.returns(
107
+ T::Array[Revox::VoiceCloneParams::ContentType::TaggedSymbol]
108
+ )
109
+ end
110
+ def self.values
111
+ end
112
+ end
113
+
114
+ # Language of the voice
115
+ module Language
116
+ extend Revox::Internal::Type::Enum
117
+
118
+ TaggedSymbol =
119
+ T.type_alias { T.all(Symbol, Revox::VoiceCloneParams::Language) }
120
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
121
+
122
+ EN = T.let(:en, Revox::VoiceCloneParams::Language::TaggedSymbol)
123
+ FR = T.let(:fr, Revox::VoiceCloneParams::Language::TaggedSymbol)
124
+ ES = T.let(:es, Revox::VoiceCloneParams::Language::TaggedSymbol)
125
+ DE = T.let(:de, Revox::VoiceCloneParams::Language::TaggedSymbol)
126
+ IT = T.let(:it, Revox::VoiceCloneParams::Language::TaggedSymbol)
127
+ PT = T.let(:pt, Revox::VoiceCloneParams::Language::TaggedSymbol)
128
+ RU = T.let(:ru, Revox::VoiceCloneParams::Language::TaggedSymbol)
129
+ ZH = T.let(:zh, Revox::VoiceCloneParams::Language::TaggedSymbol)
130
+
131
+ sig do
132
+ override.returns(
133
+ T::Array[Revox::VoiceCloneParams::Language::TaggedSymbol]
134
+ )
135
+ end
136
+ def self.values
137
+ end
138
+ end
139
+ end
140
+ end
141
+ end
@@ -0,0 +1,53 @@
1
+ # typed: strong
2
+
3
+ module Revox
4
+ module Models
5
+ class VoiceCloneResponse < Revox::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(Revox::Models::VoiceCloneResponse, Revox::Internal::AnyHash)
9
+ end
10
+
11
+ sig { returns(String) }
12
+ attr_accessor :id
13
+
14
+ sig { returns(String) }
15
+ attr_accessor :cartesia_voice_id
16
+
17
+ sig { returns(String) }
18
+ attr_accessor :created_at
19
+
20
+ sig { returns(String) }
21
+ attr_accessor :language
22
+
23
+ sig { returns(String) }
24
+ attr_accessor :name
25
+
26
+ sig do
27
+ params(
28
+ id: String,
29
+ cartesia_voice_id: String,
30
+ created_at: String,
31
+ language: String,
32
+ name: String
33
+ ).returns(T.attached_class)
34
+ end
35
+ def self.new(id:, cartesia_voice_id:, created_at:, language:, name:)
36
+ end
37
+
38
+ sig do
39
+ override.returns(
40
+ {
41
+ id: String,
42
+ cartesia_voice_id: String,
43
+ created_at: String,
44
+ language: String,
45
+ name: String
46
+ }
47
+ )
48
+ end
49
+ def to_hash
50
+ end
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,33 @@
1
+ # typed: strong
2
+
3
+ module Revox
4
+ module Models
5
+ class VoiceDeleteParams < 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::VoiceDeleteParams, 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 VoiceDeleteResponse < Revox::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(Revox::Models::VoiceDeleteResponse, 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
@@ -248,6 +248,11 @@ module Revox
248
248
  :elevenlabs,
249
249
  Revox::Models::VoiceListResponse::Voice::Provider::TaggedSymbol
250
250
  )
251
+ GRADIUM =
252
+ T.let(
253
+ :gradium,
254
+ Revox::Models::VoiceListResponse::Voice::Provider::TaggedSymbol
255
+ )
251
256
 
252
257
  sig do
253
258
  override.returns(
@@ -105,6 +105,8 @@ module Revox
105
105
  T.let(:cartesia, Revox::VoicePreviewParams::Provider::TaggedSymbol)
106
106
  ELEVENLABS =
107
107
  T.let(:elevenlabs, Revox::VoicePreviewParams::Provider::TaggedSymbol)
108
+ GRADIUM =
109
+ T.let(:gradium, Revox::VoicePreviewParams::Provider::TaggedSymbol)
108
110
 
109
111
  sig do
110
112
  override.returns(
@@ -50,6 +50,8 @@ module Revox
50
50
  T.let(:cartesia, Revox::VoiceRetrieveParams::Provider::TaggedSymbol)
51
51
  ELEVENLABS =
52
52
  T.let(:elevenlabs, Revox::VoiceRetrieveParams::Provider::TaggedSymbol)
53
+ GRADIUM =
54
+ T.let(:gradium, Revox::VoiceRetrieveParams::Provider::TaggedSymbol)
53
55
 
54
56
  sig do
55
57
  override.returns(
data/rbi/revox/models.rbi CHANGED
@@ -1,6 +1,8 @@
1
1
  # typed: strong
2
2
 
3
3
  module Revox
4
+ AssistantCloneParams = Revox::Models::AssistantCloneParams
5
+
4
6
  AssistantCreateParams = Revox::Models::AssistantCreateParams
5
7
 
6
8
  AssistantDeleteParams = Revox::Models::AssistantDeleteParams
@@ -11,10 +13,24 @@ module Revox
11
13
 
12
14
  AssistantUpdateParams = Revox::Models::AssistantUpdateParams
13
15
 
16
+ AuthStatusRetrieveParams = Revox::Models::AuthStatusRetrieveParams
17
+
18
+ CallCancelParams = Revox::Models::CallCancelParams
19
+
14
20
  CallCreateParams = Revox::Models::CallCreateParams
15
21
 
22
+ CallExportParams = Revox::Models::CallExportParams
23
+
24
+ CallPauseParams = Revox::Models::CallPauseParams
25
+
26
+ CallPhoneHistoryParams = Revox::Models::CallPhoneHistoryParams
27
+
28
+ CallResumeParams = Revox::Models::CallResumeParams
29
+
16
30
  CallRetrieveParams = Revox::Models::CallRetrieveParams
17
31
 
32
+ CallSearchParams = Revox::Models::CallSearchParams
33
+
18
34
  CampaignCancelParams = Revox::Models::CampaignCancelParams
19
35
 
20
36
  CampaignCreateParams = Revox::Models::CampaignCreateParams
@@ -27,9 +43,27 @@ module Revox
27
43
 
28
44
  CampaignListParams = Revox::Models::CampaignListParams
29
45
 
46
+ CampaignPauseParams = Revox::Models::CampaignPauseParams
47
+
48
+ CampaignResumeParams = Revox::Models::CampaignResumeParams
49
+
30
50
  CampaignRetrieveParams = Revox::Models::CampaignRetrieveParams
31
51
 
32
- Users = Revox::Models::Users
52
+ CampaignStatisticsParams = Revox::Models::CampaignStatisticsParams
53
+
54
+ CampaignUpdateParams = Revox::Models::CampaignUpdateParams
55
+
56
+ PhoneNumberDeleteParams = Revox::Models::PhoneNumberDeleteParams
57
+
58
+ PhoneNumberListParams = Revox::Models::PhoneNumberListParams
59
+
60
+ PhoneNumberUpdateParams = Revox::Models::PhoneNumberUpdateParams
61
+
62
+ UserRetrieveParams = Revox::Models::UserRetrieveParams
63
+
64
+ VoiceCloneParams = Revox::Models::VoiceCloneParams
65
+
66
+ VoiceDeleteParams = Revox::Models::VoiceDeleteParams
33
67
 
34
68
  VoiceListParams = Revox::Models::VoiceListParams
35
69
 
@@ -31,8 +31,6 @@ module Revox
31
31
  T::Array[Revox::AssistantCreateParams::CustomTool::OrHash]
32
32
  ),
33
33
  email_notification_address: T.nilable(String),
34
- email_notification_language:
35
- Revox::AssistantCreateParams::EmailNotificationLanguage::OrSymbol,
36
34
  email_notification_outcomes:
37
35
  T.nilable(
38
36
  T::Array[
@@ -62,6 +60,7 @@ module Revox
62
60
  max_call_duration_secs: Float,
63
61
  max_duration_end_message: T.nilable(String),
64
62
  position: T.nilable(Revox::AssistantCreateParams::Position::OrHash),
63
+ precall_lookup_url: T.nilable(String),
65
64
  prompt_flow:
66
65
  T.nilable(Revox::AssistantCreateParams::PromptFlow::OrHash),
67
66
  slack: T.nilable(Revox::AssistantCreateParams::Slack::OrHash),
@@ -79,7 +78,12 @@ module Revox
79
78
  T.nilable(Revox::AssistantCreateParams::ThinkingSound::OrSymbol),
80
79
  thinking_sound_probability: Float,
81
80
  thinking_sound_volume: Float,
82
- transfer_phone_number: T.nilable(String),
81
+ transfer_destinations:
82
+ T.nilable(
83
+ T::Array[
84
+ Revox::AssistantCreateParams::TransferDestination::OrHash
85
+ ]
86
+ ),
83
87
  type: Revox::AssistantCreateParams::Type::OrSymbol,
84
88
  voice: Revox::AssistantCreateParams::Voice::OrHash,
85
89
  voicemail_message: T.nilable(String),
@@ -119,9 +123,6 @@ module Revox
119
123
  # outcome. Accepts a single email or a comma-separated list (e.g. "alice@x.com,
120
124
  # bob@y.com").
121
125
  email_notification_address: nil,
122
- # The language used for the notification email content. One of "en" or "fr".
123
- # Defaults to "en".
124
- email_notification_language: nil,
125
126
  # Which call outcomes trigger an email notification. E.g. ["interested",
126
127
  # "completed", "none"]. Use "none" when outcome is null.
127
128
  email_notification_outcomes: nil,
@@ -143,8 +144,8 @@ module Revox
143
144
  # Must be a phone number owned by the organization in E.164 format (e.g.
144
145
  # +1234567890). When null, the organization's default phone number is used.
145
146
  from_phone_number: nil,
146
- # When transfer_phone_number is set: "warm" (AI bridges) or "cold" (SIP REFER;
147
- # trunk must allow REFER/PSTN). Omit or null when transfer is disabled.
147
+ # When transfer_destinations is non-empty: "warm" (AI bridges) or "cold" (SIP
148
+ # REFER; trunk must allow REFER/PSTN). Omit or null when transfer is disabled.
148
149
  human_transfer_mode: nil,
149
150
  # Enable IVR navigation tools. When enabled, the assistant can send DTMF tones and
150
151
  # skip turns to navigate phone menus.
@@ -162,6 +163,12 @@ module Revox
162
163
  max_duration_end_message: nil,
163
164
  # Canvas position of this assistant's node in its multi-step flow editor.
164
165
  position: nil,
166
+ # Inbound calls only. URL fetched over HTTP GET right before the call is answered,
167
+ # with `{{phone}}` replaced by the caller's number in E.164 format (URL-encoded).
168
+ # It must return `{"prompt_variables": {...}}` covering every `{{variable}}` the
169
+ # assistant declares, otherwise the call is errored. Must be an http(s) URL
170
+ # containing `{{phone}}`. When null, no lookup is performed.
171
+ precall_lookup_url: nil,
165
172
  # Visual prompt constructor data (nodes, edges, positions). Used by the UI to
166
173
  # re-open the visual editor. Does not affect call behavior — the flattened prompt
167
174
  # field is what the LLM receives.
@@ -198,9 +205,11 @@ module Revox
198
205
  thinking_sound_probability: nil,
199
206
  # Volume of the thinking sound (0 = silent, 1 = max).
200
207
  thinking_sound_volume: nil,
201
- # Phone number to transfer calls to when users request to speak to a human agent
202
- # in E.164 format (e.g. +1234567890).
203
- transfer_phone_number: nil,
208
+ # Where calls can be transferred to when users ask to speak to a human. With a
209
+ # single entry the assistant always transfers there; with several, it picks one at
210
+ # transfer time by applying the routing rules written in the assistant's own
211
+ # prompt (which refer to the destination labels). Empty or null disables transfer.
212
+ transfer_destinations: nil,
204
213
  # Assistant kind. 'standalone' (default) is a normal assistant, 'multi-step'
205
214
  # orchestrates a flow of sub-assistants, 'sub-assistant' is a step inside a
206
215
  # multi-step flow (hidden from the assistants list). Flow transitions are managed
@@ -268,8 +277,6 @@ module Revox
268
277
  T::Array[Revox::AssistantUpdateParams::CustomTool::OrHash]
269
278
  ),
270
279
  email_notification_address: T.nilable(String),
271
- email_notification_language:
272
- Revox::AssistantUpdateParams::EmailNotificationLanguage::OrSymbol,
273
280
  email_notification_outcomes:
274
281
  T.nilable(
275
282
  T::Array[
@@ -300,6 +307,7 @@ module Revox
300
307
  max_duration_end_message: T.nilable(String),
301
308
  name: String,
302
309
  position: T.nilable(Revox::AssistantUpdateParams::Position::OrHash),
310
+ precall_lookup_url: T.nilable(String),
303
311
  prompt: String,
304
312
  prompt_flow:
305
313
  T.nilable(Revox::AssistantUpdateParams::PromptFlow::OrHash),
@@ -318,7 +326,12 @@ module Revox
318
326
  T.nilable(Revox::AssistantUpdateParams::ThinkingSound::OrSymbol),
319
327
  thinking_sound_probability: Float,
320
328
  thinking_sound_volume: Float,
321
- transfer_phone_number: T.nilable(String),
329
+ transfer_destinations:
330
+ T.nilable(
331
+ T::Array[
332
+ Revox::AssistantUpdateParams::TransferDestination::OrHash
333
+ ]
334
+ ),
322
335
  type: Revox::AssistantUpdateParams::Type::OrSymbol,
323
336
  voice: Revox::AssistantUpdateParams::Voice::OrHash,
324
337
  voicemail_message: T.nilable(String),
@@ -356,9 +369,6 @@ module Revox
356
369
  # outcome. Accepts a single email or a comma-separated list (e.g. "alice@x.com,
357
370
  # bob@y.com").
358
371
  email_notification_address: nil,
359
- # The language used for the notification email content. One of "en" or "fr".
360
- # Defaults to "en".
361
- email_notification_language: nil,
362
372
  # Which call outcomes trigger an email notification. E.g. ["interested",
363
373
  # "completed", "none"]. Use "none" when outcome is null.
364
374
  email_notification_outcomes: nil,
@@ -380,8 +390,8 @@ module Revox
380
390
  # Must be a phone number owned by the organization in E.164 format (e.g.
381
391
  # +1234567890). When null, the organization's default phone number is used.
382
392
  from_phone_number: nil,
383
- # When transfer_phone_number is set: "warm" (AI bridges) or "cold" (SIP REFER;
384
- # trunk must allow REFER/PSTN). Omit or null when transfer is disabled.
393
+ # When transfer_destinations is non-empty: "warm" (AI bridges) or "cold" (SIP
394
+ # REFER; trunk must allow REFER/PSTN). Omit or null when transfer is disabled.
385
395
  human_transfer_mode: nil,
386
396
  # Enable IVR navigation tools. When enabled, the assistant can send DTMF tones and
387
397
  # skip turns to navigate phone menus.
@@ -400,6 +410,12 @@ module Revox
400
410
  name: nil,
401
411
  # Canvas position of this assistant's node in its multi-step flow editor.
402
412
  position: nil,
413
+ # Inbound calls only. URL fetched over HTTP GET right before the call is answered,
414
+ # with `{{phone}}` replaced by the caller's number in E.164 format (URL-encoded).
415
+ # It must return `{"prompt_variables": {...}}` covering every `{{variable}}` the
416
+ # assistant declares, otherwise the call is errored. Must be an http(s) URL
417
+ # containing `{{phone}}`. When null, no lookup is performed.
418
+ precall_lookup_url: nil,
403
419
  # The prompt to use for the call. This will be given to the LLM (gpt-4.1)
404
420
  prompt: nil,
405
421
  # Visual prompt constructor data (nodes, edges, positions). Used by the UI to
@@ -438,9 +454,11 @@ module Revox
438
454
  thinking_sound_probability: nil,
439
455
  # Volume of the thinking sound (0 = silent, 1 = max).
440
456
  thinking_sound_volume: nil,
441
- # Phone number to transfer calls to when users request to speak to a human agent
442
- # in E.164 format (e.g. +1234567890).
443
- transfer_phone_number: nil,
457
+ # Where calls can be transferred to when users ask to speak to a human. With a
458
+ # single entry the assistant always transfers there; with several, it picks one at
459
+ # transfer time by applying the routing rules written in the assistant's own
460
+ # prompt (which refer to the destination labels). Empty or null disables transfer.
461
+ transfer_destinations: nil,
444
462
  # Assistant kind. 'standalone' (default) is a normal assistant, 'multi-step'
445
463
  # orchestrates a flow of sub-assistants, 'sub-assistant' is a step inside a
446
464
  # multi-step flow (hidden from the assistants list). Flow transitions are managed
@@ -492,6 +510,18 @@ module Revox
492
510
  def delete(id, request_options: {})
493
511
  end
494
512
 
513
+ # Create a full copy of an existing assistant, including every configuration field
514
+ # and FAQ items. The new assistant has the same configuration as the source, with
515
+ # the name suffixed by "(Copy)" and a freshly generated API key.
516
+ sig do
517
+ params(
518
+ id: String,
519
+ request_options: Revox::RequestOptions::OrHash
520
+ ).returns(Revox::Models::AssistantCloneResponse)
521
+ end
522
+ def clone_(id, request_options: {})
523
+ end
524
+
495
525
  # @api private
496
526
  sig { params(client: Revox::Client).returns(T.attached_class) }
497
527
  def self.new(client:)