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
@@ -12,18 +12,34 @@ module Revox
12
12
  # voice provider and voice ID (Cartesia or ElevenLabs), and end-of-call behavior.
13
13
  # Once created, reference the assistant by its ID when placing calls.
14
14
  #
15
- # @overload create(name:, prompt:, background_sound: nil, calendly: nil, call_retry_config: nil, end_of_call_sentence: nil, faq_items: nil, first_sentence: nil, first_sentence_delay_ms: nil, first_sentence_mode: nil, ivr_navigation_enabled: nil, llm_model: nil, max_call_duration_secs: nil, structured_output_config: nil, transfer_phone_number: nil, voice: nil, voicemail_message: nil, webhook_url: nil, request_options: {})
15
+ # @overload create(name:, prompt:, after_call_sms_outcomes: nil, after_call_sms_prompt: nil, background_sound: nil, background_sound_volume: nil, calendly: nil, call_retry_config: nil, cartesia_dictionary_pronunciation_id: nil, custom_tools: nil, email_notification_address: nil, email_notification_language: nil, email_notification_outcomes: nil, end_of_call_sentence: nil, faq_items: nil, first_sentence: nil, first_sentence_delay_ms: nil, first_sentence_mode: nil, from_phone_number: nil, human_transfer_mode: nil, ivr_navigation_enabled: nil, llm_model: nil, logo_url: nil, max_call_duration_secs: nil, max_duration_end_message: nil, position: nil, prompt_flow: nil, slack: nil, sms_enabled: nil, sms_template: nil, structured_output_config: nil, structured_output_prompt: nil, stt_context: nil, stt_model: nil, thinking_sound: nil, thinking_sound_probability: nil, thinking_sound_volume: nil, transfer_phone_number: nil, type: nil, voice: nil, voicemail_message: nil, voicemail_sms_prompt: nil, warm_transfer_summary_instructions: nil, webhook_url: nil, zoho: nil, request_options: {})
16
16
  #
17
17
  # @param name [String]
18
18
  #
19
19
  # @param prompt [String] The prompt to use for the call. This will be given to the LLM (gpt-4.1)
20
20
  #
21
- # @param background_sound [Symbol, Revox::Models::AssistantCreateParams::BackgroundSound, nil] The background sound to play during the call. Useful to give the impression that
21
+ # @param after_call_sms_outcomes [Array<Symbol, Revox::Models::AssistantCreateParams::AfterCallSMSOutcome>, nil] Which call outcomes trigger the after-call SMS. When empty or null, no after-cal
22
22
  #
23
- # @param calendly [Revox::Models::AssistantCreateParams::Calendly]
23
+ # @param after_call_sms_prompt [String, nil] Prompt / instructions for the after-call SMS. Supports {{variable}} placeholders
24
+ #
25
+ # @param background_sound [Symbol, Revox::Models::AssistantCreateParams::BackgroundSound, nil] Ambient background sound to play during the call. null/omitted disables it.
26
+ #
27
+ # @param background_sound_volume [Float] Volume of the ambient background sound (0 = silent, 1 = max).
28
+ #
29
+ # @param calendly [Revox::Models::AssistantCreateParams::Calendly, nil]
24
30
  #
25
31
  # @param call_retry_config [Revox::Models::AssistantCreateParams::CallRetryConfig] Configuration for call retry behavior including time windows, delays, and max it
26
32
  #
33
+ # @param cartesia_dictionary_pronunciation_id [String, nil] Optional Cartesia pronunciation dictionary ID to use for this assistant's calls.
34
+ #
35
+ # @param custom_tools [Array<Revox::Models::AssistantCreateParams::CustomTool>, nil] Custom API tools the assistant can call during conversations. Each tool defines
36
+ #
37
+ # @param email_notification_address [String, nil] Email address(es) to receive notifications when a call ends with a matching outc
38
+ #
39
+ # @param email_notification_language [Symbol, Revox::Models::AssistantCreateParams::EmailNotificationLanguage] The language used for the notification email content. One of "en" or "fr". Defau
40
+ #
41
+ # @param email_notification_outcomes [Array<Symbol, Revox::Models::AssistantCreateParams::EmailNotificationOutcome>, nil] Which call outcomes trigger an email notification. E.g. ["interested", "complete
42
+ #
27
43
  # @param end_of_call_sentence [String] Optional message to say when the agent decides to end the call.
