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
@@ -13,7 +13,7 @@ module Revox
13
13
  # detected. You can also set concurrency limits and pass prompt variables for
14
14
  # dynamic personalization.
15
15
  #
16
- # @overload create(phone_number:, assistant: nil, assistant_id: nil, concurrency: nil, force_now: nil, from_phone_number: nil, metadata: nil, prompt_variables: nil, scheduled_at: nil, request_options: {})
16
+ # @overload create(phone_number:, assistant: nil, assistant_id: nil, concurrency: nil, from_phone_number: nil, metadata: nil, prompt_variables: nil, scheduled_at: nil, skip_calling_window: nil, request_options: {})
17
17
  #
18
18
  # @param phone_number [String] The phone number to call in the E.164 format. Example: +1234567890
19
19
  #
@@ -21,9 +21,7 @@ module Revox
21
21
  #
22
22
  # @param assistant_id [String] The ID of the assistant to use for this call.
23
23
  #
24
- # @param concurrency [Revox::Models::CallCreateParams::Concurrency] Limit the number of concurrent calls for a given concurrency key.
25
- #
26
- # @param force_now [Boolean] The prompt to use for the call. This will be given to the LLM (gpt-4.1)
24
+ # @param concurrency [Revox::Models::CallCreateParams::Concurrency] Limit the number of concurrent calls for a given concurrency key. The limit itse
27
25
  #
28
26
  # @param from_phone_number [String] The phone number to use for making the call (e.g., +1234567890). If not provided
29
27
  #
@@ -33,6 +31,8 @@ module Revox
33
31
  #
34
32
  # @param scheduled_at [Time, Object] Schedule the call to start at a specific date and time (ISO 8601 format). If not
35
33
  #
34
+ # @param skip_calling_window [Boolean] Bypass the calling-window check for this call so it dials even outside the assis
35
+ #
36
36
  # @param request_options [Revox::RequestOptions, Hash{Symbol=>Object}, nil]
37
37
  #
38
38
  # @return [Revox::Models::CallCreateResponse]
@@ -72,6 +72,151 @@ module Revox
72
72
  )
73
73
  end
74
74
 
