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,3045 @@
1
+ module Revox
2
+ module Models
3
+ type call_search_response =
4
+ {
5
+ calls: ::Array[Revox::Models::CallSearchResponse::Call],
6
+ total_count: Float
7
+ }
8
+
9
+ class CallSearchResponse < Revox::Internal::Type::BaseModel
10
+ attr_accessor calls: ::Array[Revox::Models::CallSearchResponse::Call]
11
+
12
+ attr_accessor total_count: Float
13
+
14
+ def initialize: (
15
+ calls: ::Array[Revox::Models::CallSearchResponse::Call],
16
+ total_count: Float
17
+ ) -> void
18
+
19
+ def to_hash: -> {
20
+ calls: ::Array[Revox::Models::CallSearchResponse::Call],
21
+ total_count: Float
22
+ }
23
+
24
+ type call =
25
+ {
26
+ id: String,
27
+ assignee: Revox::Models::CallSearchResponse::Call::Assignee?,
28
+ assistant: Revox::Models::CallSearchResponse::Call::Assistant?,
29
+ call_attempts: ::Array[Revox::Models::CallSearchResponse::Call::CallAttempt],
30
+ call_retry_config: Revox::Models::CallSearchResponse::Call::CallRetryConfig?,
31
+ calls_count: Float,
32
+ campaign: Revox::Models::CallSearchResponse::Call::Campaign?,
33
+ contact: Revox::Models::CallSearchResponse::Call::Contact,
34
+ created_at: top,
35
+ direction: Revox::Models::CallSearchResponse::Call::direction,
36
+ first_sentence_delay_ms: Integer,
37
+ from_phone_number: String,
38
+ is_cancelled: bool,
39
+ is_completed: bool,
40
+ last_call_attempt: Revox::Models::CallSearchResponse::Call::LastCallAttempt?,
41
+ llm_model: Revox::Models::CallSearchResponse::Call::llm_model,
42
+ metadata: ::Hash[Symbol, String]?,
43
+ organization_id: String,
44
+ prompt_variables: ::Hash[Symbol, String]?,
45
+ scheduled_at: top,
46
+ status: Revox::Models::CallSearchResponse::Call::status,
47
+ to_phone_number: String,
48
+ updated_at: top,
49
+ follow_up_emails: ::Array[String]?,
50
+ outcome: Revox::Models::CallSearchResponse::Call::outcome?,
51
+ outcome_summary: String?,
52
+ slack_channel_ids: ::Array[String]?
53
+ }
54
+
55
+ class Call < Revox::Internal::Type::BaseModel
56
+ attr_accessor id: String
57
+
58
+ attr_accessor assignee: Revox::Models::CallSearchResponse::Call::Assignee?
59
+
60
+ attr_accessor assistant: Revox::Models::CallSearchResponse::Call::Assistant?
61
+
62
+ attr_accessor call_attempts: ::Array[Revox::Models::CallSearchResponse::Call::CallAttempt]
63
+
64
+ attr_accessor call_retry_config: Revox::Models::CallSearchResponse::Call::CallRetryConfig?
65
+
66
+ attr_accessor calls_count: Float
67
+
68
+ attr_accessor campaign: Revox::Models::CallSearchResponse::Call::Campaign?
69
+
70
+ attr_accessor contact: Revox::Models::CallSearchResponse::Call::Contact
71
+
72
+ attr_accessor created_at: top
73
+
74
+ attr_accessor direction: Revox::Models::CallSearchResponse::Call::direction
75
+
76
+ attr_accessor first_sentence_delay_ms: Integer
77
+
78
+ attr_accessor from_phone_number: String
79
+
80
+ attr_accessor is_cancelled: bool
81
+
82
+ attr_accessor is_completed: bool
83
+
84
+ attr_accessor last_call_attempt: Revox::Models::CallSearchResponse::Call::LastCallAttempt?
85
+
86
+ attr_accessor llm_model: Revox::Models::CallSearchResponse::Call::llm_model
87
+
88
+ attr_accessor metadata: ::Hash[Symbol, String]?
89
+
90
+ attr_accessor organization_id: String
91
+
92
+ attr_accessor prompt_variables: ::Hash[Symbol, String]?
93
+
94
+ attr_accessor scheduled_at: top
95
+
96
+ attr_accessor status: Revox::Models::CallSearchResponse::Call::status
97
+
98
+ attr_accessor to_phone_number: String
99
+
100
+ attr_accessor updated_at: top
101
+
102
+ attr_accessor follow_up_emails: ::Array[String]?
103
+
104
+ attr_accessor outcome: Revox::Models::CallSearchResponse::Call::outcome?
105
+
106
+ attr_accessor outcome_summary: String?
107
+
108
+ attr_accessor slack_channel_ids: ::Array[String]?
109
+
110
+ def initialize: (
111
+ id: String,
112
+ assignee: Revox::Models::CallSearchResponse::Call::Assignee?,
113
+ assistant: Revox::Models::CallSearchResponse::Call::Assistant?,
114
+ call_attempts: ::Array[Revox::Models::CallSearchResponse::Call::CallAttempt],
115
+ call_retry_config: Revox::Models::CallSearchResponse::Call::CallRetryConfig?,
116
+ calls_count: Float,
117
+ campaign: Revox::Models::CallSearchResponse::Call::Campaign?,
118
+ contact: Revox::Models::CallSearchResponse::Call::Contact,
119
+ created_at: top,
120
+ direction: Revox::Models::CallSearchResponse::Call::direction,
121
+ first_sentence_delay_ms: Integer,
122
+ from_phone_number: String,
123
+ is_cancelled: bool,
124
+ is_completed: bool,
125
+ last_call_attempt: Revox::Models::CallSearchResponse::Call::LastCallAttempt?,
126
+ llm_model: Revox::Models::CallSearchResponse::Call::llm_model,
127
+ metadata: ::Hash[Symbol, String]?,
128
+ organization_id: String,
129
+ prompt_variables: ::Hash[Symbol, String]?,
130
+ scheduled_at: top,
131
+ status: Revox::Models::CallSearchResponse::Call::status,
132
+ to_phone_number: String,
133
+ updated_at: top,
134
+ ?follow_up_emails: ::Array[String]?,
135
+ ?outcome: Revox::Models::CallSearchResponse::Call::outcome?,
136
+ ?outcome_summary: String?,
137
+ ?slack_channel_ids: ::Array[String]?
138
+ ) -> void
139
+
140
+ def to_hash: -> {
141
+ id: String,
142
+ assignee: Revox::Models::CallSearchResponse::Call::Assignee?,
143
+ assistant: Revox::Models::CallSearchResponse::Call::Assistant?,
144
+ call_attempts: ::Array[Revox::Models::CallSearchResponse::Call::CallAttempt],
145
+ call_retry_config: Revox::Models::CallSearchResponse::Call::CallRetryConfig?,
146
+ calls_count: Float,
147
+ campaign: Revox::Models::CallSearchResponse::Call::Campaign?,
148
+ contact: Revox::Models::CallSearchResponse::Call::Contact,
149
+ created_at: top,
150
+ direction: Revox::Models::CallSearchResponse::Call::direction,
151
+ first_sentence_delay_ms: Integer,
152
+ from_phone_number: String,
153
+ is_cancelled: bool,
154
+ is_completed: bool,
155
+ last_call_attempt: Revox::Models::CallSearchResponse::Call::LastCallAttempt?,
156
+ llm_model: Revox::Models::CallSearchResponse::Call::llm_model,
157
+ metadata: ::Hash[Symbol, String]?,
158
+ organization_id: String,
159
+ prompt_variables: ::Hash[Symbol, String]?,
160
+ scheduled_at: top,
161
+ status: Revox::Models::CallSearchResponse::Call::status,
162
+ to_phone_number: String,
163
+ updated_at: top,
164
+ follow_up_emails: ::Array[String]?,
165
+ outcome: Revox::Models::CallSearchResponse::Call::outcome?,
166
+ outcome_summary: String?,
167
+ slack_channel_ids: ::Array[String]?
168
+ }
169
+
170
+ type assignee =
171
+ { id: String, email: String, first_name: String?, last_name: String? }
172
+
173
+ class Assignee < Revox::Internal::Type::BaseModel
174
+ attr_accessor id: String
175
+
176
+ attr_accessor email: String
177
+
178
+ attr_accessor first_name: String?
179
+
180
+ attr_accessor last_name: String?
181
+
182
+ def initialize: (
183
+ id: String,
184
+ email: String,
185
+ first_name: String?,
186
+ last_name: String?
187
+ ) -> void
188
+
189
+ def to_hash: -> {
190
+ id: String,
191
+ email: String,
192
+ first_name: String?,
193
+ last_name: String?
194
+ }
195
+ end
196
+
197
+ type assistant =
198
+ {
199
+ id: String,
200
+ after_call_sms_outcomes: ::Array[Revox::Models::CallSearchResponse::Call::Assistant::after_call_sms_outcome]?,
201
+ after_call_sms_prompt: String?,
202
+ background_sound: Revox::Models::CallSearchResponse::Call::Assistant::background_sound?,
203
+ background_sound_volume: Float,
204
+ calendly: Revox::Models::CallSearchResponse::Call::Assistant::Calendly?,
205
+ call_retry_config: Revox::Models::CallSearchResponse::Call::Assistant::CallRetryConfig?,
206
+ cartesia_dictionary_pronunciation_id: String?,
207
+ created_at: top,
208
+ custom_tools: ::Array[Revox::Models::CallSearchResponse::Call::Assistant::CustomTool]?,
209
+ email_notification_address: String?,
210
+ email_notification_outcomes: ::Array[Revox::Models::CallSearchResponse::Call::Assistant::email_notification_outcome]?,
211
+ end_of_call_sentence: String?,
212
+ first_sentence: String?,
213
+ first_sentence_delay_ms: Integer,
214
+ first_sentence_mode: Revox::Models::CallSearchResponse::Call::Assistant::first_sentence_mode,
215
+ from_phone_number: String?,
216
+ human_transfer_mode: Revox::Models::CallSearchResponse::Call::Assistant::human_transfer_mode?,
217
+ ivr_navigation_enabled: bool,
218
+ llm_model: Revox::Models::CallSearchResponse::Call::Assistant::llm_model,
219
+ logo_url: String?,
220
+ max_call_duration_secs: Float,
221
+ max_duration_end_message: String?,
222
+ name: String,
223
+ organization_id: String,
224
+ position: Revox::Models::CallSearchResponse::Call::Assistant::Position?,
225
+ precall_lookup_url: String?,
226
+ prompt: String,
227
+ prompt_flow: Revox::Models::CallSearchResponse::Call::Assistant::PromptFlow?,
228
+ slack: Revox::Models::CallSearchResponse::Call::Assistant::Slack?,
229
+ sms_enabled: bool,
230
+ sms_template: String?,
231
+ structured_output_config: ::Array[Revox::Models::CallSearchResponse::Call::Assistant::StructuredOutputConfig]?,
232
+ structured_output_prompt: String?,
233
+ stt_context: Revox::Models::CallSearchResponse::Call::Assistant::SttContext?,
234
+ stt_model: Revox::Models::CallSearchResponse::Call::Assistant::stt_model,
235
+ thinking_sound: Revox::Models::CallSearchResponse::Call::Assistant::thinking_sound?,
236
+ thinking_sound_probability: Float,
237
+ thinking_sound_volume: Float,
238
+ transfer_destinations: ::Array[Revox::Models::CallSearchResponse::Call::Assistant::TransferDestination]?,
239
+ type: Revox::Models::CallSearchResponse::Call::Assistant::type_,
240
+ updated_at: top,
241
+ voice: Revox::Models::CallSearchResponse::Call::Assistant::Voice?,
242
+ voicemail_message: String?,
243
+ voicemail_sms_prompt: String?,
244
+ warm_transfer_summary_instructions: String?,
245
+ webhook_url: String?,
246
+ zoho: Revox::Models::CallSearchResponse::Call::Assistant::Zoho?,
247
+ created_by: Revox::Models::CallSearchResponse::Call::Assistant::CreatedBy?,
248
+ faq_items: ::Array[Revox::Models::CallSearchResponse::Call::Assistant::FaqItem],
249
+ is_inbound_receptionist: bool,
250
+ is_realestate_assistant: bool,
251
+ pending_faq_count: Float
252
+ }
253
+
254
+ class Assistant < Revox::Internal::Type::BaseModel
255
+ attr_accessor id: String
256
+
257
+ attr_accessor after_call_sms_outcomes: ::Array[Revox::Models::CallSearchResponse::Call::Assistant::after_call_sms_outcome]?
258
+
259
+ attr_accessor after_call_sms_prompt: String?
260
+
261
+ attr_accessor background_sound: Revox::Models::CallSearchResponse::Call::Assistant::background_sound?
262
+
263
+ attr_accessor background_sound_volume: Float
264
+
265
+ attr_accessor calendly: Revox::Models::CallSearchResponse::Call::Assistant::Calendly?
266
+
267
+ attr_accessor call_retry_config: Revox::Models::CallSearchResponse::Call::Assistant::CallRetryConfig?
268
+
269
+ attr_accessor cartesia_dictionary_pronunciation_id: String?
270
+
271
+ attr_accessor created_at: top
272
+
273
+ attr_accessor custom_tools: ::Array[Revox::Models::CallSearchResponse::Call::Assistant::CustomTool]?
274
+
275
+ attr_accessor email_notification_address: String?
276
+
277
+ attr_accessor email_notification_outcomes: ::Array[Revox::Models::CallSearchResponse::Call::Assistant::email_notification_outcome]?
278
+
279
+ attr_accessor end_of_call_sentence: String?
280
+
281
+ attr_accessor first_sentence: String?
282
+
283
+ attr_accessor first_sentence_delay_ms: Integer
284
+
285
+ attr_accessor first_sentence_mode: Revox::Models::CallSearchResponse::Call::Assistant::first_sentence_mode
286
+
287
+ attr_accessor from_phone_number: String?
288
+
289
+ attr_accessor human_transfer_mode: Revox::Models::CallSearchResponse::Call::Assistant::human_transfer_mode?
290
+
291
+ attr_accessor ivr_navigation_enabled: bool
292
+
293
+ attr_accessor llm_model: Revox::Models::CallSearchResponse::Call::Assistant::llm_model
294
+
295
+ attr_accessor logo_url: String?
296
+
297
+ attr_accessor max_call_duration_secs: Float
298
+
299
+ attr_accessor max_duration_end_message: String?
300
+
301
+ attr_accessor name: String
302
+
303
+ attr_accessor organization_id: String
304
+
305
+ attr_accessor position: Revox::Models::CallSearchResponse::Call::Assistant::Position?
306
+
307
+ attr_accessor precall_lookup_url: String?
308
+
309
+ attr_accessor prompt: String
310
+
311
+ attr_accessor prompt_flow: Revox::Models::CallSearchResponse::Call::Assistant::PromptFlow?
312
+
313
+ attr_accessor slack: Revox::Models::CallSearchResponse::Call::Assistant::Slack?
314
+
315
+ attr_accessor sms_enabled: bool
316
+
317
+ attr_accessor sms_template: String?
318
+
319
+ attr_accessor structured_output_config: ::Array[Revox::Models::CallSearchResponse::Call::Assistant::StructuredOutputConfig]?
320
+
321
+ attr_accessor structured_output_prompt: String?
322
+
323
+ attr_accessor stt_context: Revox::Models::CallSearchResponse::Call::Assistant::SttContext?
324
+
325
+ attr_accessor stt_model: Revox::Models::CallSearchResponse::Call::Assistant::stt_model
326
+
327
+ attr_accessor thinking_sound: Revox::Models::CallSearchResponse::Call::Assistant::thinking_sound?
328
+
329
+ attr_accessor thinking_sound_probability: Float
330
+
331
+ attr_accessor thinking_sound_volume: Float
332
+
333
+ attr_accessor transfer_destinations: ::Array[Revox::Models::CallSearchResponse::Call::Assistant::TransferDestination]?
334
+
335
+ attr_accessor type: Revox::Models::CallSearchResponse::Call::Assistant::type_
336
+
337
+ attr_accessor updated_at: top
338
+
339
+ attr_accessor voice: Revox::Models::CallSearchResponse::Call::Assistant::Voice?
340
+
341
+ attr_accessor voicemail_message: String?
342
+
343
+ attr_accessor voicemail_sms_prompt: String?
344
+
345
+ attr_accessor warm_transfer_summary_instructions: String?
346
+
347
+ attr_accessor webhook_url: String?
348
+
349
+ attr_accessor zoho: Revox::Models::CallSearchResponse::Call::Assistant::Zoho?
350
+
351
+ attr_accessor created_by: Revox::Models::CallSearchResponse::Call::Assistant::CreatedBy?
352
+
353
+ attr_reader faq_items: ::Array[Revox::Models::CallSearchResponse::Call::Assistant::FaqItem]?
354
+
355
+ def faq_items=: (
356
+ ::Array[Revox::Models::CallSearchResponse::Call::Assistant::FaqItem]
357
+ ) -> ::Array[Revox::Models::CallSearchResponse::Call::Assistant::FaqItem]
358
+
359
+ attr_reader is_inbound_receptionist: bool?
360
+
361
+ def is_inbound_receptionist=: (bool) -> bool
362
+
363
+ attr_reader is_realestate_assistant: bool?
364
+
365
+ def is_realestate_assistant=: (bool) -> bool
366
+
367
+ attr_reader pending_faq_count: Float?
368
+
369
+ def pending_faq_count=: (Float) -> Float
370
+
371
+ def initialize: (
372
+ id: String,
373
+ after_call_sms_outcomes: ::Array[Revox::Models::CallSearchResponse::Call::Assistant::after_call_sms_outcome]?,
374
+ after_call_sms_prompt: String?,
375
+ background_sound: Revox::Models::CallSearchResponse::Call::Assistant::background_sound?,
376
+ background_sound_volume: Float,
377
+ calendly: Revox::Models::CallSearchResponse::Call::Assistant::Calendly?,
378
+ call_retry_config: Revox::Models::CallSearchResponse::Call::Assistant::CallRetryConfig?,
379
+ cartesia_dictionary_pronunciation_id: String?,
380
+ created_at: top,
381
+ custom_tools: ::Array[Revox::Models::CallSearchResponse::Call::Assistant::CustomTool]?,
382
+ email_notification_address: String?,
383
+ email_notification_outcomes: ::Array[Revox::Models::CallSearchResponse::Call::Assistant::email_notification_outcome]?,
384
+ end_of_call_sentence: String?,
385
+ first_sentence: String?,
386
+ first_sentence_delay_ms: Integer,
387
+ first_sentence_mode: Revox::Models::CallSearchResponse::Call::Assistant::first_sentence_mode,
388
+ from_phone_number: String?,
389
+ human_transfer_mode: Revox::Models::CallSearchResponse::Call::Assistant::human_transfer_mode?,
390
+ ivr_navigation_enabled: bool,
391
+ llm_model: Revox::Models::CallSearchResponse::Call::Assistant::llm_model,
392
+ logo_url: String?,
393
+ max_call_duration_secs: Float,
394
+ max_duration_end_message: String?,
395
+ name: String,
396
+ organization_id: String,
397
+ position: Revox::Models::CallSearchResponse::Call::Assistant::Position?,
398
+ precall_lookup_url: String?,
399
+ prompt: String,
400
+ prompt_flow: Revox::Models::CallSearchResponse::Call::Assistant::PromptFlow?,
401
+ slack: Revox::Models::CallSearchResponse::Call::Assistant::Slack?,
402
+ sms_enabled: bool,
403
+ sms_template: String?,
404
+ structured_output_config: ::Array[Revox::Models::CallSearchResponse::Call::Assistant::StructuredOutputConfig]?,
405
+ structured_output_prompt: String?,
406
+ stt_context: Revox::Models::CallSearchResponse::Call::Assistant::SttContext?,
407
+ stt_model: Revox::Models::CallSearchResponse::Call::Assistant::stt_model,
408
+ thinking_sound: Revox::Models::CallSearchResponse::Call::Assistant::thinking_sound?,
409
+ thinking_sound_probability: Float,
410
+ thinking_sound_volume: Float,
411
+ transfer_destinations: ::Array[Revox::Models::CallSearchResponse::Call::Assistant::TransferDestination]?,
412
+ type: Revox::Models::CallSearchResponse::Call::Assistant::type_,
413
+ updated_at: top,
414
+ voice: Revox::Models::CallSearchResponse::Call::Assistant::Voice?,
415
+ voicemail_message: String?,
416
+ voicemail_sms_prompt: String?,
417
+ warm_transfer_summary_instructions: String?,
418
+ webhook_url: String?,
419
+ zoho: Revox::Models::CallSearchResponse::Call::Assistant::Zoho?,
420
+ ?created_by: Revox::Models::CallSearchResponse::Call::Assistant::CreatedBy?,
421
+ ?faq_items: ::Array[Revox::Models::CallSearchResponse::Call::Assistant::FaqItem],
422
+ ?is_inbound_receptionist: bool,
423
+ ?is_realestate_assistant: bool,
424
+ ?pending_faq_count: Float
425
+ ) -> void
426
+
427
+ def to_hash: -> {
428
+ id: String,
429
+ after_call_sms_outcomes: ::Array[Revox::Models::CallSearchResponse::Call::Assistant::after_call_sms_outcome]?,
430
+ after_call_sms_prompt: String?,
431
+ background_sound: Revox::Models::CallSearchResponse::Call::Assistant::background_sound?,
432
+ background_sound_volume: Float,
433
+ calendly: Revox::Models::CallSearchResponse::Call::Assistant::Calendly?,
434
+ call_retry_config: Revox::Models::CallSearchResponse::Call::Assistant::CallRetryConfig?,
435
+ cartesia_dictionary_pronunciation_id: String?,
436
+ created_at: top,
437
+ custom_tools: ::Array[Revox::Models::CallSearchResponse::Call::Assistant::CustomTool]?,
438
+ email_notification_address: String?,
439
+ email_notification_outcomes: ::Array[Revox::Models::CallSearchResponse::Call::Assistant::email_notification_outcome]?,
440
+ end_of_call_sentence: String?,
441
+ first_sentence: String?,
442
+ first_sentence_delay_ms: Integer,
443
+ first_sentence_mode: Revox::Models::CallSearchResponse::Call::Assistant::first_sentence_mode,
444
+ from_phone_number: String?,
445
+ human_transfer_mode: Revox::Models::CallSearchResponse::Call::Assistant::human_transfer_mode?,
446
+ ivr_navigation_enabled: bool,
447
+ llm_model: Revox::Models::CallSearchResponse::Call::Assistant::llm_model,
448
+ logo_url: String?,
449
+ max_call_duration_secs: Float,
450
+ max_duration_end_message: String?,
451
+ name: String,
452
+ organization_id: String,
453
+ position: Revox::Models::CallSearchResponse::Call::Assistant::Position?,
454
+ precall_lookup_url: String?,
455
+ prompt: String,
456
+ prompt_flow: Revox::Models::CallSearchResponse::Call::Assistant::PromptFlow?,
457
+ slack: Revox::Models::CallSearchResponse::Call::Assistant::Slack?,
458
+ sms_enabled: bool,
459
+ sms_template: String?,
460
+ structured_output_config: ::Array[Revox::Models::CallSearchResponse::Call::Assistant::StructuredOutputConfig]?,
461
+ structured_output_prompt: String?,
462
+ stt_context: Revox::Models::CallSearchResponse::Call::Assistant::SttContext?,
463
+ stt_model: Revox::Models::CallSearchResponse::Call::Assistant::stt_model,
464
+ thinking_sound: Revox::Models::CallSearchResponse::Call::Assistant::thinking_sound?,
465
+ thinking_sound_probability: Float,
466
+ thinking_sound_volume: Float,
467
+ transfer_destinations: ::Array[Revox::Models::CallSearchResponse::Call::Assistant::TransferDestination]?,
468
+ type: Revox::Models::CallSearchResponse::Call::Assistant::type_,
469
+ updated_at: top,
470
+ voice: Revox::Models::CallSearchResponse::Call::Assistant::Voice?,
471
+ voicemail_message: String?,
472
+ voicemail_sms_prompt: String?,
473
+ warm_transfer_summary_instructions: String?,
474
+ webhook_url: String?,
475
+ zoho: Revox::Models::CallSearchResponse::Call::Assistant::Zoho?,
476
+ created_by: Revox::Models::CallSearchResponse::Call::Assistant::CreatedBy?,
477
+ faq_items: ::Array[Revox::Models::CallSearchResponse::Call::Assistant::FaqItem],
478
+ is_inbound_receptionist: bool,
479
+ is_realestate_assistant: bool,
480
+ pending_faq_count: Float
481
+ }
482
+
483
+ type after_call_sms_outcome =
484
+ :not_interested
485
+ | :interested
486
+ | :completed
487
+ | :requested_callback_later
488
+ | :none
489
+
490
+ module AfterCallSMSOutcome
491
+ extend Revox::Internal::Type::Enum
492
+
493
+ NOT_INTERESTED: :not_interested
494
+ INTERESTED: :interested
495
+ COMPLETED: :completed
496
+ REQUESTED_CALLBACK_LATER: :requested_callback_later
497
+ NONE: :none
498
+
499
+ def self?.values: -> ::Array[Revox::Models::CallSearchResponse::Call::Assistant::after_call_sms_outcome]
500
+ end
501
+
502
+ type background_sound = :"audio/office.ogg"
503
+
504
+ module BackgroundSound
505
+ extend Revox::Internal::Type::Enum
506
+
507
+ AUDIO_OFFICE_OGG: :"audio/office.ogg"
508
+
509
+ def self?.values: -> ::Array[Revox::Models::CallSearchResponse::Call::Assistant::background_sound]
510
+ end
511
+
512
+ type calendly = { connection_id: String, event_type_id: String }
513
+
514
+ class Calendly < Revox::Internal::Type::BaseModel
515
+ attr_accessor connection_id: String
516
+
517
+ attr_accessor event_type_id: String
518
+
519
+ def initialize: (
520
+ connection_id: String,
521
+ event_type_id: String
522
+ ) -> void
523
+
524
+ def to_hash: -> { connection_id: String, event_type_id: String }
525
+ end
526
+
527
+ type call_retry_config =
528
+ {
529
+ allowed_days: ::Array[Revox::Models::CallSearchResponse::Call::Assistant::CallRetryConfig::allowed_day],
530
+ call_twice_in_a_row: bool,
531
+ calling_windows: ::Array[Revox::Models::CallSearchResponse::Call::Assistant::CallRetryConfig::CallingWindow],
532
+ max_retry_attempts: Integer,
533
+ timezone: String?
534
+ }
535
+
536
+ class CallRetryConfig < Revox::Internal::Type::BaseModel
537
+ attr_accessor allowed_days: ::Array[Revox::Models::CallSearchResponse::Call::Assistant::CallRetryConfig::allowed_day]
538
+
539
+ attr_accessor call_twice_in_a_row: bool
540
+
541
+ attr_accessor calling_windows: ::Array[Revox::Models::CallSearchResponse::Call::Assistant::CallRetryConfig::CallingWindow]
542
+
543
+ attr_accessor max_retry_attempts: Integer
544
+
545
+ attr_accessor timezone: String?
546
+
547
+ def initialize: (
548
+ allowed_days: ::Array[Revox::Models::CallSearchResponse::Call::Assistant::CallRetryConfig::allowed_day],
549
+ call_twice_in_a_row: bool,
550
+ calling_windows: ::Array[Revox::Models::CallSearchResponse::Call::Assistant::CallRetryConfig::CallingWindow],
551
+ max_retry_attempts: Integer,
552
+ ?timezone: String?
553
+ ) -> void
554
+
555
+ def to_hash: -> {
556
+ allowed_days: ::Array[Revox::Models::CallSearchResponse::Call::Assistant::CallRetryConfig::allowed_day],
557
+ call_twice_in_a_row: bool,
558
+ calling_windows: ::Array[Revox::Models::CallSearchResponse::Call::Assistant::CallRetryConfig::CallingWindow],
559
+ max_retry_attempts: Integer,
560
+ timezone: String?
561
+ }
562
+
563
+ type allowed_day =
564
+ :monday
565
+ | :tuesday
566
+ | :wednesday
567
+ | :thursday
568
+ | :friday
569
+ | :saturday
570
+ | :sunday
571
+
572
+ module AllowedDay
573
+ extend Revox::Internal::Type::Enum
574
+
575
+ MONDAY: :monday
576
+ TUESDAY: :tuesday
577
+ WEDNESDAY: :wednesday
578
+ THURSDAY: :thursday
579
+ FRIDAY: :friday
580
+ SATURDAY: :saturday
581
+ SUNDAY: :sunday
582
+
583
+ def self?.values: -> ::Array[Revox::Models::CallSearchResponse::Call::Assistant::CallRetryConfig::allowed_day]
584
+ end
585
+
586
+ type calling_window =
587
+ {
588
+ calling_window_end_time: String,
589
+ calling_window_start_time: String,
590
+ retry_delay_seconds: Integer
591
+ }
592
+
593
+ class CallingWindow < Revox::Internal::Type::BaseModel
594
+ attr_accessor calling_window_end_time: String
595
+
596
+ attr_accessor calling_window_start_time: String
597
+
598
+ attr_accessor retry_delay_seconds: Integer
599
+
600
+ def initialize: (
601
+ calling_window_end_time: String,
602
+ calling_window_start_time: String,
603
+ retry_delay_seconds: Integer
604
+ ) -> void
605
+
606
+ def to_hash: -> {
607
+ calling_window_end_time: String,
608
+ calling_window_start_time: String,
609
+ retry_delay_seconds: Integer
610
+ }
611
+ end
612
+ end
613
+
614
+ type custom_tool =
615
+ {
616
+ body_template: String?,
617
+ description: String,
618
+ headers: ::Array[Revox::Models::CallSearchResponse::Call::Assistant::CustomTool::Header],
619
+ input_schema: ::Array[Revox::Models::CallSearchResponse::Call::Assistant::CustomTool::InputSchema],
620
+ method_: Revox::Models::CallSearchResponse::Call::Assistant::CustomTool::method_,
621
+ name: String,
622
+ query_params: ::Array[Revox::Models::CallSearchResponse::Call::Assistant::CustomTool::QueryParam],
623
+ url: String
624
+ }
625
+
626
+ class CustomTool < Revox::Internal::Type::BaseModel
627
+ attr_accessor body_template: String?
628
+
629
+ attr_accessor description: String
630
+
631
+ attr_accessor headers: ::Array[Revox::Models::CallSearchResponse::Call::Assistant::CustomTool::Header]
632
+
633
+ attr_accessor input_schema: ::Array[Revox::Models::CallSearchResponse::Call::Assistant::CustomTool::InputSchema]
634
+
635
+ attr_accessor method_: Revox::Models::CallSearchResponse::Call::Assistant::CustomTool::method_
636
+
637
+ attr_accessor name: String
638
+
639
+ attr_accessor query_params: ::Array[Revox::Models::CallSearchResponse::Call::Assistant::CustomTool::QueryParam]
640
+
641
+ attr_accessor url: String
642
+
643
+ def initialize: (
644
+ body_template: String?,
645
+ description: String,
646
+ headers: ::Array[Revox::Models::CallSearchResponse::Call::Assistant::CustomTool::Header],
647
+ input_schema: ::Array[Revox::Models::CallSearchResponse::Call::Assistant::CustomTool::InputSchema],
648
+ method_: Revox::Models::CallSearchResponse::Call::Assistant::CustomTool::method_,
649
+ name: String,
650
+ query_params: ::Array[Revox::Models::CallSearchResponse::Call::Assistant::CustomTool::QueryParam],
651
+ url: String
652
+ ) -> void
653
+
654
+ def to_hash: -> {
655
+ body_template: String?,
656
+ description: String,
657
+ headers: ::Array[Revox::Models::CallSearchResponse::Call::Assistant::CustomTool::Header],
658
+ input_schema: ::Array[Revox::Models::CallSearchResponse::Call::Assistant::CustomTool::InputSchema],
659
+ method_: Revox::Models::CallSearchResponse::Call::Assistant::CustomTool::method_,
660
+ name: String,
661
+ query_params: ::Array[Revox::Models::CallSearchResponse::Call::Assistant::CustomTool::QueryParam],
662
+ url: String
663
+ }
664
+
665
+ type header = { key: String, value: String }
666
+
667
+ class Header < Revox::Internal::Type::BaseModel
668
+ attr_accessor key: String
669
+
670
+ attr_accessor value: String
671
+
672
+ def initialize: (key: String, value: String) -> void
673
+
674
+ def to_hash: -> { key: String, value: String }
675
+ end
676
+
677
+ type input_schema =
678
+ {
679
+ name: String,
680
+ required: bool,
681
+ type: Revox::Models::CallSearchResponse::Call::Assistant::CustomTool::InputSchema::type_,
682
+ description: String,
683
+ enum_options: ::Array[String]
684
+ }
685
+
686
+ class InputSchema < Revox::Internal::Type::BaseModel
687
+ attr_accessor name: String
688
+
689
+ attr_accessor required: bool
690
+
691
+ attr_accessor type: Revox::Models::CallSearchResponse::Call::Assistant::CustomTool::InputSchema::type_
692
+
693
+ attr_reader description: String?
694
+
695
+ def description=: (String) -> String
696
+
697
+ attr_reader enum_options: ::Array[String]?
698
+
699
+ def enum_options=: (::Array[String]) -> ::Array[String]
700
+
701
+ def initialize: (
702
+ name: String,
703
+ required: bool,
704
+ type: Revox::Models::CallSearchResponse::Call::Assistant::CustomTool::InputSchema::type_,
705
+ ?description: String,
706
+ ?enum_options: ::Array[String]
707
+ ) -> void
708
+
709
+ def to_hash: -> {
710
+ name: String,
711
+ required: bool,
712
+ type: Revox::Models::CallSearchResponse::Call::Assistant::CustomTool::InputSchema::type_,
713
+ description: String,
714
+ enum_options: ::Array[String]
715
+ }
716
+
717
+ type type_ =
718
+ :string | :number | :boolean | :enum | :date | :datetime
719
+
720
+ module Type
721
+ extend Revox::Internal::Type::Enum
722
+
723
+ STRING: :string
724
+ NUMBER: :number
725
+ BOOLEAN: :boolean
726
+ ENUM: :enum
727
+ DATE: :date
728
+ DATETIME: :datetime
729
+
730
+ def self?.values: -> ::Array[Revox::Models::CallSearchResponse::Call::Assistant::CustomTool::InputSchema::type_]
731
+ end
732
+ end
733
+
734
+ type method_ = :GET | :POST | :PUT | :PATCH | :DELETE
735
+
736
+ module Method
737
+ extend Revox::Internal::Type::Enum
738
+
739
+ GET: :GET
740
+ POST: :POST
741
+ PUT: :PUT
742
+ PATCH: :PATCH
743
+ DELETE: :DELETE
744
+
745
+ def self?.values: -> ::Array[Revox::Models::CallSearchResponse::Call::Assistant::CustomTool::method_]
746
+ end
747
+
748
+ type query_param = { key: String, value: String }
749
+
750
+ class QueryParam < Revox::Internal::Type::BaseModel
751
+ attr_accessor key: String
752
+
753
+ attr_accessor value: String
754
+
755
+ def initialize: (key: String, value: String) -> void
756
+
757
+ def to_hash: -> { key: String, value: String }
758
+ end
759
+ end
760
+
761
+ type email_notification_outcome =
762
+ :not_interested
763
+ | :interested
764
+ | :completed
765
+ | :requested_callback_later
766
+ | :none
767
+
768
+ module EmailNotificationOutcome
769
+ extend Revox::Internal::Type::Enum
770
+
771
+ NOT_INTERESTED: :not_interested
772
+ INTERESTED: :interested
773
+ COMPLETED: :completed
774
+ REQUESTED_CALLBACK_LATER: :requested_callback_later
775
+ NONE: :none
776
+
777
+ def self?.values: -> ::Array[Revox::Models::CallSearchResponse::Call::Assistant::email_notification_outcome]
778
+ end
779
+
780
+ type first_sentence_mode = :generated | :static | :none
781
+
782
+ module FirstSentenceMode
783
+ extend Revox::Internal::Type::Enum
784
+
785
+ GENERATED: :generated
786
+ STATIC: :static
787
+ NONE: :none
788
+
789
+ def self?.values: -> ::Array[Revox::Models::CallSearchResponse::Call::Assistant::first_sentence_mode]
790
+ end
791
+
792
+ type human_transfer_mode = :warm | :cold
793
+
794
+ module HumanTransferMode
795
+ extend Revox::Internal::Type::Enum
796
+
797
+ WARM: :warm
798
+ COLD: :cold
799
+
800
+ def self?.values: -> ::Array[Revox::Models::CallSearchResponse::Call::Assistant::human_transfer_mode]
801
+ end
802
+
803
+ type llm_model =
804
+ Revox::Models::CallSearchResponse::Call::Assistant::LlmModel::UnionMember0
805
+ | Revox::Models::CallSearchResponse::Call::Assistant::LlmModel::UnionMember1
806
+ | Revox::Models::CallSearchResponse::Call::Assistant::LlmModel::UnionMember2
807
+ | Revox::Models::CallSearchResponse::Call::Assistant::LlmModel::UnionMember3
808
+
809
+ module LlmModel
810
+ extend Revox::Internal::Type::Union
811
+
812
+ type union_member0 =
813
+ {
814
+ name: Revox::Models::CallSearchResponse::Call::Assistant::LlmModel::UnionMember0::name_,
815
+ type: :"dedicated-instance"
816
+ }
817
+
818
+ class UnionMember0 < Revox::Internal::Type::BaseModel
819
+ attr_accessor name: Revox::Models::CallSearchResponse::Call::Assistant::LlmModel::UnionMember0::name_
820
+
821
+ attr_accessor type: :"dedicated-instance"
822
+
823
+ def initialize: (
824
+ name: Revox::Models::CallSearchResponse::Call::Assistant::LlmModel::UnionMember0::name_,
825
+ ?type: :"dedicated-instance"
826
+ ) -> void
827
+
828
+ def to_hash: -> {
829
+ name: Revox::Models::CallSearchResponse::Call::Assistant::LlmModel::UnionMember0::name_,
830
+ type: :"dedicated-instance"
831
+ }
832
+
833
+ type name_ = :"gpt-4.1" | :"ministral-3-8b-instruct"
834
+
835
+ module Name
836
+ extend Revox::Internal::Type::Enum
837
+
838
+ GPT_4_1: :"gpt-4.1"
839
+ MINISTRAL_3_8B_INSTRUCT: :"ministral-3-8b-instruct"
840
+
841
+ def self?.values: -> ::Array[Revox::Models::CallSearchResponse::Call::Assistant::LlmModel::UnionMember0::name_]
842
+ end
843
+ end
844
+
845
+ type union_member1 =
846
+ {
847
+ openrouter_model_id: String,
848
+ openrouter_provider: String,
849
+ type: :openrouter
850
+ }
851
+
852
+ class UnionMember1 < Revox::Internal::Type::BaseModel
853
+ attr_accessor openrouter_model_id: String
854
+
855
+ attr_accessor openrouter_provider: String
856
+
857
+ attr_accessor type: :openrouter
858
+
859
+ def initialize: (
860
+ openrouter_model_id: String,
861
+ openrouter_provider: String,
862
+ ?type: :openrouter
863
+ ) -> void
864
+
865
+ def to_hash: -> {
866
+ openrouter_model_id: String,
867
+ openrouter_provider: String,
868
+ type: :openrouter
869
+ }
870
+ end
871
+
872
+ type union_member2 =
873
+ {
874
+ api_key: String,
875
+ api_url: String,
876
+ model_name: String,
877
+ type: :custom
878
+ }
879
+
880
+ class UnionMember2 < Revox::Internal::Type::BaseModel
881
+ attr_accessor api_key: String
882
+
883
+ attr_accessor api_url: String
884
+
885
+ attr_accessor model_name: String
886
+
887
+ attr_accessor type: :custom
888
+
889
+ def initialize: (
890
+ api_key: String,
891
+ api_url: String,
892
+ model_name: String,
893
+ ?type: :custom
894
+ ) -> void
895
+
896
+ def to_hash: -> {
897
+ api_key: String,
898
+ api_url: String,
899
+ model_name: String,
900
+ type: :custom
901
+ }
902
+ end
903
+
904
+ type union_member3 =
905
+ {
906
+ provider: Revox::Models::CallSearchResponse::Call::Assistant::LlmModel::UnionMember3::provider,
907
+ realtime_model_id: String,
908
+ type: :realtime,
909
+ realtime_voice_id: String
910
+ }
911
+
912
+ class UnionMember3 < Revox::Internal::Type::BaseModel
913
+ attr_accessor provider: Revox::Models::CallSearchResponse::Call::Assistant::LlmModel::UnionMember3::provider
914
+
915
+ attr_accessor realtime_model_id: String
916
+
917
+ attr_accessor type: :realtime
918
+
919
+ attr_reader realtime_voice_id: String?
920
+
921
+ def realtime_voice_id=: (String) -> String
922
+
923
+ def initialize: (
924
+ provider: Revox::Models::CallSearchResponse::Call::Assistant::LlmModel::UnionMember3::provider,
925
+ realtime_model_id: String,
926
+ ?realtime_voice_id: String,
927
+ ?type: :realtime
928
+ ) -> void
929
+
930
+ def to_hash: -> {
931
+ provider: Revox::Models::CallSearchResponse::Call::Assistant::LlmModel::UnionMember3::provider,
932
+ realtime_model_id: String,
933
+ type: :realtime,
934
+ realtime_voice_id: String
935
+ }
936
+
937
+ type provider = :openai | :google
938
+
939
+ module Provider
940
+ extend Revox::Internal::Type::Enum
941
+
942
+ OPENAI: :openai
943
+ GOOGLE: :google
944
+
945
+ def self?.values: -> ::Array[Revox::Models::CallSearchResponse::Call::Assistant::LlmModel::UnionMember3::provider]
946
+ end
947
+ end
948
+
949
+ def self?.variants: -> ::Array[Revox::Models::CallSearchResponse::Call::Assistant::llm_model]
950
+ end
951
+
952
+ type position = { x: Float, y_: Float }
953
+
954
+ class Position < Revox::Internal::Type::BaseModel
955
+ attr_accessor x: Float
956
+
957
+ attr_accessor y_: Float
958
+
959
+ def initialize: (x: Float, y_: Float) -> void
960
+
961
+ def to_hash: -> { x: Float, y_: Float }
962
+ end
963
+
964
+ type prompt_flow =
965
+ {
966
+ edges: ::Array[Revox::Models::CallSearchResponse::Call::Assistant::PromptFlow::Edge],
967
+ nodes: ::Array[Revox::Models::CallSearchResponse::Call::Assistant::PromptFlow::Node]
968
+ }
969
+
970
+ class PromptFlow < Revox::Internal::Type::BaseModel
971
+ attr_accessor edges: ::Array[Revox::Models::CallSearchResponse::Call::Assistant::PromptFlow::Edge]
972
+
973
+ attr_accessor nodes: ::Array[Revox::Models::CallSearchResponse::Call::Assistant::PromptFlow::Node]
974
+
975
+ def initialize: (
976
+ edges: ::Array[Revox::Models::CallSearchResponse::Call::Assistant::PromptFlow::Edge],
977
+ nodes: ::Array[Revox::Models::CallSearchResponse::Call::Assistant::PromptFlow::Node]
978
+ ) -> void
979
+
980
+ def to_hash: -> {
981
+ edges: ::Array[Revox::Models::CallSearchResponse::Call::Assistant::PromptFlow::Edge],
982
+ nodes: ::Array[Revox::Models::CallSearchResponse::Call::Assistant::PromptFlow::Node]
983
+ }
984
+
985
+ type edge = { id: String, source: String, target: String }
986
+
987
+ class Edge < Revox::Internal::Type::BaseModel
988
+ attr_accessor id: String
989
+
990
+ attr_accessor source: String
991
+
992
+ attr_accessor target: String
993
+
994
+ def initialize: (
995
+ id: String,
996
+ source: String,
997
+ target: String
998
+ ) -> void
999
+
1000
+ def to_hash: -> { id: String, source: String, target: String }
1001
+ end
1002
+
1003
+ type node =
1004
+ {
1005
+ id: String,
1006
+ data: Revox::Models::CallSearchResponse::Call::Assistant::PromptFlow::Node::Data,
1007
+ position: Revox::Models::CallSearchResponse::Call::Assistant::PromptFlow::Node::Position,
1008
+ type: :promptBlock
1009
+ }
1010
+
1011
+ class Node < Revox::Internal::Type::BaseModel
1012
+ attr_accessor id: String
1013
+
1014
+ attr_accessor data: Revox::Models::CallSearchResponse::Call::Assistant::PromptFlow::Node::Data
1015
+
1016
+ attr_accessor position: Revox::Models::CallSearchResponse::Call::Assistant::PromptFlow::Node::Position
1017
+
1018
+ attr_accessor type: :promptBlock
1019
+
1020
+ def initialize: (
1021
+ id: String,
1022
+ data: Revox::Models::CallSearchResponse::Call::Assistant::PromptFlow::Node::Data,
1023
+ position: Revox::Models::CallSearchResponse::Call::Assistant::PromptFlow::Node::Position,
1024
+ ?type: :promptBlock
1025
+ ) -> void
1026
+
1027
+ def to_hash: -> {
1028
+ id: String,
1029
+ data: Revox::Models::CallSearchResponse::Call::Assistant::PromptFlow::Node::Data,
1030
+ position: Revox::Models::CallSearchResponse::Call::Assistant::PromptFlow::Node::Position,
1031
+ type: :promptBlock
1032
+ }
1033
+
1034
+ type data = { body: String, title: String }
1035
+
1036
+ class Data < Revox::Internal::Type::BaseModel
1037
+ attr_accessor body: String
1038
+
1039
+ attr_accessor title: String
1040
+
1041
+ def initialize: (body: String, title: String) -> void
1042
+
1043
+ def to_hash: -> { body: String, title: String }
1044
+ end
1045
+
1046
+ type position = { x: Float, y_: Float }
1047
+
1048
+ class Position < Revox::Internal::Type::BaseModel
1049
+ attr_accessor x: Float
1050
+
1051
+ attr_accessor y_: Float
1052
+
1053
+ def initialize: (x: Float, y_: Float) -> void
1054
+
1055
+ def to_hash: -> { x: Float, y_: Float }
1056
+ end
1057
+ end
1058
+ end
1059
+
1060
+ type slack =
1061
+ {
1062
+ channels: ::Array[Revox::Models::CallSearchResponse::Call::Assistant::Slack::Channel],
1063
+ connection_id: String,
1064
+ outcomes: ::Array[Revox::Models::CallSearchResponse::Call::Assistant::Slack::outcome],
1065
+ template: String?
1066
+ }
1067
+
1068
+ class Slack < Revox::Internal::Type::BaseModel
1069
+ attr_accessor channels: ::Array[Revox::Models::CallSearchResponse::Call::Assistant::Slack::Channel]
1070
+
1071
+ attr_accessor connection_id: String
1072
+
1073
+ attr_accessor outcomes: ::Array[Revox::Models::CallSearchResponse::Call::Assistant::Slack::outcome]
1074
+
1075
+ attr_accessor template: String?
1076
+
1077
+ def initialize: (
1078
+ channels: ::Array[Revox::Models::CallSearchResponse::Call::Assistant::Slack::Channel],
1079
+ connection_id: String,
1080
+ outcomes: ::Array[Revox::Models::CallSearchResponse::Call::Assistant::Slack::outcome],
1081
+ ?template: String?
1082
+ ) -> void
1083
+
1084
+ def to_hash: -> {
1085
+ channels: ::Array[Revox::Models::CallSearchResponse::Call::Assistant::Slack::Channel],
1086
+ connection_id: String,
1087
+ outcomes: ::Array[Revox::Models::CallSearchResponse::Call::Assistant::Slack::outcome],
1088
+ template: String?
1089
+ }
1090
+
1091
+ type channel = { id: String, name: String? }
1092
+
1093
+ class Channel < Revox::Internal::Type::BaseModel
1094
+ attr_accessor id: String
1095
+
1096
+ attr_accessor name: String?
1097
+
1098
+ def initialize: (id: String, ?name: String?) -> void
1099
+
1100
+ def to_hash: -> { id: String, name: String? }
1101
+ end
1102
+
1103
+ type outcome =
1104
+ :not_interested
1105
+ | :interested
1106
+ | :completed
1107
+ | :requested_callback_later
1108
+ | :none
1109
+
1110
+ module Outcome
1111
+ extend Revox::Internal::Type::Enum
1112
+
1113
+ NOT_INTERESTED: :not_interested
1114
+ INTERESTED: :interested
1115
+ COMPLETED: :completed
1116
+ REQUESTED_CALLBACK_LATER: :requested_callback_later
1117
+ NONE: :none
1118
+
1119
+ def self?.values: -> ::Array[Revox::Models::CallSearchResponse::Call::Assistant::Slack::outcome]
1120
+ end
1121
+ end
1122
+
1123
+ type structured_output_config =
1124
+ {
1125
+ name: String,
1126
+ required: bool,
1127
+ type: Revox::Models::CallSearchResponse::Call::Assistant::StructuredOutputConfig::type_,
1128
+ description: String,
1129
+ enum_options: ::Array[String]
1130
+ }
1131
+
1132
+ class StructuredOutputConfig < Revox::Internal::Type::BaseModel
1133
+ attr_accessor name: String
1134
+
1135
+ attr_accessor required: bool
1136
+
1137
+ attr_accessor type: Revox::Models::CallSearchResponse::Call::Assistant::StructuredOutputConfig::type_
1138
+
1139
+ attr_reader description: String?
1140
+
1141
+ def description=: (String) -> String
1142
+
1143
+ attr_reader enum_options: ::Array[String]?
1144
+
1145
+ def enum_options=: (::Array[String]) -> ::Array[String]
1146
+
1147
+ def initialize: (
1148
+ name: String,
1149
+ required: bool,
1150
+ type: Revox::Models::CallSearchResponse::Call::Assistant::StructuredOutputConfig::type_,
1151
+ ?description: String,
1152
+ ?enum_options: ::Array[String]
1153
+ ) -> void
1154
+
1155
+ def to_hash: -> {
1156
+ name: String,
1157
+ required: bool,
1158
+ type: Revox::Models::CallSearchResponse::Call::Assistant::StructuredOutputConfig::type_,
1159
+ description: String,
1160
+ enum_options: ::Array[String]
1161
+ }
1162
+
1163
+ type type_ =
1164
+ :string | :number | :boolean | :enum | :date | :datetime
1165
+
1166
+ module Type
1167
+ extend Revox::Internal::Type::Enum
1168
+
1169
+ STRING: :string
1170
+ NUMBER: :number
1171
+ BOOLEAN: :boolean
1172
+ ENUM: :enum
1173
+ DATE: :date
1174
+ DATETIME: :datetime
1175
+
1176
+ def self?.values: -> ::Array[Revox::Models::CallSearchResponse::Call::Assistant::StructuredOutputConfig::type_]
1177
+ end
1178
+ end
1179
+
1180
+ type stt_context =
1181
+ {
1182
+ general: ::Array[Revox::Models::CallSearchResponse::Call::Assistant::SttContext::General],
1183
+ terms: ::Array[String]
1184
+ }
1185
+
1186
+ class SttContext < Revox::Internal::Type::BaseModel
1187
+ attr_accessor general: ::Array[Revox::Models::CallSearchResponse::Call::Assistant::SttContext::General]
1188
+
1189
+ attr_accessor terms: ::Array[String]
1190
+
1191
+ def initialize: (
1192
+ general: ::Array[Revox::Models::CallSearchResponse::Call::Assistant::SttContext::General],
1193
+ terms: ::Array[String]
1194
+ ) -> void
1195
+
1196
+ def to_hash: -> {
1197
+ general: ::Array[Revox::Models::CallSearchResponse::Call::Assistant::SttContext::General],
1198
+ terms: ::Array[String]
1199
+ }
1200
+
1201
+ type general = { key: String, value: String }
1202
+
1203
+ class General < Revox::Internal::Type::BaseModel
1204
+ attr_accessor key: String
1205
+
1206
+ attr_accessor value: String
1207
+
1208
+ def initialize: (key: String, value: String) -> void
1209
+
1210
+ def to_hash: -> { key: String, value: String }
1211
+ end
1212
+ end
1213
+
1214
+ type stt_model = :"stt-rt-v4" | :"stt-rt-v5"
1215
+
1216
+ module SttModel
1217
+ extend Revox::Internal::Type::Enum
1218
+
1219
+ STT_RT_V4: :"stt-rt-v4"
1220
+ STT_RT_V5: :"stt-rt-v5"
1221
+
1222
+ def self?.values: -> ::Array[Revox::Models::CallSearchResponse::Call::Assistant::stt_model]
1223
+ end
1224
+
1225
+ type thinking_sound =
1226
+ :"city-ambience.ogg"
1227
+ | :"forest-ambience.ogg"
1228
+ | :"office-ambience.ogg"
1229
+ | :"crowded-room.ogg"
1230
+ | :"keyboard-typing.ogg"
1231
+ | :"keyboard-typing2.ogg"
1232
+ | :"hold_music.ogg"
1233
+
1234
+ module ThinkingSound
1235
+ extend Revox::Internal::Type::Enum
1236
+
1237
+ CITY_AMBIENCE_OGG: :"city-ambience.ogg"
1238
+ FOREST_AMBIENCE_OGG: :"forest-ambience.ogg"
1239
+ OFFICE_AMBIENCE_OGG: :"office-ambience.ogg"
1240
+ CROWDED_ROOM_OGG: :"crowded-room.ogg"
1241
+ KEYBOARD_TYPING_OGG: :"keyboard-typing.ogg"
1242
+ KEYBOARD_TYPING2_OGG: :"keyboard-typing2.ogg"
1243
+ HOLD_MUSIC_OGG: :"hold_music.ogg"
1244
+
1245
+ def self?.values: -> ::Array[Revox::Models::CallSearchResponse::Call::Assistant::thinking_sound]
1246
+ end
1247
+
1248
+ type transfer_destination = { label: String, phone_number: String }
1249
+
1250
+ class TransferDestination < Revox::Internal::Type::BaseModel
1251
+ attr_accessor label: String
1252
+
1253
+ attr_accessor phone_number: String
1254
+
1255
+ def initialize: (label: String, phone_number: String) -> void
1256
+
1257
+ def to_hash: -> { label: String, phone_number: String }
1258
+ end
1259
+
1260
+ type type_ = :standalone | :"multi-step" | :"sub-assistant"
1261
+
1262
+ module Type
1263
+ extend Revox::Internal::Type::Enum
1264
+
1265
+ STANDALONE: :standalone
1266
+ MULTI_STEP: :"multi-step"
1267
+ SUB_ASSISTANT: :"sub-assistant"
1268
+
1269
+ def self?.values: -> ::Array[Revox::Models::CallSearchResponse::Call::Assistant::type_]
1270
+ end
1271
+
1272
+ type voice =
1273
+ {
1274
+ id: String,
1275
+ provider: Revox::Models::CallSearchResponse::Call::Assistant::Voice::provider,
1276
+ model: Revox::Models::CallSearchResponse::Call::Assistant::Voice::model,
1277
+ speed: Float,
1278
+ volume: Float
1279
+ }
1280
+
1281
+ class Voice < Revox::Internal::Type::BaseModel
1282
+ attr_accessor id: String
1283
+
1284
+ attr_accessor provider: Revox::Models::CallSearchResponse::Call::Assistant::Voice::provider
1285
+
1286
+ attr_reader model: Revox::Models::CallSearchResponse::Call::Assistant::Voice::model?
1287
+
1288
+ def model=: (
1289
+ Revox::Models::CallSearchResponse::Call::Assistant::Voice::model
1290
+ ) -> Revox::Models::CallSearchResponse::Call::Assistant::Voice::model
1291
+
1292
+ attr_reader speed: Float?
1293
+
1294
+ def speed=: (Float) -> Float
1295
+
1296
+ attr_reader volume: Float?
1297
+
1298
+ def volume=: (Float) -> Float
1299
+
1300
+ def initialize: (
1301
+ id: String,
1302
+ provider: Revox::Models::CallSearchResponse::Call::Assistant::Voice::provider,
1303
+ ?model: Revox::Models::CallSearchResponse::Call::Assistant::Voice::model,
1304
+ ?speed: Float,
1305
+ ?volume: Float
1306
+ ) -> void
1307
+
1308
+ def to_hash: -> {
1309
+ id: String,
1310
+ provider: Revox::Models::CallSearchResponse::Call::Assistant::Voice::provider,
1311
+ model: Revox::Models::CallSearchResponse::Call::Assistant::Voice::model,
1312
+ speed: Float,
1313
+ volume: Float
1314
+ }
1315
+
1316
+ type provider = :cartesia | :elevenlabs | :gradium
1317
+
1318
+ module Provider
1319
+ extend Revox::Internal::Type::Enum
1320
+
1321
+ CARTESIA: :cartesia
1322
+ ELEVENLABS: :elevenlabs
1323
+ GRADIUM: :gradium
1324
+
1325
+ def self?.values: -> ::Array[Revox::Models::CallSearchResponse::Call::Assistant::Voice::provider]
1326
+ end
1327
+
1328
+ type model = :"sonic-3" | :"sonic-3.5"
1329
+
1330
+ module Model
1331
+ extend Revox::Internal::Type::Enum
1332
+
1333
+ SONIC_3: :"sonic-3"
1334
+ SONIC_3_5: :"sonic-3.5"
1335
+
1336
+ def self?.values: -> ::Array[Revox::Models::CallSearchResponse::Call::Assistant::Voice::model]
1337
+ end
1338
+ end
1339
+
1340
+ type zoho =
1341
+ {
1342
+ connection_id: String,
1343
+ field_mapping: ::Array[Revox::Models::CallSearchResponse::Call::Assistant::Zoho::FieldMapping],
1344
+ log_call_activity: bool,
1345
+ module_: String,
1346
+ outcomes: ::Array[Revox::Models::CallSearchResponse::Call::Assistant::Zoho::outcome],
1347
+ template: String?
1348
+ }
1349
+
1350
+ class Zoho < Revox::Internal::Type::BaseModel
1351
+ attr_accessor connection_id: String
1352
+
1353
+ attr_accessor field_mapping: ::Array[Revox::Models::CallSearchResponse::Call::Assistant::Zoho::FieldMapping]
1354
+
1355
+ attr_accessor log_call_activity: bool
1356
+
1357
+ attr_accessor module_: String
1358
+
1359
+ attr_accessor outcomes: ::Array[Revox::Models::CallSearchResponse::Call::Assistant::Zoho::outcome]
1360
+
1361
+ attr_accessor template: String?
1362
+
1363
+ def initialize: (
1364
+ connection_id: String,
1365
+ field_mapping: ::Array[Revox::Models::CallSearchResponse::Call::Assistant::Zoho::FieldMapping],
1366
+ log_call_activity: bool,
1367
+ module_: String,
1368
+ outcomes: ::Array[Revox::Models::CallSearchResponse::Call::Assistant::Zoho::outcome],
1369
+ ?template: String?
1370
+ ) -> void
1371
+
1372
+ def to_hash: -> {
1373
+ connection_id: String,
1374
+ field_mapping: ::Array[Revox::Models::CallSearchResponse::Call::Assistant::Zoho::FieldMapping],
1375
+ log_call_activity: bool,
1376
+ module_: String,
1377
+ outcomes: ::Array[Revox::Models::CallSearchResponse::Call::Assistant::Zoho::outcome],
1378
+ template: String?
1379
+ }
1380
+
1381
+ type field_mapping = { source: String, zoho_field: String }
1382
+
1383
+ class FieldMapping < Revox::Internal::Type::BaseModel
1384
+ attr_accessor source: String
1385
+
1386
+ attr_accessor zoho_field: String
1387
+
1388
+ def initialize: (source: String, zoho_field: String) -> void
1389
+
1390
+ def to_hash: -> { source: String, zoho_field: String }
1391
+ end
1392
+
1393
+ type outcome =
1394
+ :not_interested
1395
+ | :interested
1396
+ | :completed
1397
+ | :requested_callback_later
1398
+ | :none
1399
+
1400
+ module Outcome
1401
+ extend Revox::Internal::Type::Enum
1402
+
1403
+ NOT_INTERESTED: :not_interested
1404
+ INTERESTED: :interested
1405
+ COMPLETED: :completed
1406
+ REQUESTED_CALLBACK_LATER: :requested_callback_later
1407
+ NONE: :none
1408
+
1409
+ def self?.values: -> ::Array[Revox::Models::CallSearchResponse::Call::Assistant::Zoho::outcome]
1410
+ end
1411
+ end
1412
+
1413
+ type created_by =
1414
+ {
1415
+ id: String,
1416
+ email: String,
1417
+ first_name: String?,
1418
+ last_name: String?
1419
+ }
1420
+
1421
+ class CreatedBy < Revox::Internal::Type::BaseModel
1422
+ attr_accessor id: String
1423
+
1424
+ attr_accessor email: String
1425
+
1426
+ attr_accessor first_name: String?
1427
+
1428
+ attr_accessor last_name: String?
1429
+
1430
+ def initialize: (
1431
+ id: String,
1432
+ email: String,
1433
+ first_name: String?,
1434
+ last_name: String?
1435
+ ) -> void
1436
+
1437
+ def to_hash: -> {
1438
+ id: String,
1439
+ email: String,
1440
+ first_name: String?,
1441
+ last_name: String?
1442
+ }
1443
+ end
1444
+
1445
+ type faq_item =
1446
+ {
1447
+ answer: String,
1448
+ question: String,
1449
+ id: String,
1450
+ needs_human_answer: bool,
1451
+ source: Revox::Models::CallSearchResponse::Call::Assistant::FaqItem::source
1452
+ }
1453
+
1454
+ class FaqItem < Revox::Internal::Type::BaseModel
1455
+ attr_accessor answer: String
1456
+
1457
+ attr_accessor question: String
1458
+
1459
+ attr_reader id: String?
1460
+
1461
+ def id=: (String) -> String
1462
+
1463
+ attr_reader needs_human_answer: bool?
1464
+
1465
+ def needs_human_answer=: (bool) -> bool
1466
+
1467
+ attr_reader source: Revox::Models::CallSearchResponse::Call::Assistant::FaqItem::source?
1468
+
1469
+ def source=: (
1470
+ Revox::Models::CallSearchResponse::Call::Assistant::FaqItem::source
1471
+ ) -> Revox::Models::CallSearchResponse::Call::Assistant::FaqItem::source
1472
+
1473
+ def initialize: (
1474
+ answer: String,
1475
+ question: String,
1476
+ ?id: String,
1477
+ ?needs_human_answer: bool,
1478
+ ?source: Revox::Models::CallSearchResponse::Call::Assistant::FaqItem::source
1479
+ ) -> void
1480
+
1481
+ def to_hash: -> {
1482
+ answer: String,
1483
+ question: String,
1484
+ id: String,
1485
+ needs_human_answer: bool,
1486
+ source: Revox::Models::CallSearchResponse::Call::Assistant::FaqItem::source
1487
+ }
1488
+
1489
+ type source = :human | :ai
1490
+
1491
+ module Source
1492
+ extend Revox::Internal::Type::Enum
1493
+
1494
+ HUMAN: :human
1495
+ AI: :ai
1496
+
1497
+ def self?.values: -> ::Array[Revox::Models::CallSearchResponse::Call::Assistant::FaqItem::source]
1498
+ end
1499
+ end
1500
+ end
1501
+
1502
+ type call_attempt =
1503
+ {
1504
+ id: String,
1505
+ answered_at: top,
1506
+ dial_error: Revox::Models::CallSearchResponse::Call::CallAttempt::dial_error?,
1507
+ ended_at: top,
1508
+ handled_by_ai: bool,
1509
+ handled_by_human: bool,
1510
+ handled_by_user: Revox::Models::CallSearchResponse::Call::CallAttempt::HandledByUser?,
1511
+ phone_number: String,
1512
+ recording_url: String?,
1513
+ result: Revox::Models::CallSearchResponse::Call::CallAttempt::result?,
1514
+ started_at: top,
1515
+ status: Revox::Models::CallSearchResponse::Call::CallAttempt::status,
1516
+ assistants_used: ::Array[String]?,
1517
+ email_log: ::Array[Revox::Models::CallSearchResponse::Call::CallAttempt::EmailLog]?,
1518
+ end_reason: Revox::Models::CallSearchResponse::Call::CallAttempt::end_reason?,
1519
+ ended_by: Revox::Models::CallSearchResponse::Call::CallAttempt::ended_by?,
1520
+ post_call_transcript: ::Array[Revox::Models::CallSearchResponse::Call::CallAttempt::PostCallTranscript]?,
1521
+ sms_log: ::Array[Revox::Models::CallSearchResponse::Call::CallAttempt::SMSLog]?,
1522
+ speech_events: ::Array[Revox::Models::CallSearchResponse::Call::CallAttempt::SpeechEvent]?,
1523
+ structured_output: ::Hash[Symbol, top]?,
1524
+ transcript: ::Array[Revox::Models::CallSearchResponse::Call::CallAttempt::Transcript]?
1525
+ }
1526
+
1527
+ class CallAttempt < Revox::Internal::Type::BaseModel
1528
+ attr_accessor id: String
1529
+
1530
+ attr_accessor answered_at: top
1531
+
1532
+ attr_accessor dial_error: Revox::Models::CallSearchResponse::Call::CallAttempt::dial_error?
1533
+
1534
+ attr_accessor ended_at: top
1535
+
1536
+ attr_accessor handled_by_ai: bool
1537
+
1538
+ attr_accessor handled_by_human: bool
1539
+
1540
+ attr_accessor handled_by_user: Revox::Models::CallSearchResponse::Call::CallAttempt::HandledByUser?
1541
+
1542
+ attr_accessor phone_number: String
1543
+
1544
+ attr_accessor recording_url: String?
1545
+
1546
+ attr_accessor result: Revox::Models::CallSearchResponse::Call::CallAttempt::result?
1547
+
1548
+ attr_accessor started_at: top
1549
+
1550
+ attr_accessor status: Revox::Models::CallSearchResponse::Call::CallAttempt::status
1551
+
1552
+ attr_accessor assistants_used: ::Array[String]?
1553
+
1554
+ attr_accessor email_log: ::Array[Revox::Models::CallSearchResponse::Call::CallAttempt::EmailLog]?
1555
+
1556
+ attr_accessor end_reason: Revox::Models::CallSearchResponse::Call::CallAttempt::end_reason?
1557
+
1558
+ attr_accessor ended_by: Revox::Models::CallSearchResponse::Call::CallAttempt::ended_by?
1559
+
1560
+ attr_accessor post_call_transcript: ::Array[Revox::Models::CallSearchResponse::Call::CallAttempt::PostCallTranscript]?
1561
+
1562
+ attr_accessor sms_log: ::Array[Revox::Models::CallSearchResponse::Call::CallAttempt::SMSLog]?
1563
+
1564
+ attr_accessor speech_events: ::Array[Revox::Models::CallSearchResponse::Call::CallAttempt::SpeechEvent]?
1565
+
1566
+ attr_accessor structured_output: ::Hash[Symbol, top]?
1567
+
1568
+ attr_accessor transcript: ::Array[Revox::Models::CallSearchResponse::Call::CallAttempt::Transcript]?
1569
+
1570
+ def initialize: (
1571
+ id: String,
1572
+ answered_at: top,
1573
+ dial_error: Revox::Models::CallSearchResponse::Call::CallAttempt::dial_error?,
1574
+ ended_at: top,
1575
+ handled_by_ai: bool,
1576
+ handled_by_human: bool,
1577
+ handled_by_user: Revox::Models::CallSearchResponse::Call::CallAttempt::HandledByUser?,
1578
+ phone_number: String,
1579
+ recording_url: String?,
1580
+ result: Revox::Models::CallSearchResponse::Call::CallAttempt::result?,
1581
+ started_at: top,
1582
+ status: Revox::Models::CallSearchResponse::Call::CallAttempt::status,
1583
+ ?assistants_used: ::Array[String]?,
1584
+ ?email_log: ::Array[Revox::Models::CallSearchResponse::Call::CallAttempt::EmailLog]?,
1585
+ ?end_reason: Revox::Models::CallSearchResponse::Call::CallAttempt::end_reason?,
1586
+ ?ended_by: Revox::Models::CallSearchResponse::Call::CallAttempt::ended_by?,
1587
+ ?post_call_transcript: ::Array[Revox::Models::CallSearchResponse::Call::CallAttempt::PostCallTranscript]?,
1588
+ ?sms_log: ::Array[Revox::Models::CallSearchResponse::Call::CallAttempt::SMSLog]?,
1589
+ ?speech_events: ::Array[Revox::Models::CallSearchResponse::Call::CallAttempt::SpeechEvent]?,
1590
+ ?structured_output: ::Hash[Symbol, top]?,
1591
+ ?transcript: ::Array[Revox::Models::CallSearchResponse::Call::CallAttempt::Transcript]?
1592
+ ) -> void
1593
+
1594
+ def to_hash: -> {
1595
+ id: String,
1596
+ answered_at: top,
1597
+ dial_error: Revox::Models::CallSearchResponse::Call::CallAttempt::dial_error?,
1598
+ ended_at: top,
1599
+ handled_by_ai: bool,
1600
+ handled_by_human: bool,
1601
+ handled_by_user: Revox::Models::CallSearchResponse::Call::CallAttempt::HandledByUser?,
1602
+ phone_number: String,
1603
+ recording_url: String?,
1604
+ result: Revox::Models::CallSearchResponse::Call::CallAttempt::result?,
1605
+ started_at: top,
1606
+ status: Revox::Models::CallSearchResponse::Call::CallAttempt::status,
1607
+ assistants_used: ::Array[String]?,
1608
+ email_log: ::Array[Revox::Models::CallSearchResponse::Call::CallAttempt::EmailLog]?,
1609
+ end_reason: Revox::Models::CallSearchResponse::Call::CallAttempt::end_reason?,
1610
+ ended_by: Revox::Models::CallSearchResponse::Call::CallAttempt::ended_by?,
1611
+ post_call_transcript: ::Array[Revox::Models::CallSearchResponse::Call::CallAttempt::PostCallTranscript]?,
1612
+ sms_log: ::Array[Revox::Models::CallSearchResponse::Call::CallAttempt::SMSLog]?,
1613
+ speech_events: ::Array[Revox::Models::CallSearchResponse::Call::CallAttempt::SpeechEvent]?,
1614
+ structured_output: ::Hash[Symbol, top]?,
1615
+ transcript: ::Array[Revox::Models::CallSearchResponse::Call::CallAttempt::Transcript]?
1616
+ }
1617
+
1618
+ type dial_error =
1619
+ :number_non_attributed
1620
+ | :too_many_calls
1621
+ | :busy
1622
+ | :temporarily_unavailable
1623
+ | :no_answer
1624
+ | :no_international_permission
1625
+ | :precondition_failed
1626
+ | :non_classified_error
1627
+
1628
+ module DialError
1629
+ extend Revox::Internal::Type::Enum
1630
+
1631
+ NUMBER_NON_ATTRIBUTED: :number_non_attributed
1632
+ TOO_MANY_CALLS: :too_many_calls
1633
+ BUSY: :busy
1634
+ TEMPORARILY_UNAVAILABLE: :temporarily_unavailable
1635
+ NO_ANSWER: :no_answer
1636
+ NO_INTERNATIONAL_PERMISSION: :no_international_permission
1637
+ PRECONDITION_FAILED: :precondition_failed
1638
+ NON_CLASSIFIED_ERROR: :non_classified_error
1639
+
1640
+ def self?.values: -> ::Array[Revox::Models::CallSearchResponse::Call::CallAttempt::dial_error]
1641
+ end
1642
+
1643
+ type handled_by_user =
1644
+ {
1645
+ id: String,
1646
+ email: String,
1647
+ first_name: String?,
1648
+ last_name: String?
1649
+ }
1650
+
1651
+ class HandledByUser < Revox::Internal::Type::BaseModel
1652
+ attr_accessor id: String
1653
+
1654
+ attr_accessor email: String
1655
+
1656
+ attr_accessor first_name: String?
1657
+
1658
+ attr_accessor last_name: String?
1659
+
1660
+ def initialize: (
1661
+ id: String,
1662
+ email: String,
1663
+ first_name: String?,
1664
+ last_name: String?
1665
+ ) -> void
1666
+
1667
+ def to_hash: -> {
1668
+ id: String,
1669
+ email: String,
1670
+ first_name: String?,
1671
+ last_name: String?
1672
+ }
1673
+ end
1674
+
1675
+ type result =
1676
+ :IVR | :voicemail | :human | :unknown | :"ios-screening-filter"
1677
+
1678
+ module Result
1679
+ extend Revox::Internal::Type::Enum
1680
+
1681
+ IVR: :IVR
1682
+ VOICEMAIL: :voicemail
1683
+ HUMAN: :human
1684
+ UNKNOWN: :unknown
1685
+ IOS_SCREENING_FILTER: :"ios-screening-filter"
1686
+
1687
+ def self?.values: -> ::Array[Revox::Models::CallSearchResponse::Call::CallAttempt::result]
1688
+ end
1689
+
1690
+ type status = :queued | :ringing | :ongoing | :completed | :error
1691
+
1692
+ module Status
1693
+ extend Revox::Internal::Type::Enum
1694
+
1695
+ QUEUED: :queued
1696
+ RINGING: :ringing
1697
+ ONGOING: :ongoing
1698
+ COMPLETED: :completed
1699
+ ERROR: :error
1700
+
1701
+ def self?.values: -> ::Array[Revox::Models::CallSearchResponse::Call::CallAttempt::status]
1702
+ end
1703
+
1704
+ type email_log =
1705
+ {
1706
+ id: String,
1707
+ created_at: top,
1708
+ from_address: String,
1709
+ resend_message_id: String?,
1710
+ subject: String,
1711
+ to_emails: ::Array[String]
1712
+ }
1713
+
1714
+ class EmailLog < Revox::Internal::Type::BaseModel
1715
+ attr_accessor id: String
1716
+
1717
+ attr_accessor created_at: top
1718
+
1719
+ attr_accessor from_address: String
1720
+
1721
+ attr_accessor resend_message_id: String?
1722
+
1723
+ attr_accessor subject: String
1724
+
1725
+ attr_accessor to_emails: ::Array[String]
1726
+
1727
+ def initialize: (
1728
+ id: String,
1729
+ created_at: top,
1730
+ from_address: String,
1731
+ resend_message_id: String?,
1732
+ subject: String,
1733
+ to_emails: ::Array[String]
1734
+ ) -> void
1735
+
1736
+ def to_hash: -> {
1737
+ id: String,
1738
+ created_at: top,
1739
+ from_address: String,
1740
+ resend_message_id: String?,
1741
+ subject: String,
1742
+ to_emails: ::Array[String]
1743
+ }
1744
+ end
1745
+
1746
+ type end_reason =
1747
+ :client_initiated
1748
+ | :connection_timeout
1749
+ | :human_takeover
1750
+ | :ivr_no_navigate
1751
+ | :max_duration
1752
+ | :participant_removed
1753
+ | :tool_end_call
1754
+ | :transfer
1755
+ | :user_inactive
1756
+ | :user_rejected
1757
+ | :user_unavailable
1758
+ | :voicemail
1759
+ | :speed_dial_abandoned
1760
+ | :speed_dial_operator_missed
1761
+ | :speed_dial_timeout
1762
+ | :speed_dial_hangup
1763
+
1764
+ module EndReason
1765
+ extend Revox::Internal::Type::Enum
1766
+
1767
+ CLIENT_INITIATED: :client_initiated
1768
+ CONNECTION_TIMEOUT: :connection_timeout
1769
+ HUMAN_TAKEOVER: :human_takeover
1770
+ IVR_NO_NAVIGATE: :ivr_no_navigate
1771
+ MAX_DURATION: :max_duration
1772
+ PARTICIPANT_REMOVED: :participant_removed
1773
+ TOOL_END_CALL: :tool_end_call
1774
+ TRANSFER: :transfer
1775
+ USER_INACTIVE: :user_inactive
1776
+ USER_REJECTED: :user_rejected
1777
+ USER_UNAVAILABLE: :user_unavailable
1778
+ VOICEMAIL: :voicemail
1779
+ SPEED_DIAL_ABANDONED: :speed_dial_abandoned
1780
+ SPEED_DIAL_OPERATOR_MISSED: :speed_dial_operator_missed
1781
+ SPEED_DIAL_TIMEOUT: :speed_dial_timeout
1782
+ SPEED_DIAL_HANGUP: :speed_dial_hangup
1783
+
1784
+ def self?.values: -> ::Array[Revox::Models::CallSearchResponse::Call::CallAttempt::end_reason]
1785
+ end
1786
+
1787
+ type ended_by = :agent | :user | :system
1788
+
1789
+ module EndedBy
1790
+ extend Revox::Internal::Type::Enum
1791
+
1792
+ AGENT: :agent
1793
+ USER: :user
1794
+ SYSTEM: :system
1795
+
1796
+ def self?.values: -> ::Array[Revox::Models::CallSearchResponse::Call::CallAttempt::ended_by]
1797
+ end
1798
+
1799
+ type post_call_transcript =
1800
+ {
1801
+ content: String,
1802
+ role: Revox::Models::CallSearchResponse::Call::CallAttempt::PostCallTranscript::role,
1803
+ tool_arguments: Revox::Models::CallSearchResponse::Call::CallAttempt::PostCallTranscript::tool_arguments,
1804
+ tool_is_error: bool,
1805
+ tool_name: String,
1806
+ tool_output: String
1807
+ }
1808
+
1809
+ class PostCallTranscript < Revox::Internal::Type::BaseModel
1810
+ attr_accessor content: String
1811
+
1812
+ attr_accessor role: Revox::Models::CallSearchResponse::Call::CallAttempt::PostCallTranscript::role
1813
+
1814
+ attr_reader tool_arguments: Revox::Models::CallSearchResponse::Call::CallAttempt::PostCallTranscript::tool_arguments?
1815
+
1816
+ def tool_arguments=: (
1817
+ Revox::Models::CallSearchResponse::Call::CallAttempt::PostCallTranscript::tool_arguments
1818
+ ) -> Revox::Models::CallSearchResponse::Call::CallAttempt::PostCallTranscript::tool_arguments
1819
+
1820
+ attr_reader tool_is_error: bool?
1821
+
1822
+ def tool_is_error=: (bool) -> bool
1823
+
1824
+ attr_reader tool_name: String?
1825
+
1826
+ def tool_name=: (String) -> String
1827
+
1828
+ attr_reader tool_output: String?
1829
+
1830
+ def tool_output=: (String) -> String
1831
+
1832
+ def initialize: (
1833
+ content: String,
1834
+ role: Revox::Models::CallSearchResponse::Call::CallAttempt::PostCallTranscript::role,
1835
+ ?tool_arguments: Revox::Models::CallSearchResponse::Call::CallAttempt::PostCallTranscript::tool_arguments,
1836
+ ?tool_is_error: bool,
1837
+ ?tool_name: String,
1838
+ ?tool_output: String
1839
+ ) -> void
1840
+
1841
+ def to_hash: -> {
1842
+ content: String,
1843
+ role: Revox::Models::CallSearchResponse::Call::CallAttempt::PostCallTranscript::role,
1844
+ tool_arguments: Revox::Models::CallSearchResponse::Call::CallAttempt::PostCallTranscript::tool_arguments,
1845
+ tool_is_error: bool,
1846
+ tool_name: String,
1847
+ tool_output: String
1848
+ }
1849
+
1850
+ type role = :user | :assistant | :human_agent | :tool
1851
+
1852
+ module Role
1853
+ extend Revox::Internal::Type::Enum
1854
+
1855
+ USER: :user
1856
+ ASSISTANT: :assistant
1857
+ HUMAN_AGENT: :human_agent
1858
+ TOOL: :tool
1859
+
1860
+ def self?.values: -> ::Array[Revox::Models::CallSearchResponse::Call::CallAttempt::PostCallTranscript::role]
1861
+ end
1862
+
1863
+ type tool_arguments = ::Hash[Symbol, top] | String
1864
+
1865
+ module ToolArguments
1866
+ extend Revox::Internal::Type::Union
1867
+
1868
+ def self?.variants: -> ::Array[Revox::Models::CallSearchResponse::Call::CallAttempt::PostCallTranscript::tool_arguments]
1869
+
1870
+ UnionMember0Map: Revox::Internal::Type::Converter
1871
+ end
1872
+ end
1873
+
1874
+ type sms_log =
1875
+ {
1876
+ id: String,
1877
+ created_at: top,
1878
+ message_body: String,
1879
+ provider: Revox::Models::CallSearchResponse::Call::CallAttempt::SMSLog::provider,
1880
+ provider_message_id: String?,
1881
+ to_phone_number: String,
1882
+ type: Revox::Models::CallSearchResponse::Call::CallAttempt::SMSLog::type_
1883
+ }
1884
+
1885
+ class SMSLog < Revox::Internal::Type::BaseModel
1886
+ attr_accessor id: String
1887
+
1888
+ attr_accessor created_at: top
1889
+
1890
+ attr_accessor message_body: String
1891
+
1892
+ attr_accessor provider: Revox::Models::CallSearchResponse::Call::CallAttempt::SMSLog::provider
1893
+
1894
+ attr_accessor provider_message_id: String?
1895
+
1896
+ attr_accessor to_phone_number: String
1897
+
1898
+ attr_accessor type: Revox::Models::CallSearchResponse::Call::CallAttempt::SMSLog::type_
1899
+
1900
+ def initialize: (
1901
+ id: String,
1902
+ created_at: top,
1903
+ message_body: String,
1904
+ provider: Revox::Models::CallSearchResponse::Call::CallAttempt::SMSLog::provider,
1905
+ provider_message_id: String?,
1906
+ to_phone_number: String,
1907
+ type: Revox::Models::CallSearchResponse::Call::CallAttempt::SMSLog::type_
1908
+ ) -> void
1909
+
1910
+ def to_hash: -> {
1911
+ id: String,
1912
+ created_at: top,
1913
+ message_body: String,
1914
+ provider: Revox::Models::CallSearchResponse::Call::CallAttempt::SMSLog::provider,
1915
+ provider_message_id: String?,
1916
+ to_phone_number: String,
1917
+ type: Revox::Models::CallSearchResponse::Call::CallAttempt::SMSLog::type_
1918
+ }
1919
+
1920
+ type provider = :twilio | :vonage
1921
+
1922
+ module Provider
1923
+ extend Revox::Internal::Type::Enum
1924
+
1925
+ TWILIO: :twilio
1926
+ VONAGE: :vonage
1927
+
1928
+ def self?.values: -> ::Array[Revox::Models::CallSearchResponse::Call::CallAttempt::SMSLog::provider]
1929
+ end
1930
+
1931
+ type type_ = :in_call | :voicemail | :after_call
1932
+
1933
+ module Type
1934
+ extend Revox::Internal::Type::Enum
1935
+
1936
+ IN_CALL: :in_call
1937
+ VOICEMAIL: :voicemail
1938
+ AFTER_CALL: :after_call
1939
+
1940
+ def self?.values: -> ::Array[Revox::Models::CallSearchResponse::Call::CallAttempt::SMSLog::type_]
1941
+ end
1942
+ end
1943
+
1944
+ type speech_event =
1945
+ {
1946
+ id: String,
1947
+ is_real_turn: bool,
1948
+ llm_system_prompt: String?,
1949
+ llm_ttft_ms: Float?,
1950
+ llm_winner_model: String?,
1951
+ speaker: Revox::Models::CallSearchResponse::Call::CallAttempt::SpeechEvent::speaker,
1952
+ started_speaking_at_ms: Float,
1953
+ stopped_speaking_at_ms: Float?,
1954
+ stt_transcription_delay_ms: Float?,
1955
+ transcript: String?,
1956
+ tts_ttfb_ms: Float?,
1957
+ was_cut: bool?
1958
+ }
1959
+
1960
+ class SpeechEvent < Revox::Internal::Type::BaseModel
1961
+ attr_accessor id: String
1962
+
1963
+ attr_accessor is_real_turn: bool
1964
+
1965
+ attr_accessor llm_system_prompt: String?
1966
+
1967
+ attr_accessor llm_ttft_ms: Float?
1968
+
1969
+ attr_accessor llm_winner_model: String?
1970
+
1971
+ attr_accessor speaker: Revox::Models::CallSearchResponse::Call::CallAttempt::SpeechEvent::speaker
1972
+
1973
+ attr_accessor started_speaking_at_ms: Float
1974
+
1975
+ attr_accessor stopped_speaking_at_ms: Float?
1976
+
1977
+ attr_accessor stt_transcription_delay_ms: Float?
1978
+
1979
+ attr_accessor transcript: String?
1980
+
1981
+ attr_accessor tts_ttfb_ms: Float?
1982
+
1983
+ attr_accessor was_cut: bool?
1984
+
1985
+ def initialize: (
1986
+ id: String,
1987
+ is_real_turn: bool,
1988
+ llm_system_prompt: String?,
1989
+ llm_ttft_ms: Float?,
1990
+ llm_winner_model: String?,
1991
+ speaker: Revox::Models::CallSearchResponse::Call::CallAttempt::SpeechEvent::speaker,
1992
+ started_speaking_at_ms: Float,
1993
+ stopped_speaking_at_ms: Float?,
1994
+ stt_transcription_delay_ms: Float?,
1995
+ transcript: String?,
1996
+ tts_ttfb_ms: Float?,
1997
+ was_cut: bool?
1998
+ ) -> void
1999
+
2000
+ def to_hash: -> {
2001
+ id: String,
2002
+ is_real_turn: bool,
2003
+ llm_system_prompt: String?,
2004
+ llm_ttft_ms: Float?,
2005
+ llm_winner_model: String?,
2006
+ speaker: Revox::Models::CallSearchResponse::Call::CallAttempt::SpeechEvent::speaker,
2007
+ started_speaking_at_ms: Float,
2008
+ stopped_speaking_at_ms: Float?,
2009
+ stt_transcription_delay_ms: Float?,
2010
+ transcript: String?,
2011
+ tts_ttfb_ms: Float?,
2012
+ was_cut: bool?
2013
+ }
2014
+
2015
+ type speaker = :user | :agent
2016
+
2017
+ module Speaker
2018
+ extend Revox::Internal::Type::Enum
2019
+
2020
+ USER: :user
2021
+ AGENT: :agent
2022
+
2023
+ def self?.values: -> ::Array[Revox::Models::CallSearchResponse::Call::CallAttempt::SpeechEvent::speaker]
2024
+ end
2025
+ end
2026
+
2027
+ type transcript =
2028
+ {
2029
+ content: String,
2030
+ role: Revox::Models::CallSearchResponse::Call::CallAttempt::Transcript::role,
2031
+ tool_arguments: Revox::Models::CallSearchResponse::Call::CallAttempt::Transcript::tool_arguments,
2032
+ tool_is_error: bool,
2033
+ tool_name: String,
2034
+ tool_output: String
2035
+ }
2036
+
2037
+ class Transcript < Revox::Internal::Type::BaseModel
2038
+ attr_accessor content: String
2039
+
2040
+ attr_accessor role: Revox::Models::CallSearchResponse::Call::CallAttempt::Transcript::role
2041
+
2042
+ attr_reader tool_arguments: Revox::Models::CallSearchResponse::Call::CallAttempt::Transcript::tool_arguments?
2043
+
2044
+ def tool_arguments=: (
2045
+ Revox::Models::CallSearchResponse::Call::CallAttempt::Transcript::tool_arguments
2046
+ ) -> Revox::Models::CallSearchResponse::Call::CallAttempt::Transcript::tool_arguments
2047
+
2048
+ attr_reader tool_is_error: bool?
2049
+
2050
+ def tool_is_error=: (bool) -> bool
2051
+
2052
+ attr_reader tool_name: String?
2053
+
2054
+ def tool_name=: (String) -> String
2055
+
2056
+ attr_reader tool_output: String?
2057
+
2058
+ def tool_output=: (String) -> String
2059
+
2060
+ def initialize: (
2061
+ content: String,
2062
+ role: Revox::Models::CallSearchResponse::Call::CallAttempt::Transcript::role,
2063
+ ?tool_arguments: Revox::Models::CallSearchResponse::Call::CallAttempt::Transcript::tool_arguments,
2064
+ ?tool_is_error: bool,
2065
+ ?tool_name: String,
2066
+ ?tool_output: String
2067
+ ) -> void
2068
+
2069
+ def to_hash: -> {
2070
+ content: String,
2071
+ role: Revox::Models::CallSearchResponse::Call::CallAttempt::Transcript::role,
2072
+ tool_arguments: Revox::Models::CallSearchResponse::Call::CallAttempt::Transcript::tool_arguments,
2073
+ tool_is_error: bool,
2074
+ tool_name: String,
2075
+ tool_output: String
2076
+ }
2077
+
2078
+ type role = :user | :assistant | :human_agent | :tool
2079
+
2080
+ module Role
2081
+ extend Revox::Internal::Type::Enum
2082
+
2083
+ USER: :user
2084
+ ASSISTANT: :assistant
2085
+ HUMAN_AGENT: :human_agent
2086
+ TOOL: :tool
2087
+
2088
+ def self?.values: -> ::Array[Revox::Models::CallSearchResponse::Call::CallAttempt::Transcript::role]
2089
+ end
2090
+
2091
+ type tool_arguments = ::Hash[Symbol, top] | String
2092
+
2093
+ module ToolArguments
2094
+ extend Revox::Internal::Type::Union
2095
+
2096
+ def self?.variants: -> ::Array[Revox::Models::CallSearchResponse::Call::CallAttempt::Transcript::tool_arguments]
2097
+
2098
+ UnionMember0Map: Revox::Internal::Type::Converter
2099
+ end
2100
+ end
2101
+ end
2102
+
2103
+ type call_retry_config =
2104
+ {
2105
+ allowed_days: ::Array[Revox::Models::CallSearchResponse::Call::CallRetryConfig::allowed_day],
2106
+ call_twice_in_a_row: bool,
2107
+ calling_windows: ::Array[Revox::Models::CallSearchResponse::Call::CallRetryConfig::CallingWindow],
2108
+ max_retry_attempts: Integer,
2109
+ timezone: String?
2110
+ }
2111
+
2112
+ class CallRetryConfig < Revox::Internal::Type::BaseModel
2113
+ attr_accessor allowed_days: ::Array[Revox::Models::CallSearchResponse::Call::CallRetryConfig::allowed_day]
2114
+
2115
+ attr_accessor call_twice_in_a_row: bool
2116
+
2117
+ attr_accessor calling_windows: ::Array[Revox::Models::CallSearchResponse::Call::CallRetryConfig::CallingWindow]
2118
+
2119
+ attr_accessor max_retry_attempts: Integer
2120
+
2121
+ attr_accessor timezone: String?
2122
+
2123
+ def initialize: (
2124
+ allowed_days: ::Array[Revox::Models::CallSearchResponse::Call::CallRetryConfig::allowed_day],
2125
+ call_twice_in_a_row: bool,
2126
+ calling_windows: ::Array[Revox::Models::CallSearchResponse::Call::CallRetryConfig::CallingWindow],
2127
+ max_retry_attempts: Integer,
2128
+ ?timezone: String?
2129
+ ) -> void
2130
+
2131
+ def to_hash: -> {
2132
+ allowed_days: ::Array[Revox::Models::CallSearchResponse::Call::CallRetryConfig::allowed_day],
2133
+ call_twice_in_a_row: bool,
2134
+ calling_windows: ::Array[Revox::Models::CallSearchResponse::Call::CallRetryConfig::CallingWindow],
2135
+ max_retry_attempts: Integer,
2136
+ timezone: String?
2137
+ }
2138
+
2139
+ type allowed_day =
2140
+ :monday
2141
+ | :tuesday
2142
+ | :wednesday
2143
+ | :thursday
2144
+ | :friday
2145
+ | :saturday
2146
+ | :sunday
2147
+
2148
+ module AllowedDay
2149
+ extend Revox::Internal::Type::Enum
2150
+
2151
+ MONDAY: :monday
2152
+ TUESDAY: :tuesday
2153
+ WEDNESDAY: :wednesday
2154
+ THURSDAY: :thursday
2155
+ FRIDAY: :friday
2156
+ SATURDAY: :saturday
2157
+ SUNDAY: :sunday
2158
+
2159
+ def self?.values: -> ::Array[Revox::Models::CallSearchResponse::Call::CallRetryConfig::allowed_day]
2160
+ end
2161
+
2162
+ type calling_window =
2163
+ {
2164
+ calling_window_end_time: String,
2165
+ calling_window_start_time: String,
2166
+ retry_delay_seconds: Integer
2167
+ }
2168
+
2169
+ class CallingWindow < Revox::Internal::Type::BaseModel
2170
+ attr_accessor calling_window_end_time: String
2171
+
2172
+ attr_accessor calling_window_start_time: String
2173
+
2174
+ attr_accessor retry_delay_seconds: Integer
2175
+
2176
+ def initialize: (
2177
+ calling_window_end_time: String,
2178
+ calling_window_start_time: String,
2179
+ retry_delay_seconds: Integer
2180
+ ) -> void
2181
+
2182
+ def to_hash: -> {
2183
+ calling_window_end_time: String,
2184
+ calling_window_start_time: String,
2185
+ retry_delay_seconds: Integer
2186
+ }
2187
+ end
2188
+ end
2189
+
2190
+ type campaign = { id: String, name: String }
2191
+
2192
+ class Campaign < Revox::Internal::Type::BaseModel
2193
+ attr_accessor id: String
2194
+
2195
+ attr_accessor name: String
2196
+
2197
+ def initialize: (id: String, name: String) -> void
2198
+
2199
+ def to_hash: -> { id: String, name: String }
2200
+ end
2201
+
2202
+ type contact =
2203
+ {
2204
+ company: String?,
2205
+ email: String?,
2206
+ first_name: String?,
2207
+ job_title: String?,
2208
+ last_name: String?
2209
+ }
2210
+
2211
+ class Contact < Revox::Internal::Type::BaseModel
2212
+ attr_accessor company: String?
2213
+
2214
+ attr_accessor email: String?
2215
+
2216
+ attr_accessor first_name: String?
2217
+
2218
+ attr_accessor job_title: String?
2219
+
2220
+ attr_accessor last_name: String?
2221
+
2222
+ def initialize: (
2223
+ company: String?,
2224
+ email: String?,
2225
+ first_name: String?,
2226
+ job_title: String?,
2227
+ last_name: String?
2228
+ ) -> void
2229
+
2230
+ def to_hash: -> {
2231
+ company: String?,
2232
+ email: String?,
2233
+ first_name: String?,
2234
+ job_title: String?,
2235
+ last_name: String?
2236
+ }
2237
+ end
2238
+
2239
+ type direction = :inbound | :outbound
2240
+
2241
+ module Direction
2242
+ extend Revox::Internal::Type::Enum
2243
+
2244
+ INBOUND: :inbound
2245
+ OUTBOUND: :outbound
2246
+
2247
+ def self?.values: -> ::Array[Revox::Models::CallSearchResponse::Call::direction]
2248
+ end
2249
+
2250
+ type last_call_attempt =
2251
+ {
2252
+ id: String,
2253
+ answered_at: top,
2254
+ dial_error: Revox::Models::CallSearchResponse::Call::LastCallAttempt::dial_error?,
2255
+ ended_at: top,
2256
+ handled_by_ai: bool,
2257
+ handled_by_human: bool,
2258
+ handled_by_user: Revox::Models::CallSearchResponse::Call::LastCallAttempt::HandledByUser?,
2259
+ phone_number: String,
2260
+ recording_url: String?,
2261
+ result: Revox::Models::CallSearchResponse::Call::LastCallAttempt::result?,
2262
+ started_at: top,
2263
+ status: Revox::Models::CallSearchResponse::Call::LastCallAttempt::status,
2264
+ assistants_used: ::Array[String]?,
2265
+ email_log: ::Array[Revox::Models::CallSearchResponse::Call::LastCallAttempt::EmailLog]?,
2266
+ end_reason: Revox::Models::CallSearchResponse::Call::LastCallAttempt::end_reason?,
2267
+ ended_by: Revox::Models::CallSearchResponse::Call::LastCallAttempt::ended_by?,
2268
+ post_call_transcript: ::Array[Revox::Models::CallSearchResponse::Call::LastCallAttempt::PostCallTranscript]?,
2269
+ sms_log: ::Array[Revox::Models::CallSearchResponse::Call::LastCallAttempt::SMSLog]?,
2270
+ speech_events: ::Array[Revox::Models::CallSearchResponse::Call::LastCallAttempt::SpeechEvent]?,
2271
+ structured_output: ::Hash[Symbol, top]?,
2272
+ transcript: ::Array[Revox::Models::CallSearchResponse::Call::LastCallAttempt::Transcript]?
2273
+ }
2274
+
2275
+ class LastCallAttempt < Revox::Internal::Type::BaseModel
2276
+ attr_accessor id: String
2277
+
2278
+ attr_accessor answered_at: top
2279
+
2280
+ attr_accessor dial_error: Revox::Models::CallSearchResponse::Call::LastCallAttempt::dial_error?
2281
+
2282
+ attr_accessor ended_at: top
2283
+
2284
+ attr_accessor handled_by_ai: bool
2285
+
2286
+ attr_accessor handled_by_human: bool
2287
+
2288
+ attr_accessor handled_by_user: Revox::Models::CallSearchResponse::Call::LastCallAttempt::HandledByUser?
2289
+
2290
+ attr_accessor phone_number: String
2291
+
2292
+ attr_accessor recording_url: String?
2293
+
2294
+ attr_accessor result: Revox::Models::CallSearchResponse::Call::LastCallAttempt::result?
2295
+
2296
+ attr_accessor started_at: top
2297
+
2298
+ attr_accessor status: Revox::Models::CallSearchResponse::Call::LastCallAttempt::status
2299
+
2300
+ attr_accessor assistants_used: ::Array[String]?
2301
+
2302
+ attr_accessor email_log: ::Array[Revox::Models::CallSearchResponse::Call::LastCallAttempt::EmailLog]?
2303
+
2304
+ attr_accessor end_reason: Revox::Models::CallSearchResponse::Call::LastCallAttempt::end_reason?
2305
+
2306
+ attr_accessor ended_by: Revox::Models::CallSearchResponse::Call::LastCallAttempt::ended_by?
2307
+
2308
+ attr_accessor post_call_transcript: ::Array[Revox::Models::CallSearchResponse::Call::LastCallAttempt::PostCallTranscript]?
2309
+
2310
+ attr_accessor sms_log: ::Array[Revox::Models::CallSearchResponse::Call::LastCallAttempt::SMSLog]?
2311
+
2312
+ attr_accessor speech_events: ::Array[Revox::Models::CallSearchResponse::Call::LastCallAttempt::SpeechEvent]?
2313
+
2314
+ attr_accessor structured_output: ::Hash[Symbol, top]?
2315
+
2316
+ attr_accessor transcript: ::Array[Revox::Models::CallSearchResponse::Call::LastCallAttempt::Transcript]?
2317
+
2318
+ def initialize: (
2319
+ id: String,
2320
+ answered_at: top,
2321
+ dial_error: Revox::Models::CallSearchResponse::Call::LastCallAttempt::dial_error?,
2322
+ ended_at: top,
2323
+ handled_by_ai: bool,
2324
+ handled_by_human: bool,
2325
+ handled_by_user: Revox::Models::CallSearchResponse::Call::LastCallAttempt::HandledByUser?,
2326
+ phone_number: String,
2327
+ recording_url: String?,
2328
+ result: Revox::Models::CallSearchResponse::Call::LastCallAttempt::result?,
2329
+ started_at: top,
2330
+ status: Revox::Models::CallSearchResponse::Call::LastCallAttempt::status,
2331
+ ?assistants_used: ::Array[String]?,
2332
+ ?email_log: ::Array[Revox::Models::CallSearchResponse::Call::LastCallAttempt::EmailLog]?,
2333
+ ?end_reason: Revox::Models::CallSearchResponse::Call::LastCallAttempt::end_reason?,
2334
+ ?ended_by: Revox::Models::CallSearchResponse::Call::LastCallAttempt::ended_by?,
2335
+ ?post_call_transcript: ::Array[Revox::Models::CallSearchResponse::Call::LastCallAttempt::PostCallTranscript]?,
2336
+ ?sms_log: ::Array[Revox::Models::CallSearchResponse::Call::LastCallAttempt::SMSLog]?,
2337
+ ?speech_events: ::Array[Revox::Models::CallSearchResponse::Call::LastCallAttempt::SpeechEvent]?,
2338
+ ?structured_output: ::Hash[Symbol, top]?,
2339
+ ?transcript: ::Array[Revox::Models::CallSearchResponse::Call::LastCallAttempt::Transcript]?
2340
+ ) -> void
2341
+
2342
+ def to_hash: -> {
2343
+ id: String,
2344
+ answered_at: top,
2345
+ dial_error: Revox::Models::CallSearchResponse::Call::LastCallAttempt::dial_error?,
2346
+ ended_at: top,
2347
+ handled_by_ai: bool,
2348
+ handled_by_human: bool,
2349
+ handled_by_user: Revox::Models::CallSearchResponse::Call::LastCallAttempt::HandledByUser?,
2350
+ phone_number: String,
2351
+ recording_url: String?,
2352
+ result: Revox::Models::CallSearchResponse::Call::LastCallAttempt::result?,
2353
+ started_at: top,
2354
+ status: Revox::Models::CallSearchResponse::Call::LastCallAttempt::status,
2355
+ assistants_used: ::Array[String]?,
2356
+ email_log: ::Array[Revox::Models::CallSearchResponse::Call::LastCallAttempt::EmailLog]?,
2357
+ end_reason: Revox::Models::CallSearchResponse::Call::LastCallAttempt::end_reason?,
2358
+ ended_by: Revox::Models::CallSearchResponse::Call::LastCallAttempt::ended_by?,
2359
+ post_call_transcript: ::Array[Revox::Models::CallSearchResponse::Call::LastCallAttempt::PostCallTranscript]?,
2360
+ sms_log: ::Array[Revox::Models::CallSearchResponse::Call::LastCallAttempt::SMSLog]?,
2361
+ speech_events: ::Array[Revox::Models::CallSearchResponse::Call::LastCallAttempt::SpeechEvent]?,
2362
+ structured_output: ::Hash[Symbol, top]?,
2363
+ transcript: ::Array[Revox::Models::CallSearchResponse::Call::LastCallAttempt::Transcript]?
2364
+ }
2365
+
2366
+ type dial_error =
2367
+ :number_non_attributed
2368
+ | :too_many_calls
2369
+ | :busy
2370
+ | :temporarily_unavailable
2371
+ | :no_answer
2372
+ | :no_international_permission
2373
+ | :precondition_failed
2374
+ | :non_classified_error
2375
+
2376
+ module DialError
2377
+ extend Revox::Internal::Type::Enum
2378
+
2379
+ NUMBER_NON_ATTRIBUTED: :number_non_attributed
2380
+ TOO_MANY_CALLS: :too_many_calls
2381
+ BUSY: :busy
2382
+ TEMPORARILY_UNAVAILABLE: :temporarily_unavailable
2383
+ NO_ANSWER: :no_answer
2384
+ NO_INTERNATIONAL_PERMISSION: :no_international_permission
2385
+ PRECONDITION_FAILED: :precondition_failed
2386
+ NON_CLASSIFIED_ERROR: :non_classified_error
2387
+
2388
+ def self?.values: -> ::Array[Revox::Models::CallSearchResponse::Call::LastCallAttempt::dial_error]
2389
+ end
2390
+
2391
+ type handled_by_user =
2392
+ {
2393
+ id: String,
2394
+ email: String,
2395
+ first_name: String?,
2396
+ last_name: String?
2397
+ }
2398
+
2399
+ class HandledByUser < Revox::Internal::Type::BaseModel
2400
+ attr_accessor id: String
2401
+
2402
+ attr_accessor email: String
2403
+
2404
+ attr_accessor first_name: String?
2405
+
2406
+ attr_accessor last_name: String?
2407
+
2408
+ def initialize: (
2409
+ id: String,
2410
+ email: String,
2411
+ first_name: String?,
2412
+ last_name: String?
2413
+ ) -> void
2414
+
2415
+ def to_hash: -> {
2416
+ id: String,
2417
+ email: String,
2418
+ first_name: String?,
2419
+ last_name: String?
2420
+ }
2421
+ end
2422
+
2423
+ type result =
2424
+ :IVR | :voicemail | :human | :unknown | :"ios-screening-filter"
2425
+
2426
+ module Result
2427
+ extend Revox::Internal::Type::Enum
2428
+
2429
+ IVR: :IVR
2430
+ VOICEMAIL: :voicemail
2431
+ HUMAN: :human
2432
+ UNKNOWN: :unknown
2433
+ IOS_SCREENING_FILTER: :"ios-screening-filter"
2434
+
2435
+ def self?.values: -> ::Array[Revox::Models::CallSearchResponse::Call::LastCallAttempt::result]
2436
+ end
2437
+
2438
+ type status = :queued | :ringing | :ongoing | :completed | :error
2439
+
2440
+ module Status
2441
+ extend Revox::Internal::Type::Enum
2442
+
2443
+ QUEUED: :queued
2444
+ RINGING: :ringing
2445
+ ONGOING: :ongoing
2446
+ COMPLETED: :completed
2447
+ ERROR: :error
2448
+
2449
+ def self?.values: -> ::Array[Revox::Models::CallSearchResponse::Call::LastCallAttempt::status]
2450
+ end
2451
+
2452
+ type email_log =
2453
+ {
2454
+ id: String,
2455
+ created_at: top,
2456
+ from_address: String,
2457
+ resend_message_id: String?,
2458
+ subject: String,
2459
+ to_emails: ::Array[String]
2460
+ }
2461
+
2462
+ class EmailLog < Revox::Internal::Type::BaseModel
2463
+ attr_accessor id: String
2464
+
2465
+ attr_accessor created_at: top
2466
+
2467
+ attr_accessor from_address: String
2468
+
2469
+ attr_accessor resend_message_id: String?
2470
+
2471
+ attr_accessor subject: String
2472
+
2473
+ attr_accessor to_emails: ::Array[String]
2474
+
2475
+ def initialize: (
2476
+ id: String,
2477
+ created_at: top,
2478
+ from_address: String,
2479
+ resend_message_id: String?,
2480
+ subject: String,
2481
+ to_emails: ::Array[String]
2482
+ ) -> void
2483
+
2484
+ def to_hash: -> {
2485
+ id: String,
2486
+ created_at: top,
2487
+ from_address: String,
2488
+ resend_message_id: String?,
2489
+ subject: String,
2490
+ to_emails: ::Array[String]
2491
+ }
2492
+ end
2493
+
2494
+ type end_reason =
2495
+ :client_initiated
2496
+ | :connection_timeout
2497
+ | :human_takeover
2498
+ | :ivr_no_navigate
2499
+ | :max_duration
2500
+ | :participant_removed
2501
+ | :tool_end_call
2502
+ | :transfer
2503
+ | :user_inactive
2504
+ | :user_rejected
2505
+ | :user_unavailable
2506
+ | :voicemail
2507
+ | :speed_dial_abandoned
2508
+ | :speed_dial_operator_missed
2509
+ | :speed_dial_timeout
2510
+ | :speed_dial_hangup
2511
+
2512
+ module EndReason
2513
+ extend Revox::Internal::Type::Enum
2514
+
2515
+ CLIENT_INITIATED: :client_initiated
2516
+ CONNECTION_TIMEOUT: :connection_timeout
2517
+ HUMAN_TAKEOVER: :human_takeover
2518
+ IVR_NO_NAVIGATE: :ivr_no_navigate
2519
+ MAX_DURATION: :max_duration
2520
+ PARTICIPANT_REMOVED: :participant_removed
2521
+ TOOL_END_CALL: :tool_end_call
2522
+ TRANSFER: :transfer
2523
+ USER_INACTIVE: :user_inactive
2524
+ USER_REJECTED: :user_rejected
2525
+ USER_UNAVAILABLE: :user_unavailable
2526
+ VOICEMAIL: :voicemail
2527
+ SPEED_DIAL_ABANDONED: :speed_dial_abandoned
2528
+ SPEED_DIAL_OPERATOR_MISSED: :speed_dial_operator_missed
2529
+ SPEED_DIAL_TIMEOUT: :speed_dial_timeout
2530
+ SPEED_DIAL_HANGUP: :speed_dial_hangup
2531
+
2532
+ def self?.values: -> ::Array[Revox::Models::CallSearchResponse::Call::LastCallAttempt::end_reason]
2533
+ end
2534
+
2535
+ type ended_by = :agent | :user | :system
2536
+
2537
+ module EndedBy
2538
+ extend Revox::Internal::Type::Enum
2539
+
2540
+ AGENT: :agent
2541
+ USER: :user
2542
+ SYSTEM: :system
2543
+
2544
+ def self?.values: -> ::Array[Revox::Models::CallSearchResponse::Call::LastCallAttempt::ended_by]
2545
+ end
2546
+
2547
+ type post_call_transcript =
2548
+ {
2549
+ content: String,
2550
+ role: Revox::Models::CallSearchResponse::Call::LastCallAttempt::PostCallTranscript::role,
2551
+ tool_arguments: Revox::Models::CallSearchResponse::Call::LastCallAttempt::PostCallTranscript::tool_arguments,
2552
+ tool_is_error: bool,
2553
+ tool_name: String,
2554
+ tool_output: String
2555
+ }
2556
+
2557
+ class PostCallTranscript < Revox::Internal::Type::BaseModel
2558
+ attr_accessor content: String
2559
+
2560
+ attr_accessor role: Revox::Models::CallSearchResponse::Call::LastCallAttempt::PostCallTranscript::role
2561
+
2562
+ attr_reader tool_arguments: Revox::Models::CallSearchResponse::Call::LastCallAttempt::PostCallTranscript::tool_arguments?
2563
+
2564
+ def tool_arguments=: (
2565
+ Revox::Models::CallSearchResponse::Call::LastCallAttempt::PostCallTranscript::tool_arguments
2566
+ ) -> Revox::Models::CallSearchResponse::Call::LastCallAttempt::PostCallTranscript::tool_arguments
2567
+
2568
+ attr_reader tool_is_error: bool?
2569
+
2570
+ def tool_is_error=: (bool) -> bool
2571
+
2572
+ attr_reader tool_name: String?
2573
+
2574
+ def tool_name=: (String) -> String
2575
+
2576
+ attr_reader tool_output: String?
2577
+
2578
+ def tool_output=: (String) -> String
2579
+
2580
+ def initialize: (
2581
+ content: String,
2582
+ role: Revox::Models::CallSearchResponse::Call::LastCallAttempt::PostCallTranscript::role,
2583
+ ?tool_arguments: Revox::Models::CallSearchResponse::Call::LastCallAttempt::PostCallTranscript::tool_arguments,
2584
+ ?tool_is_error: bool,
2585
+ ?tool_name: String,
2586
+ ?tool_output: String
2587
+ ) -> void
2588
+
2589
+ def to_hash: -> {
2590
+ content: String,
2591
+ role: Revox::Models::CallSearchResponse::Call::LastCallAttempt::PostCallTranscript::role,
2592
+ tool_arguments: Revox::Models::CallSearchResponse::Call::LastCallAttempt::PostCallTranscript::tool_arguments,
2593
+ tool_is_error: bool,
2594
+ tool_name: String,
2595
+ tool_output: String
2596
+ }
2597
+
2598
+ type role = :user | :assistant | :human_agent | :tool
2599
+
2600
+ module Role
2601
+ extend Revox::Internal::Type::Enum
2602
+
2603
+ USER: :user
2604
+ ASSISTANT: :assistant
2605
+ HUMAN_AGENT: :human_agent
2606
+ TOOL: :tool
2607
+
2608
+ def self?.values: -> ::Array[Revox::Models::CallSearchResponse::Call::LastCallAttempt::PostCallTranscript::role]
2609
+ end
2610
+
2611
+ type tool_arguments = ::Hash[Symbol, top] | String
2612
+
2613
+ module ToolArguments
2614
+ extend Revox::Internal::Type::Union
2615
+
2616
+ def self?.variants: -> ::Array[Revox::Models::CallSearchResponse::Call::LastCallAttempt::PostCallTranscript::tool_arguments]
2617
+
2618
+ UnionMember0Map: Revox::Internal::Type::Converter
2619
+ end
2620
+ end
2621
+
2622
+ type sms_log =
2623
+ {
2624
+ id: String,
2625
+ created_at: top,
2626
+ message_body: String,
2627
+ provider: Revox::Models::CallSearchResponse::Call::LastCallAttempt::SMSLog::provider,
2628
+ provider_message_id: String?,
2629
+ to_phone_number: String,
2630
+ type: Revox::Models::CallSearchResponse::Call::LastCallAttempt::SMSLog::type_
2631
+ }
2632
+
2633
+ class SMSLog < Revox::Internal::Type::BaseModel
2634
+ attr_accessor id: String
2635
+
2636
+ attr_accessor created_at: top
2637
+
2638
+ attr_accessor message_body: String
2639
+
2640
+ attr_accessor provider: Revox::Models::CallSearchResponse::Call::LastCallAttempt::SMSLog::provider
2641
+
2642
+ attr_accessor provider_message_id: String?
2643
+
2644
+ attr_accessor to_phone_number: String
2645
+
2646
+ attr_accessor type: Revox::Models::CallSearchResponse::Call::LastCallAttempt::SMSLog::type_
2647
+
2648
+ def initialize: (
2649
+ id: String,
2650
+ created_at: top,
2651
+ message_body: String,
2652
+ provider: Revox::Models::CallSearchResponse::Call::LastCallAttempt::SMSLog::provider,
2653
+ provider_message_id: String?,
2654
+ to_phone_number: String,
2655
+ type: Revox::Models::CallSearchResponse::Call::LastCallAttempt::SMSLog::type_
2656
+ ) -> void
2657
+
2658
+ def to_hash: -> {
2659
+ id: String,
2660
+ created_at: top,
2661
+ message_body: String,
2662
+ provider: Revox::Models::CallSearchResponse::Call::LastCallAttempt::SMSLog::provider,
2663
+ provider_message_id: String?,
2664
+ to_phone_number: String,
2665
+ type: Revox::Models::CallSearchResponse::Call::LastCallAttempt::SMSLog::type_
2666
+ }
2667
+
2668
+ type provider = :twilio | :vonage
2669
+
2670
+ module Provider
2671
+ extend Revox::Internal::Type::Enum
2672
+
2673
+ TWILIO: :twilio
2674
+ VONAGE: :vonage
2675
+
2676
+ def self?.values: -> ::Array[Revox::Models::CallSearchResponse::Call::LastCallAttempt::SMSLog::provider]
2677
+ end
2678
+
2679
+ type type_ = :in_call | :voicemail | :after_call
2680
+
2681
+ module Type
2682
+ extend Revox::Internal::Type::Enum
2683
+
2684
+ IN_CALL: :in_call
2685
+ VOICEMAIL: :voicemail
2686
+ AFTER_CALL: :after_call
2687
+
2688
+ def self?.values: -> ::Array[Revox::Models::CallSearchResponse::Call::LastCallAttempt::SMSLog::type_]
2689
+ end
2690
+ end
2691
+
2692
+ type speech_event =
2693
+ {
2694
+ id: String,
2695
+ is_real_turn: bool,
2696
+ llm_system_prompt: String?,
2697
+ llm_ttft_ms: Float?,
2698
+ llm_winner_model: String?,
2699
+ speaker: Revox::Models::CallSearchResponse::Call::LastCallAttempt::SpeechEvent::speaker,
2700
+ started_speaking_at_ms: Float,
2701
+ stopped_speaking_at_ms: Float?,
2702
+ stt_transcription_delay_ms: Float?,
2703
+ transcript: String?,
2704
+ tts_ttfb_ms: Float?,
2705
+ was_cut: bool?
2706
+ }
2707
+
2708
+ class SpeechEvent < Revox::Internal::Type::BaseModel
2709
+ attr_accessor id: String
2710
+
2711
+ attr_accessor is_real_turn: bool
2712
+
2713
+ attr_accessor llm_system_prompt: String?
2714
+
2715
+ attr_accessor llm_ttft_ms: Float?
2716
+
2717
+ attr_accessor llm_winner_model: String?
2718
+
2719
+ attr_accessor speaker: Revox::Models::CallSearchResponse::Call::LastCallAttempt::SpeechEvent::speaker
2720
+
2721
+ attr_accessor started_speaking_at_ms: Float
2722
+
2723
+ attr_accessor stopped_speaking_at_ms: Float?
2724
+
2725
+ attr_accessor stt_transcription_delay_ms: Float?
2726
+
2727
+ attr_accessor transcript: String?
2728
+
2729
+ attr_accessor tts_ttfb_ms: Float?
2730
+
2731
+ attr_accessor was_cut: bool?
2732
+
2733
+ def initialize: (
2734
+ id: String,
2735
+ is_real_turn: bool,
2736
+ llm_system_prompt: String?,
2737
+ llm_ttft_ms: Float?,
2738
+ llm_winner_model: String?,
2739
+ speaker: Revox::Models::CallSearchResponse::Call::LastCallAttempt::SpeechEvent::speaker,
2740
+ started_speaking_at_ms: Float,
2741
+ stopped_speaking_at_ms: Float?,
2742
+ stt_transcription_delay_ms: Float?,
2743
+ transcript: String?,
2744
+ tts_ttfb_ms: Float?,
2745
+ was_cut: bool?
2746
+ ) -> void
2747
+
2748
+ def to_hash: -> {
2749
+ id: String,
2750
+ is_real_turn: bool,
2751
+ llm_system_prompt: String?,
2752
+ llm_ttft_ms: Float?,
2753
+ llm_winner_model: String?,
2754
+ speaker: Revox::Models::CallSearchResponse::Call::LastCallAttempt::SpeechEvent::speaker,
2755
+ started_speaking_at_ms: Float,
2756
+ stopped_speaking_at_ms: Float?,
2757
+ stt_transcription_delay_ms: Float?,
2758
+ transcript: String?,
2759
+ tts_ttfb_ms: Float?,
2760
+ was_cut: bool?
2761
+ }
2762
+
2763
+ type speaker = :user | :agent
2764
+
2765
+ module Speaker
2766
+ extend Revox::Internal::Type::Enum
2767
+
2768
+ USER: :user
2769
+ AGENT: :agent
2770
+
2771
+ def self?.values: -> ::Array[Revox::Models::CallSearchResponse::Call::LastCallAttempt::SpeechEvent::speaker]
2772
+ end
2773
+ end
2774
+
2775
+ type transcript =
2776
+ {
2777
+ content: String,
2778
+ role: Revox::Models::CallSearchResponse::Call::LastCallAttempt::Transcript::role,
2779
+ tool_arguments: Revox::Models::CallSearchResponse::Call::LastCallAttempt::Transcript::tool_arguments,
2780
+ tool_is_error: bool,
2781
+ tool_name: String,
2782
+ tool_output: String
2783
+ }
2784
+
2785
+ class Transcript < Revox::Internal::Type::BaseModel
2786
+ attr_accessor content: String
2787
+
2788
+ attr_accessor role: Revox::Models::CallSearchResponse::Call::LastCallAttempt::Transcript::role
2789
+
2790
+ attr_reader tool_arguments: Revox::Models::CallSearchResponse::Call::LastCallAttempt::Transcript::tool_arguments?
2791
+
2792
+ def tool_arguments=: (
2793
+ Revox::Models::CallSearchResponse::Call::LastCallAttempt::Transcript::tool_arguments
2794
+ ) -> Revox::Models::CallSearchResponse::Call::LastCallAttempt::Transcript::tool_arguments
2795
+
2796
+ attr_reader tool_is_error: bool?
2797
+
2798
+ def tool_is_error=: (bool) -> bool
2799
+
2800
+ attr_reader tool_name: String?
2801
+
2802
+ def tool_name=: (String) -> String
2803
+
2804
+ attr_reader tool_output: String?
2805
+
2806
+ def tool_output=: (String) -> String
2807
+
2808
+ def initialize: (
2809
+ content: String,
2810
+ role: Revox::Models::CallSearchResponse::Call::LastCallAttempt::Transcript::role,
2811
+ ?tool_arguments: Revox::Models::CallSearchResponse::Call::LastCallAttempt::Transcript::tool_arguments,
2812
+ ?tool_is_error: bool,
2813
+ ?tool_name: String,
2814
+ ?tool_output: String
2815
+ ) -> void
2816
+
2817
+ def to_hash: -> {
2818
+ content: String,
2819
+ role: Revox::Models::CallSearchResponse::Call::LastCallAttempt::Transcript::role,
2820
+ tool_arguments: Revox::Models::CallSearchResponse::Call::LastCallAttempt::Transcript::tool_arguments,
2821
+ tool_is_error: bool,
2822
+ tool_name: String,
2823
+ tool_output: String
2824
+ }
2825
+
2826
+ type role = :user | :assistant | :human_agent | :tool
2827
+
2828
+ module Role
2829
+ extend Revox::Internal::Type::Enum
2830
+
2831
+ USER: :user
2832
+ ASSISTANT: :assistant
2833
+ HUMAN_AGENT: :human_agent
2834
+ TOOL: :tool
2835
+
2836
+ def self?.values: -> ::Array[Revox::Models::CallSearchResponse::Call::LastCallAttempt::Transcript::role]
2837
+ end
2838
+
2839
+ type tool_arguments = ::Hash[Symbol, top] | String
2840
+
2841
+ module ToolArguments
2842
+ extend Revox::Internal::Type::Union
2843
+
2844
+ def self?.variants: -> ::Array[Revox::Models::CallSearchResponse::Call::LastCallAttempt::Transcript::tool_arguments]
2845
+
2846
+ UnionMember0Map: Revox::Internal::Type::Converter
2847
+ end
2848
+ end
2849
+ end
2850
+
2851
+ type llm_model =
2852
+ Revox::Models::CallSearchResponse::Call::LlmModel::UnionMember0
2853
+ | Revox::Models::CallSearchResponse::Call::LlmModel::UnionMember1
2854
+ | Revox::Models::CallSearchResponse::Call::LlmModel::UnionMember2
2855
+ | Revox::Models::CallSearchResponse::Call::LlmModel::UnionMember3
2856
+
2857
+ module LlmModel
2858
+ extend Revox::Internal::Type::Union
2859
+
2860
+ type union_member0 =
2861
+ {
2862
+ name: Revox::Models::CallSearchResponse::Call::LlmModel::UnionMember0::name_,
2863
+ type: :"dedicated-instance"
2864
+ }
2865
+
2866
+ class UnionMember0 < Revox::Internal::Type::BaseModel
2867
+ attr_accessor name: Revox::Models::CallSearchResponse::Call::LlmModel::UnionMember0::name_
2868
+
2869
+ attr_accessor type: :"dedicated-instance"
2870
+
2871
+ def initialize: (
2872
+ name: Revox::Models::CallSearchResponse::Call::LlmModel::UnionMember0::name_,
2873
+ ?type: :"dedicated-instance"
2874
+ ) -> void
2875
+
2876
+ def to_hash: -> {
2877
+ name: Revox::Models::CallSearchResponse::Call::LlmModel::UnionMember0::name_,
2878
+ type: :"dedicated-instance"
2879
+ }
2880
+
2881
+ type name_ = :"gpt-4.1" | :"ministral-3-8b-instruct"
2882
+
2883
+ module Name
2884
+ extend Revox::Internal::Type::Enum
2885
+
2886
+ GPT_4_1: :"gpt-4.1"
2887
+ MINISTRAL_3_8B_INSTRUCT: :"ministral-3-8b-instruct"
2888
+
2889
+ def self?.values: -> ::Array[Revox::Models::CallSearchResponse::Call::LlmModel::UnionMember0::name_]
2890
+ end
2891
+ end
2892
+
2893
+ type union_member1 =
2894
+ {
2895
+ openrouter_model_id: String,
2896
+ openrouter_provider: String,
2897
+ type: :openrouter
2898
+ }
2899
+
2900
+ class UnionMember1 < Revox::Internal::Type::BaseModel
2901
+ attr_accessor openrouter_model_id: String
2902
+
2903
+ attr_accessor openrouter_provider: String
2904
+
2905
+ attr_accessor type: :openrouter
2906
+
2907
+ def initialize: (
2908
+ openrouter_model_id: String,
2909
+ openrouter_provider: String,
2910
+ ?type: :openrouter
2911
+ ) -> void
2912
+
2913
+ def to_hash: -> {
2914
+ openrouter_model_id: String,
2915
+ openrouter_provider: String,
2916
+ type: :openrouter
2917
+ }
2918
+ end
2919
+
2920
+ type union_member2 =
2921
+ {
2922
+ api_key: String,
2923
+ api_url: String,
2924
+ model_name: String,
2925
+ type: :custom
2926
+ }
2927
+
2928
+ class UnionMember2 < Revox::Internal::Type::BaseModel
2929
+ attr_accessor api_key: String
2930
+
2931
+ attr_accessor api_url: String
2932
+
2933
+ attr_accessor model_name: String
2934
+
2935
+ attr_accessor type: :custom
2936
+
2937
+ def initialize: (
2938
+ api_key: String,
2939
+ api_url: String,
2940
+ model_name: String,
2941
+ ?type: :custom
2942
+ ) -> void
2943
+
2944
+ def to_hash: -> {
2945
+ api_key: String,
2946
+ api_url: String,
2947
+ model_name: String,
2948
+ type: :custom
2949
+ }
2950
+ end
2951
+
2952
+ type union_member3 =
2953
+ {
2954
+ provider: Revox::Models::CallSearchResponse::Call::LlmModel::UnionMember3::provider,
2955
+ realtime_model_id: String,
2956
+ type: :realtime,
2957
+ realtime_voice_id: String
2958
+ }
2959
+
2960
+ class UnionMember3 < Revox::Internal::Type::BaseModel
2961
+ attr_accessor provider: Revox::Models::CallSearchResponse::Call::LlmModel::UnionMember3::provider
2962
+
2963
+ attr_accessor realtime_model_id: String
2964
+
2965
+ attr_accessor type: :realtime
2966
+
2967
+ attr_reader realtime_voice_id: String?
2968
+
2969
+ def realtime_voice_id=: (String) -> String
2970
+
2971
+ def initialize: (
2972
+ provider: Revox::Models::CallSearchResponse::Call::LlmModel::UnionMember3::provider,
2973
+ realtime_model_id: String,
2974
+ ?realtime_voice_id: String,
2975
+ ?type: :realtime
2976
+ ) -> void
2977
+
2978
+ def to_hash: -> {
2979
+ provider: Revox::Models::CallSearchResponse::Call::LlmModel::UnionMember3::provider,
2980
+ realtime_model_id: String,
2981
+ type: :realtime,
2982
+ realtime_voice_id: String
2983
+ }
2984
+
2985
+ type provider = :openai | :google
2986
+
2987
+ module Provider
2988
+ extend Revox::Internal::Type::Enum
2989
+
2990
+ OPENAI: :openai
2991
+ GOOGLE: :google
2992
+
2993
+ def self?.values: -> ::Array[Revox::Models::CallSearchResponse::Call::LlmModel::UnionMember3::provider]
2994
+ end
2995
+ end
2996
+
2997
+ def self?.variants: -> ::Array[Revox::Models::CallSearchResponse::Call::llm_model]
2998
+ end
2999
+
3000
+ type status =
3001
+ :initializing
3002
+ | :queued_for_calling
3003
+ | :calling
3004
+ | :post_processing
3005
+ | :not_launched
3006
+ | :scheduled
3007
+ | :paused
3008
+ | :completed
3009
+ | :cancelled
3010
+ | :errored
3011
+
3012
+ module Status
3013
+ extend Revox::Internal::Type::Enum
3014
+
3015
+ INITIALIZING: :initializing
3016
+ QUEUED_FOR_CALLING: :queued_for_calling
3017
+ CALLING: :calling
3018
+ POST_PROCESSING: :post_processing
3019
+ NOT_LAUNCHED: :not_launched
3020
+ SCHEDULED: :scheduled
3021
+ PAUSED: :paused
3022
+ COMPLETED: :completed
3023
+ CANCELLED: :cancelled
3024
+ ERRORED: :errored
3025
+
3026
+ def self?.values: -> ::Array[Revox::Models::CallSearchResponse::Call::status]
3027
+ end
3028
+
3029
+ type outcome =
3030
+ :not_interested | :interested | :completed | :requested_callback_later
3031
+
3032
+ module Outcome
3033
+ extend Revox::Internal::Type::Enum
3034
+
3035
+ NOT_INTERESTED: :not_interested
3036
+ INTERESTED: :interested
3037
+ COMPLETED: :completed
3038
+ REQUESTED_CALLBACK_LATER: :requested_callback_later
3039
+
3040
+ def self?.values: -> ::Array[Revox::Models::CallSearchResponse::Call::outcome]
3041
+ end
3042
+ end
3043
+ end
3044
+ end
3045
+ end