28
44
  #
29
45
  # @param faq_items [Array<Revox::Models::AssistantCreateParams::FaqItem>] FAQ items to associate with this assistant. When provided, replaces all existing
@@ -34,22 +50,60 @@ module Revox
34
50
  #
35
51
  # @param first_sentence_mode [Symbol, Revox::Models::AssistantCreateParams::FirstSentenceMode] How the first sentence should be handled. "generated" means the LLM will generat
36
52
  #
53
+ # @param from_phone_number [String, nil] Override the default outbound phone number for calls placed with this assistant.
54
+ #
55
+ # @param human_transfer_mode [Symbol, Revox::Models::AssistantCreateParams::HumanTransferMode, nil] When transfer_phone_number is set: "warm" (AI bridges) or "cold" (SIP REFER; tru
56
+ #
37
57
  # @param ivr_navigation_enabled [Boolean] Enable IVR navigation tools. When enabled, the assistant can send DTMF tones and
38
58
  #
39
- # @param llm_model [Revox::Models::AssistantCreateParams::LlmModel::UnionMember0, Revox::Models::AssistantCreateParams::LlmModel::UnionMember1]
59
+ # @param llm_model [Revox::Models::AssistantCreateParams::LlmModel::UnionMember0, Revox::Models::AssistantCreateParams::LlmModel::UnionMember1, Revox::Models::AssistantCreateParams::LlmModel::UnionMember2, Revox::Models::AssistantCreateParams::LlmModel::UnionMember3]
60
+ #
61
+ # @param logo_url [String, nil] Public URL of the brand logo shown on the assistant's demo page. Upload a new lo
40
62
  #
41
63
  # @param max_call_duration_secs [Float] The maximum duration of the call in seconds. This is the maximum time the call w
42
64
  #
65
+ # @param max_duration_end_message [String, nil] Optional message the agent will say, without being interruptible, when the call
66
+ #
67
+ # @param position [Revox::Models::AssistantCreateParams::Position, nil] Canvas position of this assistant's node in its multi-step flow editor.
68
+ #
69
+ # @param prompt_flow [Revox::Models::AssistantCreateParams::PromptFlow, nil] Visual prompt constructor data (nodes, edges, positions). Used by the UI to re-o
70
+ #
71
+ # @param slack [Revox::Models::AssistantCreateParams::Slack, nil] Slack notification config. When set, posts a message to the chosen channel after
72
+ #
73
+ # @param sms_enabled [Boolean] Enable SMS tool during calls. When enabled, the agent can send SMS messages to t
74
+ #
75
+ # @param sms_template [String, nil] Hardcoded SMS template to send during calls. When set, this exact text is sent i
76
+ #
43
77
  # @param structured_output_config [Array<Revox::Models::AssistantCreateParams::StructuredOutputConfig>] The structured output config to use for the call. This is used to extract the da
44
78
  #
79
+ # @param structured_output_prompt [String, nil] Custom prompt for structured data extraction. If not provided, a default prompt
80
+ #
81
+ # @param stt_context [Revox::Models::AssistantCreateParams::SttContext, nil] Assistant-level speech-to-text context: structured `general` key/value pairs plu
82
+ #
83
+ # @param stt_model [Symbol, Revox::Models::AssistantCreateParams::SttModel] Transcriber (speech-to-text) model. Defaults to the newest Soniox realtime model
84
+ #
85
+ # @param thinking_sound [Symbol, Revox::Models::AssistantCreateParams::ThinkingSound, nil] Audio clip to play while the agent is processing a response. One of the built-in
86
+ #
87
+ # @param thinking_sound_probability [Float] Probability [0..1] that the thinking sound plays on any given turn; otherwise th
88
+ #
89
+ # @param thinking_sound_volume [Float] Volume of the thinking sound (0 = silent, 1 = max).
90
+ #
45
91
  # @param transfer_phone_number [String, nil] Phone number to transfer calls to when users request to speak to a human agent i