75
+ # Cancel a running or scheduled call.
76
+ #
77
+ # @overload cancel(id, request_options: {})
78
+ #
79
+ # @param id [String]
80
+ # @param request_options [Revox::RequestOptions, Hash{Symbol=>Object}, nil]
81
+ #
82
+ # @return [Revox::Models::CallCancelResponse]
83
+ #
84
+ # @see Revox::Models::CallCancelParams
85
+ def cancel(id, params = {})
86
+ @client.request(
87
+ method: :post,
88
+ path: ["call/%1$s/cancel", id],
89
+ model: Revox::Models::CallCancelResponse,
90
+ options: params[:request_options]
91
+ )
92
+ end
93
+
94
+ # Some parameter documentations has been truncated, see
95
+ # {Revox::Models::CallExportParams} for more details.
96
+ #
97
+ # Export a list of call attempts as a CSV file.
98
+ #
99
+ # @overload export(filters:, include_metadata: nil, include_structured_output_fields: nil, request_options: {})
100
+ #
101
+ # @param filters [Revox::Models::CallExportParams::Filters]
102
+ #
103
+ # @param include_metadata [Boolean] Whether to include the metadata in the CSV file. These are the fields you (optio
104
+ #
105
+ # @param include_structured_output_fields [Boolean] Whether to include the structured output fields in the CSV file. These are gener
106
+ #
107
+ # @param request_options [Revox::RequestOptions, Hash{Symbol=>Object}, nil]
108
+ #
109
+ # @return [Revox::Models::CallExportResponse]
110
+ #
111
+ # @see Revox::Models::CallExportParams
112
+ def export(params)
113
+ parsed, options = Revox::CallExportParams.dump_request(params)
114
+ @client.request(
115
+ method: :post,
116
+ path: "call/export",
117
+ body: parsed,
118
+ model: Revox::Models::CallExportResponse,
119
+ options: options
120
+ )
121
+ end
122
+
123
+ # Pause a call's retry loop. The current in-progress attempt (if any) will finish,
124
+ # but no new attempts will be started until the call is resumed.
125
+ #
126
+ # @overload pause(id, request_options: {})
127
+ #
128
+ # @param id [String]
129
+ # @param request_options [Revox::RequestOptions, Hash{Symbol=>Object}, nil]
130
+ #
131
+ # @return [Revox::Models::CallPauseResponse]
132
+ #
133
+ # @see Revox::Models::CallPauseParams
134
+ def pause(id, params = {})
135
+ @client.request(
136
+ method: :post,
137
+ path: ["call/%1$s/pause", id],
138
+ model: Revox::Models::CallPauseResponse,
139
+ options: params[:request_options]
140
+ )
141
+ end
142
+
143
+ # Returns a map of phone numbers to the number of calls and associated campaigns
144
+ # across the entire organization. Useful for detecting contacts that have already
145
+ # been reached.
146
+ #
147
+ # @overload phone_history(request_options: {})
148
+ #
149
+ # @param request_options [Revox::RequestOptions, Hash{Symbol=>Object}, nil]
150
+ #
151
+ # @return [Revox::Models::CallPhoneHistoryResponse]
152
+ #
153
+ # @see Revox::Models::CallPhoneHistoryParams
154
+ def phone_history(params = {})
155
+ @client.request(
156
+ method: :get,
157
+ path: "calls/phone-history",
158
+ model: Revox::Models::CallPhoneHistoryResponse,
159
+ options: params[:request_options]
160
+ )
161
+ end
162
+
163
+ # Resume a previously paused call. The retry loop will continue from where it left
164
+ # off.
165
+ #
166
+ # @overload resume(id, request_options: {})
167
+ #
168
+ # @param id [String]
169
+ # @param request_options [Revox::RequestOptions, Hash{Symbol=>Object}, nil]
170
+ #
171
+ # @return [Revox::Models::CallResumeResponse]
172
+ #
173
+ # @see Revox::Models::CallResumeParams
174
+ def resume(id, params = {})
175
+ @client.request(
176
+ method: :post,
177
+ path: ["call/%1$s/resume", id],
178
+ model: Revox::Models::CallResumeResponse,
179
+ options: params[:request_options]
180
+ )
181
+ end
182
+
183
+ # Retrieve a paginated list of call attempts. Each entry includes the call status,
184
+ # phone number, assistant used, transcript, and timestamps. Use the page and
185
+ # page_size query parameters to navigate through results.
186
+ #
187
+ # @overload search(assignee_ids:, assistant_ids:, campaign_ids:, directions:, from_phone_numbers:, outcomes:, page:, page_size:, results:, statuses:, call_ids: nil, query: nil, sort_by: nil, sort_direction: nil, to_phone_number: nil, request_options: {})
188
+ #
189
+ # @param assignee_ids [Array<String>]
190
+ # @param assistant_ids [Array<String>]
191
+ # @param campaign_ids [Array<String>]
192
+ # @param directions [Array<Symbol, Revox::Models::CallSearchParams::Direction>]
193
+ # @param from_phone_numbers [Array<String>]
194
+ # @param outcomes [Array<Symbol, Revox::Models::CallSearchParams::Outcome>]
195
+ # @param page [Integer]
196
+ # @param page_size [Integer]
197
+ # @param results [Array<Symbol, Revox::Models::CallSearchParams::Result>]
198
+ # @param statuses [Array<Symbol, Revox::Models::CallSearchParams::Status>]
199
+ # @param call_ids [Array<String>]
200
+ # @param query [String]
201
+ # @param sort_by [String]
202
+ # @param sort_direction [Symbol, Revox::Models::CallSearchParams::SortDirection]
203
+ # @param to_phone_number [String]
204
+ # @param request_options [Revox::RequestOptions, Hash{Symbol=>Object}, nil]
205
+ #
206
+ # @return [Revox::Models::CallSearchResponse]
207
+ #
208
+ # @see Revox::Models::CallSearchParams
209
+ def search(params)
210
+ parsed, options = Revox::CallSearchParams.dump_request(params)
211
+ @client.request(
212
+ method: :post,
213
+ path: "call/search",
214
+ body: parsed,
215
+ model: Revox::Models::CallSearchResponse,
216
+ options: options
217
+ )
218
+ end
219
+
75
220
  # @api private
