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