46
92
  #
93
+ # @param type [Symbol, Revox::Models::AssistantCreateParams::Type] Assistant kind. 'standalone' (default) is a normal assistant, 'multi-step' orche
94
+ #
47
95
  # @param voice [Revox::Models::AssistantCreateParams::Voice] The voice to use for the call. You can get the list of voices using the /voices
48
96
  #
49
97
  # @param voicemail_message [String, nil] If set, when voicemail is detected the agent will speak this message then hang u
50
98
  #
99
+ # @param voicemail_sms_prompt [String, nil] SMS message to send when the call reaches voicemail. Supports {{variable}} place
100
+ #
101
+ # @param warm_transfer_summary_instructions [String, nil] When using warm transfer: extra instructions for the supervisor handoff summary.
102
+ #
51
103
  # @param webhook_url [String] The webhook URL to call when the call is completed.
52
104
  #
105
+ # @param zoho [Revox::Models::AssistantCreateParams::Zoho, nil] Zoho CRM integration config. When set, upserts the prospect (keyed on phone) int
106
+ #
53
107
  # @param request_options [Revox::RequestOptions, Hash{Symbol=>Object}, nil]
54
108
  #
55
109
  # @return [Revox::Models::AssistantCreateResponse]
@@ -96,16 +150,32 @@ module Revox
96
150
  # the prompt, voice, first sentence, name, or any other assistant property without
97
151
  # affecting the rest of the configuration.
98
152
  #
99
- # @overload update(id, background_sound: nil, calendly: nil, call_retry_config: nil, end_of_call_sentence: nil, faq_items: nil, first_sentence: nil, first_sentence_delay_ms: nil, first_sentence_mode: nil, ivr_navigation_enabled: nil, llm_model: nil, max_call_duration_secs: nil, name: nil, prompt: nil, structured_output_config: nil, transfer_phone_number: nil, voice: nil, voicemail_message: nil, webhook_url: nil, request_options: {})
153
+ # @overload update(id, after_call_sms_outcomes: nil, after_call_sms_prompt: nil, background_sound: nil, background_sound_volume: nil, calendly: nil, call_retry_config: nil, cartesia_dictionary_pronunciation_id: nil, custom_tools: nil, email_notification_address: nil, email_notification_language: nil, email_notification_outcomes: nil, end_of_call_sentence: nil, faq_items: nil, first_sentence: nil, first_sentence_delay_ms: nil, first_sentence_mode: nil, from_phone_number: nil, human_transfer_mode: nil, ivr_navigation_enabled: nil, llm_model: nil, logo_url: nil, max_call_duration_secs: nil, max_duration_end_message: nil, name: nil, position: nil, prompt: nil, prompt_flow: nil, slack: nil, sms_enabled: nil, sms_template: nil, structured_output_config: nil, structured_output_prompt: nil, stt_context: nil, stt_model: nil, thinking_sound: nil, thinking_sound_probability: nil, thinking_sound_volume: nil, transfer_phone_number: nil, type: nil, voice: nil, voicemail_message: nil, voicemail_sms_prompt: nil, warm_transfer_summary_instructions: nil, webhook_url: nil, zoho: nil, request_options: {})
100
154
  #
101
155
  # @param id [String]
102
156
  #
103
- # @param background_sound [Symbol, Revox::Models::AssistantUpdateParams::BackgroundSound, nil] The background sound to play during the call. Useful to give the impression that
157
+ # @param after_call_sms_outcomes [Array<Symbol, Revox::Models::AssistantUpdateParams::AfterCallSMSOutcome>, nil] Which call outcomes trigger the after-call SMS. When empty or null, no after-cal
158
+ #
159
+ # @param after_call_sms_prompt [String, nil] Prompt / instructions for the after-call SMS. Supports {{variable}} placeholders
160
+ #
161
+ # @param background_sound [Symbol, Revox::Models::AssistantUpdateParams::BackgroundSound, nil] Ambient background sound to play during the call. null/omitted disables it.
104
162
  #