76
221
  #
77
222
  # @param client [Revox::Client]
@@ -6,29 +6,24 @@ module Revox
6
6
  # Some parameter documentations has been truncated, see
7
7
  # {Revox::Models::CampaignCreateParams} for more details.
8
8
  #
9
- # Create a new outbound calling campaign. By default the campaign launches
10
- # immediately. Set launch to false to save as a draft for later review.
9
+ # Create a new outbound calling campaign. Every contact is materialized as a call
10
+ # in the `not_launched` status nothing is dialed. Use POST
11
+ # /campaigns/:id/launch-calls to send them.
11
12
  #
12
- # @overload create(assistant_id:, contacts:, launch:, name:, type:, call_retry_config: nil, from_phone_number: nil, max_concurrent_calls: nil, scheduled_at: nil, request_options: {})
13
+ # @overload create(assistant_id:, contacts:, name:, call_retry_config: nil, from_phone_number: nil, max_concurrent_calls: nil, request_options: {})
13
14
  #
14
15
  # @param assistant_id [String] The ID of the assistant to use
15
16
  #
16
17
  # @param contacts [Array<Revox::Models::CampaignCreateParams::Contact>] The list of contacts to call
17
18
  #
18
- # @param launch [Boolean] Whether to launch the campaign immediately. Set to false to save as a draft.
19
- #
20
19
  # @param name [String] The name of the campaign
21
20
  #
22
- # @param type [Symbol, Revox::Models::CampaignCreateParams::Type] Campaign type. 'jump_in' campaigns only dial while someone is on the campaign pa
23
- #
24
21
  # @param call_retry_config [Revox::Models::CampaignCreateParams::CallRetryConfig] Override retry configuration for calls in this campaign. If not provided, uses t
25
22
  #
26
23
  # @param from_phone_number [String] The phone number to use for outbound calls (E.164 format, e.g., +1234567890)
27
24
  #
28
25
  # @param max_concurrent_calls [Float] Maximum number of concurrent calls allowed for this campaign
29
26
  #
30
- # @param scheduled_at [Time, Object] Schedule all calls in this campaign to start at a specific date and time (ISO 86
31
- #
32
27
  # @param request_options [Revox::RequestOptions, Hash{Symbol=>Object}, nil]
33
28
  #
34
29
  # @return [Revox::Models::CampaignCreateResponse]
@@ -65,6 +60,43 @@ module Revox
65
60
  )
66
61
  end
67
62
 
63
+ # Some parameter documentations has been truncated, see
64
+ # {Revox::Models::CampaignUpdateParams} for more details.
65
+ #
66
+ # Update a campaign's name, outbound number, retry configuration (calling hours,
67
+ # retry delay, max attempts) and concurrency cap. Changes are applied to the
68
+ # campaign's calls that have not completed yet. The assistant is fixed at
69
+ # creation; add contacts with POST /campaigns/:id/rows, and choose when calls go
70
+ # out with POST /campaigns/:id/launch-calls.
71
+ #
72
+ # @overload update(id, call_retry_config: nil, from_phone_number: nil, max_concurrent_calls: nil, name: nil, request_options: {})
73
+ #
74
+ # @param id [String]
75
+ #
76
+ # @param call_retry_config [Revox::Models::CampaignUpdateParams::CallRetryConfig, nil] Configuration for call retry behavior including time windows, delays, and max it
77
+ #
78
+ # @param from_phone_number [String, nil] The phone number to use for outbound calls. Editable after launch; applied to th
79
+ #
80
+ # @param max_concurrent_calls [Float, nil] Maximum concurrent calls. Editable after launch.
81
+ #
82
+ # @param name [String] Campaign display name
83
+ #
84
+ # @param request_options [Revox::RequestOptions, Hash{Symbol=>Object}, nil]
85
+ #
86
+ # @return [Revox::Models::CampaignUpdateResponse]
87
+ #
88
+ # @see Revox::Models::CampaignUpdateParams
89
+ def update(id, params = {})
90
+ parsed, options = Revox::CampaignUpdateParams.dump_request(params)
91
+ @client.request(
92
+ method: :patch,
93
+ path: ["campaigns/%1$s", id],
94
+ body: parsed,
95
+ model: Revox::Models::CampaignUpdateResponse,
96
+ options: options
97
+ )
98
+ end
99
+
68
100
  # Retrieve all campaigns for your organization, including both active and
