revox 0.1.0 → 0.3.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 (224) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +81 -0
  3. data/README.md +39 -14
  4. data/lib/revox/client.rb +23 -1
  5. data/lib/revox/internal/transport/base_client.rb +5 -0
  6. data/lib/revox/internal/type/base_model.rb +3 -3
  7. data/lib/revox/internal/util.rb +22 -7
  8. data/lib/revox/models/assistant_clone_params.rb +20 -0
  9. data/lib/revox/models/assistant_clone_response.rb +1594 -0
  10. data/lib/revox/models/assistant_create_params.rb +1038 -13
  11. data/lib/revox/models/assistant_create_response.rb +1071 -11
  12. data/lib/revox/models/assistant_list_response.rb +1070 -11
  13. data/lib/revox/models/assistant_retrieve_response.rb +1066 -11
  14. data/lib/revox/models/assistant_update_params.rb +1038 -13
  15. data/lib/revox/models/assistant_update_response.rb +1097 -12
  16. data/lib/revox/models/auth_status_retrieve_params.rb +14 -0
  17. data/lib/revox/models/auth_status_retrieve_response.rb +17 -0
  18. data/lib/revox/models/call_cancel_params.rb +20 -0
  19. data/lib/revox/models/call_cancel_response.rb +16 -0
  20. data/lib/revox/models/call_create_params.rb +1065 -13
  21. data/lib/revox/models/call_create_response.rb +1820 -98
  22. data/lib/revox/models/call_export_params.rb +205 -0
  23. data/lib/revox/models/call_export_response.rb +22 -0
  24. data/lib/revox/models/call_pause_params.rb +20 -0
  25. data/lib/revox/models/call_pause_response.rb +16 -0
  26. data/lib/revox/models/call_phone_history_params.rb +14 -0
  27. data/lib/revox/models/call_phone_history_response.rb +98 -0
  28. data/lib/revox/models/call_resume_params.rb +20 -0
  29. data/lib/revox/models/call_resume_response.rb +16 -0
  30. data/lib/revox/models/call_retrieve_response.rb +1822 -98
  31. data/lib/revox/models/call_search_params.rb +171 -0
  32. data/lib/revox/models/call_search_response.rb +3114 -0
  33. data/lib/revox/models/campaign_create_params.rb +67 -2
  34. data/lib/revox/models/campaign_create_response.rb +1314 -59
  35. data/lib/revox/models/campaign_get_rows_params.rb +1 -46
  36. data/lib/revox/models/campaign_get_rows_response.rb +1833 -115
  37. data/lib/revox/models/campaign_launch_params.rb +20 -0
  38. data/lib/revox/models/campaign_launch_response.rb +2030 -0
  39. data/lib/revox/models/campaign_list_response.rb +1312 -59
  40. data/lib/revox/models/campaign_pause_params.rb +20 -0
  41. data/lib/revox/models/campaign_pause_response.rb +16 -0
  42. data/lib/revox/models/campaign_resume_params.rb +20 -0
  43. data/lib/revox/models/campaign_resume_response.rb +16 -0
  44. data/lib/revox/models/campaign_retrieve_response.rb +1312 -56
  45. data/lib/revox/models/campaign_statistics_params.rb +20 -0
  46. data/lib/revox/models/campaign_statistics_response.rb +486 -0
  47. data/lib/revox/models/campaign_update_params.rb +234 -0
  48. data/lib/revox/models/campaign_update_response.rb +2030 -0
  49. data/lib/revox/models/phone_number_delete_params.rb +20 -0
  50. data/lib/revox/models/phone_number_delete_response.rb +16 -0
  51. data/lib/revox/models/phone_number_list_params.rb +14 -0
  52. data/lib/revox/models/phone_number_list_response.rb +1777 -0
  53. data/lib/revox/models/phone_number_update_params.rb +32 -0
  54. data/lib/revox/models/phone_number_update_response.rb +1777 -0
  55. data/lib/revox/models/user_retrieve_params.rb +14 -0
  56. data/lib/revox/models/user_retrieve_response.rb +99 -0
  57. data/lib/revox/models/voice_clone_params.rb +78 -0
  58. data/lib/revox/models/voice_clone_response.rb +40 -0
  59. data/lib/revox/models/voice_delete_params.rb +20 -0
  60. data/lib/revox/models/voice_delete_response.rb +16 -0
  61. data/lib/revox/models/voice_list_response.rb +55 -1
  62. data/lib/revox/models/voice_preview_params.rb +49 -1
  63. data/lib/revox/models.rb +36 -2
  64. data/lib/revox/resources/assistants.rb +137 -8
  65. data/lib/revox/resources/auth_status.rb +32 -0
  66. data/lib/revox/resources/call.rb +131 -15
  67. data/lib/revox/resources/campaigns.rb +143 -17
  68. data/lib/revox/resources/phone_numbers.rb +74 -0
  69. data/lib/revox/resources/users.rb +17 -3
  70. data/lib/revox/resources/voices.rb +66 -10
  71. data/lib/revox/version.rb +1 -1
  72. data/lib/revox.rb +40 -7
  73. data/rbi/revox/client.rbi +6 -0
  74. data/rbi/revox/internal/util.rbi +8 -0
  75. data/rbi/revox/models/assistant_clone_params.rbi +33 -0
  76. data/rbi/revox/models/assistant_clone_response.rbi +3341 -0
  77. data/rbi/revox/models/assistant_create_params.rbi +2138 -103
  78. data/rbi/revox/models/assistant_create_response.rbi +2454 -199
  79. data/rbi/revox/models/assistant_list_response.rbi +2448 -195
  80. data/rbi/revox/models/assistant_retrieve_response.rbi +2401 -210
  81. data/rbi/revox/models/assistant_update_params.rbi +2138 -103
  82. data/rbi/revox/models/assistant_update_response.rbi +2504 -198
  83. data/rbi/revox/models/auth_status_retrieve_params.rbi +27 -0
  84. data/rbi/revox/models/auth_status_retrieve_response.rbi +30 -0
  85. data/rbi/revox/models/call_cancel_params.rbi +33 -0
  86. data/rbi/revox/models/call_cancel_response.rbi +23 -0
  87. data/rbi/revox/models/call_create_params.rbi +2382 -225
  88. data/rbi/revox/models/call_create_response.rbi +4116 -384
  89. data/rbi/revox/models/call_export_params.rbi +456 -0
  90. data/rbi/revox/models/call_export_response.rbi +26 -0
  91. data/rbi/revox/models/call_pause_params.rbi +31 -0
  92. data/rbi/revox/models/call_pause_response.rbi +23 -0
  93. data/rbi/revox/models/call_phone_history_params.rbi +27 -0
  94. data/rbi/revox/models/call_phone_history_response.rbi +224 -0
  95. data/rbi/revox/models/call_resume_params.rbi +33 -0
  96. data/rbi/revox/models/call_resume_response.rbi +23 -0
  97. data/rbi/revox/models/call_retrieve_response.rbi +4133 -399
  98. data/rbi/revox/models/call_search_params.rbi +288 -0
  99. data/rbi/revox/models/call_search_response.rbi +6593 -0
  100. data/rbi/revox/models/campaign_create_params.rbi +136 -0
  101. data/rbi/revox/models/campaign_create_response.rbi +2911 -231
  102. data/rbi/revox/models/campaign_get_rows_params.rbi +2 -82
  103. data/rbi/revox/models/campaign_get_rows_response.rbi +4146 -409
  104. data/rbi/revox/models/campaign_launch_params.rbi +33 -0
  105. data/rbi/revox/models/campaign_launch_response.rbi +4170 -0
  106. data/rbi/revox/models/campaign_list_response.rbi +2904 -230
  107. data/rbi/revox/models/campaign_pause_params.rbi +33 -0
  108. data/rbi/revox/models/campaign_pause_response.rbi +23 -0
  109. data/rbi/revox/models/campaign_resume_params.rbi +33 -0
  110. data/rbi/revox/models/campaign_resume_response.rbi +23 -0
  111. data/rbi/revox/models/campaign_retrieve_response.rbi +2911 -231
  112. data/rbi/revox/models/campaign_statistics_params.rbi +33 -0
  113. data/rbi/revox/models/campaign_statistics_response.rbi +1011 -0
  114. data/rbi/revox/models/campaign_update_params.rbi +431 -0
  115. data/rbi/revox/models/campaign_update_response.rbi +4170 -0
  116. data/rbi/revox/models/phone_number_delete_params.rbi +33 -0
  117. data/rbi/revox/models/phone_number_delete_response.rbi +26 -0
  118. data/rbi/revox/models/phone_number_list_params.rbi +27 -0
  119. data/rbi/revox/models/phone_number_list_response.rbi +3680 -0
  120. data/rbi/revox/models/phone_number_update_params.rbi +53 -0
  121. data/rbi/revox/models/phone_number_update_response.rbi +3683 -0
  122. data/rbi/revox/models/user_retrieve_params.rbi +27 -0
  123. data/rbi/revox/models/user_retrieve_response.rbi +140 -0
  124. data/rbi/revox/models/voice_clone_params.rbi +141 -0
  125. data/rbi/revox/models/voice_clone_response.rbi +53 -0
  126. data/rbi/revox/models/voice_delete_params.rbi +33 -0
  127. data/rbi/revox/models/voice_delete_response.rbi +23 -0
  128. data/rbi/revox/models/voice_list_response.rbi +105 -3
  129. data/rbi/revox/models/voice_preview_params.rbi +69 -0
  130. data/rbi/revox/models.rbi +36 -2
  131. data/rbi/revox/resources/assistants.rbi +296 -8
  132. data/rbi/revox/resources/auth_status.rbi +21 -0
  133. data/rbi/revox/resources/call.rbi +92 -6
  134. data/rbi/revox/resources/campaigns.rbi +106 -19
  135. data/rbi/revox/resources/phone_numbers.rbi +43 -0
  136. data/rbi/revox/resources/users.rbi +8 -2
  137. data/rbi/revox/resources/voices.rbi +56 -9
  138. data/sig/revox/client.rbs +4 -0
  139. data/sig/revox/internal/util.rbs +4 -0
  140. data/sig/revox/models/assistant_clone_params.rbs +20 -0
  141. data/sig/revox/models/assistant_clone_response.rbs +1318 -0
  142. data/sig/revox/models/assistant_create_params.rbs +844 -11
  143. data/sig/revox/models/assistant_create_response.rbs +860 -3
  144. data/sig/revox/models/assistant_list_response.rbs +860 -3
  145. data/sig/revox/models/assistant_retrieve_response.rbs +859 -3
  146. data/sig/revox/models/assistant_update_params.rbs +844 -11
  147. data/sig/revox/models/assistant_update_response.rbs +886 -6
  148. data/sig/revox/models/auth_status_retrieve_params.rbs +15 -0
  149. data/sig/revox/models/auth_status_retrieve_response.rbs +13 -0
  150. data/sig/revox/models/call_cancel_params.rbs +20 -0
  151. data/sig/revox/models/call_cancel_response.rbs +13 -0
  152. data/sig/revox/models/call_create_params.rbs +847 -13
  153. data/sig/revox/models/call_create_response.rbs +1519 -34
  154. data/sig/revox/models/call_export_params.rbs +234 -0
  155. data/sig/revox/models/call_export_response.rbs +15 -0
  156. data/sig/revox/models/call_pause_params.rbs +20 -0
  157. data/sig/revox/models/call_pause_response.rbs +13 -0
  158. data/sig/revox/models/call_phone_history_params.rbs +15 -0
  159. data/sig/revox/models/call_phone_history_response.rbs +102 -0
  160. data/sig/revox/models/call_resume_params.rbs +20 -0
  161. data/sig/revox/models/call_resume_response.rbs +13 -0
  162. data/sig/revox/models/call_retrieve_response.rbs +1519 -34
  163. data/sig/revox/models/call_search_params.rbs +198 -0
  164. data/sig/revox/models/call_search_response.rbs +2654 -0
  165. data/sig/revox/models/campaign_create_params.rbs +54 -0
  166. data/sig/revox/models/campaign_create_response.rbs +1034 -6
  167. data/sig/revox/models/campaign_get_rows_params.rbs +2 -64
  168. data/sig/revox/models/campaign_get_rows_response.rbs +1527 -54
  169. data/sig/revox/models/campaign_launch_params.rbs +20 -0
  170. data/sig/revox/models/campaign_launch_response.rbs +1694 -0
  171. data/sig/revox/models/campaign_list_response.rbs +1034 -6
  172. data/sig/revox/models/campaign_pause_params.rbs +20 -0
  173. data/sig/revox/models/campaign_pause_response.rbs +13 -0
  174. data/sig/revox/models/campaign_resume_params.rbs +20 -0
  175. data/sig/revox/models/campaign_resume_response.rbs +13 -0
  176. data/sig/revox/models/campaign_retrieve_response.rbs +1034 -6
  177. data/sig/revox/models/campaign_statistics_params.rbs +20 -0
  178. data/sig/revox/models/campaign_statistics_response.rbs +458 -0
  179. data/sig/revox/models/campaign_update_params.rbs +203 -0
  180. data/sig/revox/models/campaign_update_response.rbs +1694 -0
  181. data/sig/revox/models/phone_number_delete_params.rbs +20 -0
  182. data/sig/revox/models/phone_number_delete_response.rbs +13 -0
  183. data/sig/revox/models/phone_number_list_params.rbs +15 -0
  184. data/sig/revox/models/phone_number_list_response.rbs +1462 -0
  185. data/sig/revox/models/phone_number_update_params.rbs +32 -0
  186. data/sig/revox/models/phone_number_update_response.rbs +1460 -0
  187. data/sig/revox/models/user_retrieve_params.rbs +14 -0
  188. data/sig/revox/models/user_retrieve_response.rbs +71 -0
  189. data/sig/revox/models/voice_clone_params.rbs +79 -0
  190. data/sig/revox/models/voice_clone_response.rbs +40 -0
  191. data/sig/revox/models/voice_delete_params.rbs +20 -0
  192. data/sig/revox/models/voice_delete_response.rbs +13 -0
  193. data/sig/revox/models/voice_list_response.rbs +45 -3
  194. data/sig/revox/models/voice_preview_params.rbs +42 -1
  195. data/sig/revox/models.rbs +36 -2
  196. data/sig/revox/resources/assistants.rbs +61 -2
  197. data/sig/revox/resources/auth_status.rbs +11 -0
  198. data/sig/revox/resources/call.rbs +41 -3
  199. data/sig/revox/resources/campaigns.rbs +35 -5
  200. data/sig/revox/resources/phone_numbers.rbs +23 -0
  201. data/sig/revox/resources/users.rbs +3 -1
  202. data/sig/revox/resources/voices.rbs +17 -0
  203. metadata +122 -23
  204. data/lib/revox/models/call_list_params.rb +0 -52
  205. data/lib/revox/models/call_list_response.rb +0 -259
  206. data/lib/revox/models/users/me_retrieve_params.rb +0 -16
  207. data/lib/revox/models/users/me_retrieve_response.rb +0 -89
  208. data/lib/revox/models/users/me_update_params.rb +0 -22
  209. data/lib/revox/models/users/me_update_response.rb +0 -89
  210. data/lib/revox/resources/users/me.rb +0 -55
  211. data/rbi/revox/models/call_list_params.rbi +0 -94
  212. data/rbi/revox/models/call_list_response.rbi +0 -563
  213. data/rbi/revox/models/users/me_retrieve_params.rbi +0 -29
  214. data/rbi/revox/models/users/me_retrieve_response.rbi +0 -139
  215. data/rbi/revox/models/users/me_update_params.rbi +0 -43
  216. data/rbi/revox/models/users/me_update_response.rbi +0 -139
  217. data/rbi/revox/resources/users/me.rbi +0 -33
  218. data/sig/revox/models/call_list_params.rbs +0 -63
  219. data/sig/revox/models/call_list_response.rbs +0 -226
  220. data/sig/revox/models/users/me_retrieve_params.rbs +0 -16
  221. data/sig/revox/models/users/me_retrieve_response.rbs +0 -70
  222. data/sig/revox/models/users/me_update_params.rbs +0 -28
  223. data/sig/revox/models/users/me_update_response.rbs +0 -70
  224. data/sig/revox/resources/users/me.rbs +0 -18