105
- # @param calendly [Revox::Models::AssistantUpdateParams::Calendly]
163
+ # @param background_sound_volume [Float] Volume of the ambient background sound (0 = silent, 1 = max).
164
+ #
165
+ # @param calendly [Revox::Models::AssistantUpdateParams::Calendly, nil]
106
166
  #
107
167
  # @param call_retry_config [Revox::Models::AssistantUpdateParams::CallRetryConfig] Configuration for call retry behavior including time windows, delays, and max it
108
168
  #
169
+ # @param cartesia_dictionary_pronunciation_id [String, nil] Optional Cartesia pronunciation dictionary ID to use for this assistant's calls.
170
+ #
171
+ # @param custom_tools [Array<Revox::Models::AssistantUpdateParams::CustomTool>, nil] Custom API tools the assistant can call during conversations. Each tool defines
172
+ #
173
+ # @param email_notification_address [String, nil] Email address(es) to receive notifications when a call ends with a matching outc
174
+ #
175
+ # @param email_notification_language [Symbol, Revox::Models::AssistantUpdateParams::EmailNotificationLanguage] The language used for the notification email content. One of "en" or "fr". Defau
176
+ #
177
+ # @param email_notification_outcomes [Array<Symbol, Revox::Models::AssistantUpdateParams::EmailNotificationOutcome>, nil] Which call outcomes trigger an email notification. E.g. ["interested", "complete
178
+ #
109
179
  # @param end_of_call_sentence [String] Optional message to say when the agent decides to end the call.
110
180
  #
111
181
  # @param faq_items [Array<Revox::Models::AssistantUpdateParams::FaqItem>] FAQ items to associate with this assistant. When provided, replaces all existing
@@ -116,26 +186,64 @@ module Revox
116
186
  #
117
187
  # @param first_sentence_mode [Symbol, Revox::Models::AssistantUpdateParams::FirstSentenceMode] How the first sentence should be handled. "generated" means the LLM will generat
118
188
  #
189
+ # @param from_phone_number [String, nil] Override the default outbound phone number for calls placed with this assistant.
190
+ #
191
+ # @param human_transfer_mode [Symbol, Revox::Models::AssistantUpdateParams::HumanTransferMode, nil] When transfer_phone_number is set: "warm" (AI bridges) or "cold" (SIP REFER; tru
192
+ #
119
193
  # @param ivr_navigation_enabled [Boolean] Enable IVR navigation tools. When enabled, the assistant can send DTMF tones and
120
194
  #
121
- # @param llm_model [Revox::Models::AssistantUpdateParams::LlmModel::UnionMember0, Revox::Models::AssistantUpdateParams::LlmModel::UnionMember1]
195
+ # @param llm_model [Revox::Models::AssistantUpdateParams::LlmModel::UnionMember0, Revox::Models::AssistantUpdateParams::LlmModel::UnionMember1, Revox::Models::AssistantUpdateParams::LlmModel::UnionMember2, Revox::Models::AssistantUpdateParams::LlmModel::UnionMember3]
196
+ #
197
+ # @param logo_url [String, nil] Public URL of the brand logo shown on the assistant's demo page. Upload a new lo
122
198
  #
123
199
  # @param max_call_duration_secs [Float] The maximum duration of the call in seconds. This is the maximum time the call w
124
200
  #
201
+ # @param max_duration_end_message [String, nil] Optional message the agent will say, without being interruptible, when the call
202
+ #
125
203
  # @param name [String]
126
204
  #
205
+ # @param position [Revox::Models::AssistantUpdateParams::Position, nil] Canvas position of this assistant's node in its multi-step flow editor.
206
+ #
127
207
  # @param prompt [String] The prompt to use for the call. This will be given to the LLM (gpt-4.1)