69
101
  # completed ones.
70
102
  #
@@ -145,8 +177,7 @@ module Revox
145
177
  )
146
178
  end
147
179
 
148
- # Retrieve all contact rows for a campaign. Useful for loading draft campaign data
149
- # for editing.
180
+ # Retrieve all contact rows for a campaign.
150
181
  #
151
182
  # @overload get_rows(id, request_options: {})
152
183
  #
@@ -165,6 +196,74 @@ module Revox
165
196
  )
166
197
  end
167
198
 
199
+ # Pause a running campaign so no further calls are placed. In-progress calls are
200
+ # allowed to finish; pending and scheduled calls are held until the campaign is
201
+ # resumed. Scheduled retry timers keep counting down, so a call resumed before its
202
+ # time fires on schedule, while one resumed after its time fires at the next
203
+ # available calling window.
204
+ #
205
+ # @overload pause(id, request_options: {})
206
+ #
207
+ # @param id [String]
208
+ # @param request_options [Revox::RequestOptions, Hash{Symbol=>Object}, nil]
209
+ #
210
+ # @return [Revox::Models::CampaignPauseResponse]
211
+ #
212
+ # @see Revox::Models::CampaignPauseParams
213
+ def pause(id, params = {})
214
+ @client.request(
215
+ method: :post,
216
+ path: ["campaigns/%1$s/pause", id],
217
+ model: Revox::Models::CampaignPauseResponse,
218
+ options: params[:request_options]
219
+ )
220
+ end
221
+
222
+ # Resume a paused campaign. Held calls continue from where they left off; calls
223
+ # whose scheduled time passed during the pause are placed at the next available
224
+ # calling window.
225
+ #
226
+ # @overload resume(id, request_options: {})
227
+ #
228
+ # @param id [String]
229
+ # @param request_options [Revox::RequestOptions, Hash{Symbol=>Object}, nil]
230
+ #
231
+ # @return [Revox::Models::CampaignResumeResponse]
232
+ #
233
+ # @see Revox::Models::CampaignResumeParams
234
+ def resume(id, params = {})
235
+ @client.request(
236
+ method: :post,
237
+ path: ["campaigns/%1$s/resume", id],
238
+ model: Revox::Models::CampaignResumeResponse,
239
+ options: params[:request_options]
240
+ )
241
+ end
242
+
243
+ # Retrieve the "Statistiques" report for a campaign: the four-tile cascade funnel
244
+ # (appelés → eus en ligne → réels échanges → leads chauds), two secondary tiles,
245
+ # the distribution of exchanges by outcome, the list of hot leads, and
246
+ # data-extraction coverage. All counts are over distinct E.164-normalized phone
247
+ # numbers, and the outcome-based categories derive exclusively from calls.outcome.
248
+ # Cascade percentages are null when their denominator is zero.
249
+ #
250
+ # @overload statistics(id, request_options: {})
251
+ #
252
+ # @param id [String]
253
+ # @param request_options [Revox::RequestOptions, Hash{Symbol=>Object}, nil]
254
+ #
255
+ # @return [Revox::Models::CampaignStatisticsResponse]
256
+ #
257
+ # @see Revox::Models::CampaignStatisticsParams
258
+ def statistics(id, params = {})
259
+ @client.request(
260
+ method: :get,
261
+ path: ["campaigns/%1$s/statistics", id],
262
+ model: Revox::Models::CampaignStatisticsResponse,
263
+ options: params[:request_options]
264
+ )
265
+ end
266
+
168
267
  # @api private
