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,1318 @@
1
+ module Revox
2
+ module Models
3
+ type assistant_clone_response =
4
+ { assistant: Revox::Models::AssistantCloneResponse::Assistant }
5
+
6
+ class AssistantCloneResponse < Revox::Internal::Type::BaseModel
7
+ attr_accessor assistant: Revox::Models::AssistantCloneResponse::Assistant
8
+
9
+ def initialize: (
10
+ assistant: Revox::Models::AssistantCloneResponse::Assistant
11
+ ) -> void
12
+
13
+ def to_hash: -> {
14
+ assistant: Revox::Models::AssistantCloneResponse::Assistant
15
+ }
16
+
17
+ type assistant =
18
+ {
19
+ id: String,
20
+ after_call_sms_outcomes: ::Array[Revox::Models::AssistantCloneResponse::Assistant::after_call_sms_outcome]?,
21
+ after_call_sms_prompt: String?,
22
+ background_sound: Revox::Models::AssistantCloneResponse::Assistant::background_sound?,
23
+ background_sound_volume: Float,
24
+ calendly: Revox::Models::AssistantCloneResponse::Assistant::Calendly?,
25
+ call_retry_config: Revox::Models::AssistantCloneResponse::Assistant::CallRetryConfig?,
26
+ cartesia_dictionary_pronunciation_id: String?,
27
+ created_at: top,
28
+ custom_tools: ::Array[Revox::Models::AssistantCloneResponse::Assistant::CustomTool]?,
29
+ email_notification_address: String?,
30
+ email_notification_language: Revox::Models::AssistantCloneResponse::Assistant::email_notification_language,
31
+ email_notification_outcomes: ::Array[Revox::Models::AssistantCloneResponse::Assistant::email_notification_outcome]?,
32
+ end_of_call_sentence: String?,
33
+ first_sentence: String?,
34
+ first_sentence_delay_ms: Integer,
35
+ first_sentence_mode: Revox::Models::AssistantCloneResponse::Assistant::first_sentence_mode,
36
+ from_phone_number: String?,
37
+ human_transfer_mode: Revox::Models::AssistantCloneResponse::Assistant::human_transfer_mode?,
38
+ ivr_navigation_enabled: bool,
39
+ llm_model: Revox::Models::AssistantCloneResponse::Assistant::llm_model,
40
+ logo_url: String?,
41
+ max_call_duration_secs: Float,
42
+ max_duration_end_message: String?,
43
+ name: String,
44
+ organization_id: String,
45
+ position: Revox::Models::AssistantCloneResponse::Assistant::Position?,
46
+ prompt: String,
47
+ prompt_flow: Revox::Models::AssistantCloneResponse::Assistant::PromptFlow?,
48
+ slack: Revox::Models::AssistantCloneResponse::Assistant::Slack?,
49
+ sms_enabled: bool,
50
+ sms_template: String?,
51
+ structured_output_config: ::Array[Revox::Models::AssistantCloneResponse::Assistant::StructuredOutputConfig]?,
52
+ structured_output_prompt: String?,
53
+ stt_context: Revox::Models::AssistantCloneResponse::Assistant::SttContext?,
54
+ stt_model: Revox::Models::AssistantCloneResponse::Assistant::stt_model,
55
+ thinking_sound: Revox::Models::AssistantCloneResponse::Assistant::thinking_sound?,
56
+ thinking_sound_probability: Float,
57
+ thinking_sound_volume: Float,
58
+ transfer_phone_number: String?,
59
+ type: Revox::Models::AssistantCloneResponse::Assistant::type_,
60
+ updated_at: top,
61
+ voice: Revox::Models::AssistantCloneResponse::Assistant::Voice?,
62
+ voicemail_message: String?,
63
+ voicemail_sms_prompt: String?,
64
+ warm_transfer_summary_instructions: String?,
65
+ webhook_url: String?,
66
+ zoho: Revox::Models::AssistantCloneResponse::Assistant::Zoho?,
67
+ created_by: Revox::Models::AssistantCloneResponse::Assistant::CreatedBy?,
68
+ faq_items: ::Array[Revox::Models::AssistantCloneResponse::Assistant::FaqItem],
69
+ is_realestate_assistant: bool,
70
+ pending_faq_count: Float
71
+ }
72
+
73
+ class Assistant < Revox::Internal::Type::BaseModel
74
+ attr_accessor id: String
75
+
76
+ attr_accessor after_call_sms_outcomes: ::Array[Revox::Models::AssistantCloneResponse::Assistant::after_call_sms_outcome]?
77
+
78
+ attr_accessor after_call_sms_prompt: String?
79
+
80
+ attr_accessor background_sound: Revox::Models::AssistantCloneResponse::Assistant::background_sound?
81
+
82
+ attr_accessor background_sound_volume: Float
83
+
84
+ attr_accessor calendly: Revox::Models::AssistantCloneResponse::Assistant::Calendly?
85
+
86
+ attr_accessor call_retry_config: Revox::Models::AssistantCloneResponse::Assistant::CallRetryConfig?
87
+
88
+ attr_accessor cartesia_dictionary_pronunciation_id: String?
89
+
90
+ attr_accessor created_at: top
91
+
92
+ attr_accessor custom_tools: ::Array[Revox::Models::AssistantCloneResponse::Assistant::CustomTool]?
93
+
94
+ attr_accessor email_notification_address: String?
95
+
96
+ attr_accessor email_notification_language: Revox::Models::AssistantCloneResponse::Assistant::email_notification_language
97
+
98
+ attr_accessor email_notification_outcomes: ::Array[Revox::Models::AssistantCloneResponse::Assistant::email_notification_outcome]?
99
+
100
+ attr_accessor end_of_call_sentence: String?
101
+
102
+ attr_accessor first_sentence: String?
103
+
104
+ attr_accessor first_sentence_delay_ms: Integer
105
+
106
+ attr_accessor first_sentence_mode: Revox::Models::AssistantCloneResponse::Assistant::first_sentence_mode
107
+
108
+ attr_accessor from_phone_number: String?
109
+
110
+ attr_accessor human_transfer_mode: Revox::Models::AssistantCloneResponse::Assistant::human_transfer_mode?
111
+
112
+ attr_accessor ivr_navigation_enabled: bool
113
+
114
+ attr_accessor llm_model: Revox::Models::AssistantCloneResponse::Assistant::llm_model
115
+
116
+ attr_accessor logo_url: String?
117
+
118
+ attr_accessor max_call_duration_secs: Float
119
+
120
+ attr_accessor max_duration_end_message: String?
121
+
122
+ attr_accessor name: String
123
+
124
+ attr_accessor organization_id: String
125
+
126
+ attr_accessor position: Revox::Models::AssistantCloneResponse::Assistant::Position?
127
+
128
+ attr_accessor prompt: String
129
+
130
+ attr_accessor prompt_flow: Revox::Models::AssistantCloneResponse::Assistant::PromptFlow?
131
+
132
+ attr_accessor slack: Revox::Models::AssistantCloneResponse::Assistant::Slack?
133
+
134
+ attr_accessor sms_enabled: bool
135
+
136
+ attr_accessor sms_template: String?
137
+
138
+ attr_accessor structured_output_config: ::Array[Revox::Models::AssistantCloneResponse::Assistant::StructuredOutputConfig]?
139
+
140
+ attr_accessor structured_output_prompt: String?
141
+
142
+ attr_accessor stt_context: Revox::Models::AssistantCloneResponse::Assistant::SttContext?
143
+
144
+ attr_accessor stt_model: Revox::Models::AssistantCloneResponse::Assistant::stt_model
145
+
146
+ attr_accessor thinking_sound: Revox::Models::AssistantCloneResponse::Assistant::thinking_sound?
147
+
148
+ attr_accessor thinking_sound_probability: Float
149
+
150
+ attr_accessor thinking_sound_volume: Float
151
+
152
+ attr_accessor transfer_phone_number: String?
153
+
154
+ attr_accessor type: Revox::Models::AssistantCloneResponse::Assistant::type_
155
+
156
+ attr_accessor updated_at: top
157
+
158
+ attr_accessor voice: Revox::Models::AssistantCloneResponse::Assistant::Voice?
159
+
160
+ attr_accessor voicemail_message: String?
161
+
162
+ attr_accessor voicemail_sms_prompt: String?
163
+
164
+ attr_accessor warm_transfer_summary_instructions: String?
165
+
166
+ attr_accessor webhook_url: String?
167
+
168
+ attr_accessor zoho: Revox::Models::AssistantCloneResponse::Assistant::Zoho?
169
+
170
+ attr_accessor created_by: Revox::Models::AssistantCloneResponse::Assistant::CreatedBy?
171
+
172
+ attr_reader faq_items: ::Array[Revox::Models::AssistantCloneResponse::Assistant::FaqItem]?
173
+
174
+ def faq_items=: (
175
+ ::Array[Revox::Models::AssistantCloneResponse::Assistant::FaqItem]
176
+ ) -> ::Array[Revox::Models::AssistantCloneResponse::Assistant::FaqItem]
177
+
178
+ attr_reader is_realestate_assistant: bool?
179
+
180
+ def is_realestate_assistant=: (bool) -> bool
181
+
182
+ attr_reader pending_faq_count: Float?
183
+
184
+ def pending_faq_count=: (Float) -> Float
185
+
186
+ def initialize: (
187
+ id: String,
188
+ after_call_sms_outcomes: ::Array[Revox::Models::AssistantCloneResponse::Assistant::after_call_sms_outcome]?,
189
+ after_call_sms_prompt: String?,
190
+ background_sound: Revox::Models::AssistantCloneResponse::Assistant::background_sound?,
191
+ background_sound_volume: Float,
192
+ calendly: Revox::Models::AssistantCloneResponse::Assistant::Calendly?,
193
+ call_retry_config: Revox::Models::AssistantCloneResponse::Assistant::CallRetryConfig?,
194
+ cartesia_dictionary_pronunciation_id: String?,
195
+ created_at: top,
196
+ custom_tools: ::Array[Revox::Models::AssistantCloneResponse::Assistant::CustomTool]?,
197
+ email_notification_address: String?,
198
+ email_notification_language: Revox::Models::AssistantCloneResponse::Assistant::email_notification_language,
199
+ email_notification_outcomes: ::Array[Revox::Models::AssistantCloneResponse::Assistant::email_notification_outcome]?,
200
+ end_of_call_sentence: String?,
201
+ first_sentence: String?,
202
+ first_sentence_delay_ms: Integer,
203
+ first_sentence_mode: Revox::Models::AssistantCloneResponse::Assistant::first_sentence_mode,
204
+ from_phone_number: String?,
205
+ human_transfer_mode: Revox::Models::AssistantCloneResponse::Assistant::human_transfer_mode?,
206
+ ivr_navigation_enabled: bool,
207
+ llm_model: Revox::Models::AssistantCloneResponse::Assistant::llm_model,
208
+ logo_url: String?,
209
+ max_call_duration_secs: Float,
210
+ max_duration_end_message: String?,
211
+ name: String,
212
+ organization_id: String,
213
+ position: Revox::Models::AssistantCloneResponse::Assistant::Position?,
214
+ prompt: String,
215
+ prompt_flow: Revox::Models::AssistantCloneResponse::Assistant::PromptFlow?,
216
+ slack: Revox::Models::AssistantCloneResponse::Assistant::Slack?,
217
+ sms_enabled: bool,
218
+ sms_template: String?,
219
+ structured_output_config: ::Array[Revox::Models::AssistantCloneResponse::Assistant::StructuredOutputConfig]?,
220
+ structured_output_prompt: String?,
221
+ stt_context: Revox::Models::AssistantCloneResponse::Assistant::SttContext?,
222
+ stt_model: Revox::Models::AssistantCloneResponse::Assistant::stt_model,
223
+ thinking_sound: Revox::Models::AssistantCloneResponse::Assistant::thinking_sound?,
224
+ thinking_sound_probability: Float,
225
+ thinking_sound_volume: Float,
226
+ transfer_phone_number: String?,
227
+ type: Revox::Models::AssistantCloneResponse::Assistant::type_,
228
+ updated_at: top,
229
+ voice: Revox::Models::AssistantCloneResponse::Assistant::Voice?,
230
+ voicemail_message: String?,
231
+ voicemail_sms_prompt: String?,
232
+ warm_transfer_summary_instructions: String?,
233
+ webhook_url: String?,
234
+ zoho: Revox::Models::AssistantCloneResponse::Assistant::Zoho?,
235
+ ?created_by: Revox::Models::AssistantCloneResponse::Assistant::CreatedBy?,
236
+ ?faq_items: ::Array[Revox::Models::AssistantCloneResponse::Assistant::FaqItem],
237
+ ?is_realestate_assistant: bool,
238
+ ?pending_faq_count: Float
239
+ ) -> void
240
+
241
+ def to_hash: -> {
242
+ id: String,
243
+ after_call_sms_outcomes: ::Array[Revox::Models::AssistantCloneResponse::Assistant::after_call_sms_outcome]?,
244
+ after_call_sms_prompt: String?,
245
+ background_sound: Revox::Models::AssistantCloneResponse::Assistant::background_sound?,
246
+ background_sound_volume: Float,
247
+ calendly: Revox::Models::AssistantCloneResponse::Assistant::Calendly?,
248
+ call_retry_config: Revox::Models::AssistantCloneResponse::Assistant::CallRetryConfig?,
249
+ cartesia_dictionary_pronunciation_id: String?,
250
+ created_at: top,
251
+ custom_tools: ::Array[Revox::Models::AssistantCloneResponse::Assistant::CustomTool]?,
252
+ email_notification_address: String?,
253
+ email_notification_language: Revox::Models::AssistantCloneResponse::Assistant::email_notification_language,
254
+ email_notification_outcomes: ::Array[Revox::Models::AssistantCloneResponse::Assistant::email_notification_outcome]?,
255
+ end_of_call_sentence: String?,
256
+ first_sentence: String?,
257
+ first_sentence_delay_ms: Integer,
258
+ first_sentence_mode: Revox::Models::AssistantCloneResponse::Assistant::first_sentence_mode,
259
+ from_phone_number: String?,
260
+ human_transfer_mode: Revox::Models::AssistantCloneResponse::Assistant::human_transfer_mode?,
261
+ ivr_navigation_enabled: bool,
262
+ llm_model: Revox::Models::AssistantCloneResponse::Assistant::llm_model,
263
+ logo_url: String?,
264
+ max_call_duration_secs: Float,
265
+ max_duration_end_message: String?,
266
+ name: String,
267
+ organization_id: String,
268
+ position: Revox::Models::AssistantCloneResponse::Assistant::Position?,
269
+ prompt: String,
270
+ prompt_flow: Revox::Models::AssistantCloneResponse::Assistant::PromptFlow?,
271
+ slack: Revox::Models::AssistantCloneResponse::Assistant::Slack?,
272
+ sms_enabled: bool,
273
+ sms_template: String?,
274
+ structured_output_config: ::Array[Revox::Models::AssistantCloneResponse::Assistant::StructuredOutputConfig]?,
275
+ structured_output_prompt: String?,
276
+ stt_context: Revox::Models::AssistantCloneResponse::Assistant::SttContext?,
277
+ stt_model: Revox::Models::AssistantCloneResponse::Assistant::stt_model,
278
+ thinking_sound: Revox::Models::AssistantCloneResponse::Assistant::thinking_sound?,
279
+ thinking_sound_probability: Float,
280
+ thinking_sound_volume: Float,
281
+ transfer_phone_number: String?,
282
+ type: Revox::Models::AssistantCloneResponse::Assistant::type_,
283
+ updated_at: top,
284
+ voice: Revox::Models::AssistantCloneResponse::Assistant::Voice?,
285
+ voicemail_message: String?,
286
+ voicemail_sms_prompt: String?,
287
+ warm_transfer_summary_instructions: String?,
288
+ webhook_url: String?,
289
+ zoho: Revox::Models::AssistantCloneResponse::Assistant::Zoho?,
290
+ created_by: Revox::Models::AssistantCloneResponse::Assistant::CreatedBy?,
291
+ faq_items: ::Array[Revox::Models::AssistantCloneResponse::Assistant::FaqItem],
292
+ is_realestate_assistant: bool,
293
+ pending_faq_count: Float
294
+ }
295
+
296
+ type after_call_sms_outcome =
297
+ :not_interested
298
+ | :interested
299
+ | :completed
300
+ | :requested_callback_later
301
+ | :requested_callback_new_number
302
+ | :do_not_contact
303
+ | :ai_averse
304
+ | :none
305
+
306
+ module AfterCallSMSOutcome
307
+ extend Revox::Internal::Type::Enum
308
+
309
+ NOT_INTERESTED: :not_interested
310
+ INTERESTED: :interested
311
+ COMPLETED: :completed
312
+ REQUESTED_CALLBACK_LATER: :requested_callback_later
313
+ REQUESTED_CALLBACK_NEW_NUMBER: :requested_callback_new_number
314
+ DO_NOT_CONTACT: :do_not_contact
315
+ AI_AVERSE: :ai_averse
316
+ NONE: :none
317
+
318
+ def self?.values: -> ::Array[Revox::Models::AssistantCloneResponse::Assistant::after_call_sms_outcome]
319
+ end
320
+
321
+ type background_sound = :"audio/office.ogg"
322
+
323
+ module BackgroundSound
324
+ extend Revox::Internal::Type::Enum
325
+
326
+ AUDIO_OFFICE_OGG: :"audio/office.ogg"
327
+
328
+ def self?.values: -> ::Array[Revox::Models::AssistantCloneResponse::Assistant::background_sound]
329
+ end
330
+
331
+ type calendly = { connection_id: String, event_type_id: String }
332
+
333
+ class Calendly < Revox::Internal::Type::BaseModel
334
+ attr_accessor connection_id: String
335
+
336
+ attr_accessor event_type_id: String
337
+
338
+ def initialize: (connection_id: String, event_type_id: String) -> void
339
+
340
+ def to_hash: -> { connection_id: String, event_type_id: String }
341
+ end
342
+
343
+ type call_retry_config =
344
+ {
345
+ allowed_days: ::Array[Revox::Models::AssistantCloneResponse::Assistant::CallRetryConfig::allowed_day],
346
+ call_twice_in_a_row: bool,
347
+ calling_windows: ::Array[Revox::Models::AssistantCloneResponse::Assistant::CallRetryConfig::CallingWindow],
348
+ max_retry_attempts: Integer,
349
+ timezone: String?
350
+ }
351
+
352
+ class CallRetryConfig < Revox::Internal::Type::BaseModel
353
+ attr_accessor allowed_days: ::Array[Revox::Models::AssistantCloneResponse::Assistant::CallRetryConfig::allowed_day]
354
+
355
+ attr_accessor call_twice_in_a_row: bool
356
+
357
+ attr_accessor calling_windows: ::Array[Revox::Models::AssistantCloneResponse::Assistant::CallRetryConfig::CallingWindow]
358
+
359
+ attr_accessor max_retry_attempts: Integer
360
+
361
+ attr_accessor timezone: String?
362
+
363
+ def initialize: (
364
+ allowed_days: ::Array[Revox::Models::AssistantCloneResponse::Assistant::CallRetryConfig::allowed_day],
365
+ call_twice_in_a_row: bool,
366
+ calling_windows: ::Array[Revox::Models::AssistantCloneResponse::Assistant::CallRetryConfig::CallingWindow],
367
+ max_retry_attempts: Integer,
368
+ ?timezone: String?
369
+ ) -> void
370
+
371
+ def to_hash: -> {
372
+ allowed_days: ::Array[Revox::Models::AssistantCloneResponse::Assistant::CallRetryConfig::allowed_day],
373
+ call_twice_in_a_row: bool,
374
+ calling_windows: ::Array[Revox::Models::AssistantCloneResponse::Assistant::CallRetryConfig::CallingWindow],
375
+ max_retry_attempts: Integer,
376
+ timezone: String?
377
+ }
378
+
379
+ type allowed_day =
380
+ :monday
381
+ | :tuesday
382
+ | :wednesday
383
+ | :thursday
384
+ | :friday
385
+ | :saturday
386
+ | :sunday
387
+
388
+ module AllowedDay
389
+ extend Revox::Internal::Type::Enum
390
+
391
+ MONDAY: :monday
392
+ TUESDAY: :tuesday
393
+ WEDNESDAY: :wednesday
394
+ THURSDAY: :thursday
395
+ FRIDAY: :friday
396
+ SATURDAY: :saturday
397
+ SUNDAY: :sunday
398
+
399
+ def self?.values: -> ::Array[Revox::Models::AssistantCloneResponse::Assistant::CallRetryConfig::allowed_day]
400
+ end
401
+
402
+ type calling_window =
403
+ {
404
+ calling_window_end_time: String,
405
+ calling_window_start_time: String,
406
+ retry_delay_seconds: Integer
407
+ }
408
+
409
+ class CallingWindow < Revox::Internal::Type::BaseModel
410
+ attr_accessor calling_window_end_time: String
411
+
412
+ attr_accessor calling_window_start_time: String
413
+
414
+ attr_accessor retry_delay_seconds: Integer
415
+
416
+ def initialize: (
417
+ calling_window_end_time: String,
418
+ calling_window_start_time: String,
419
+ retry_delay_seconds: Integer
420
+ ) -> void
421
+
422
+ def to_hash: -> {
423
+ calling_window_end_time: String,
424
+ calling_window_start_time: String,
425
+ retry_delay_seconds: Integer
426
+ }
427
+ end
428
+ end
429
+
430
+ type custom_tool =
431
+ {
432
+ body_template: String?,
433
+ description: String,
434
+ headers: ::Array[Revox::Models::AssistantCloneResponse::Assistant::CustomTool::Header],
435
+ input_schema: ::Array[Revox::Models::AssistantCloneResponse::Assistant::CustomTool::InputSchema],
436
+ method_: Revox::Models::AssistantCloneResponse::Assistant::CustomTool::method_,
437
+ name: String,
438
+ query_params: ::Array[Revox::Models::AssistantCloneResponse::Assistant::CustomTool::QueryParam],
439
+ url: String
440
+ }
441
+
442
+ class CustomTool < Revox::Internal::Type::BaseModel
443
+ attr_accessor body_template: String?
444
+
445
+ attr_accessor description: String
446
+
447
+ attr_accessor headers: ::Array[Revox::Models::AssistantCloneResponse::Assistant::CustomTool::Header]
448
+
449
+ attr_accessor input_schema: ::Array[Revox::Models::AssistantCloneResponse::Assistant::CustomTool::InputSchema]
450
+
451
+ attr_accessor method_: Revox::Models::AssistantCloneResponse::Assistant::CustomTool::method_
452
+
453
+ attr_accessor name: String
454
+
455
+ attr_accessor query_params: ::Array[Revox::Models::AssistantCloneResponse::Assistant::CustomTool::QueryParam]
456
+
457
+ attr_accessor url: String
458
+
459
+ def initialize: (
460
+ body_template: String?,
461
+ description: String,
462
+ headers: ::Array[Revox::Models::AssistantCloneResponse::Assistant::CustomTool::Header],
463
+ input_schema: ::Array[Revox::Models::AssistantCloneResponse::Assistant::CustomTool::InputSchema],
464
+ method_: Revox::Models::AssistantCloneResponse::Assistant::CustomTool::method_,
465
+ name: String,
466
+ query_params: ::Array[Revox::Models::AssistantCloneResponse::Assistant::CustomTool::QueryParam],
467
+ url: String
468
+ ) -> void
469
+
470
+ def to_hash: -> {
471
+ body_template: String?,
472
+ description: String,
473
+ headers: ::Array[Revox::Models::AssistantCloneResponse::Assistant::CustomTool::Header],
474
+ input_schema: ::Array[Revox::Models::AssistantCloneResponse::Assistant::CustomTool::InputSchema],
475
+ method_: Revox::Models::AssistantCloneResponse::Assistant::CustomTool::method_,
476
+ name: String,
477
+ query_params: ::Array[Revox::Models::AssistantCloneResponse::Assistant::CustomTool::QueryParam],
478
+ url: String
479
+ }
480
+
481
+ type header = { key: String, value: String }
482
+
483
+ class Header < Revox::Internal::Type::BaseModel
484
+ attr_accessor key: String
485
+
486
+ attr_accessor value: String
487
+
488
+ def initialize: (key: String, value: String) -> void
489
+
490
+ def to_hash: -> { key: String, value: String }
491
+ end
492
+
493
+ type input_schema =
494
+ {
495
+ name: String,
496
+ required: bool,
497
+ type: Revox::Models::AssistantCloneResponse::Assistant::CustomTool::InputSchema::type_,
498
+ description: String,
499
+ enum_options: ::Array[String]
500
+ }
501
+
502
+ class InputSchema < Revox::Internal::Type::BaseModel
503
+ attr_accessor name: String
504
+
505
+ attr_accessor required: bool
506
+
507
+ attr_accessor type: Revox::Models::AssistantCloneResponse::Assistant::CustomTool::InputSchema::type_
508
+
509
+ attr_reader description: String?
510
+
511
+ def description=: (String) -> String
512
+
513
+ attr_reader enum_options: ::Array[String]?
514
+
515
+ def enum_options=: (::Array[String]) -> ::Array[String]
516
+
517
+ def initialize: (
518
+ name: String,
519
+ required: bool,
520
+ type: Revox::Models::AssistantCloneResponse::Assistant::CustomTool::InputSchema::type_,
521
+ ?description: String,
522
+ ?enum_options: ::Array[String]
523
+ ) -> void
524
+
525
+ def to_hash: -> {
526
+ name: String,
527
+ required: bool,
528
+ type: Revox::Models::AssistantCloneResponse::Assistant::CustomTool::InputSchema::type_,
529
+ description: String,
530
+ enum_options: ::Array[String]
531
+ }
532
+
533
+ type type_ =
534
+ :string | :number | :boolean | :enum | :date | :datetime
535
+
536
+ module Type
537
+ extend Revox::Internal::Type::Enum
538
+
539
+ STRING: :string
540
+ NUMBER: :number
541
+ BOOLEAN: :boolean
542
+ ENUM: :enum
543
+ DATE: :date
544
+ DATETIME: :datetime
545
+
546
+ def self?.values: -> ::Array[Revox::Models::AssistantCloneResponse::Assistant::CustomTool::InputSchema::type_]
547
+ end
548
+ end
549
+
550
+ type method_ = :GET | :POST | :PUT | :PATCH | :DELETE
551
+
552
+ module Method
553
+ extend Revox::Internal::Type::Enum
554
+
555
+ GET: :GET
556
+ POST: :POST
557
+ PUT: :PUT
558
+ PATCH: :PATCH
559
+ DELETE: :DELETE
560
+
561
+ def self?.values: -> ::Array[Revox::Models::AssistantCloneResponse::Assistant::CustomTool::method_]
562
+ end
563
+
564
+ type query_param = { key: String, value: String }
565
+
566
+ class QueryParam < Revox::Internal::Type::BaseModel
567
+ attr_accessor key: String
568
+
569
+ attr_accessor value: String
570
+
571
+ def initialize: (key: String, value: String) -> void
572
+
573
+ def to_hash: -> { key: String, value: String }
574
+ end
575
+ end
576
+
577
+ type email_notification_language = :en | :fr
578
+
579
+ module EmailNotificationLanguage
580
+ extend Revox::Internal::Type::Enum
581
+
582
+ EN: :en
583
+ FR: :fr
584
+
585
+ def self?.values: -> ::Array[Revox::Models::AssistantCloneResponse::Assistant::email_notification_language]
586
+ end
587
+
588
+ type email_notification_outcome =
589
+ :not_interested
590
+ | :interested
591
+ | :completed
592
+ | :requested_callback_later
593
+ | :requested_callback_new_number
594
+ | :do_not_contact
595
+ | :ai_averse
596
+ | :none
597
+
598
+ module EmailNotificationOutcome
599
+ extend Revox::Internal::Type::Enum
600
+
601
+ NOT_INTERESTED: :not_interested
602
+ INTERESTED: :interested
603
+ COMPLETED: :completed
604
+ REQUESTED_CALLBACK_LATER: :requested_callback_later
605
+ REQUESTED_CALLBACK_NEW_NUMBER: :requested_callback_new_number
606
+ DO_NOT_CONTACT: :do_not_contact
607
+ AI_AVERSE: :ai_averse
608
+ NONE: :none
609
+
610
+ def self?.values: -> ::Array[Revox::Models::AssistantCloneResponse::Assistant::email_notification_outcome]
611
+ end
612
+
613
+ type first_sentence_mode = :generated | :static | :none
614
+
615
+ module FirstSentenceMode
616
+ extend Revox::Internal::Type::Enum
617
+
618
+ GENERATED: :generated
619
+ STATIC: :static
620
+ NONE: :none
621
+
622
+ def self?.values: -> ::Array[Revox::Models::AssistantCloneResponse::Assistant::first_sentence_mode]
623
+ end
624
+
625
+ type human_transfer_mode = :warm | :cold
626
+
627
+ module HumanTransferMode
628
+ extend Revox::Internal::Type::Enum
629
+
630
+ WARM: :warm
631
+ COLD: :cold
632
+
633
+ def self?.values: -> ::Array[Revox::Models::AssistantCloneResponse::Assistant::human_transfer_mode]
634
+ end
635
+
636
+ type llm_model =
637
+ Revox::Models::AssistantCloneResponse::Assistant::LlmModel::UnionMember0
638
+ | Revox::Models::AssistantCloneResponse::Assistant::LlmModel::UnionMember1
639
+ | Revox::Models::AssistantCloneResponse::Assistant::LlmModel::UnionMember2
640
+ | Revox::Models::AssistantCloneResponse::Assistant::LlmModel::UnionMember3
641
+
642
+ module LlmModel
643
+ extend Revox::Internal::Type::Union
644
+
645
+ type union_member0 =
646
+ {
647
+ name: Revox::Models::AssistantCloneResponse::Assistant::LlmModel::UnionMember0::name_,
648
+ type: :"dedicated-instance"
649
+ }
650
+
651
+ class UnionMember0 < Revox::Internal::Type::BaseModel
652
+ attr_accessor name: Revox::Models::AssistantCloneResponse::Assistant::LlmModel::UnionMember0::name_
653
+
654
+ attr_accessor type: :"dedicated-instance"
655
+
656
+ def initialize: (
657
+ name: Revox::Models::AssistantCloneResponse::Assistant::LlmModel::UnionMember0::name_,
658
+ ?type: :"dedicated-instance"
659
+ ) -> void
660
+
661
+ def to_hash: -> {
662
+ name: Revox::Models::AssistantCloneResponse::Assistant::LlmModel::UnionMember0::name_,
663
+ type: :"dedicated-instance"
664
+ }
665
+
666
+ type name_ = :"gpt-4.1" | :"ministral-3-8b-instruct"
667
+
668
+ module Name
669
+ extend Revox::Internal::Type::Enum
670
+
671
+ GPT_4_1: :"gpt-4.1"
672
+ MINISTRAL_3_8B_INSTRUCT: :"ministral-3-8b-instruct"
673
+
674
+ def self?.values: -> ::Array[Revox::Models::AssistantCloneResponse::Assistant::LlmModel::UnionMember0::name_]
675
+ end
676
+ end
677
+
678
+ type union_member1 =
679
+ {
680
+ openrouter_model_id: String,
681
+ openrouter_provider: String,
682
+ type: :openrouter
683
+ }
684
+
685
+ class UnionMember1 < Revox::Internal::Type::BaseModel
686
+ attr_accessor openrouter_model_id: String
687
+
688
+ attr_accessor openrouter_provider: String
689
+
690
+ attr_accessor type: :openrouter
691
+
692
+ def initialize: (
693
+ openrouter_model_id: String,
694
+ openrouter_provider: String,
695
+ ?type: :openrouter
696
+ ) -> void
697
+
698
+ def to_hash: -> {
699
+ openrouter_model_id: String,
700
+ openrouter_provider: String,
701
+ type: :openrouter
702
+ }
703
+ end
704
+
705
+ type union_member2 =
706
+ {
707
+ api_key: String,
708
+ api_url: String,
709
+ model_name: String,
710
+ type: :custom
711
+ }
712
+
713
+ class UnionMember2 < Revox::Internal::Type::BaseModel
714
+ attr_accessor api_key: String
715
+
716
+ attr_accessor api_url: String
717
+
718
+ attr_accessor model_name: String
719
+
720
+ attr_accessor type: :custom
721
+
722
+ def initialize: (
723
+ api_key: String,
724
+ api_url: String,
725
+ model_name: String,
726
+ ?type: :custom
727
+ ) -> void
728
+
729
+ def to_hash: -> {
730
+ api_key: String,
731
+ api_url: String,
732
+ model_name: String,
733
+ type: :custom
734
+ }
735
+ end
736
+
737
+ type union_member3 =
738
+ {
739
+ provider: Revox::Models::AssistantCloneResponse::Assistant::LlmModel::UnionMember3::provider,
740
+ realtime_model_id: String,
741
+ type: :realtime,
742
+ realtime_voice_id: String
743
+ }
744
+
745
+ class UnionMember3 < Revox::Internal::Type::BaseModel
746
+ attr_accessor provider: Revox::Models::AssistantCloneResponse::Assistant::LlmModel::UnionMember3::provider
747
+
748
+ attr_accessor realtime_model_id: String
749
+
750
+ attr_accessor type: :realtime
751
+
752
+ attr_reader realtime_voice_id: String?
753
+
754
+ def realtime_voice_id=: (String) -> String
755
+
756
+ def initialize: (
757
+ provider: Revox::Models::AssistantCloneResponse::Assistant::LlmModel::UnionMember3::provider,
758
+ realtime_model_id: String,
759
+ ?realtime_voice_id: String,
760
+ ?type: :realtime
761
+ ) -> void
762
+
763
+ def to_hash: -> {
764
+ provider: Revox::Models::AssistantCloneResponse::Assistant::LlmModel::UnionMember3::provider,
765
+ realtime_model_id: String,
766
+ type: :realtime,
767
+ realtime_voice_id: String
768
+ }
769
+
770
+ type provider = :openai | :google
771
+
772
+ module Provider
773
+ extend Revox::Internal::Type::Enum
774
+
775
+ OPENAI: :openai
776
+ GOOGLE: :google
777
+
778
+ def self?.values: -> ::Array[Revox::Models::AssistantCloneResponse::Assistant::LlmModel::UnionMember3::provider]
779
+ end
780
+ end
781
+
782
+ def self?.variants: -> ::Array[Revox::Models::AssistantCloneResponse::Assistant::llm_model]
783
+ end
784
+
785
+ type position = { x: Float, y_: Float }
786
+
787
+ class Position < Revox::Internal::Type::BaseModel
788
+ attr_accessor x: Float
789
+
790
+ attr_accessor y_: Float
791
+
792
+ def initialize: (x: Float, y_: Float) -> void
793
+
794
+ def to_hash: -> { x: Float, y_: Float }
795
+ end
796
+
797
+ type prompt_flow =
798
+ {
799
+ edges: ::Array[Revox::Models::AssistantCloneResponse::Assistant::PromptFlow::Edge],
800
+ nodes: ::Array[Revox::Models::AssistantCloneResponse::Assistant::PromptFlow::Node]
801
+ }
802
+
803
+ class PromptFlow < Revox::Internal::Type::BaseModel
804
+ attr_accessor edges: ::Array[Revox::Models::AssistantCloneResponse::Assistant::PromptFlow::Edge]
805
+
806
+ attr_accessor nodes: ::Array[Revox::Models::AssistantCloneResponse::Assistant::PromptFlow::Node]
807
+
808
+ def initialize: (
809
+ edges: ::Array[Revox::Models::AssistantCloneResponse::Assistant::PromptFlow::Edge],
810
+ nodes: ::Array[Revox::Models::AssistantCloneResponse::Assistant::PromptFlow::Node]
811
+ ) -> void
812
+
813
+ def to_hash: -> {
814
+ edges: ::Array[Revox::Models::AssistantCloneResponse::Assistant::PromptFlow::Edge],
815
+ nodes: ::Array[Revox::Models::AssistantCloneResponse::Assistant::PromptFlow::Node]
816
+ }
817
+
818
+ type edge = { id: String, source: String, target: String }
819
+
820
+ class Edge < Revox::Internal::Type::BaseModel
821
+ attr_accessor id: String
822
+
823
+ attr_accessor source: String
824
+
825
+ attr_accessor target: String
826
+
827
+ def initialize: (id: String, source: String, target: String) -> void
828
+
829
+ def to_hash: -> { id: String, source: String, target: String }
830
+ end
831
+
832
+ type node =
833
+ {
834
+ id: String,
835
+ data: Revox::Models::AssistantCloneResponse::Assistant::PromptFlow::Node::Data,
836
+ position: Revox::Models::AssistantCloneResponse::Assistant::PromptFlow::Node::Position,
837
+ type: :promptBlock
838
+ }
839
+
840
+ class Node < Revox::Internal::Type::BaseModel
841
+ attr_accessor id: String
842
+
843
+ attr_accessor data: Revox::Models::AssistantCloneResponse::Assistant::PromptFlow::Node::Data
844
+
845
+ attr_accessor position: Revox::Models::AssistantCloneResponse::Assistant::PromptFlow::Node::Position
846
+
847
+ attr_accessor type: :promptBlock
848
+
849
+ def initialize: (
850
+ id: String,
851
+ data: Revox::Models::AssistantCloneResponse::Assistant::PromptFlow::Node::Data,
852
+ position: Revox::Models::AssistantCloneResponse::Assistant::PromptFlow::Node::Position,
853
+ ?type: :promptBlock
854
+ ) -> void
855
+
856
+ def to_hash: -> {
857
+ id: String,
858
+ data: Revox::Models::AssistantCloneResponse::Assistant::PromptFlow::Node::Data,
859
+ position: Revox::Models::AssistantCloneResponse::Assistant::PromptFlow::Node::Position,
860
+ type: :promptBlock
861
+ }
862
+
863
+ type data = { body: String, title: String }
864
+
865
+ class Data < Revox::Internal::Type::BaseModel
866
+ attr_accessor body: String
867
+
868
+ attr_accessor title: String
869
+
870
+ def initialize: (body: String, title: String) -> void
871
+
872
+ def to_hash: -> { body: String, title: String }
873
+ end
874
+
875
+ type position = { x: Float, y_: Float }
876
+
877
+ class Position < Revox::Internal::Type::BaseModel
878
+ attr_accessor x: Float
879
+
880
+ attr_accessor y_: Float
881
+
882
+ def initialize: (x: Float, y_: Float) -> void
883
+
884
+ def to_hash: -> { x: Float, y_: Float }
885
+ end
886
+ end
887
+ end
888
+
889
+ type slack =
890
+ {
891
+ channel_id: String,
892
+ connection_id: String,
893
+ outcomes: ::Array[Revox::Models::AssistantCloneResponse::Assistant::Slack::outcome],
894
+ channel_name: String?,
895
+ template: String?
896
+ }
897
+
898
+ class Slack < Revox::Internal::Type::BaseModel
899
+ attr_accessor channel_id: String
900
+
901
+ attr_accessor connection_id: String
902
+
903
+ attr_accessor outcomes: ::Array[Revox::Models::AssistantCloneResponse::Assistant::Slack::outcome]
904
+
905
+ attr_accessor channel_name: String?
906
+
907
+ attr_accessor template: String?
908
+
909
+ def initialize: (
910
+ channel_id: String,
911
+ connection_id: String,
912
+ outcomes: ::Array[Revox::Models::AssistantCloneResponse::Assistant::Slack::outcome],
913
+ ?channel_name: String?,
914
+ ?template: String?
915
+ ) -> void
916
+
917
+ def to_hash: -> {
918
+ channel_id: String,
919
+ connection_id: String,
920
+ outcomes: ::Array[Revox::Models::AssistantCloneResponse::Assistant::Slack::outcome],
921
+ channel_name: String?,
922
+ template: String?
923
+ }
924
+
925
+ type outcome =
926
+ :not_interested
927
+ | :interested
928
+ | :completed
929
+ | :requested_callback_later
930
+ | :requested_callback_new_number
931
+ | :do_not_contact
932
+ | :ai_averse
933
+ | :none
934
+
935
+ module Outcome
936
+ extend Revox::Internal::Type::Enum
937
+
938
+ NOT_INTERESTED: :not_interested
939
+ INTERESTED: :interested
940
+ COMPLETED: :completed
941
+ REQUESTED_CALLBACK_LATER: :requested_callback_later
942
+ REQUESTED_CALLBACK_NEW_NUMBER: :requested_callback_new_number
943
+ DO_NOT_CONTACT: :do_not_contact
944
+ AI_AVERSE: :ai_averse
945
+ NONE: :none
946
+
947
+ def self?.values: -> ::Array[Revox::Models::AssistantCloneResponse::Assistant::Slack::outcome]
948
+ end
949
+ end
950
+
951
+ type structured_output_config =
952
+ {
953
+ name: String,
954
+ required: bool,
955
+ type: Revox::Models::AssistantCloneResponse::Assistant::StructuredOutputConfig::type_,
956
+ description: String,
957
+ enum_options: ::Array[String]
958
+ }
959
+
960
+ class StructuredOutputConfig < Revox::Internal::Type::BaseModel
961
+ attr_accessor name: String
962
+
963
+ attr_accessor required: bool
964
+
965
+ attr_accessor type: Revox::Models::AssistantCloneResponse::Assistant::StructuredOutputConfig::type_
966
+
967
+ attr_reader description: String?
968
+
969
+ def description=: (String) -> String
970
+
971
+ attr_reader enum_options: ::Array[String]?
972
+
973
+ def enum_options=: (::Array[String]) -> ::Array[String]
974
+
975
+ def initialize: (
976
+ name: String,
977
+ required: bool,
978
+ type: Revox::Models::AssistantCloneResponse::Assistant::StructuredOutputConfig::type_,
979
+ ?description: String,
980
+ ?enum_options: ::Array[String]
981
+ ) -> void
982
+
983
+ def to_hash: -> {
984
+ name: String,
985
+ required: bool,
986
+ type: Revox::Models::AssistantCloneResponse::Assistant::StructuredOutputConfig::type_,
987
+ description: String,
988
+ enum_options: ::Array[String]
989
+ }
990
+
991
+ type type_ = :string | :number | :boolean | :enum | :date | :datetime
992
+
993
+ module Type
994
+ extend Revox::Internal::Type::Enum
995
+
996
+ STRING: :string
997
+ NUMBER: :number
998
+ BOOLEAN: :boolean
999
+ ENUM: :enum
1000
+ DATE: :date
1001
+ DATETIME: :datetime
1002
+
1003
+ def self?.values: -> ::Array[Revox::Models::AssistantCloneResponse::Assistant::StructuredOutputConfig::type_]
1004
+ end
1005
+ end
1006
+
1007
+ type stt_context =
1008
+ {
1009
+ general: ::Array[Revox::Models::AssistantCloneResponse::Assistant::SttContext::General],
1010
+ terms: ::Array[String]
1011
+ }
1012
+
1013
+ class SttContext < Revox::Internal::Type::BaseModel
1014
+ attr_accessor general: ::Array[Revox::Models::AssistantCloneResponse::Assistant::SttContext::General]
1015
+
1016
+ attr_accessor terms: ::Array[String]
1017
+
1018
+ def initialize: (
1019
+ general: ::Array[Revox::Models::AssistantCloneResponse::Assistant::SttContext::General],
1020
+ terms: ::Array[String]
1021
+ ) -> void
1022
+
1023
+ def to_hash: -> {
1024
+ general: ::Array[Revox::Models::AssistantCloneResponse::Assistant::SttContext::General],
1025
+ terms: ::Array[String]
1026
+ }
1027
+
1028
+ type general = { key: String, value: String }
1029
+
1030
+ class General < Revox::Internal::Type::BaseModel
1031
+ attr_accessor key: String
1032
+
1033
+ attr_accessor value: String
1034
+
1035
+ def initialize: (key: String, value: String) -> void
1036
+
1037
+ def to_hash: -> { key: String, value: String }
1038
+ end
1039
+ end
1040
+
1041
+ type stt_model = :"stt-rt-v4" | :"stt-rt-v5"
1042
+
1043
+ module SttModel
1044
+ extend Revox::Internal::Type::Enum
1045
+
1046
+ STT_RT_V4: :"stt-rt-v4"
1047
+ STT_RT_V5: :"stt-rt-v5"
1048
+
1049
+ def self?.values: -> ::Array[Revox::Models::AssistantCloneResponse::Assistant::stt_model]
1050
+ end
1051
+
1052
+ type thinking_sound =
1053
+ :"city-ambience.ogg"
1054
+ | :"forest-ambience.ogg"
1055
+ | :"office-ambience.ogg"
1056
+ | :"crowded-room.ogg"
1057
+ | :"keyboard-typing.ogg"
1058
+ | :"keyboard-typing2.ogg"
1059
+ | :"hold_music.ogg"
1060
+
1061
+ module ThinkingSound
1062
+ extend Revox::Internal::Type::Enum
1063
+
1064
+ CITY_AMBIENCE_OGG: :"city-ambience.ogg"
1065
+ FOREST_AMBIENCE_OGG: :"forest-ambience.ogg"
1066
+ OFFICE_AMBIENCE_OGG: :"office-ambience.ogg"
1067
+ CROWDED_ROOM_OGG: :"crowded-room.ogg"
1068
+ KEYBOARD_TYPING_OGG: :"keyboard-typing.ogg"
1069
+ KEYBOARD_TYPING2_OGG: :"keyboard-typing2.ogg"
1070
+ HOLD_MUSIC_OGG: :"hold_music.ogg"
1071
+
1072
+ def self?.values: -> ::Array[Revox::Models::AssistantCloneResponse::Assistant::thinking_sound]
1073
+ end
1074
+
1075
+ type type_ = :standalone | :"multi-step" | :"sub-assistant"
1076
+
1077
+ module Type
1078
+ extend Revox::Internal::Type::Enum
1079
+
1080
+ STANDALONE: :standalone
1081
+ MULTI_STEP: :"multi-step"
1082
+ SUB_ASSISTANT: :"sub-assistant"
1083
+
1084
+ def self?.values: -> ::Array[Revox::Models::AssistantCloneResponse::Assistant::type_]
1085
+ end
1086
+
1087
+ type voice =
1088
+ {
1089
+ id: String,
1090
+ provider: Revox::Models::AssistantCloneResponse::Assistant::Voice::provider,
1091
+ model: Revox::Models::AssistantCloneResponse::Assistant::Voice::model,
1092
+ speed: Float,
1093
+ volume: Float
1094
+ }
1095
+
1096
+ class Voice < Revox::Internal::Type::BaseModel
1097
+ attr_accessor id: String
1098
+
1099
+ attr_accessor provider: Revox::Models::AssistantCloneResponse::Assistant::Voice::provider
1100
+
1101
+ attr_reader model: Revox::Models::AssistantCloneResponse::Assistant::Voice::model?
1102
+
1103
+ def model=: (
1104
+ Revox::Models::AssistantCloneResponse::Assistant::Voice::model
1105
+ ) -> Revox::Models::AssistantCloneResponse::Assistant::Voice::model
1106
+
1107
+ attr_reader speed: Float?
1108
+
1109
+ def speed=: (Float) -> Float
1110
+
1111
+ attr_reader volume: Float?
1112
+
1113
+ def volume=: (Float) -> Float
1114
+
1115
+ def initialize: (
1116
+ id: String,
1117
+ provider: Revox::Models::AssistantCloneResponse::Assistant::Voice::provider,
1118
+ ?model: Revox::Models::AssistantCloneResponse::Assistant::Voice::model,
1119
+ ?speed: Float,
1120
+ ?volume: Float
1121
+ ) -> void
1122
+
1123
+ def to_hash: -> {
1124
+ id: String,
1125
+ provider: Revox::Models::AssistantCloneResponse::Assistant::Voice::provider,
1126
+ model: Revox::Models::AssistantCloneResponse::Assistant::Voice::model,
1127
+ speed: Float,
1128
+ volume: Float
1129
+ }
1130
+
1131
+ type provider = :cartesia | :elevenlabs
1132
+
1133
+ module Provider
1134
+ extend Revox::Internal::Type::Enum
1135
+
1136
+ CARTESIA: :cartesia
1137
+ ELEVENLABS: :elevenlabs
1138
+
1139
+ def self?.values: -> ::Array[Revox::Models::AssistantCloneResponse::Assistant::Voice::provider]
1140
+ end
1141
+
1142
+ type model = :"sonic-3" | :"sonic-3.5"
1143
+
1144
+ module Model
1145
+ extend Revox::Internal::Type::Enum
1146
+
1147
+ SONIC_3: :"sonic-3"
1148
+ SONIC_3_5: :"sonic-3.5"
1149
+
1150
+ def self?.values: -> ::Array[Revox::Models::AssistantCloneResponse::Assistant::Voice::model]
1151
+ end
1152
+ end
1153
+
1154
+ type zoho =
1155
+ {
1156
+ connection_id: String,
1157
+ field_mapping: ::Array[Revox::Models::AssistantCloneResponse::Assistant::Zoho::FieldMapping],
1158
+ log_call_activity: bool,
1159
+ module_: String,
1160
+ outcomes: ::Array[Revox::Models::AssistantCloneResponse::Assistant::Zoho::outcome],
1161
+ template: String?
1162
+ }
1163
+
1164
+ class Zoho < Revox::Internal::Type::BaseModel
1165
+ attr_accessor connection_id: String
1166
+
1167
+ attr_accessor field_mapping: ::Array[Revox::Models::AssistantCloneResponse::Assistant::Zoho::FieldMapping]
1168
+
1169
+ attr_accessor log_call_activity: bool
1170
+
1171
+ attr_accessor module_: String
1172
+
1173
+ attr_accessor outcomes: ::Array[Revox::Models::AssistantCloneResponse::Assistant::Zoho::outcome]
1174
+
1175
+ attr_accessor template: String?
1176
+
1177
+ def initialize: (
1178
+ connection_id: String,
1179
+ field_mapping: ::Array[Revox::Models::AssistantCloneResponse::Assistant::Zoho::FieldMapping],
1180
+ log_call_activity: bool,
1181
+ module_: String,
1182
+ outcomes: ::Array[Revox::Models::AssistantCloneResponse::Assistant::Zoho::outcome],
1183
+ ?template: String?
1184
+ ) -> void
1185
+
1186
+ def to_hash: -> {
1187
+ connection_id: String,
1188
+ field_mapping: ::Array[Revox::Models::AssistantCloneResponse::Assistant::Zoho::FieldMapping],
1189
+ log_call_activity: bool,
1190
+ module_: String,
1191
+ outcomes: ::Array[Revox::Models::AssistantCloneResponse::Assistant::Zoho::outcome],
1192
+ template: String?
1193
+ }
1194
+
1195
+ type field_mapping = { source: String, zoho_field: String }
1196
+
1197
+ class FieldMapping < Revox::Internal::Type::BaseModel
1198
+ attr_accessor source: String
1199
+
1200
+ attr_accessor zoho_field: String
1201
+
1202
+ def initialize: (source: String, zoho_field: String) -> void
1203
+
1204
+ def to_hash: -> { source: String, zoho_field: String }
1205
+ end
1206
+
1207
+ type outcome =
1208
+ :not_interested
1209
+ | :interested
1210
+ | :completed
1211
+ | :requested_callback_later
1212
+ | :requested_callback_new_number
1213
+ | :do_not_contact
1214
+ | :ai_averse
1215
+ | :none
1216
+
1217
+ module Outcome
1218
+ extend Revox::Internal::Type::Enum
1219
+
1220
+ NOT_INTERESTED: :not_interested
1221
+ INTERESTED: :interested
1222
+ COMPLETED: :completed
1223
+ REQUESTED_CALLBACK_LATER: :requested_callback_later
1224
+ REQUESTED_CALLBACK_NEW_NUMBER: :requested_callback_new_number
1225
+ DO_NOT_CONTACT: :do_not_contact
1226
+ AI_AVERSE: :ai_averse
1227
+ NONE: :none
1228
+
1229
+ def self?.values: -> ::Array[Revox::Models::AssistantCloneResponse::Assistant::Zoho::outcome]
1230
+ end
1231
+ end
1232
+
1233
+ type created_by =
1234
+ { id: String, email: String, first_name: String?, last_name: String? }
1235
+
1236
+ class CreatedBy < Revox::Internal::Type::BaseModel
1237
+ attr_accessor id: String
1238
+
1239
+ attr_accessor email: String
1240
+
1241
+ attr_accessor first_name: String?
1242
+
1243
+ attr_accessor last_name: String?
1244
+
1245
+ def initialize: (
1246
+ id: String,
1247
+ email: String,
1248
+ first_name: String?,
1249
+ last_name: String?
1250
+ ) -> void
1251
+
1252
+ def to_hash: -> {
1253
+ id: String,
1254
+ email: String,
1255
+ first_name: String?,
1256
+ last_name: String?
1257
+ }
1258
+ end
1259
+
1260
+ type faq_item =
1261
+ {
1262
+ answer: String,
1263
+ question: String,
1264
+ id: String,
1265
+ needs_human_answer: bool,
1266
+ source: Revox::Models::AssistantCloneResponse::Assistant::FaqItem::source
1267
+ }
1268
+
1269
+ class FaqItem < Revox::Internal::Type::BaseModel
1270
+ attr_accessor answer: String
1271
+
1272
+ attr_accessor question: String
1273
+
1274
+ attr_reader id: String?
1275
+
1276
+ def id=: (String) -> String
1277
+
1278
+ attr_reader needs_human_answer: bool?
1279
+
1280
+ def needs_human_answer=: (bool) -> bool
1281
+
1282
+ attr_reader source: Revox::Models::AssistantCloneResponse::Assistant::FaqItem::source?
1283
+
1284
+ def source=: (
1285
+ Revox::Models::AssistantCloneResponse::Assistant::FaqItem::source
1286
+ ) -> Revox::Models::AssistantCloneResponse::Assistant::FaqItem::source
1287
+
1288
+ def initialize: (
1289
+ answer: String,
1290
+ question: String,
1291
+ ?id: String,
1292
+ ?needs_human_answer: bool,
1293
+ ?source: Revox::Models::AssistantCloneResponse::Assistant::FaqItem::source
1294
+ ) -> void
1295
+
1296
+ def to_hash: -> {
1297
+ answer: String,
1298
+ question: String,
1299
+ id: String,
1300
+ needs_human_answer: bool,
1301
+ source: Revox::Models::AssistantCloneResponse::Assistant::FaqItem::source
1302
+ }
1303
+
1304
+ type source = :human | :ai
1305
+
1306
+ module Source
1307
+ extend Revox::Internal::Type::Enum
1308
+
1309
+ HUMAN: :human
1310
+ AI: :ai
1311
+
1312
+ def self?.values: -> ::Array[Revox::Models::AssistantCloneResponse::Assistant::FaqItem::source]
1313
+ end
1314
+ end
1315
+ end
1316
+ end
1317
+ end
1318
+ end