128
208
  #
209
+ # @param prompt_flow [Revox::Models::AssistantUpdateParams::PromptFlow, nil] Visual prompt constructor data (nodes, edges, positions). Used by the UI to re-o
210
+ #
211
+ # @param slack [Revox::Models::AssistantUpdateParams::Slack, nil] Slack notification config. When set, posts a message to the chosen channel after
212
+ #
213
+ # @param sms_enabled [Boolean] Enable SMS tool during calls. When enabled, the agent can send SMS messages to t
214
+ #
215
+ # @param sms_template [String, nil] Hardcoded SMS template to send during calls. When set, this exact text is sent i
216
+ #
129
217
  # @param structured_output_config [Array<Revox::Models::AssistantUpdateParams::StructuredOutputConfig>] The structured output config to use for the call. This is used to extract the da
130
218
  #
219
+ # @param structured_output_prompt [String, nil] Custom prompt for structured data extraction. If not provided, a default prompt
220
+ #
221
+ # @param stt_context [Revox::Models::AssistantUpdateParams::SttContext, nil] Assistant-level speech-to-text context: structured `general` key/value pairs plu
222
+ #
223
+ # @param stt_model [Symbol, Revox::Models::AssistantUpdateParams::SttModel] Transcriber (speech-to-text) model. Defaults to the newest Soniox realtime model
224
+ #
225
+ # @param thinking_sound [Symbol, Revox::Models::AssistantUpdateParams::ThinkingSound, nil] Audio clip to play while the agent is processing a response. One of the built-in
226
+ #
227
+ # @param thinking_sound_probability [Float] Probability [0..1] that the thinking sound plays on any given turn; otherwise th
228
+ #
229
+ # @param thinking_sound_volume [Float] Volume of the thinking sound (0 = silent, 1 = max).
230
+ #
131
231
  # @param transfer_phone_number [String, nil] Phone number to transfer calls to when users request to speak to a human agent i
132
232
  #
233
+ # @param type [Symbol, Revox::Models::AssistantUpdateParams::Type] Assistant kind. 'standalone' (default) is a normal assistant, 'multi-step' orche
234
+ #
133
235
  # @param voice [Revox::Models::AssistantUpdateParams::Voice] The voice to use for the call. You can get the list of voices using the /voices
134
236
  #
135
237
  # @param voicemail_message [String, nil] If set, when voicemail is detected the agent will speak this message then hang u
136
238
  #
239
+ # @param voicemail_sms_prompt [String, nil] SMS message to send when the call reaches voicemail. Supports {{variable}} place
240
+ #
241
+ # @param warm_transfer_summary_instructions [String, nil] When using warm transfer: extra instructions for the supervisor handoff summary.
242
+ #
137
243
  # @param webhook_url [String] The webhook URL to call when the call is completed.
138
244
  #
245
+ # @param zoho [Revox::Models::AssistantUpdateParams::Zoho, nil] Zoho CRM integration config. When set, upserts the prospect (keyed on phone) int
246
+ #
139
247
  # @param request_options [Revox::RequestOptions, Hash{Symbol=>Object}, nil]
140
248
  #
141
249
  # @return [Revox::Models::AssistantUpdateResponse]
@@ -193,6 +301,27 @@ module Revox
193
301
  )
194
302
  end
195
303
 
304
+ # Create a full copy of an existing assistant, including every configuration field
305
+ # and FAQ items. The new assistant has the same configuration as the source, with
306
+ # the name suffixed by "(Copy)" and a freshly generated API key.
307
+ #
308
+ # @overload clone_(id, request_options: {})
309
+ #
310
+ # @param id [String]
311
+ # @param request_options [Revox::RequestOptions, Hash{Symbol=>Object}, nil]
312
+ #
313
+ # @return [Revox::Models::AssistantCloneResponse]
314
+ #
315
+ # @see Revox::Models::AssistantCloneParams
316
+ def clone_(id, params = {})
317
+ @client.request(
318
+ method: :post,
319
+ path: ["assistants/%1$s/clone", id],
320
+ model: Revox::Models::AssistantCloneResponse,
321
+ options: params[:request_options]
322
+ )
323
+ end
324
+
196
325
  # @api private