169
268
  #
170
269
  # @param client [Revox::Client]
@@ -0,0 +1,74 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Revox
4
+ module Resources
5
+ class PhoneNumbers
6
+ # Update a phone number
7
+ #
8
+ # @overload update(id, inbound_assistant_id: nil, label: nil, request_options: {})
9
+ #
10
+ # @param id [String]
11
+ # @param inbound_assistant_id [String, nil]
12
+ # @param label [String, nil]
13
+ # @param request_options [Revox::RequestOptions, Hash{Symbol=>Object}, nil]
14
+ #
15
+ # @return [Revox::Models::PhoneNumberUpdateResponse]
16
+ #
17
+ # @see Revox::Models::PhoneNumberUpdateParams
18
+ def update(id, params = {})
19
+ parsed, options = Revox::PhoneNumberUpdateParams.dump_request(params)
20
+ @client.request(
21
+ method: :patch,
22
+ path: ["phone-numbers/%1$s", id],
23
+ body: parsed,
24
+ model: Revox::Models::PhoneNumberUpdateResponse,
25
+ options: options
26
+ )
27
+ end
28
+
29
+ # Get phone numbers
30
+ #
31
+ # @overload list(request_options: {})
32
+ #
33
+ # @param request_options [Revox::RequestOptions, Hash{Symbol=>Object}, nil]
34
+ #
35
+ # @return [Revox::Models::PhoneNumberListResponse]
36
+ #
37
+ # @see Revox::Models::PhoneNumberListParams
38
+ def list(params = {})
39
+ @client.request(
40
+ method: :get,
41
+ path: "phone-numbers",
42
+ model: Revox::Models::PhoneNumberListResponse,
43
+ options: params[:request_options]
44
+ )
45
+ end
46
+
47
+ # Delete a phone number
48
+ #
49
+ # @overload delete(id, request_options: {})
50
+ #
51
+ # @param id [String]
52
+ # @param request_options [Revox::RequestOptions, Hash{Symbol=>Object}, nil]
53
+ #
54
+ # @return [Revox::Models::PhoneNumberDeleteResponse]
55
+ #
56
+ # @see Revox::Models::PhoneNumberDeleteParams
57
+ def delete(id, params = {})
58
+ @client.request(
59
+ method: :delete,
60
+ path: ["phone-numbers/%1$s", id],
61
+ model: Revox::Models::PhoneNumberDeleteResponse,
62
+ options: params[:request_options]
63
+ )
64
+ end
65
+
66
+ # @api private
67
+ #
68
+ # @param client [Revox::Client]
69
+ def initialize(client:)
70
+ @client = client
71
+ end
72
+ end
73
+ end
74
+ end
@@ -3,15 +3,29 @@
3
3
  module Revox
4
4
  module Resources
5
5
  class Users
6
- # @return [Revox::Resources::Users::Me]
7
- attr_reader :me
6
+ # Get the current authenticated user.
7
+ #
8
+ # @overload retrieve(request_options: {})
9
+ #
10
+ # @param request_options [Revox::RequestOptions, Hash{Symbol=>Object}, nil]
11
+ #
12
+ # @return [Revox::Models::UserRetrieveResponse]
13
+ #
14
+ # @see Revox::Models::UserRetrieveParams
15
+ def retrieve(params = {})
16
+ @client.request(
17
+ method: :get,
18
+ path: "users/me",
19
+ model: Revox::Models::UserRetrieveResponse,
20
+ options: params[:request_options]
21
+ )
22
+ end
8
23
 
9
24
  # @api private
10
25
  #
11
26
  # @param client [Revox::Client]
12
27
  def initialize(client:)
13
28
  @client = client
14
- @me = Revox::Resources::Users::Me.new(client: client)
15
29
  end
16
30
  end
17
31
  end
@@ -47,6 +47,56 @@ module Revox
47
47
  )
