revox 0.2.0 → 0.4.0

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