197
326
  #
198
327
  # @param client [Revox::Client]
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Revox
4
+ module Resources
5
+ class AuthStatus
6
+ # Check if your API key is still valid.
7
+ #
8
+ # @overload retrieve(request_options: {})
9
+ #
10
+ # @param request_options [Revox::RequestOptions, Hash{Symbol=>Object}, nil]
11
+ #
12
+ # @return [Revox::Models::AuthStatusRetrieveResponse]
13
+ #
14
+ # @see Revox::Models::AuthStatusRetrieveParams
15
+ def retrieve(params = {})
16
+ @client.request(
17
+ method: :get,
18
+ path: "auth-status",
19
+ model: Revox::Models::AuthStatusRetrieveResponse,
20
+ options: params[:request_options]
21
+ )
22
+ end
23
+
24
+ # @api private
25
+ #
26
+ # @param client [Revox::Client]
27
+ def initialize(client:)
28
+ @client = client
29
+ end
30
+ end
31
+ end
32
+ end
@@ -72,31 +72,147 @@ module Revox
72
72
  )
73
73
  end
74
74
 
75
- # Retrieve a paginated list of call attempts. Each entry includes the call status,
76
- # phone number, assistant used, transcript, and timestamps. Use the page and
77
- # page_size query parameters to navigate through results.
75
+ # Cancel a running or scheduled call.
78
76
  #
79
- # @overload list(page:, page_size:, statuses: nil, request_options: {})
77
+ # @overload cancel(id, request_options: {})
80
78
  #
81
- # @param page [Integer] The page number you want to get. Starting at 0.
79
+ # @param id [String]
80
+ # @param request_options [Revox::RequestOptions, Hash{Symbol=>Object}, nil]
82
81
  #
83
- # @param page_size [Integer] The number of calls to return per page.
82
+ # @return [Revox::Models::CallCancelResponse]
84
83
  #
85
- # @param statuses [Array<Symbol, Revox::Models::CallListParams::Status>]
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
86
106
  #
87
107
  # @param request_options [Revox::RequestOptions, Hash{Symbol=>Object}, nil]
88
108
  #
89
- # @return [Revox::Models::CallListResponse]
109
+ # @return [Revox::Models::CallExportResponse]
90
110
  #
91
- # @see Revox::Models::CallListParams
92
- def list(params)
93
- parsed, options = Revox::CallListParams.dump_request(params)
94
- query = Revox::Internal::Util.encode_query_params(parsed)
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 = {})
95
155
  @client.request(
96
156
  method: :get,
97
- path: "call",
98
- query: query,
99
- model: Revox::Models::CallListResponse,
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,
100
216
  options: options
101
217
  )
102
218
  end
@@ -6,18 +6,21 @@ 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 and launch it immediately. If
10
- # scheduled_at is set, all calls will be queued until the specified time instead
11
- # of starting right away.
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.
12
11
  #
13
- # @overload create(assistant_id:, contacts:, name:, call_retry_config: nil, from_phone_number: nil, max_concurrent_calls: nil, scheduled_at: nil, request_options: {})
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: {})
14
13
  #
15
14
  # @param assistant_id [String] The ID of the assistant to use
16
15
  #
17
16
  # @param contacts [Array<Revox::Models::CampaignCreateParams::Contact>] The list of contacts to call
18
17
  #
18
+ # @param launch [Boolean] Whether to launch the campaign immediately. Set to false to save as a draft.
19
+ #
19
20
  # @param name [String] The name of the campaign
20
21
  #
22
+ # @param type [Symbol, Revox::Models::CampaignCreateParams::Type] Campaign type. 'jump_in' campaigns only dial while someone is on the campaign pa
23
+ #
21
24
  # @param call_retry_config [Revox::Models::CampaignCreateParams::CallRetryConfig] Override retry configuration for calls in this campaign. If not provided, uses t