48
48
  end
49
49
 
50
+ # Delete a cloned voice. Only cloned voices can be deleted. Returns 409 if the
51
+ # voice is in use by an assistant.
52
+ #
53
+ # @overload delete(id, request_options: {})
54
+ #
55
+ # @param id [String] The cloned voice ID to delete.
56
+ #
57
+ # @param request_options [Revox::RequestOptions, Hash{Symbol=>Object}, nil]
58
+ #
59
+ # @return [Revox::Models::VoiceDeleteResponse]
60
+ #
61
+ # @see Revox::Models::VoiceDeleteParams
62
+ def delete(id, params = {})
63
+ @client.request(
64
+ method: :delete,
65
+ path: ["voices/%1$s", id],
66
+ model: Revox::Models::VoiceDeleteResponse,
67
+ options: params[:request_options]
68
+ )
69
+ end
70
+
71
+ # Clone a voice from an audio recording. Send audio as a base64-encoded string.
72
+ # The cloned voice will be available in GET /voices.
73
+ #
74
+ # @overload clone_(audio:, content_type:, language:, name:, request_options: {})
75
+ #
76
+ # @param audio [String] Base64-encoded audio data (max ~7.5MB decoded)
77
+ #
78
+ # @param content_type [Symbol, Revox::Models::VoiceCloneParams::ContentType] MIME type of the audio
79
+ #
80
+ # @param language [Symbol, Revox::Models::VoiceCloneParams::Language] Language of the voice
81
+ #
82
+ # @param name [String] Name for the cloned voice
83
+ #
84
+ # @param request_options [Revox::RequestOptions, Hash{Symbol=>Object}, nil]
85
+ #
86
+ # @return [Revox::Models::VoiceCloneResponse]
87
+ #
88
+ # @see Revox::Models::VoiceCloneParams
89
+ def clone_(params)
90
+ parsed, options = Revox::VoiceCloneParams.dump_request(params)
91
+ @client.request(
92
+ method: :post,
93
+ path: "voices/clone",
94
+ body: parsed,
95
+ model: Revox::Models::VoiceCloneResponse,
96
+ options: options
97
+ )
98
+ end
99
+
50
100
  # Some parameter documentations has been truncated, see
51
101
  # {Revox::Models::VoicePreviewParams} for more details.
52
102
  #
data/lib/revox/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Revox
4
- VERSION = "0.2.0"
4
+ VERSION = "0.4.0"
5
5
  end
data/lib/revox.rb CHANGED
@@ -52,6 +52,8 @@ require_relative "revox/errors"
52
52
  require_relative "revox/internal/transport/base_client"
53
53
  require_relative "revox/internal/transport/pooled_net_requester"
54
54
  require_relative "revox/client"
55
+ require_relative "revox/models/assistant_clone_params"
56
+ require_relative "revox/models/assistant_clone_response"
55
57
  require_relative "revox/models/assistant_create_params"
56
58
  require_relative "revox/models/assistant_create_response"
57
59
  require_relative "revox/models/assistant_delete_params"
@@ -62,10 +64,24 @@ require_relative "revox/models/assistant_retrieve_params"
62
64
  require_relative "revox/models/assistant_retrieve_response"
63
65
  require_relative "revox/models/assistant_update_params"
64
66
  require_relative "revox/models/assistant_update_response"
67
+ require_relative "revox/models/auth_status_retrieve_params"
68
+ require_relative "revox/models/auth_status_retrieve_response"
69
+ require_relative "revox/models/call_cancel_params"
70
+ require_relative "revox/models/call_cancel_response"
65
71
  require_relative "revox/models/call_create_params"
66
72
  require_relative "revox/models/call_create_response"
73
+ require_relative "revox/models/call_export_params"
74
+ require_relative "revox/models/call_export_response"
75
+ require_relative "revox/models/call_pause_params"
76
+ require_relative "revox/models/call_pause_response"
77
+ require_relative "revox/models/call_phone_history_params"
78
+ require_relative "revox/models/call_phone_history_response"
79
+ require_relative "revox/models/call_resume_params"
80
+ require_relative "revox/models/call_resume_response"
67
81
  require_relative "revox/models/call_retrieve_params"
