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