revox 0.2.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 (172) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +10 -0
  3. data/README.md +1 -1
  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 +1594 -0
  8. data/lib/revox/models/auth_status_retrieve_params.rb +14 -0
  9. data/lib/revox/models/auth_status_retrieve_response.rb +17 -0
  10. data/lib/revox/models/call_cancel_params.rb +20 -0
  11. data/lib/revox/models/call_cancel_response.rb +16 -0
  12. data/lib/revox/models/call_create_response.rb +11 -1
  13. data/lib/revox/models/call_export_params.rb +205 -0
  14. data/lib/revox/models/call_export_response.rb +22 -0
  15. data/lib/revox/models/call_pause_params.rb +20 -0
  16. data/lib/revox/models/call_pause_response.rb +16 -0
  17. data/lib/revox/models/call_phone_history_params.rb +14 -0
  18. data/lib/revox/models/call_phone_history_response.rb +98 -0
  19. data/lib/revox/models/call_resume_params.rb +20 -0
  20. data/lib/revox/models/call_resume_response.rb +16 -0
  21. data/lib/revox/models/call_retrieve_response.rb +11 -1
  22. data/lib/revox/models/call_search_params.rb +171 -0
  23. data/lib/revox/models/call_search_response.rb +3114 -0
  24. data/lib/revox/models/campaign_get_rows_response.rb +11 -1
  25. data/lib/revox/models/campaign_launch_params.rb +20 -0
  26. data/lib/revox/models/campaign_launch_response.rb +2030 -0
  27. data/lib/revox/models/campaign_pause_params.rb +20 -0
  28. data/lib/revox/models/campaign_pause_response.rb +16 -0
  29. data/lib/revox/models/campaign_resume_params.rb +20 -0
  30. data/lib/revox/models/campaign_resume_response.rb +16 -0
  31. data/lib/revox/models/campaign_statistics_params.rb +20 -0
  32. data/lib/revox/models/campaign_statistics_response.rb +486 -0
  33. data/lib/revox/models/campaign_update_params.rb +234 -0
  34. data/lib/revox/models/campaign_update_response.rb +2030 -0
  35. data/lib/revox/models/phone_number_delete_params.rb +20 -0
  36. data/lib/revox/models/phone_number_delete_response.rb +16 -0
  37. data/lib/revox/models/phone_number_list_params.rb +14 -0
  38. data/lib/revox/models/phone_number_list_response.rb +1777 -0
  39. data/lib/revox/models/phone_number_update_params.rb +32 -0
  40. data/lib/revox/models/phone_number_update_response.rb +1777 -0
  41. data/lib/revox/models/user_retrieve_params.rb +14 -0
  42. data/lib/revox/models/user_retrieve_response.rb +99 -0
  43. data/lib/revox/models/voice_clone_params.rb +78 -0
  44. data/lib/revox/models/voice_clone_response.rb +40 -0
  45. data/lib/revox/models/voice_delete_params.rb +20 -0
  46. data/lib/revox/models/voice_delete_response.rb +16 -0
  47. data/lib/revox/models.rb +37 -1
  48. data/lib/revox/resources/assistants.rb +21 -0
  49. data/lib/revox/resources/auth_status.rb +32 -0
  50. data/lib/revox/resources/call.rb +145 -0
  51. data/lib/revox/resources/campaigns.rb +131 -0
  52. data/lib/revox/resources/phone_numbers.rb +74 -0
  53. data/lib/revox/resources/users.rb +17 -3
  54. data/lib/revox/resources/voices.rb +50 -0
  55. data/lib/revox/version.rb +1 -1
  56. data/lib/revox.rb +40 -5
  57. data/rbi/revox/client.rbi +6 -0
  58. data/rbi/revox/models/assistant_clone_params.rbi +33 -0
  59. data/rbi/revox/models/assistant_clone_response.rbi +3341 -0
  60. data/rbi/revox/models/auth_status_retrieve_params.rbi +27 -0
  61. data/rbi/revox/models/auth_status_retrieve_response.rbi +30 -0
  62. data/rbi/revox/models/call_cancel_params.rbi +33 -0
  63. data/rbi/revox/models/call_cancel_response.rbi +23 -0
  64. data/rbi/revox/models/call_create_response.rbi +12 -0
  65. data/rbi/revox/models/call_export_params.rbi +456 -0
  66. data/rbi/revox/models/call_export_response.rbi +26 -0
  67. data/rbi/revox/models/call_pause_params.rbi +31 -0
  68. data/rbi/revox/models/call_pause_response.rbi +23 -0
  69. data/rbi/revox/models/call_phone_history_params.rbi +27 -0
  70. data/rbi/revox/models/call_phone_history_response.rbi +224 -0
  71. data/rbi/revox/models/call_resume_params.rbi +33 -0
  72. data/rbi/revox/models/call_resume_response.rbi +23 -0
  73. data/rbi/revox/models/call_retrieve_response.rbi +12 -0
  74. data/rbi/revox/models/call_search_params.rbi +288 -0
  75. data/rbi/revox/models/call_search_response.rbi +6593 -0
  76. data/rbi/revox/models/campaign_get_rows_response.rbi +12 -0
  77. data/rbi/revox/models/campaign_launch_params.rbi +33 -0
  78. data/rbi/revox/models/campaign_launch_response.rbi +4170 -0
  79. data/rbi/revox/models/campaign_pause_params.rbi +33 -0
  80. data/rbi/revox/models/campaign_pause_response.rbi +23 -0
  81. data/rbi/revox/models/campaign_resume_params.rbi +33 -0
  82. data/rbi/revox/models/campaign_resume_response.rbi +23 -0
  83. data/rbi/revox/models/campaign_statistics_params.rbi +33 -0
  84. data/rbi/revox/models/campaign_statistics_response.rbi +1011 -0
  85. data/rbi/revox/models/campaign_update_params.rbi +431 -0
  86. data/rbi/revox/models/campaign_update_response.rbi +4170 -0
  87. data/rbi/revox/models/phone_number_delete_params.rbi +33 -0
  88. data/rbi/revox/models/phone_number_delete_response.rbi +26 -0
  89. data/rbi/revox/models/phone_number_list_params.rbi +27 -0
  90. data/rbi/revox/models/phone_number_list_response.rbi +3680 -0
  91. data/rbi/revox/models/phone_number_update_params.rbi +53 -0
  92. data/rbi/revox/models/phone_number_update_response.rbi +3683 -0
  93. data/rbi/revox/models/user_retrieve_params.rbi +27 -0
  94. data/rbi/revox/models/user_retrieve_response.rbi +140 -0
  95. data/rbi/revox/models/voice_clone_params.rbi +141 -0
  96. data/rbi/revox/models/voice_clone_response.rbi +53 -0
  97. data/rbi/revox/models/voice_delete_params.rbi +33 -0
  98. data/rbi/revox/models/voice_delete_response.rbi +23 -0
  99. data/rbi/revox/models.rbi +37 -1
  100. data/rbi/revox/resources/assistants.rbi +12 -0
  101. data/rbi/revox/resources/auth_status.rbi +21 -0
  102. data/rbi/revox/resources/call.rbi +107 -0
  103. data/rbi/revox/resources/campaigns.rbi +94 -0
  104. data/rbi/revox/resources/phone_numbers.rbi +43 -0
  105. data/rbi/revox/resources/users.rbi +8 -2
  106. data/rbi/revox/resources/voices.rbi +39 -0
  107. data/sig/revox/client.rbs +4 -0
  108. data/sig/revox/models/assistant_clone_params.rbs +20 -0
  109. data/sig/revox/models/assistant_clone_response.rbs +1318 -0
  110. data/sig/revox/models/auth_status_retrieve_params.rbs +15 -0
  111. data/sig/revox/models/auth_status_retrieve_response.rbs +13 -0
  112. data/sig/revox/models/call_cancel_params.rbs +20 -0
  113. data/sig/revox/models/call_cancel_response.rbs +13 -0
  114. data/sig/revox/models/call_create_response.rbs +5 -0
  115. data/sig/revox/models/call_export_params.rbs +234 -0
  116. data/sig/revox/models/call_export_response.rbs +15 -0
  117. data/sig/revox/models/call_pause_params.rbs +20 -0
  118. data/sig/revox/models/call_pause_response.rbs +13 -0
  119. data/sig/revox/models/call_phone_history_params.rbs +15 -0
  120. data/sig/revox/models/call_phone_history_response.rbs +102 -0
  121. data/sig/revox/models/call_resume_params.rbs +20 -0
  122. data/sig/revox/models/call_resume_response.rbs +13 -0
  123. data/sig/revox/models/call_retrieve_response.rbs +5 -0
  124. data/sig/revox/models/call_search_params.rbs +198 -0
  125. data/sig/revox/models/call_search_response.rbs +2654 -0
  126. data/sig/revox/models/campaign_get_rows_response.rbs +5 -0
  127. data/sig/revox/models/campaign_launch_params.rbs +20 -0
  128. data/sig/revox/models/campaign_launch_response.rbs +1694 -0
  129. data/sig/revox/models/campaign_pause_params.rbs +20 -0
  130. data/sig/revox/models/campaign_pause_response.rbs +13 -0
  131. data/sig/revox/models/campaign_resume_params.rbs +20 -0
  132. data/sig/revox/models/campaign_resume_response.rbs +13 -0
  133. data/sig/revox/models/campaign_statistics_params.rbs +20 -0
  134. data/sig/revox/models/campaign_statistics_response.rbs +458 -0
  135. data/sig/revox/models/campaign_update_params.rbs +203 -0
  136. data/sig/revox/models/campaign_update_response.rbs +1694 -0
  137. data/sig/revox/models/phone_number_delete_params.rbs +20 -0
  138. data/sig/revox/models/phone_number_delete_response.rbs +13 -0
  139. data/sig/revox/models/phone_number_list_params.rbs +15 -0
  140. data/sig/revox/models/phone_number_list_response.rbs +1462 -0
  141. data/sig/revox/models/phone_number_update_params.rbs +32 -0
  142. data/sig/revox/models/phone_number_update_response.rbs +1460 -0
  143. data/sig/revox/models/user_retrieve_params.rbs +14 -0
  144. data/sig/revox/models/user_retrieve_response.rbs +71 -0
  145. data/sig/revox/models/voice_clone_params.rbs +79 -0
  146. data/sig/revox/models/voice_clone_response.rbs +40 -0
  147. data/sig/revox/models/voice_delete_params.rbs +20 -0
  148. data/sig/revox/models/voice_delete_response.rbs +13 -0
  149. data/sig/revox/models.rbs +37 -1
  150. data/sig/revox/resources/assistants.rbs +5 -0
  151. data/sig/revox/resources/auth_status.rbs +11 -0
  152. data/sig/revox/resources/call.rbs +45 -0
  153. data/sig/revox/resources/campaigns.rbs +33 -0
  154. data/sig/revox/resources/phone_numbers.rbs +23 -0
  155. data/sig/revox/resources/users.rbs +3 -1
  156. data/sig/revox/resources/voices.rbs +13 -0
  157. metadata +121 -16
  158. data/lib/revox/models/users/me_retrieve_params.rb +0 -16
  159. data/lib/revox/models/users/me_retrieve_response.rb +0 -101
  160. data/lib/revox/models/users/me_update_params.rb +0 -22
  161. data/lib/revox/models/users/me_update_response.rb +0 -101
  162. data/lib/revox/resources/users/me.rb +0 -55
  163. data/rbi/revox/models/users/me_retrieve_params.rbi +0 -29
  164. data/rbi/revox/models/users/me_retrieve_response.rbi +0 -149
  165. data/rbi/revox/models/users/me_update_params.rbi +0 -43
  166. data/rbi/revox/models/users/me_update_response.rbi +0 -149
  167. data/rbi/revox/resources/users/me.rbi +0 -33
  168. data/sig/revox/models/users/me_retrieve_params.rbs +0 -16
  169. data/sig/revox/models/users/me_retrieve_response.rbs +0 -75
  170. data/sig/revox/models/users/me_update_params.rbs +0 -28
  171. data/sig/revox/models/users/me_update_response.rbs +0 -75
  172. data/sig/revox/resources/users/me.rbs +0 -18
@@ -57,6 +57,48 @@ module Revox
57
57
  def retrieve(id, request_options: {})
58
58
  end
59
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
+
60
102
  # Retrieve all campaigns for your organization, including both active and
61
103
  # completed ones.
62
104
  sig do
@@ -112,6 +154,58 @@ module Revox
112
154
  def get_rows(id, request_options: {})
113
155
  end
114
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: {})
207
+ end
208
+
115
209
  # @api private
116
210
  sig { params(client: Revox::Client).returns(T.attached_class) }
117
211
  def self.new(client:)
@@ -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) }
@@ -29,6 +29,45 @@ module Revox
29
29
  def list(request_options: {})
30
30
  end
31
31
 
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
+
32
71
  # Generate a short audio preview for a given voice.
33
72
  sig do
34
73
  params(
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
@@ -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