@@ -3,14 +3,15 @@
3
3
  module Revox
4
4
  module Resources
5
5
  class Campaigns
6
- # Create a new outbound calling campaign and launch it immediately. If
7
- # scheduled_at is set, all calls will be queued until the specified time instead
8
- # of starting right away.
6
+ # Create a new outbound calling campaign. By default the campaign launches
7
+ # immediately. Set launch to false to save as a draft for later review.
9
8
  sig do
10
9
  params(
11
10
  assistant_id: String,
12
11
  contacts: T::Array[Revox::CampaignCreateParams::Contact::OrHash],
12
+ launch: T::Boolean,
13
13
  name: String,
14
+ type: Revox::CampaignCreateParams::Type::OrSymbol,
14
15
  call_retry_config:
15
16
  Revox::CampaignCreateParams::CallRetryConfig::OrHash,
16
17
  from_phone_number: String,
@@ -24,8 +25,13 @@ module Revox
24
25
  assistant_id:,
25
26
  # The list of contacts to call
26
27
  contacts:,
28
+ # Whether to launch the campaign immediately. Set to false to save as a draft.
29
+ launch:,
27
30
  # The name of the campaign
28
31
  name:,
32
+ # Campaign type. 'jump_in' campaigns only dial while someone is on the campaign
33
+ # page and auto-pause when unattended.
34
+ type:,
29
35
  # Override retry configuration for calls in this campaign. If not provided, uses
30
36
  # the assistant's retry config.
31
37
  call_retry_config: nil,
@@ -51,6 +57,48 @@ module Revox
51
57
  def retrieve(id, request_options: {})
52
58
  end
53
59
 
60
+ # Update editable fields on a campaign. Draft campaigns support updating all
61
+ # fields including assistant, contacts, and settings. Non-draft campaigns only
62
+ # support renaming.
63
+ sig do
64
+ params(
65
+ id: String,
66
+ assistant_id: String,
67
+ call_retry_config:
68
+ T.nilable(Revox::CampaignUpdateParams::CallRetryConfig::OrHash),
69
+ contacts: T::Array[Revox::CampaignUpdateParams::Contact::OrHash],
70
+ from_phone_number: T.nilable(String),
71
+ max_concurrent_calls: T.nilable(Float),
72
+ name: String,
73
+ scheduled_at:
74
+ T.nilable(Revox::CampaignUpdateParams::ScheduledAt::Variants),
75
+ type: Revox::CampaignUpdateParams::Type::OrSymbol,
76
+ request_options: Revox::RequestOptions::OrHash
77
+ ).returns(Revox::Models::CampaignUpdateResponse)
78
+ end
79
+ def update(
80
+ id,
81
+ # The ID of the assistant to use (draft only)
82
+ assistant_id: nil,
83
+ # Configuration for call retry behavior including time windows, delays, and max
84
+ # iterations. If not provided, defaults will be used.
85
+ call_retry_config: nil,
86
+ # Replace contact list (draft only)
87
+ contacts: nil,
88
+ # The phone number to use for outbound calls (draft only)
89
+ from_phone_number: nil,
90
+ # Maximum concurrent calls (draft only)
91
+ max_concurrent_calls: nil,
92
+ # Campaign display name
93
+ name: nil,
94
+ # Scheduled start time (draft only)
95
+ scheduled_at: nil,
96
+ # Campaign type (draft only)
97
+ type: nil,
98
+ request_options: {}
99
+ )
100
+ end
101
+
54
102
  # Retrieve all campaigns for your organization, including both active and
55
103
  # completed ones.
56
104
  sig do
@@ -95,28 +143,67 @@ module Revox
95
143
  def export_rows(id, request_options: {})
96
144
  end
97
145
 
98
- # Retrieve a paginated list of rows (contacts) for a given campaign. Supports
99
- # filtering by text query, call statuses, and call result.
146
+ # Retrieve all contact rows for a campaign. Useful for loading draft campaign data
147
+ # for editing.
100
148
  sig do
101
149
  params(
102
150
  id: String,
103
- page: Float,
104
- page_size: Float,
105
- query: String,
106
- result: Revox::CampaignGetRowsParams::Result::OrSymbol,
107
- statuses: String,
108
151
  request_options: Revox::RequestOptions::OrHash
109
152
  ).returns(Revox::Models::CampaignGetRowsResponse)
110
153
  end
111
- def get_rows(
112
- id,
113
- page:,
114
- page_size:,
115
- query: nil,
116
- result: nil,
117
- statuses: nil,
118
- request_options: {}
119
- )
154
+ def get_rows(id, request_options: {})
155
+ end
156
+
157
+ # Launch a previously saved draft campaign. This starts all calls immediately (or
158
+ # queues them if scheduled_at is set). The campaign must be in draft status.
159
+ sig do
160
+ params(
161
+ id: String,
162
+ request_options: Revox::RequestOptions::OrHash
163
+ ).returns(Revox::Models::CampaignLaunchResponse)
164
+ end
165
+ def launch(id, request_options: {})
166
+ end
167
+
168
+ # Pause a running campaign so no further calls are placed. In-progress calls are
169
+ # allowed to finish; pending and scheduled calls are held until the campaign is
170
+ # resumed. Scheduled retry timers keep counting down, so a call resumed before its
171
+ # time fires on schedule, while one resumed after its time fires at the next
172
+ # available calling window.
173
+ sig do
174
+ params(
175
+ id: String,
176
+ request_options: Revox::RequestOptions::OrHash
177
+ ).returns(Revox::Models::CampaignPauseResponse)
178
+ end
179
+ def pause(id, request_options: {})
180
+ end
181
+
182
+ # Resume a paused campaign. Held calls continue from where they left off; calls
183
+ # whose scheduled time passed during the pause are placed at the next available
184
+ # calling window.
185
+ sig do
186
+ params(
187
+ id: String,
188
+ request_options: Revox::RequestOptions::OrHash
189
+ ).returns(Revox::Models::CampaignResumeResponse)
190
+ end
191
+ def resume(id, request_options: {})
192
+ end
193
+
194
+ # Retrieve the "Statistiques" report for a campaign: the four-tile cascade funnel
195
+ # (appelés → eus en ligne → réels échanges → leads chauds), two secondary tiles,
196
+ # the distribution of exchanges by outcome, the list of hot leads, and
197
+ # data-extraction coverage. All counts are over distinct E.164-normalized phone
198
+ # numbers, and the outcome-based categories derive exclusively from calls.outcome.
199
+ # Cascade percentages are null when their denominator is zero.
200
+ sig do
201
+ params(
202
+ id: String,
203
+ request_options: Revox::RequestOptions::OrHash
204
+ ).returns(Revox::Models::CampaignStatisticsResponse)
205
+ end
206
+ def statistics(id, request_options: {})
120
207
  end
121
208
 
122
209
  # @api private
@@ -0,0 +1,43 @@
1
+ # typed: strong
2
+
3
+ module Revox
4
+ module Resources
5
+ class PhoneNumbers
6
+ # Update a phone number
7
+ sig do
8
+ params(
9
+ id: String,
10
+ inbound_assistant_id: T.nilable(String),
11
+ label: T.nilable(String),
12
+ request_options: Revox::RequestOptions::OrHash
13
+ ).returns(Revox::Models::PhoneNumberUpdateResponse)
14
+ end
15
+ def update(id, inbound_assistant_id: nil, label: nil, request_options: {})
16
+ end
17
+
18
+ # Get phone numbers
19
+ sig do
20
+ params(request_options: Revox::RequestOptions::OrHash).returns(
21
+ Revox::Models::PhoneNumberListResponse
22
+ )
23
+ end
24
+ def list(request_options: {})
25
+ end
26
+
27
+ # Delete a phone number
28
+ sig do
29
+ params(
30
+ id: String,
31
+ request_options: Revox::RequestOptions::OrHash
32
+ ).returns(Revox::Models::PhoneNumberDeleteResponse)
33
+ end
34
+ def delete(id, request_options: {})
35
+ end
36
+
37
+ # @api private
38
+ sig { params(client: Revox::Client).returns(T.attached_class) }
39
+ def self.new(client:)
40
+ end
41
+ end
42
+ end
43
+ end
@@ -3,8 +3,14 @@
3
3
  module Revox
4
4
  module Resources
5
5
  class Users
6
- sig { returns(Revox::Resources::Users::Me) }
7
- attr_reader :me
6
+ # Get the current authenticated user.
7
+ sig do
8
+ params(request_options: Revox::RequestOptions::OrHash).returns(
9
+ Revox::Models::UserRetrieveResponse
10
+ )
11
+ end
12
+ def retrieve(request_options: {})
13
+ end
8
14
 
9
15
  # @api private
10
16
  sig { params(client: Revox::Client).returns(T.attached_class) }
@@ -3,8 +3,7 @@
3
3
  module Revox
4
4
  module Resources
5
5
  class Voices
6
- # Retrieve details for a single voice by its unique ID and provider. Returns the
7
- # voice name, description, and provider metadata.
6
+ # Retrieve details for a single voice by its unique ID and provider.
8
7
  sig do
9
8
  params(
10
9
  id: String,
@@ -20,10 +19,8 @@ module Revox
20
19
  )
21
20
  end
22
21
 
23
- # Retrieve the full catalog of voices available for AI calls. The list includes
24
- # voices from Cartesia and ElevenLabs, each with a name, language, accent, and
25
- # provider-specific ID. Use this endpoint to browse voices before assigning one to
26
- # an assistant or a call.
22
+ # Retrieve all voices available for AI calls, including preset voices from
23
+ # Cartesia/ElevenLabs and your organization's cloned voices.
27
24
  sig do
28
25
  params(request_options: Revox::RequestOptions::OrHash).returns(
29
26
  Revox::Models::VoiceListResponse
@@ -32,13 +29,54 @@ module Revox
32
29
  def list(request_options: {})
33
30
  end
34
31
 
35
- # Generate a short audio preview for a given voice. Provide the voice ID and
36
- # provider, and the API returns an audio/mpeg stream you can play back to hear how
37
- # the voice sounds before assigning it to an assistant.
32
+ # Delete a cloned voice. Only cloned voices can be deleted. Returns 409 if the
33
+ # voice is in use by an assistant.
34
+ sig do
35
+ params(
36
+ id: String,
37
+ request_options: Revox::RequestOptions::OrHash
38
+ ).returns(Revox::Models::VoiceDeleteResponse)
39
+ end
40
+ def delete(
41
+ # The cloned voice ID to delete.
42
+ id,
43
+ request_options: {}
44
+ )
45
+ end
46
+
47
+ # Clone a voice from an audio recording. Send audio as a base64-encoded string.
48
+ # The cloned voice will be available in GET /voices.
49
+ sig do
50
+ params(
51
+ audio: String,
52
+ content_type: Revox::VoiceCloneParams::ContentType::OrSymbol,
53
+ language: Revox::VoiceCloneParams::Language::OrSymbol,
54
+ name: String,
55
+ request_options: Revox::RequestOptions::OrHash
56
+ ).returns(Revox::Models::VoiceCloneResponse)
57
+ end
58
+ def clone_(
59
+ # Base64-encoded audio data (max ~7.5MB decoded)
60
+ audio:,
61
+ # MIME type of the audio
62
+ content_type:,
63
+ # Language of the voice
64
+ language:,
65
+ # Name for the cloned voice
66
+ name:,
67
+ request_options: {}
68
+ )
69
+ end
70
+
71
+ # Generate a short audio preview for a given voice.
38
72
  sig do
39
73
  params(
40
74
  provider: Revox::VoicePreviewParams::Provider::OrSymbol,
41
75
  voice_id: String,
76
+ model: Revox::VoicePreviewParams::Model::OrSymbol,
77
+ speed: Float,
78
+ text: String,
79
+ volume: Float,
42
80
  request_options: Revox::RequestOptions::OrHash
43
81
  ).void
44
82
  end
@@ -47,6 +85,15 @@ module Revox
47
85
  provider:,
48
86
  # The voice ID to generate a preview for.
49
87
  voice_id:,
88
+ # Cartesia model for the preview. Defaults to sonic-3. Ignored for other
89
+ # providers.
90
+ model: nil,
91
+ # Speed for preview. Cartesia 0.6–1.5, ElevenLabs 0.7–1.2. Default 1.0.
92
+ speed: nil,
93
+ # Custom text for the preview. If omitted, a short default is used.
94
+ text: nil,
95
+ # Volume for Cartesia preview (0.5–2.0). Ignored for other providers.
96
+ volume: nil,
50
97
  request_options: {}
51
98
  )
52
99
  end
data/sig/revox/client.rbs CHANGED
@@ -10,8 +10,12 @@ module Revox
10
10
 
11
11
  attr_reader api_key: String
12
12
 
13
+ attr_reader auth_status: Revox::Resources::AuthStatus
14
+
13
15
  attr_reader campaigns: Revox::Resources::Campaigns
14
16
 
17
+ attr_reader phone_numbers: Revox::Resources::PhoneNumbers
18
+
15
19
  attr_reader assistants: Revox::Resources::Assistants
16
20
 
17
21
  attr_reader call: Revox::Resources::Call
@@ -45,8 +45,12 @@ module Revox
45
45
  -> top?
46
46
  } -> top?
47
47
 
48
+ RFC_3986_NOT_PCHARS: Regexp
49
+
48
50
  def self?.uri_origin: (URI::Generic uri) -> String
49
51
 
52
+ def self?.encode_path: (String | Integer path) -> String
53
+
50
54
  def self?.interpolate_path: (String | ::Array[String] path) -> String
51
55
 
52
56
  def self?.decode_query: (String? query) -> ::Hash[String, ::Array[String]]
@@ -0,0 +1,20 @@
1
+ module Revox
2
+ module Models
3
+ type assistant_clone_params =
4
+ { id: String } & Revox::Internal::Type::request_parameters
5
+
6
+ class AssistantCloneParams < Revox::Internal::Type::BaseModel
7
+ extend Revox::Internal::Type::RequestParameters::Converter
8
+ include Revox::Internal::Type::RequestParameters
9
+
10
+ attr_accessor id: String
11
+
12
+ def initialize: (
13
+ id: String,
14
+ ?request_options: Revox::request_opts
15
+ ) -> void
16
+
17
+ def to_hash: -> { id: String, request_options: Revox::RequestOptions }
18
+ end
19
+ end
20
+ end