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
@@ -0,0 +1,1594 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Revox
4
+ module Models
5
+ # @see Revox::Resources::Assistants#clone_
6
+ class AssistantCloneResponse < Revox::Internal::Type::BaseModel
7
+ # @!attribute assistant
8
+ #
9
+ # @return [Revox::Models::AssistantCloneResponse::Assistant]
10
+ required :assistant, -> { Revox::Models::AssistantCloneResponse::Assistant }
11
+
12
+ # @!method initialize(assistant:)
13
+ # @param assistant [Revox::Models::AssistantCloneResponse::Assistant]
14
+
15
+ # @see Revox::Models::AssistantCloneResponse#assistant
16
+ class Assistant < Revox::Internal::Type::BaseModel
17
+ # @!attribute id
18
+ #
19
+ # @return [String]
20
+ required :id, String
21
+
22
+ # @!attribute after_call_sms_outcomes
23
+ # Which call outcomes trigger the after-call SMS. When empty or null, no
24
+ # after-call SMS is sent. Use "none" when outcome is null.
25
+ #
26
+ # @return [Array<Symbol, Revox::Models::AssistantCloneResponse::Assistant::AfterCallSMSOutcome>, nil]
27
+ required :after_call_sms_outcomes,
28
+ -> { Revox::Internal::Type::ArrayOf[enum: Revox::Models::AssistantCloneResponse::Assistant::AfterCallSMSOutcome] },
29
+ nil?: true
30
+
31
+ # @!attribute after_call_sms_prompt
32
+ # Prompt / instructions for the after-call SMS. Supports {{variable}}
33
+ # placeholders. When null, no after-call SMS is sent.
34
+ #
35
+ # @return [String, nil]
36
+ required :after_call_sms_prompt, String, nil?: true
37
+
38
+ # @!attribute background_sound
39
+ # Ambient background sound to play during the call. null disables it.
40
+ #
41
+ # @return [Symbol, Revox::Models::AssistantCloneResponse::Assistant::BackgroundSound, nil]
42
+ required :background_sound,
43
+ enum: -> { Revox::Models::AssistantCloneResponse::Assistant::BackgroundSound },
44
+ nil?: true
45
+
46
+ # @!attribute background_sound_volume
47
+ # Volume of the ambient background sound (0 = silent, 1 = max).
48
+ #
49
+ # @return [Float]
50
+ required :background_sound_volume, Float
51
+
52
+ # @!attribute calendly
53
+ #
54
+ # @return [Revox::Models::AssistantCloneResponse::Assistant::Calendly, nil]
55
+ required :calendly, -> { Revox::Models::AssistantCloneResponse::Assistant::Calendly }, nil?: true
56
+
57
+ # @!attribute call_retry_config
58
+ # Configuration for call retry behavior including time windows, delays, and max
59
+ # iterations. If not provided, defaults will be used.
60
+ #
61
+ # @return [Revox::Models::AssistantCloneResponse::Assistant::CallRetryConfig, nil]
62
+ required :call_retry_config,
63
+ -> { Revox::Models::AssistantCloneResponse::Assistant::CallRetryConfig },
64
+ nil?: true
65
+
66
+ # @!attribute cartesia_dictionary_pronunciation_id
67
+ # Optional Cartesia pronunciation dictionary ID linked to this assistant.
68
+ #
69
+ # @return [String, nil]
70
+ required :cartesia_dictionary_pronunciation_id, String, nil?: true
71
+
72
+ # @!attribute created_at
73
+ #
74
+ # @return [Object]
75
+ required :created_at, Revox::Internal::Type::Unknown
76
+
77
+ # @!attribute custom_tools
78
+ #
79
+ # @return [Array<Revox::Models::AssistantCloneResponse::Assistant::CustomTool>, nil]
80
+ required :custom_tools,
81
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::AssistantCloneResponse::Assistant::CustomTool] },
82
+ nil?: true
83
+
84
+ # @!attribute email_notification_address
85
+ # Email address(es) to receive notifications when a call ends with a matching
86
+ # outcome. Accepts a single email or a comma-separated list (e.g. "alice@x.com,
87
+ # bob@y.com").
88
+ #
89
+ # @return [String, nil]
90
+ required :email_notification_address, String, nil?: true
91
+
92
+ # @!attribute email_notification_language
93
+ # The language used for the notification email content. One of "en" or "fr".
94
+ #
95
+ # @return [Symbol, Revox::Models::AssistantCloneResponse::Assistant::EmailNotificationLanguage]
96
+ required :email_notification_language,
97
+ enum: -> { Revox::Models::AssistantCloneResponse::Assistant::EmailNotificationLanguage }
98
+
99
+ # @!attribute email_notification_outcomes
100
+ # Which call outcomes trigger an email notification. E.g. ["interested",
101
+ # "completed", "none"]. Use "none" when outcome is null.
102
+ #
103
+ # @return [Array<Symbol, Revox::Models::AssistantCloneResponse::Assistant::EmailNotificationOutcome>, nil]
104
+ required :email_notification_outcomes,
105
+ -> { Revox::Internal::Type::ArrayOf[enum: Revox::Models::AssistantCloneResponse::Assistant::EmailNotificationOutcome] },
106
+ nil?: true
107
+
108
+ # @!attribute end_of_call_sentence
109
+ #
110
+ # @return [String, nil]
111
+ required :end_of_call_sentence, String, nil?: true
112
+
113
+ # @!attribute first_sentence
114
+ #
115
+ # @return [String, nil]
116
+ required :first_sentence, String, nil?: true
117
+
118
+ # @!attribute first_sentence_delay_ms
119
+ # Delay in milliseconds before speaking the first sentence. Default: 400.
120
+ #
121
+ # @return [Integer]
122
+ required :first_sentence_delay_ms, Integer
123
+
124
+ # @!attribute first_sentence_mode
125
+ #
126
+ # @return [Symbol, Revox::Models::AssistantCloneResponse::Assistant::FirstSentenceMode]
127
+ required :first_sentence_mode,
128
+ enum: -> { Revox::Models::AssistantCloneResponse::Assistant::FirstSentenceMode }
129
+
130
+ # @!attribute from_phone_number
131
+ # Override the default outbound phone number for calls placed with this assistant.
132
+ # When null, the organization's default phone number is used.
133
+ #
134
+ # @return [String, nil]
135
+ required :from_phone_number, String, nil?: true
136
+
137
+ # @!attribute human_transfer_mode
138
+ # Warm or cold transfer when transfer_phone_number is set; null when transfer is
139
+ # not configured.
140
+ #
141
+ # @return [Symbol, Revox::Models::AssistantCloneResponse::Assistant::HumanTransferMode, nil]
142
+ required :human_transfer_mode,
143
+ enum: -> { Revox::Models::AssistantCloneResponse::Assistant::HumanTransferMode },
144
+ nil?: true
145
+
146
+ # @!attribute ivr_navigation_enabled
147
+ # Enable IVR navigation tools. When enabled, the assistant can send DTMF tones and
148
+ # skip turns to navigate phone menus.
149
+ #
150
+ # @return [Boolean]
151
+ required :ivr_navigation_enabled, Revox::Internal::Type::Boolean
152
+
153
+ # @!attribute llm_model
154
+ #
155
+ # @return [Revox::Models::AssistantCloneResponse::Assistant::LlmModel::UnionMember0, Revox::Models::AssistantCloneResponse::Assistant::LlmModel::UnionMember1, Revox::Models::AssistantCloneResponse::Assistant::LlmModel::UnionMember2, Revox::Models::AssistantCloneResponse::Assistant::LlmModel::UnionMember3]
156
+ required :llm_model, union: -> { Revox::Models::AssistantCloneResponse::Assistant::LlmModel }
157
+
158
+ # @!attribute logo_url
159
+ # Public URL of the brand logo shown on the assistant's demo page. Null when
160
+ # unset.
161
+ #
162
+ # @return [String, nil]
163
+ required :logo_url, String, nil?: true
164
+
165
+ # @!attribute max_call_duration_secs
166
+ # The maximum duration of the call in seconds. This is the maximum time the call
167
+ # will be allowed to run.
168
+ #
169
+ # @return [Float]
170
+ required :max_call_duration_secs, Float
171
+
172
+ # @!attribute max_duration_end_message
173
+ # Optional message the agent will say, without being interruptible, when the call
174
+ # reaches its max duration. Kept short so it fits inside the farewell buffer. If
175
+ # null, the call ends silently.
176
+ #
177
+ # @return [String, nil]
178
+ required :max_duration_end_message, String, nil?: true
179
+
180
+ # @!attribute name
181
+ #
182
+ # @return [String]
183
+ required :name, String
184
+
185
+ # @!attribute organization_id
186
+ #
187
+ # @return [String]
188
+ required :organization_id, String
189
+
190
+ # @!attribute position
191
+ #
192
+ # @return [Revox::Models::AssistantCloneResponse::Assistant::Position, nil]
193
+ required :position, -> { Revox::Models::AssistantCloneResponse::Assistant::Position }, nil?: true
194
+
195
+ # @!attribute prompt
196
+ #
197
+ # @return [String]
198
+ required :prompt, String
199
+
200
+ # @!attribute prompt_flow
201
+ #
202
+ # @return [Revox::Models::AssistantCloneResponse::Assistant::PromptFlow, nil]
203
+ required :prompt_flow, -> { Revox::Models::AssistantCloneResponse::Assistant::PromptFlow }, nil?: true
204
+
205
+ # @!attribute slack
206
+ #
207
+ # @return [Revox::Models::AssistantCloneResponse::Assistant::Slack, nil]
208
+ required :slack, -> { Revox::Models::AssistantCloneResponse::Assistant::Slack }, nil?: true
209
+
210
+ # @!attribute sms_enabled
211
+ # Enable SMS tool during calls. When enabled, the agent can send SMS messages to
212
+ # the user on the call.
213
+ #
214
+ # @return [Boolean]
215
+ required :sms_enabled, Revox::Internal::Type::Boolean
216
+
217
+ # @!attribute sms_template
218
+ # Hardcoded SMS template to send during calls. When set, this exact text is sent
219
+ # instead of letting the agent generate the message. Supports {{variable}}
220
+ # placeholders.
221
+ #
222
+ # @return [String, nil]
223
+ required :sms_template, String, nil?: true
224
+
225
+ # @!attribute structured_output_config
226
+ # The structured output config to use for the call. This is used to extract the
227
+ # data from the call (like email, name, company name, etc.).
228
+ #
229
+ # @return [Array<Revox::Models::AssistantCloneResponse::Assistant::StructuredOutputConfig>, nil]
230
+ required :structured_output_config,
231
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::AssistantCloneResponse::Assistant::StructuredOutputConfig] },
232
+ nil?: true
233
+
234
+ # @!attribute structured_output_prompt
235
+ # Custom prompt for structured data extraction. If not provided, a default prompt
236
+ # is used. Available variables: {{transcript}}, {{call_direction}},
237
+ # {{user_phone_number}}, {{agent_phone_number}}.
238
+ #
239
+ # @return [String, nil]
240
+ required :structured_output_prompt, String, nil?: true
241
+
242
+ # @!attribute stt_context
243
+ # Assistant-level speech-to-text context: structured `general` key/value pairs
244
+ # plus a list of domain `terms`. Prompt-derived context is merged in without
245
+ # replacing existing entries.
246
+ #
247
+ # @return [Revox::Models::AssistantCloneResponse::Assistant::SttContext, nil]
248
+ required :stt_context, -> { Revox::Models::AssistantCloneResponse::Assistant::SttContext }, nil?: true
249
+
250
+ # @!attribute stt_model
251
+ # Transcriber (speech-to-text) model used for the assistant.
252
+ #
253
+ # @return [Symbol, Revox::Models::AssistantCloneResponse::Assistant::SttModel]
254
+ required :stt_model, enum: -> { Revox::Models::AssistantCloneResponse::Assistant::SttModel }
255
+
256
+ # @!attribute thinking_sound
257
+ # Audio clip to play while the agent is processing a response. One of the built-in
258
+ # LiveKit audio clips; null disables it.
259
+ #
260
+ # @return [Symbol, Revox::Models::AssistantCloneResponse::Assistant::ThinkingSound, nil]
261
+ required :thinking_sound,
262
+ enum: -> { Revox::Models::AssistantCloneResponse::Assistant::ThinkingSound },
263
+ nil?: true
264
+
265
+ # @!attribute thinking_sound_probability
266
+ # Probability [0..1] that the thinking sound plays on any given turn; otherwise
267
+ # the agent is silent while thinking.
268
+ #
269
+ # @return [Float]
270
+ required :thinking_sound_probability, Float
271
+
272
+ # @!attribute thinking_sound_volume
273
+ # Volume of the thinking sound (0 = silent, 1 = max).
274
+ #
275
+ # @return [Float]
276
+ required :thinking_sound_volume, Float
277
+
278
+ # @!attribute transfer_phone_number
279
+ # Phone number to transfer calls to when users request to speak to a human agent.
280
+ #
281
+ # @return [String, nil]
282
+ required :transfer_phone_number, String, nil?: true
283
+
284
+ # @!attribute type
285
+ #
286
+ # @return [Symbol, Revox::Models::AssistantCloneResponse::Assistant::Type]
287
+ required :type, enum: -> { Revox::Models::AssistantCloneResponse::Assistant::Type }
288
+
289
+ # @!attribute updated_at
290
+ #
291
+ # @return [Object]
292
+ required :updated_at, Revox::Internal::Type::Unknown
293
+
294
+ # @!attribute voice
295
+ #
296
+ # @return [Revox::Models::AssistantCloneResponse::Assistant::Voice, nil]
297
+ required :voice, -> { Revox::Models::AssistantCloneResponse::Assistant::Voice }, nil?: true
298
+
299
+ # @!attribute voicemail_message
300
+ # If set, when voicemail is detected the agent will speak this message then hang
301
+ # up; if null, hang up immediately.
302
+ #
303
+ # @return [String, nil]
304
+ required :voicemail_message, String, nil?: true
305
+
306
+ # @!attribute voicemail_sms_prompt
307
+ # Prompt / instructions for the voicemail SMS. Supports {{variable}} placeholders.
308
+ # When null, no SMS is sent on voicemail.
309
+ #
310
+ # @return [String, nil]
311
+ required :voicemail_sms_prompt, String, nil?: true
312
+
313
+ # @!attribute warm_transfer_summary_instructions
314
+ # Warm transfer only: instructions for the supervisor handoff summary; null when
315
+ # not configured or cold transfer.
316
+ #
317
+ # @return [String, nil]
318
+ required :warm_transfer_summary_instructions, String, nil?: true
319
+
320
+ # @!attribute webhook_url
321
+ # The webhook URL to call when the call is completed.
322
+ #
323
+ # @return [String, nil]
324
+ required :webhook_url, String, nil?: true
325
+
326
+ # @!attribute zoho
327
+ #
328
+ # @return [Revox::Models::AssistantCloneResponse::Assistant::Zoho, nil]
329
+ required :zoho, -> { Revox::Models::AssistantCloneResponse::Assistant::Zoho }, nil?: true
330
+
331
+ # @!attribute created_by
332
+ # The user who created the assistant.
333
+ #
334
+ # @return [Revox::Models::AssistantCloneResponse::Assistant::CreatedBy, nil]
335
+ optional :created_by, -> { Revox::Models::AssistantCloneResponse::Assistant::CreatedBy }, nil?: true
336
+
337
+ # @!attribute faq_items
338
+ #
339
+ # @return [Array<Revox::Models::AssistantCloneResponse::Assistant::FaqItem>, nil]
340
+ optional :faq_items,
341
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::AssistantCloneResponse::Assistant::FaqItem] }
342
+
343
+ # @!attribute is_realestate_assistant
344
+ #
345
+ # @return [Boolean, nil]
346
+ optional :is_realestate_assistant, Revox::Internal::Type::Boolean
347
+
348
+ # @!attribute pending_faq_count
349
+ #
350
+ # @return [Float, nil]
351
+ optional :pending_faq_count, Float
352
+
353
+ # @!method initialize(id:, after_call_sms_outcomes:, after_call_sms_prompt:, background_sound:, background_sound_volume:, calendly:, call_retry_config:, cartesia_dictionary_pronunciation_id:, created_at:, custom_tools:, email_notification_address:, email_notification_language:, email_notification_outcomes:, end_of_call_sentence:, first_sentence:, first_sentence_delay_ms:, first_sentence_mode:, from_phone_number:, human_transfer_mode:, ivr_navigation_enabled:, llm_model:, logo_url:, max_call_duration_secs:, max_duration_end_message:, name:, organization_id:, position:, prompt:, prompt_flow:, slack:, sms_enabled:, sms_template:, structured_output_config:, structured_output_prompt:, stt_context:, stt_model:, thinking_sound:, thinking_sound_probability:, thinking_sound_volume:, transfer_phone_number:, type:, updated_at:, voice:, voicemail_message:, voicemail_sms_prompt:, warm_transfer_summary_instructions:, webhook_url:, zoho:, created_by: nil, faq_items: nil, is_realestate_assistant: nil, pending_faq_count: nil)
354
+ # Some parameter documentations has been truncated, see
355
+ # {Revox::Models::AssistantCloneResponse::Assistant} for more details.
356
+ #
357
+ # @param id [String]
358
+ #
359
+ # @param after_call_sms_outcomes [Array<Symbol, Revox::Models::AssistantCloneResponse::Assistant::AfterCallSMSOutcome>, nil] Which call outcomes trigger the after-call SMS. When empty or null, no after-cal
360
+ #
361
+ # @param after_call_sms_prompt [String, nil] Prompt / instructions for the after-call SMS. Supports {{variable}} placeholders
362
+ #
363
+ # @param background_sound [Symbol, Revox::Models::AssistantCloneResponse::Assistant::BackgroundSound, nil] Ambient background sound to play during the call. null disables it.
364
+ #
365
+ # @param background_sound_volume [Float] Volume of the ambient background sound (0 = silent, 1 = max).
366
+ #
367
+ # @param calendly [Revox::Models::AssistantCloneResponse::Assistant::Calendly, nil]
368
+ #
369
+ # @param call_retry_config [Revox::Models::AssistantCloneResponse::Assistant::CallRetryConfig, nil] Configuration for call retry behavior including time windows, delays, and max it
370
+ #
371
+ # @param cartesia_dictionary_pronunciation_id [String, nil] Optional Cartesia pronunciation dictionary ID linked to this assistant.
372
+ #
373
+ # @param created_at [Object]
374
+ #
375
+ # @param custom_tools [Array<Revox::Models::AssistantCloneResponse::Assistant::CustomTool>, nil]
376
+ #
377
+ # @param email_notification_address [String, nil] Email address(es) to receive notifications when a call ends with a matching outc
378
+ #
379
+ # @param email_notification_language [Symbol, Revox::Models::AssistantCloneResponse::Assistant::EmailNotificationLanguage] The language used for the notification email content. One of "en" or "fr".
380
+ #
381
+ # @param email_notification_outcomes [Array<Symbol, Revox::Models::AssistantCloneResponse::Assistant::EmailNotificationOutcome>, nil] Which call outcomes trigger an email notification. E.g. ["interested", "complete
382
+ #
383
+ # @param end_of_call_sentence [String, nil]
384
+ #
385
+ # @param first_sentence [String, nil]
386
+ #
387
+ # @param first_sentence_delay_ms [Integer] Delay in milliseconds before speaking the first sentence. Default: 400.
388
+ #
389
+ # @param first_sentence_mode [Symbol, Revox::Models::AssistantCloneResponse::Assistant::FirstSentenceMode]
390
+ #
391
+ # @param from_phone_number [String, nil] Override the default outbound phone number for calls placed with this assistant.
392
+ #
393
+ # @param human_transfer_mode [Symbol, Revox::Models::AssistantCloneResponse::Assistant::HumanTransferMode, nil] Warm or cold transfer when transfer_phone_number is set; null when transfer is n
394
+ #
395
+ # @param ivr_navigation_enabled [Boolean] Enable IVR navigation tools. When enabled, the assistant can send DTMF tones and
396
+ #
397
+ # @param llm_model [Revox::Models::AssistantCloneResponse::Assistant::LlmModel::UnionMember0, Revox::Models::AssistantCloneResponse::Assistant::LlmModel::UnionMember1, Revox::Models::AssistantCloneResponse::Assistant::LlmModel::UnionMember2, Revox::Models::AssistantCloneResponse::Assistant::LlmModel::UnionMember3]
398
+ #
399
+ # @param logo_url [String, nil] Public URL of the brand logo shown on the assistant's demo page. Null when unset
400
+ #
401
+ # @param max_call_duration_secs [Float] The maximum duration of the call in seconds. This is the maximum time the call w
402
+ #
403
+ # @param max_duration_end_message [String, nil] Optional message the agent will say, without being interruptible, when the call
404
+ #
405
+ # @param name [String]
406
+ #
407
+ # @param organization_id [String]
408
+ #
409
+ # @param position [Revox::Models::AssistantCloneResponse::Assistant::Position, nil]
410
+ #
411
+ # @param prompt [String]
412
+ #
413
+ # @param prompt_flow [Revox::Models::AssistantCloneResponse::Assistant::PromptFlow, nil]
414
+ #
415
+ # @param slack [Revox::Models::AssistantCloneResponse::Assistant::Slack, nil]
416
+ #
417
+ # @param sms_enabled [Boolean] Enable SMS tool during calls. When enabled, the agent can send SMS messages to t
418
+ #
419
+ # @param sms_template [String, nil] Hardcoded SMS template to send during calls. When set, this exact text is sent i
420
+ #
421
+ # @param structured_output_config [Array<Revox::Models::AssistantCloneResponse::Assistant::StructuredOutputConfig>, nil] The structured output config to use for the call. This is used to extract the da
422
+ #
423
+ # @param structured_output_prompt [String, nil] Custom prompt for structured data extraction. If not provided, a default prompt
424
+ #
425
+ # @param stt_context [Revox::Models::AssistantCloneResponse::Assistant::SttContext, nil] Assistant-level speech-to-text context: structured `general` key/value pairs plu
426
+ #
427
+ # @param stt_model [Symbol, Revox::Models::AssistantCloneResponse::Assistant::SttModel] Transcriber (speech-to-text) model used for the assistant.
428
+ #
429
+ # @param thinking_sound [Symbol, Revox::Models::AssistantCloneResponse::Assistant::ThinkingSound, nil] Audio clip to play while the agent is processing a response. One of the built-in
430
+ #
431
+ # @param thinking_sound_probability [Float] Probability [0..1] that the thinking sound plays on any given turn; otherwise th
432
+ #
433
+ # @param thinking_sound_volume [Float] Volume of the thinking sound (0 = silent, 1 = max).
434
+ #
435
+ # @param transfer_phone_number [String, nil] Phone number to transfer calls to when users request to speak to a human agent.
436
+ #
437
+ # @param type [Symbol, Revox::Models::AssistantCloneResponse::Assistant::Type]
438
+ #
439
+ # @param updated_at [Object]
440
+ #
441
+ # @param voice [Revox::Models::AssistantCloneResponse::Assistant::Voice, nil]
442
+ #
443
+ # @param voicemail_message [String, nil] If set, when voicemail is detected the agent will speak this message then hang u
444
+ #
445
+ # @param voicemail_sms_prompt [String, nil] Prompt / instructions for the voicemail SMS. Supports {{variable}} placeholders.
446
+ #
447
+ # @param warm_transfer_summary_instructions [String, nil] Warm transfer only: instructions for the supervisor handoff summary; null when n
448
+ #
449
+ # @param webhook_url [String, nil] The webhook URL to call when the call is completed.
450
+ #
451
+ # @param zoho [Revox::Models::AssistantCloneResponse::Assistant::Zoho, nil]
452
+ #
453
+ # @param created_by [Revox::Models::AssistantCloneResponse::Assistant::CreatedBy, nil] The user who created the assistant.
454
+ #
455
+ # @param faq_items [Array<Revox::Models::AssistantCloneResponse::Assistant::FaqItem>]
456
+ #
457
+ # @param is_realestate_assistant [Boolean]
458
+ #
459
+ # @param pending_faq_count [Float]
460
+
461
+ module AfterCallSMSOutcome
462
+ extend Revox::Internal::Type::Enum
463
+
464
+ NOT_INTERESTED = :not_interested
465
+ INTERESTED = :interested
466
+ COMPLETED = :completed
467
+ REQUESTED_CALLBACK_LATER = :requested_callback_later
468
+ REQUESTED_CALLBACK_NEW_NUMBER = :requested_callback_new_number
469
+ DO_NOT_CONTACT = :do_not_contact
470
+ AI_AVERSE = :ai_averse
471
+ NONE = :none
472
+
473
+ # @!method self.values
474
+ # @return [Array<Symbol>]
475
+ end
476
+
477
+ # Ambient background sound to play during the call. null disables it.
478
+ #
479
+ # @see Revox::Models::AssistantCloneResponse::Assistant#background_sound
480
+ module BackgroundSound
481
+ extend Revox::Internal::Type::Enum
482
+
483
+ AUDIO_OFFICE_OGG = :"audio/office.ogg"
484
+
485
+ # @!method self.values
486
+ # @return [Array<Symbol>]
487
+ end
488
+
489
+ # @see Revox::Models::AssistantCloneResponse::Assistant#calendly
490
+ class Calendly < Revox::Internal::Type::BaseModel
491
+ # @!attribute connection_id
492
+ # The connection ID representing the link between your Calendly account and Revox.
493
+ #
494
+ # @return [String]
495
+ required :connection_id, String
496
+
497
+ # @!attribute event_type_id
498
+ # The event type ID representing the event type to schedule. (eg:
499
+ # https://api.calendly.com/event_types/b2330295-2a91-4a1d-bb73-99e7707663d5)
500
+ #
501
+ # @return [String]
502
+ required :event_type_id, String
503
+
504
+ # @!method initialize(connection_id:, event_type_id:)
505
+ # Some parameter documentations has been truncated, see
506
+ # {Revox::Models::AssistantCloneResponse::Assistant::Calendly} for more details.
507
+ #
508
+ # @param connection_id [String] The connection ID representing the link between your Calendly account and Revox.
509
+ #
510
+ # @param event_type_id [String] The event type ID representing the event type to schedule. (eg: https://api.cale
511
+ end
512
+
513
+ # @see Revox::Models::AssistantCloneResponse::Assistant#call_retry_config
514
+ class CallRetryConfig < Revox::Internal::Type::BaseModel
515
+ # @!attribute allowed_days
516
+ # Days of the week when calls are allowed, in the recipient's timezone. Default:
517
+ # Monday through Friday.
518
+ #
519
+ # @return [Array<Symbol, Revox::Models::AssistantCloneResponse::Assistant::CallRetryConfig::AllowedDay>]
520
+ required :allowed_days,
521
+ -> { Revox::Internal::Type::ArrayOf[enum: Revox::Models::AssistantCloneResponse::Assistant::CallRetryConfig::AllowedDay] }
522
+
523
+ # @!attribute call_twice_in_a_row
524
+ # If true and max_retry_attempts >= 2, attempt #2 fires immediately (skipping
525
+ # retry_delay_seconds) when attempt #1 didn't reach a human.
526
+ # Calling-window/allowed-days checks still apply. Only affects the 1→2 transition.
527
+ # Default: false.
528
+ #
529
+ # @return [Boolean]
530
+ required :call_twice_in_a_row, Revox::Internal::Type::Boolean
531
+
532
+ # @!attribute calling_windows
533
+ #
534
+ # @return [Array<Revox::Models::AssistantCloneResponse::Assistant::CallRetryConfig::CallingWindow>]
535
+ required :calling_windows,
536
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::AssistantCloneResponse::Assistant::CallRetryConfig::CallingWindow] }
537
+
538
+ # @!attribute max_retry_attempts
539
+ # Maximum number of call retry attempts. Default: 3.
540
+ #
541
+ # @return [Integer]
542
+ required :max_retry_attempts, Integer
543
+
544
+ # @!attribute timezone
545
+ # Optional IANA timezone identifier to override the automatic timezone detection
546
+ # from phone number. If not provided, timezone is determined from the recipient's
547
+ # phone number country code. Examples: 'America/New_York', 'Europe/Paris'.
548
+ #
549
+ # @return [String, nil]
550
+ optional :timezone, String, nil?: true
551
+
552
+ # @!method initialize(allowed_days:, call_twice_in_a_row:, calling_windows:, max_retry_attempts:, timezone: nil)
553
+ # Some parameter documentations has been truncated, see
554
+ # {Revox::Models::AssistantCloneResponse::Assistant::CallRetryConfig} for more
555
+ # details.
556
+ #
557
+ # Configuration for call retry behavior including time windows, delays, and max
558
+ # iterations. If not provided, defaults will be used.
559
+ #
560
+ # @param allowed_days [Array<Symbol, Revox::Models::AssistantCloneResponse::Assistant::CallRetryConfig::AllowedDay>] Days of the week when calls are allowed, in the recipient's timezone. Default: M
561
+ #
562
+ # @param call_twice_in_a_row [Boolean] If true and max_retry_attempts >= 2, attempt #2 fires immediately (skipping retr
563
+ #
564
+ # @param calling_windows [Array<Revox::Models::AssistantCloneResponse::Assistant::CallRetryConfig::CallingWindow>]
565
+ #
566
+ # @param max_retry_attempts [Integer] Maximum number of call retry attempts. Default: 3.
567
+ #
568
+ # @param timezone [String, nil] Optional IANA timezone identifier to override the automatic timezone detection f
569
+
570
+ module AllowedDay
571
+ extend Revox::Internal::Type::Enum
572
+
573
+ MONDAY = :monday
574
+ TUESDAY = :tuesday
575
+ WEDNESDAY = :wednesday
576
+ THURSDAY = :thursday
577
+ FRIDAY = :friday
578
+ SATURDAY = :saturday
579
+ SUNDAY = :sunday
580
+
581
+ # @!method self.values
582
+ # @return [Array<Symbol>]
583
+ end
584
+
585
+ class CallingWindow < Revox::Internal::Type::BaseModel
586
+ # @!attribute calling_window_end_time
587
+ # End time for the calling window in the recipient's timezone (or
588
+ # timezone_override if provided). Format: 'HH:mm' (24-hour) or 'H:mma' (12-hour).
589
+ # Examples: '17:00', '6pm'. Default: '18:00'.
590
+ #
591
+ # @return [String]
592
+ required :calling_window_end_time, String
593
+
594
+ # @!attribute calling_window_start_time
595
+ # Start time for the calling window in the recipient's timezone (or
596
+ # timezone_override if provided). Format: 'HH:mm' (24-hour) or 'H:mma' (12-hour).
597
+ # Examples: '09:00', '10am'. Default: '10:00'.
598
+ #
599
+ # @return [String]
600
+ required :calling_window_start_time, String
601
+
602
+ # @!attribute retry_delay_seconds
603
+ # Delay between retry attempts in seconds. Default: 7200 (2 hours).
604
+ #
605
+ # @return [Integer]
606
+ required :retry_delay_seconds, Integer
607
+
608
+ # @!method initialize(calling_window_end_time:, calling_window_start_time:, retry_delay_seconds:)
609
+ # Some parameter documentations has been truncated, see
610
+ # {Revox::Models::AssistantCloneResponse::Assistant::CallRetryConfig::CallingWindow}
611
+ # for more details.
612
+ #
613
+ # @param calling_window_end_time [String] End time for the calling window in the recipient's timezone (or timezone_overrid
614
+ #
615
+ # @param calling_window_start_time [String] Start time for the calling window in the recipient's timezone (or timezone_overr
616
+ #
617
+ # @param retry_delay_seconds [Integer] Delay between retry attempts in seconds. Default: 7200 (2 hours).
618
+ end
619
+ end
620
+
621
+ class CustomTool < Revox::Internal::Type::BaseModel
622
+ # @!attribute body_template
623
+ # JSON body template for the request. Use quoted {{variable}} placeholders (e.g.
624
+ # "{{name}}") for dynamic values
625
+ #
626
+ # @return [String, nil]
627
+ required :body_template, String, nil?: true
628
+
629
+ # @!attribute description
630
+ # Human-readable description of what the tool does, used by the LLM to decide when
631
+ # to call it
632
+ #
633
+ # @return [String]
634
+ required :description, String
635
+
636
+ # @!attribute headers
637
+ # HTTP headers to include in the request. Values support {{variable}} placeholders
638
+ #
639
+ # @return [Array<Revox::Models::AssistantCloneResponse::Assistant::CustomTool::Header>]
640
+ required :headers,
641
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::AssistantCloneResponse::Assistant::CustomTool::Header] }
642
+
643
+ # @!attribute input_schema
644
+ # Schema defining the parameters the LLM should extract from the conversation to
645
+ # pass to this tool
646
+ #
647
+ # @return [Array<Revox::Models::AssistantCloneResponse::Assistant::CustomTool::InputSchema>]
648
+ required :input_schema,
649
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::AssistantCloneResponse::Assistant::CustomTool::InputSchema] }
650
+
651
+ # @!attribute method_
652
+ # HTTP method to use when calling the API endpoint
653
+ #
654
+ # @return [Symbol, Revox::Models::AssistantCloneResponse::Assistant::CustomTool::Method]
655
+ required :method_,
656
+ enum: -> { Revox::Models::AssistantCloneResponse::Assistant::CustomTool::Method },
657
+ api_name: :method
658
+
659
+ # @!attribute name
660
+ # Unique tool name in lowercase_snake_case (e.g. check_inventory)
661
+ #
662
+ # @return [String]
663
+ required :name, String
664
+
665
+ # @!attribute query_params
666
+ # Query string parameters appended to the URL. Values support {{variable}}
667
+ # placeholders
668
+ #
669
+ # @return [Array<Revox::Models::AssistantCloneResponse::Assistant::CustomTool::QueryParam>]
670
+ required :query_params,
671
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::AssistantCloneResponse::Assistant::CustomTool::QueryParam] }
672
+
673
+ # @!attribute url
674
+ # Full URL of the API endpoint. Supports {{variable}} placeholders for dynamic
675
+ # values
676
+ #
677
+ # @return [String]
678
+ required :url, String
679
+
680
+ # @!method initialize(body_template:, description:, headers:, input_schema:, method_:, name:, query_params:, url:)
681
+ # Some parameter documentations has been truncated, see
682
+ # {Revox::Models::AssistantCloneResponse::Assistant::CustomTool} for more details.
683
+ #
684
+ # @param body_template [String, nil] JSON body template for the request. Use quoted {{variable}} placeholders (e.g. "
685
+ #
686
+ # @param description [String] Human-readable description of what the tool does, used by the LLM to decide when
687
+ #
688
+ # @param headers [Array<Revox::Models::AssistantCloneResponse::Assistant::CustomTool::Header>] HTTP headers to include in the request. Values support {{variable}} placeholders
689
+ #
690
+ # @param input_schema [Array<Revox::Models::AssistantCloneResponse::Assistant::CustomTool::InputSchema>] Schema defining the parameters the LLM should extract from the conversation to p
691
+ #
692
+ # @param method_ [Symbol, Revox::Models::AssistantCloneResponse::Assistant::CustomTool::Method] HTTP method to use when calling the API endpoint
693
+ #
694
+ # @param name [String] Unique tool name in lowercase_snake_case (e.g. check_inventory)
695
+ #
696
+ # @param query_params [Array<Revox::Models::AssistantCloneResponse::Assistant::CustomTool::QueryParam>] Query string parameters appended to the URL. Values support {{variable}} placeho
697
+ #
698
+ # @param url [String] Full URL of the API endpoint. Supports {{variable}} placeholders for dynamic val
699
+
700
+ class Header < Revox::Internal::Type::BaseModel
701
+ # @!attribute key
702
+ #
703
+ # @return [String]
704
+ required :key, String
705
+
706
+ # @!attribute value
707
+ #
708
+ # @return [String]
709
+ required :value, String
710
+
711
+ # @!method initialize(key:, value:)
712
+ # @param key [String]
713
+ # @param value [String]
714
+ end
715
+
716
+ class InputSchema < Revox::Internal::Type::BaseModel
717
+ # @!attribute name
718
+ #
719
+ # @return [String]
720
+ required :name, String
721
+
722
+ # @!attribute required
723
+ #
724
+ # @return [Boolean]
725
+ required :required, Revox::Internal::Type::Boolean
726
+
727
+ # @!attribute type
728
+ #
729
+ # @return [Symbol, Revox::Models::AssistantCloneResponse::Assistant::CustomTool::InputSchema::Type]
730
+ required :type,
731
+ enum: -> { Revox::Models::AssistantCloneResponse::Assistant::CustomTool::InputSchema::Type }
732
+
733
+ # @!attribute description
734
+ #
735
+ # @return [String, nil]
736
+ optional :description, String
737
+
738
+ # @!attribute enum_options
739
+ #
740
+ # @return [Array<String>, nil]
741
+ optional :enum_options, Revox::Internal::Type::ArrayOf[String]
742
+
743
+ # @!method initialize(name:, required:, type:, description: nil, enum_options: nil)
744
+ # @param name [String]
745
+ # @param required [Boolean]
746
+ # @param type [Symbol, Revox::Models::AssistantCloneResponse::Assistant::CustomTool::InputSchema::Type]
747
+ # @param description [String]
748
+ # @param enum_options [Array<String>]
749
+
750
+ # @see Revox::Models::AssistantCloneResponse::Assistant::CustomTool::InputSchema#type
751
+ module Type
752
+ extend Revox::Internal::Type::Enum
753
+
754
+ STRING = :string
755
+ NUMBER = :number
756
+ BOOLEAN = :boolean
757
+ ENUM = :enum
758
+ DATE = :date
759
+ DATETIME = :datetime
760
+
761
+ # @!method self.values
762
+ # @return [Array<Symbol>]
763
+ end
764
+ end
765
+
766
+ # HTTP method to use when calling the API endpoint
767
+ #
768
+ # @see Revox::Models::AssistantCloneResponse::Assistant::CustomTool#method_
769
+ module Method
770
+ extend Revox::Internal::Type::Enum
771
+
772
+ GET = :GET
773
+ POST = :POST
774
+ PUT = :PUT
775
+ PATCH = :PATCH
776
+ DELETE = :DELETE
777
+
778
+ # @!method self.values
779
+ # @return [Array<Symbol>]
780
+ end
781
+
782
+ class QueryParam < Revox::Internal::Type::BaseModel
783
+ # @!attribute key
784
+ #
785
+ # @return [String]
786
+ required :key, String
787
+
788
+ # @!attribute value
789
+ #
790
+ # @return [String]
791
+ required :value, String
792
+
793
+ # @!method initialize(key:, value:)
794
+ # @param key [String]
795
+ # @param value [String]
796
+ end
797
+ end
798
+
799
+ # The language used for the notification email content. One of "en" or "fr".
800
+ #
801
+ # @see Revox::Models::AssistantCloneResponse::Assistant#email_notification_language
802
+ module EmailNotificationLanguage
803
+ extend Revox::Internal::Type::Enum
804
+
805
+ EN = :en
806
+ FR = :fr
807
+
808
+ # @!method self.values
809
+ # @return [Array<Symbol>]
810
+ end
811
+
812
+ module EmailNotificationOutcome
813
+ extend Revox::Internal::Type::Enum
814
+
815
+ NOT_INTERESTED = :not_interested
816
+ INTERESTED = :interested
817
+ COMPLETED = :completed
818
+ REQUESTED_CALLBACK_LATER = :requested_callback_later
819
+ REQUESTED_CALLBACK_NEW_NUMBER = :requested_callback_new_number
820
+ DO_NOT_CONTACT = :do_not_contact
821
+ AI_AVERSE = :ai_averse
822
+ NONE = :none
823
+
824
+ # @!method self.values
825
+ # @return [Array<Symbol>]
826
+ end
827
+
828
+ # @see Revox::Models::AssistantCloneResponse::Assistant#first_sentence_mode
829
+ module FirstSentenceMode
830
+ extend Revox::Internal::Type::Enum
831
+
832
+ GENERATED = :generated
833
+ STATIC = :static
834
+ NONE = :none
835
+
836
+ # @!method self.values
837
+ # @return [Array<Symbol>]
838
+ end
839
+
840
+ # Warm or cold transfer when transfer_phone_number is set; null when transfer is
841
+ # not configured.
842
+ #
843
+ # @see Revox::Models::AssistantCloneResponse::Assistant#human_transfer_mode
844
+ module HumanTransferMode
845
+ extend Revox::Internal::Type::Enum
846
+
847
+ WARM = :warm
848
+ COLD = :cold
849
+
850
+ # @!method self.values
851
+ # @return [Array<Symbol>]
852
+ end
853
+
854
+ # @see Revox::Models::AssistantCloneResponse::Assistant#llm_model
855
+ module LlmModel
856
+ extend Revox::Internal::Type::Union
857
+
858
+ variant -> { Revox::Models::AssistantCloneResponse::Assistant::LlmModel::UnionMember0 }
859
+
860
+ variant -> { Revox::Models::AssistantCloneResponse::Assistant::LlmModel::UnionMember1 }
861
+
862
+ variant -> { Revox::Models::AssistantCloneResponse::Assistant::LlmModel::UnionMember2 }
863
+
864
+ variant -> { Revox::Models::AssistantCloneResponse::Assistant::LlmModel::UnionMember3 }
865
+
866
+ class UnionMember0 < Revox::Internal::Type::BaseModel
867
+ # @!attribute name
868
+ #
869
+ # @return [Symbol, Revox::Models::AssistantCloneResponse::Assistant::LlmModel::UnionMember0::Name]
870
+ required :name,
871
+ enum: -> { Revox::Models::AssistantCloneResponse::Assistant::LlmModel::UnionMember0::Name }
872
+
873
+ # @!attribute type
874
+ #
875
+ # @return [Symbol, :"dedicated-instance"]
876
+ required :type, const: :"dedicated-instance"
877
+
878
+ # @!method initialize(name:, type: :"dedicated-instance")
879
+ # @param name [Symbol, Revox::Models::AssistantCloneResponse::Assistant::LlmModel::UnionMember0::Name]
880
+ # @param type [Symbol, :"dedicated-instance"]
881
+
882
+ # @see Revox::Models::AssistantCloneResponse::Assistant::LlmModel::UnionMember0#name
883
+ module Name
884
+ extend Revox::Internal::Type::Enum
885
+
886
+ GPT_4_1 = :"gpt-4.1"
887
+ MINISTRAL_3_8B_INSTRUCT = :"ministral-3-8b-instruct"
888
+
889
+ # @!method self.values
890
+ # @return [Array<Symbol>]
891
+ end
892
+ end
893
+
894
+ class UnionMember1 < Revox::Internal::Type::BaseModel
895
+ # @!attribute openrouter_model_id
896
+ # The model ID to use from OpenRouter. eg: openai/gpt-4.1
897
+ #
898
+ # @return [String]
899
+ required :openrouter_model_id, String
900
+
901
+ # @!attribute openrouter_provider
902
+ # The provider to use from OpenRouter. eg: nebius, openai, azure, etc.
903
+ #
904
+ # @return [String]
905
+ required :openrouter_provider, String
906
+
907
+ # @!attribute type
908
+ # Use a model from OpenRouter.
909
+ #
910
+ # @return [Symbol, :openrouter]
911
+ required :type, const: :openrouter
912
+
913
+ # @!method initialize(openrouter_model_id:, openrouter_provider:, type: :openrouter)
914
+ # @param openrouter_model_id [String] The model ID to use from OpenRouter. eg: openai/gpt-4.1
915
+ #
916
+ # @param openrouter_provider [String] The provider to use from OpenRouter. eg: nebius, openai, azure, etc.
917
+ #
918
+ # @param type [Symbol, :openrouter] Use a model from OpenRouter.
919
+ end
920
+
921
+ class UnionMember2 < Revox::Internal::Type::BaseModel
922
+ # @!attribute api_key
923
+ # API key sent as Bearer token to the custom endpoint.
924
+ #
925
+ # @return [String]
926
+ required :api_key, String
927
+
928
+ # @!attribute api_url
929
+ # Base URL for the OpenAI-compatible API, e.g. https://api.together.xyz/v1
930
+ #
931
+ # @return [String]
932
+ required :api_url, String
933
+
934
+ # @!attribute model_name
935
+ # Model name as expected by the provider, e.g. meta-llama/llama-3-70b
936
+ #
937
+ # @return [String]
938
+ required :model_name, String
939
+
940
+ # @!attribute type
941
+ # OpenAI-compatible chat completions API (bring your own endpoint and key).
942
+ #
943
+ # @return [Symbol, :custom]
944
+ required :type, const: :custom
945
+
946
+ # @!method initialize(api_key:, api_url:, model_name:, type: :custom)
947
+ # @param api_key [String] API key sent as Bearer token to the custom endpoint.
948
+ #
949
+ # @param api_url [String] Base URL for the OpenAI-compatible API, e.g. https://api.together.xyz/v1
950
+ #
951
+ # @param model_name [String] Model name as expected by the provider, e.g. meta-llama/llama-3-70b
952
+ #
953
+ # @param type [Symbol, :custom] OpenAI-compatible chat completions API (bring your own endpoint and key).
954
+ end
955
+
956
+ class UnionMember3 < Revox::Internal::Type::BaseModel
957
+ # @!attribute provider
958
+ # The provider to use from Realtime. eg: openai, google.
959
+ #
960
+ # @return [Symbol, Revox::Models::AssistantCloneResponse::Assistant::LlmModel::UnionMember3::Provider]
961
+ required :provider,
962
+ enum: -> { Revox::Models::AssistantCloneResponse::Assistant::LlmModel::UnionMember3::Provider }
963
+
964
+ # @!attribute realtime_model_id
965
+ # The model ID to use from Realtime. eg: gpt-4.1
966
+ #
967
+ # @return [String]
968
+ required :realtime_model_id, String
969
+
970
+ # @!attribute type
971
+ # Use a model from Realtime.
972
+ #
973
+ # @return [Symbol, :realtime]
974
+ required :type, const: :realtime
975
+
976
+ # @!attribute realtime_voice_id
977
+ # Output voice for the realtime provider (e.g. OpenAI: marin; Gemini: Puck).
978
+ #
979
+ # @return [String, nil]
980
+ optional :realtime_voice_id, String
981
+
982
+ # @!method initialize(provider:, realtime_model_id:, realtime_voice_id: nil, type: :realtime)
983
+ # @param provider [Symbol, Revox::Models::AssistantCloneResponse::Assistant::LlmModel::UnionMember3::Provider] The provider to use from Realtime. eg: openai, google.
984
+ #
985
+ # @param realtime_model_id [String] The model ID to use from Realtime. eg: gpt-4.1
986
+ #
987
+ # @param realtime_voice_id [String] Output voice for the realtime provider (e.g. OpenAI: marin; Gemini: Puck).
988
+ #
989
+ # @param type [Symbol, :realtime] Use a model from Realtime.
990
+
991
+ # The provider to use from Realtime. eg: openai, google.
992
+ #
993
+ # @see Revox::Models::AssistantCloneResponse::Assistant::LlmModel::UnionMember3#provider
994
+ module Provider
995
+ extend Revox::Internal::Type::Enum
996
+
997
+ OPENAI = :openai
998
+ GOOGLE = :google
999
+
1000
+ # @!method self.values
1001
+ # @return [Array<Symbol>]
1002
+ end
1003
+ end
1004
+
1005
+ # @!method self.variants
1006
+ # @return [Array(Revox::Models::AssistantCloneResponse::Assistant::LlmModel::UnionMember0, Revox::Models::AssistantCloneResponse::Assistant::LlmModel::UnionMember1, Revox::Models::AssistantCloneResponse::Assistant::LlmModel::UnionMember2, Revox::Models::AssistantCloneResponse::Assistant::LlmModel::UnionMember3)]
1007
+ end
1008
+
1009
+ # @see Revox::Models::AssistantCloneResponse::Assistant#position
1010
+ class Position < Revox::Internal::Type::BaseModel
1011
+ # @!attribute x
1012
+ #
1013
+ # @return [Float]
1014
+ required :x, Float
1015
+
1016
+ # @!attribute y_
1017
+ #
1018
+ # @return [Float]
1019
+ required :y_, Float, api_name: :y
1020
+
1021
+ # @!method initialize(x:, y_:)
1022
+ # @param x [Float]
1023
+ # @param y_ [Float]
1024
+ end
1025
+
1026
+ # @see Revox::Models::AssistantCloneResponse::Assistant#prompt_flow
1027
+ class PromptFlow < Revox::Internal::Type::BaseModel
1028
+ # @!attribute edges
1029
+ #
1030
+ # @return [Array<Revox::Models::AssistantCloneResponse::Assistant::PromptFlow::Edge>]
1031
+ required :edges,
1032
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::AssistantCloneResponse::Assistant::PromptFlow::Edge] }
1033
+
1034
+ # @!attribute nodes
1035
+ #
1036
+ # @return [Array<Revox::Models::AssistantCloneResponse::Assistant::PromptFlow::Node>]
1037
+ required :nodes,
1038
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::AssistantCloneResponse::Assistant::PromptFlow::Node] }
1039
+
1040
+ # @!method initialize(edges:, nodes:)
1041
+ # @param edges [Array<Revox::Models::AssistantCloneResponse::Assistant::PromptFlow::Edge>]
1042
+ # @param nodes [Array<Revox::Models::AssistantCloneResponse::Assistant::PromptFlow::Node>]
1043
+
1044
+ class Edge < Revox::Internal::Type::BaseModel
1045
+ # @!attribute id
1046
+ #
1047
+ # @return [String]
1048
+ required :id, String
1049
+
1050
+ # @!attribute source
1051
+ #
1052
+ # @return [String]
1053
+ required :source, String
1054
+
1055
+ # @!attribute target
1056
+ #
1057
+ # @return [String]
1058
+ required :target, String
1059
+
1060
+ # @!method initialize(id:, source:, target:)
1061
+ # @param id [String]
1062
+ # @param source [String]
1063
+ # @param target [String]
1064
+ end
1065
+
1066
+ class Node < Revox::Internal::Type::BaseModel
1067
+ # @!attribute id
1068
+ #
1069
+ # @return [String]
1070
+ required :id, String
1071
+
1072
+ # @!attribute data
1073
+ #
1074
+ # @return [Revox::Models::AssistantCloneResponse::Assistant::PromptFlow::Node::Data]
1075
+ required :data, -> { Revox::Models::AssistantCloneResponse::Assistant::PromptFlow::Node::Data }
1076
+
1077
+ # @!attribute position
1078
+ #
1079
+ # @return [Revox::Models::AssistantCloneResponse::Assistant::PromptFlow::Node::Position]
1080
+ required :position, -> { Revox::Models::AssistantCloneResponse::Assistant::PromptFlow::Node::Position }
1081
+
1082
+ # @!attribute type
1083
+ #
1084
+ # @return [Symbol, :promptBlock]
1085
+ required :type, const: :promptBlock
1086
+
1087
+ # @!method initialize(id:, data:, position:, type: :promptBlock)
1088
+ # @param id [String]
1089
+ # @param data [Revox::Models::AssistantCloneResponse::Assistant::PromptFlow::Node::Data]
1090
+ # @param position [Revox::Models::AssistantCloneResponse::Assistant::PromptFlow::Node::Position]
1091
+ # @param type [Symbol, :promptBlock]
1092
+
1093
+ # @see Revox::Models::AssistantCloneResponse::Assistant::PromptFlow::Node#data
1094
+ class Data < Revox::Internal::Type::BaseModel
1095
+ # @!attribute body
1096
+ #
1097
+ # @return [String]
1098
+ required :body, String
1099
+
1100
+ # @!attribute title
1101
+ #
1102
+ # @return [String]
1103
+ required :title, String
1104
+
1105
+ # @!method initialize(body:, title:)
1106
+ # @param body [String]
1107
+ # @param title [String]
1108
+ end
1109
+
1110
+ # @see Revox::Models::AssistantCloneResponse::Assistant::PromptFlow::Node#position
1111
+ class Position < Revox::Internal::Type::BaseModel
1112
+ # @!attribute x
1113
+ #
1114
+ # @return [Float]
1115
+ required :x, Float
1116
+
1117
+ # @!attribute y_
1118
+ #
1119
+ # @return [Float]
1120
+ required :y_, Float, api_name: :y
1121
+
1122
+ # @!method initialize(x:, y_:)
1123
+ # @param x [Float]
1124
+ # @param y_ [Float]
1125
+ end
1126
+ end
1127
+ end
1128
+
1129
+ # @see Revox::Models::AssistantCloneResponse::Assistant#slack
1130
+ class Slack < Revox::Internal::Type::BaseModel
1131
+ # @!attribute channel_id
1132
+ # The Slack channel ID where the notification will be posted.
1133
+ #
1134
+ # @return [String]
1135
+ required :channel_id, String
1136
+
1137
+ # @!attribute connection_id
1138
+ # The Nango connection ID linking the org's Slack workspace to Revox.
1139
+ #
1140
+ # @return [String]
1141
+ required :connection_id, String
1142
+
1143
+ # @!attribute outcomes
1144
+ # Which call outcomes trigger a Slack notification (e.g. ['interested', 'none']).
1145
+ # Use 'none' to notify when outcome is null.
1146
+ #
1147
+ # @return [Array<Symbol, Revox::Models::AssistantCloneResponse::Assistant::Slack::Outcome>]
1148
+ required :outcomes,
1149
+ -> { Revox::Internal::Type::ArrayOf[enum: Revox::Models::AssistantCloneResponse::Assistant::Slack::Outcome] }
1150
+
1151
+ # @!attribute channel_name
1152
+ # Human-readable Slack channel name, cached for display in the UI.
1153
+ #
1154
+ # @return [String, nil]
1155
+ optional :channel_name, String, nil?: true
1156
+
1157
+ # @!attribute template
1158
+ # Optional message template. Supports {{summary}}, {{outcome}}, {{phone}},
1159
+ # {{call_url}}, {{assistant_name}}, {{campaign_name}}, {{first_name}},
1160
+ # {{last_name}}, {{email}}, {{company}}, {{contact_name}}, {{contact_line}}, plus
1161
+ # prompt_variables and structured_output keys. When null/empty a default template
1162
+ # is used.
1163
+ #
1164
+ # @return [String, nil]
1165
+ optional :template, String, nil?: true
1166
+
1167
+ # @!method initialize(channel_id:, connection_id:, outcomes:, channel_name: nil, template: nil)
1168
+ # Some parameter documentations has been truncated, see
1169
+ # {Revox::Models::AssistantCloneResponse::Assistant::Slack} for more details.
1170
+ #
1171
+ # @param channel_id [String] The Slack channel ID where the notification will be posted.
1172
+ #
1173
+ # @param connection_id [String] The Nango connection ID linking the org's Slack workspace to Revox.
1174
+ #
1175
+ # @param outcomes [Array<Symbol, Revox::Models::AssistantCloneResponse::Assistant::Slack::Outcome>] Which call outcomes trigger a Slack notification (e.g. ['interested', 'none']).
1176
+ #
1177
+ # @param channel_name [String, nil] Human-readable Slack channel name, cached for display in the UI.
1178
+ #
1179
+ # @param template [String, nil] Optional message template. Supports {{summary}}, {{outcome}}, {{phone}},
1180
+ # {{call\_
1181
+
1182
+ module Outcome
1183
+ extend Revox::Internal::Type::Enum
1184
+
1185
+ NOT_INTERESTED = :not_interested
1186
+ INTERESTED = :interested
1187
+ COMPLETED = :completed
1188
+ REQUESTED_CALLBACK_LATER = :requested_callback_later
1189
+ REQUESTED_CALLBACK_NEW_NUMBER = :requested_callback_new_number
1190
+ DO_NOT_CONTACT = :do_not_contact
1191
+ AI_AVERSE = :ai_averse
1192
+ NONE = :none
1193
+
1194
+ # @!method self.values
1195
+ # @return [Array<Symbol>]
1196
+ end
1197
+ end
1198
+
1199
+ class StructuredOutputConfig < Revox::Internal::Type::BaseModel
1200
+ # @!attribute name
1201
+ #
1202
+ # @return [String]
1203
+ required :name, String
1204
+
1205
+ # @!attribute required
1206
+ #
1207
+ # @return [Boolean]
1208
+ required :required, Revox::Internal::Type::Boolean
1209
+
1210
+ # @!attribute type
1211
+ #
1212
+ # @return [Symbol, Revox::Models::AssistantCloneResponse::Assistant::StructuredOutputConfig::Type]
1213
+ required :type,
1214
+ enum: -> { Revox::Models::AssistantCloneResponse::Assistant::StructuredOutputConfig::Type }
1215
+
1216
+ # @!attribute description
1217
+ #
1218
+ # @return [String, nil]
1219
+ optional :description, String
1220
+
1221
+ # @!attribute enum_options
1222
+ #
1223
+ # @return [Array<String>, nil]
1224
+ optional :enum_options, Revox::Internal::Type::ArrayOf[String]
1225
+
1226
+ # @!method initialize(name:, required:, type:, description: nil, enum_options: nil)
1227
+ # @param name [String]
1228
+ # @param required [Boolean]
1229
+ # @param type [Symbol, Revox::Models::AssistantCloneResponse::Assistant::StructuredOutputConfig::Type]
1230
+ # @param description [String]
1231
+ # @param enum_options [Array<String>]
1232
+
1233
+ # @see Revox::Models::AssistantCloneResponse::Assistant::StructuredOutputConfig#type
1234
+ module Type
1235
+ extend Revox::Internal::Type::Enum
1236
+
1237
+ STRING = :string
1238
+ NUMBER = :number
1239
+ BOOLEAN = :boolean
1240
+ ENUM = :enum
1241
+ DATE = :date
1242
+ DATETIME = :datetime
1243
+
1244
+ # @!method self.values
1245
+ # @return [Array<Symbol>]
1246
+ end
1247
+ end
1248
+
1249
+ # @see Revox::Models::AssistantCloneResponse::Assistant#stt_context
1250
+ class SttContext < Revox::Internal::Type::BaseModel
1251
+ # @!attribute general
1252
+ #
1253
+ # @return [Array<Revox::Models::AssistantCloneResponse::Assistant::SttContext::General>]
1254
+ required :general,
1255
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::AssistantCloneResponse::Assistant::SttContext::General] }
1256
+
1257
+ # @!attribute terms
1258
+ #
1259
+ # @return [Array<String>]
1260
+ required :terms, Revox::Internal::Type::ArrayOf[String]
1261
+
1262
+ # @!method initialize(general:, terms:)
1263
+ # Assistant-level speech-to-text context: structured `general` key/value pairs
1264
+ # plus a list of domain `terms`. Prompt-derived context is merged in without
1265
+ # replacing existing entries.
1266
+ #
1267
+ # @param general [Array<Revox::Models::AssistantCloneResponse::Assistant::SttContext::General>]
1268
+ # @param terms [Array<String>]
1269
+
1270
+ class General < Revox::Internal::Type::BaseModel
1271
+ # @!attribute key
1272
+ #
1273
+ # @return [String]
1274
+ required :key, String
1275
+
1276
+ # @!attribute value
1277
+ #
1278
+ # @return [String]
1279
+ required :value, String
1280
+
1281
+ # @!method initialize(key:, value:)
1282
+ # @param key [String]
1283
+ # @param value [String]
1284
+ end
1285
+ end
1286
+
1287
+ # Transcriber (speech-to-text) model used for the assistant.
1288
+ #
1289
+ # @see Revox::Models::AssistantCloneResponse::Assistant#stt_model
1290
+ module SttModel
1291
+ extend Revox::Internal::Type::Enum
1292
+
1293
+ STT_RT_V4 = :"stt-rt-v4"
1294
+ STT_RT_V5 = :"stt-rt-v5"
1295
+
1296
+ # @!method self.values
1297
+ # @return [Array<Symbol>]
1298
+ end
1299
+
1300
+ # Audio clip to play while the agent is processing a response. One of the built-in
1301
+ # LiveKit audio clips; null disables it.
1302
+ #
1303
+ # @see Revox::Models::AssistantCloneResponse::Assistant#thinking_sound
1304
+ module ThinkingSound
1305
+ extend Revox::Internal::Type::Enum
1306
+
1307
+ CITY_AMBIENCE_OGG = :"city-ambience.ogg"
1308
+ FOREST_AMBIENCE_OGG = :"forest-ambience.ogg"
1309
+ OFFICE_AMBIENCE_OGG = :"office-ambience.ogg"
1310
+ CROWDED_ROOM_OGG = :"crowded-room.ogg"
1311
+ KEYBOARD_TYPING_OGG = :"keyboard-typing.ogg"
1312
+ KEYBOARD_TYPING2_OGG = :"keyboard-typing2.ogg"
1313
+ HOLD_MUSIC_OGG = :"hold_music.ogg"
1314
+
1315
+ # @!method self.values
1316
+ # @return [Array<Symbol>]
1317
+ end
1318
+
1319
+ # @see Revox::Models::AssistantCloneResponse::Assistant#type
1320
+ module Type
1321
+ extend Revox::Internal::Type::Enum
1322
+
1323
+ STANDALONE = :standalone
1324
+ MULTI_STEP = :"multi-step"
1325
+ SUB_ASSISTANT = :"sub-assistant"
1326
+
1327
+ # @!method self.values
1328
+ # @return [Array<Symbol>]
1329
+ end
1330
+
1331
+ # @see Revox::Models::AssistantCloneResponse::Assistant#voice
1332
+ class Voice < Revox::Internal::Type::BaseModel
1333
+ # @!attribute id
1334
+ # The ID of the voice.
1335
+ #
1336
+ # @return [String]
1337
+ required :id, String
1338
+
1339
+ # @!attribute provider
1340
+ # The provider of the voice.
1341
+ #
1342
+ # @return [Symbol, Revox::Models::AssistantCloneResponse::Assistant::Voice::Provider]
1343
+ required :provider, enum: -> { Revox::Models::AssistantCloneResponse::Assistant::Voice::Provider }
1344
+
1345
+ # @!attribute model
1346
+ # Cartesia TTS model (Cartesia only). Defaults to sonic-3 when omitted. Ignored
1347
+ # for other providers.
1348
+ #
1349
+ # @return [Symbol, Revox::Models::AssistantCloneResponse::Assistant::Voice::Model, nil]
1350
+ optional :model, enum: -> { Revox::Models::AssistantCloneResponse::Assistant::Voice::Model }
1351
+
1352
+ # @!attribute speed
1353
+ # The speed of the voice. Range depends on provider: Cartesia 0.6–1.5, ElevenLabs
1354
+ # 0.7–1.2. Default is 1.0.
1355
+ #
1356
+ # @return [Float, nil]
1357
+ optional :speed, Float
1358
+
1359
+ # @!attribute volume
1360
+ # Volume of the voice (Cartesia only). 0.5–2.0, default 1.0. Ignored for other
1361
+ # providers.
1362
+ #
1363
+ # @return [Float, nil]
1364
+ optional :volume, Float
1365
+
1366
+ # @!method initialize(id:, provider:, model: nil, speed: nil, volume: nil)
1367
+ # Some parameter documentations has been truncated, see
1368
+ # {Revox::Models::AssistantCloneResponse::Assistant::Voice} for more details.
1369
+ #
1370
+ # @param id [String] The ID of the voice.
1371
+ #
1372
+ # @param provider [Symbol, Revox::Models::AssistantCloneResponse::Assistant::Voice::Provider] The provider of the voice.
1373
+ #
1374
+ # @param model [Symbol, Revox::Models::AssistantCloneResponse::Assistant::Voice::Model] Cartesia TTS model (Cartesia only). Defaults to sonic-3 when omitted. Ignored fo
1375
+ #
1376
+ # @param speed [Float] The speed of the voice. Range depends on provider: Cartesia 0.6–1.5, ElevenLabs
1377
+ #
1378
+ # @param volume [Float] Volume of the voice (Cartesia only). 0.5–2.0, default 1.0. Ignored for other pro
1379
+
1380
+ # The provider of the voice.
1381
+ #
1382
+ # @see Revox::Models::AssistantCloneResponse::Assistant::Voice#provider
1383
+ module Provider
1384
+ extend Revox::Internal::Type::Enum
1385
+
1386
+ CARTESIA = :cartesia
1387
+ ELEVENLABS = :elevenlabs
1388
+
1389
+ # @!method self.values
1390
+ # @return [Array<Symbol>]
1391
+ end
1392
+
1393
+ # Cartesia TTS model (Cartesia only). Defaults to sonic-3 when omitted. Ignored
1394
+ # for other providers.
1395
+ #
1396
+ # @see Revox::Models::AssistantCloneResponse::Assistant::Voice#model
1397
+ module Model
1398
+ extend Revox::Internal::Type::Enum
1399
+
1400
+ SONIC_3 = :"sonic-3"
1401
+ SONIC_3_5 = :"sonic-3.5"
1402
+
1403
+ # @!method self.values
1404
+ # @return [Array<Symbol>]
1405
+ end
1406
+ end
1407
+
1408
+ # @see Revox::Models::AssistantCloneResponse::Assistant#zoho
1409
+ class Zoho < Revox::Internal::Type::BaseModel
1410
+ # @!attribute connection_id
1411
+ # The Nango connection ID linking the org's Zoho CRM account to Revox.
1412
+ #
1413
+ # @return [String]
1414
+ required :connection_id, String
1415
+
1416
+ # @!attribute field_mapping
1417
+ # Maps extracted call fields (structured_output / prompt variables) onto Zoho
1418
+ # field API names on the upserted record.
1419
+ #
1420
+ # @return [Array<Revox::Models::AssistantCloneResponse::Assistant::Zoho::FieldMapping>]
1421
+ required :field_mapping,
1422
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::AssistantCloneResponse::Assistant::Zoho::FieldMapping] }
1423
+
1424
+ # @!attribute log_call_activity
1425
+ # When true, also log the call as a record in Zoho's Calls module (related to the
1426
+ # upserted prospect via Who_Id).
1427
+ #
1428
+ # @return [Boolean]
1429
+ required :log_call_activity, Revox::Internal::Type::Boolean
1430
+
1431
+ # @!attribute module_
1432
+ # Zoho module the prospect record is upserted into (e.g. 'Leads' or 'Contacts').
1433
+ #
1434
+ # @return [String]
1435
+ required :module_, String, api_name: :module
1436
+
1437
+ # @!attribute outcomes
1438
+ # Which call outcomes trigger the Zoho push (e.g. ['interested', 'none']). Use
1439
+ # 'none' to push when outcome is null.
1440
+ #
1441
+ # @return [Array<Symbol, Revox::Models::AssistantCloneResponse::Assistant::Zoho::Outcome>]
1442
+ required :outcomes,
1443
+ -> { Revox::Internal::Type::ArrayOf[enum: Revox::Models::AssistantCloneResponse::Assistant::Zoho::Outcome] }
1444
+
1445
+ # @!attribute template
1446
+ # Optional Note body template. Supports {{summary}}, {{outcome}}, {{phone}},
1447
+ # {{call_url}}, {{assistant_name}}, {{campaign_name}}, {{transcript}}, plus
1448
+ # prompt_variables and structured_output keys. When null/empty a default note
1449
+ # (outcome + summary + auto-listed extracted fields) is used.
1450
+ #
1451
+ # @return [String, nil]
1452
+ optional :template, String, nil?: true
1453
+
1454
+ # @!method initialize(connection_id:, field_mapping:, log_call_activity:, module_:, outcomes:, template: nil)
1455
+ # Some parameter documentations has been truncated, see
1456
+ # {Revox::Models::AssistantCloneResponse::Assistant::Zoho} for more details.
1457
+ #
1458
+ # @param connection_id [String] The Nango connection ID linking the org's Zoho CRM account to Revox.
1459
+ #
1460
+ # @param field_mapping [Array<Revox::Models::AssistantCloneResponse::Assistant::Zoho::FieldMapping>] Maps extracted call fields (structured_output / prompt variables) onto Zoho fiel
1461
+ #
1462
+ # @param log_call_activity [Boolean] When true, also log the call as a record in Zoho's Calls module (related to the
1463
+ #
1464
+ # @param module_ [String] Zoho module the prospect record is upserted into (e.g. 'Leads' or 'Contacts').
1465
+ #
1466
+ # @param outcomes [Array<Symbol, Revox::Models::AssistantCloneResponse::Assistant::Zoho::Outcome>] Which call outcomes trigger the Zoho push (e.g. ['interested', 'none']). Use 'no
1467
+ #
1468
+ # @param template [String, nil] Optional Note body template. Supports {{summary}}, {{outcome}}, {{phone}}, {{cal
1469
+
1470
+ class FieldMapping < Revox::Internal::Type::BaseModel
1471
+ # @!attribute source
1472
+ # Source key to read from the call: a structured_output field name, falling back
1473
+ # to a prompt variable of the same name.
1474
+ #
1475
+ # @return [String]
1476
+ required :source, String
1477
+
1478
+ # @!attribute zoho_field
1479
+ # Destination Zoho field API name on the upserted record (e.g. 'Email', 'Company',
1480
+ # or a custom 'Budget\_\_c').
1481
+ #
1482
+ # @return [String]
1483
+ required :zoho_field, String
1484
+
1485
+ # @!method initialize(source:, zoho_field:)
1486
+ # Some parameter documentations has been truncated, see
1487
+ # {Revox::Models::AssistantCloneResponse::Assistant::Zoho::FieldMapping} for more
1488
+ # details.
1489
+ #
1490
+ # @param source [String] Source key to read from the call: a structured_output field name, falling back t
1491
+ #
1492
+ # @param zoho_field [String] Destination Zoho field API name on the upserted record (e.g. 'Email', 'Company',
1493
+ end
1494
+
1495
+ module Outcome
1496
+ extend Revox::Internal::Type::Enum
1497
+
1498
+ NOT_INTERESTED = :not_interested
1499
+ INTERESTED = :interested
1500
+ COMPLETED = :completed
1501
+ REQUESTED_CALLBACK_LATER = :requested_callback_later
1502
+ REQUESTED_CALLBACK_NEW_NUMBER = :requested_callback_new_number
1503
+ DO_NOT_CONTACT = :do_not_contact
1504
+ AI_AVERSE = :ai_averse
1505
+ NONE = :none
1506
+
1507
+ # @!method self.values
1508
+ # @return [Array<Symbol>]
1509
+ end
1510
+ end
1511
+
1512
+ # @see Revox::Models::AssistantCloneResponse::Assistant#created_by
1513
+ class CreatedBy < Revox::Internal::Type::BaseModel
1514
+ # @!attribute id
1515
+ # The database user id of the creator.
1516
+ #
1517
+ # @return [String]
1518
+ required :id, String
1519
+
1520
+ # @!attribute email
1521
+ #
1522
+ # @return [String]
1523
+ required :email, String
1524
+
1525
+ # @!attribute first_name
1526
+ #
1527
+ # @return [String, nil]
1528
+ required :first_name, String, nil?: true
1529
+
1530
+ # @!attribute last_name
1531
+ #
1532
+ # @return [String, nil]
1533
+ required :last_name, String, nil?: true
1534
+
1535
+ # @!method initialize(id:, email:, first_name:, last_name:)
1536
+ # The user who created the assistant.
1537
+ #
1538
+ # @param id [String] The database user id of the creator.
1539
+ #
1540
+ # @param email [String]
1541
+ #
1542
+ # @param first_name [String, nil]
1543
+ #
1544
+ # @param last_name [String, nil]
1545
+ end
1546
+
1547
+ class FaqItem < Revox::Internal::Type::BaseModel
1548
+ # @!attribute answer
1549
+ #
1550
+ # @return [String]
1551
+ required :answer, String
1552
+
1553
+ # @!attribute question
1554
+ #
1555
+ # @return [String]
1556
+ required :question, String
1557
+
1558
+ # @!attribute id
1559
+ #
1560
+ # @return [String, nil]
1561
+ optional :id, String
1562
+
1563
+ # @!attribute needs_human_answer
1564
+ #
1565
+ # @return [Boolean, nil]
1566
+ optional :needs_human_answer, Revox::Internal::Type::Boolean
1567
+
1568
+ # @!attribute source
1569
+ #
1570
+ # @return [Symbol, Revox::Models::AssistantCloneResponse::Assistant::FaqItem::Source, nil]
1571
+ optional :source, enum: -> { Revox::Models::AssistantCloneResponse::Assistant::FaqItem::Source }
1572
+
1573
+ # @!method initialize(answer:, question:, id: nil, needs_human_answer: nil, source: nil)
1574
+ # @param answer [String]
1575
+ # @param question [String]
1576
+ # @param id [String]
1577
+ # @param needs_human_answer [Boolean]
1578
+ # @param source [Symbol, Revox::Models::AssistantCloneResponse::Assistant::FaqItem::Source]
1579
+
1580
+ # @see Revox::Models::AssistantCloneResponse::Assistant::FaqItem#source
1581
+ module Source
1582
+ extend Revox::Internal::Type::Enum
1583
+
1584
+ HUMAN = :human
1585
+ AI = :ai
1586
+
1587
+ # @!method self.values
1588
+ # @return [Array<Symbol>]
1589
+ end
1590
+ end
1591
+ end
1592
+ end
1593
+ end
1594
+ end