22
25
  #
23
26
  # @param from_phone_number [String] The phone number to use for outbound calls (E.164 format, e.g., +1234567890)
@@ -62,6 +65,49 @@ module Revox
62
65
  )
63
66
  end
64
67
 
68
+ # Some parameter documentations has been truncated, see
69
+ # {Revox::Models::CampaignUpdateParams} for more details.
70
+ #
71
+ # Update editable fields on a campaign. Draft campaigns support updating all
72
+ # fields including assistant, contacts, and settings. Non-draft campaigns only
73
+ # support renaming.
74
+ #
75
+ # @overload update(id, assistant_id: nil, call_retry_config: nil, contacts: nil, from_phone_number: nil, max_concurrent_calls: nil, name: nil, scheduled_at: nil, type: nil, request_options: {})
76
+ #
77
+ # @param id [String]
78
+ #
79
+ # @param assistant_id [String] The ID of the assistant to use (draft only)
80
+ #
81
+ # @param call_retry_config [Revox::Models::CampaignUpdateParams::CallRetryConfig, nil] Configuration for call retry behavior including time windows, delays, and max it
82
+ #
83
+ # @param contacts [Array<Revox::Models::CampaignUpdateParams::Contact>] Replace contact list (draft only)
84
+ #
85
+ # @param from_phone_number [String, nil] The phone number to use for outbound calls (draft only)
86
+ #
87
+ # @param max_concurrent_calls [Float, nil] Maximum concurrent calls (draft only)
88
+ #
89
+ # @param name [String] Campaign display name
90
+ #
91
+ # @param scheduled_at [Time, Object, nil] Scheduled start time (draft only)
92
+ #
93
+ # @param type [Symbol, Revox::Models::CampaignUpdateParams::Type] Campaign type (draft only)
94
+ #
95
+ # @param request_options [Revox::RequestOptions, Hash{Symbol=>Object}, nil]
96
+ #
97
+ # @return [Revox::Models::CampaignUpdateResponse]
98
+ #
99
+ # @see Revox::Models::CampaignUpdateParams
100
+ def update(id, params = {})
101
+ parsed, options = Revox::CampaignUpdateParams.dump_request(params)
102
+ @client.request(
103
+ method: :patch,
104
+ path: ["campaigns/%1$s", id],
105
+ body: parsed,
106
+ model: Revox::Models::CampaignUpdateResponse,
107
+ options: options
108
+ )
109
+ end
110
+
65
111
  # Retrieve all campaigns for your organization, including both active and
66
112
  # completed ones.
67
113
  #
@@ -142,31 +188,111 @@ module Revox
142
188
  )
143
189
  end
144
190
 
145
- # Retrieve a paginated list of rows (contacts) for a given campaign. Supports
146
- # filtering by text query, call statuses, and call result.
191
+ # Retrieve all contact rows for a campaign. Useful for loading draft campaign data
192
+ # for editing.
147
193
  #
148
- # @overload get_rows(id, page:, page_size:, query: nil, result: nil, statuses: nil, request_options: {})
194
+ # @overload get_rows(id, request_options: {})
149
195
  #
150
196
  # @param id [String]
151
- # @param page [Float]
152
- # @param page_size [Float]
153
- # @param query [String]
154
- # @param result [Symbol, Revox::Models::CampaignGetRowsParams::Result]
155
- # @param statuses [String]
156
197
  # @param request_options [Revox::RequestOptions, Hash{Symbol=>Object}, nil]
157
198
  #
158
199
  # @return [Revox::Models::CampaignGetRowsResponse]
159
200
  #
160
201
  # @see Revox::Models::CampaignGetRowsParams