68
82
  require_relative "revox/models/call_retrieve_response"
83
+ require_relative "revox/models/call_search_params"
84
+ require_relative "revox/models/call_search_response"
69
85
  require_relative "revox/models/campaign_cancel_params"
70
86
  require_relative "revox/models/campaign_cancel_response"
71
87
  require_relative "revox/models/campaign_create_params"
@@ -78,12 +94,28 @@ require_relative "revox/models/campaign_get_rows_params"
78
94
  require_relative "revox/models/campaign_get_rows_response"
79
95
  require_relative "revox/models/campaign_list_params"
80
96
  require_relative "revox/models/campaign_list_response"
97
+ require_relative "revox/models/campaign_pause_params"
98
+ require_relative "revox/models/campaign_pause_response"
99
+ require_relative "revox/models/campaign_resume_params"
100
+ require_relative "revox/models/campaign_resume_response"
81
101
  require_relative "revox/models/campaign_retrieve_params"
82
102
  require_relative "revox/models/campaign_retrieve_response"
83
- require_relative "revox/models/users/me_retrieve_params"
84
- require_relative "revox/models/users/me_retrieve_response"
85
- require_relative "revox/models/users/me_update_params"
86
- require_relative "revox/models/users/me_update_response"
103
+ require_relative "revox/models/campaign_statistics_params"
104
+ require_relative "revox/models/campaign_statistics_response"
105
+ require_relative "revox/models/campaign_update_params"
106
+ require_relative "revox/models/campaign_update_response"
107
+ require_relative "revox/models/phone_number_delete_params"
108
+ require_relative "revox/models/phone_number_delete_response"
109
+ require_relative "revox/models/phone_number_list_params"
110
+ require_relative "revox/models/phone_number_list_response"
111
+ require_relative "revox/models/phone_number_update_params"
112
+ require_relative "revox/models/phone_number_update_response"
113
+ require_relative "revox/models/user_retrieve_params"
114
+ require_relative "revox/models/user_retrieve_response"
115
+ require_relative "revox/models/voice_clone_params"
116
+ require_relative "revox/models/voice_clone_response"
117
+ require_relative "revox/models/voice_delete_params"
118
+ require_relative "revox/models/voice_delete_response"
87
119
  require_relative "revox/models/voice_list_params"
88
120
  require_relative "revox/models/voice_list_response"
89
121
  require_relative "revox/models/voice_preview_params"
@@ -91,8 +123,9 @@ require_relative "revox/models/voice_retrieve_params"
91
123
  require_relative "revox/models/voice_retrieve_response"
92
124
  require_relative "revox/models"
93
125
  require_relative "revox/resources/assistants"
126
+ require_relative "revox/resources/auth_status"
94
127
  require_relative "revox/resources/call"
95
128
  require_relative "revox/resources/campaigns"
129
+ require_relative "revox/resources/phone_numbers"
96
130
  require_relative "revox/resources/users"
97
- require_relative "revox/resources/users/me"
98
131
  require_relative "revox/resources/voices"
data/rbi/revox/client.rbi CHANGED
@@ -13,9 +13,15 @@ module Revox
13
13
  sig { returns(String) }
14
14
  attr_reader :api_key
15
15
 
16
+ sig { returns(Revox::Resources::AuthStatus) }
17
+ attr_reader :auth_status
18
+
16
19
  sig { returns(Revox::Resources::Campaigns) }
17
20
  attr_reader :campaigns
18
21
 
22
+ sig { returns(Revox::Resources::PhoneNumbers) }
23
+ attr_reader :phone_numbers
24
+
19
25
  sig { returns(Revox::Resources::Assistants) }
20
26
  attr_reader :assistants
21
27
 
@@ -0,0 +1,33 @@
1
+ # typed: strong
2
+
3
+ module Revox
4
+ module Models
5
+ class AssistantCloneParams < 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::AssistantCloneParams, 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