161
- def get_rows(id, params)
162
- parsed, options = Revox::CampaignGetRowsParams.dump_request(params)
163
- query = Revox::Internal::Util.encode_query_params(parsed)
202
+ def get_rows(id, params = {})
164
203
  @client.request(
165
204
  method: :get,
166
205
  path: ["campaigns/%1$s/rows", id],
167
- query: query,
168
206
  model: Revox::Models::CampaignGetRowsResponse,
169
- options: options
207
+ options: params[:request_options]
208
+ )
209
+ end
210
+
211
+ # Launch a previously saved draft campaign. This starts all calls immediately (or
212
+ # queues them if scheduled_at is set). The campaign must be in draft status.
213
+ #
214
+ # @overload launch(id, request_options: {})
215
+ #
216
+ # @param id [String]
217
+ # @param request_options [Revox::RequestOptions, Hash{Symbol=>Object}, nil]
218
+ #
219
+ # @return [Revox::Models::CampaignLaunchResponse]
220
+ #
221
+ # @see Revox::Models::CampaignLaunchParams
222
+ def launch(id, params = {})
223
+ @client.request(
224
+ method: :post,
225
+ path: ["campaigns/%1$s/launch", id],
226
+ model: Revox::Models::CampaignLaunchResponse,
227
+ options: params[:request_options]
228
+ )
229
+ end
230
+
231
+ # Pause a running campaign so no further calls are placed. In-progress calls are
232
+ # allowed to finish; pending and scheduled calls are held until the campaign is
233
+ # resumed. Scheduled retry timers keep counting down, so a call resumed before its
234
+ # time fires on schedule, while one resumed after its time fires at the next
235
+ # available calling window.
236
+ #
237
+ # @overload pause(id, request_options: {})
238
+ #
239
+ # @param id [String]
240
+ # @param request_options [Revox::RequestOptions, Hash{Symbol=>Object}, nil]
241
+ #
242
+ # @return [Revox::Models::CampaignPauseResponse]
243
+ #
244
+ # @see Revox::Models::CampaignPauseParams
245
+ def pause(id, params = {})
246
+ @client.request(
247
+ method: :post,
248
+ path: ["campaigns/%1$s/pause", id],
249
+ model: Revox::Models::CampaignPauseResponse,
250
+ options: params[:request_options]
251
+ )
252
+ end
253
+
254
+ # Resume a paused campaign. Held calls continue from where they left off; calls
255
+ # whose scheduled time passed during the pause are placed at the next available
256
+ # calling window.
257
+ #
258
+ # @overload resume(id, request_options: {})
259
+ #
260
+ # @param id [String]
261
+ # @param request_options [Revox::RequestOptions, Hash{Symbol=>Object}, nil]
262
+ #
263
+ # @return [Revox::Models::CampaignResumeResponse]
264
+ #
265
+ # @see Revox::Models::CampaignResumeParams
266
+ def resume(id, params = {})
267
+ @client.request(
268
+ method: :post,
269
+ path: ["campaigns/%1$s/resume", id],
270
+ model: Revox::Models::CampaignResumeResponse,
271
+ options: params[:request_options]
272
+ )
273
+ end
274
+
275
+ # Retrieve the "Statistiques" report for a campaign: the four-tile cascade funnel
276
+ # (appelés → eus en ligne → réels échanges → leads chauds), two secondary tiles,
277
+ # the distribution of exchanges by outcome, the list of hot leads, and
278
+ # data-extraction coverage. All counts are over distinct E.164-normalized phone
279
+ # numbers, and the outcome-based categories derive exclusively from calls.outcome.
280
+ # Cascade percentages are null when their denominator is zero.
281
+ #
282
+ # @overload statistics(id, request_options: {})
283
+ #
284
+ # @param id [String]
285
+ # @param request_options [Revox::RequestOptions, Hash{Symbol=>Object}, nil]
286
+ #
287
+ # @return [Revox::Models::CampaignStatisticsResponse]
288
+ #
289
+ # @see Revox::Models::CampaignStatisticsParams
290
+ def statistics(id, params = {})
291
+ @client.request(
292
+ method: :get,
293
+ path: ["campaigns/%1$s/statistics", id],
294
+ model: Revox::Models::CampaignStatisticsResponse,
295
+ options: params[:request_options]
170
296
  )
171
297
  end
172
298