revox 0.1.0 → 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 (89) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +71 -0
  3. data/README.md +39 -14
  4. data/lib/revox/client.rb +15 -1
  5. data/lib/revox/internal/transport/base_client.rb +5 -0
  6. data/lib/revox/internal/util.rb +22 -7
  7. data/lib/revox/models/assistant_create_params.rb +1038 -13
  8. data/lib/revox/models/assistant_create_response.rb +1071 -11
  9. data/lib/revox/models/assistant_list_response.rb +1070 -11
  10. data/lib/revox/models/assistant_retrieve_response.rb +1066 -11
  11. data/lib/revox/models/assistant_update_params.rb +1038 -13
  12. data/lib/revox/models/assistant_update_response.rb +1097 -12
  13. data/lib/revox/models/call_create_params.rb +1065 -13
  14. data/lib/revox/models/call_create_response.rb +1813 -101
  15. data/lib/revox/models/call_retrieve_response.rb +1815 -101
  16. data/lib/revox/models/campaign_create_params.rb +67 -2
  17. data/lib/revox/models/campaign_create_response.rb +1314 -59
  18. data/lib/revox/models/campaign_get_rows_params.rb +1 -46
  19. data/lib/revox/models/campaign_get_rows_response.rb +1837 -129
  20. data/lib/revox/models/campaign_list_response.rb +1312 -59
  21. data/lib/revox/models/campaign_retrieve_response.rb +1312 -56
  22. data/lib/revox/models/users/me_retrieve_response.rb +13 -1
  23. data/lib/revox/models/users/me_update_response.rb +13 -1
  24. data/lib/revox/models/voice_list_response.rb +55 -1
  25. data/lib/revox/models/voice_preview_params.rb +49 -1
  26. data/lib/revox/models.rb +0 -2
  27. data/lib/revox/resources/assistants.rb +116 -8
  28. data/lib/revox/resources/call.rb +0 -29
  29. data/lib/revox/resources/campaigns.rb +12 -17
  30. data/lib/revox/resources/voices.rb +16 -10
  31. data/lib/revox/version.rb +1 -1
  32. data/lib/revox.rb +0 -2
  33. data/rbi/revox/internal/util.rbi +8 -0
  34. data/rbi/revox/models/assistant_create_params.rbi +2138 -103
  35. data/rbi/revox/models/assistant_create_response.rbi +2454 -199
  36. data/rbi/revox/models/assistant_list_response.rbi +2448 -195
  37. data/rbi/revox/models/assistant_retrieve_response.rbi +2401 -210
  38. data/rbi/revox/models/assistant_update_params.rbi +2138 -103
  39. data/rbi/revox/models/assistant_update_response.rbi +2504 -198
  40. data/rbi/revox/models/call_create_params.rbi +2382 -225
  41. data/rbi/revox/models/call_create_response.rbi +4104 -384
  42. data/rbi/revox/models/call_retrieve_response.rbi +4104 -382
  43. data/rbi/revox/models/campaign_create_params.rbi +136 -0
  44. data/rbi/revox/models/campaign_create_response.rbi +2911 -231
  45. data/rbi/revox/models/campaign_get_rows_params.rbi +2 -82
  46. data/rbi/revox/models/campaign_get_rows_response.rbi +4135 -410
  47. data/rbi/revox/models/campaign_list_response.rbi +2904 -230
  48. data/rbi/revox/models/campaign_retrieve_response.rbi +2911 -231
  49. data/rbi/revox/models/users/me_retrieve_response.rbi +13 -3
  50. data/rbi/revox/models/users/me_update_response.rbi +13 -3
  51. data/rbi/revox/models/voice_list_response.rbi +105 -3
  52. data/rbi/revox/models/voice_preview_params.rbi +69 -0
  53. data/rbi/revox/models.rbi +0 -2
  54. data/rbi/revox/resources/assistants.rbi +284 -8
  55. data/rbi/revox/resources/call.rbi +0 -21
  56. data/rbi/revox/resources/campaigns.rbi +12 -19
  57. data/rbi/revox/resources/voices.rbi +17 -9
  58. data/sig/revox/internal/util.rbs +4 -0
  59. data/sig/revox/models/assistant_create_params.rbs +844 -11
  60. data/sig/revox/models/assistant_create_response.rbs +860 -3
  61. data/sig/revox/models/assistant_list_response.rbs +860 -3
  62. data/sig/revox/models/assistant_retrieve_response.rbs +859 -3
  63. data/sig/revox/models/assistant_update_params.rbs +844 -11
  64. data/sig/revox/models/assistant_update_response.rbs +886 -6
  65. data/sig/revox/models/call_create_params.rbs +847 -13
  66. data/sig/revox/models/call_create_response.rbs +1514 -34
  67. data/sig/revox/models/call_retrieve_response.rbs +1514 -34
  68. data/sig/revox/models/campaign_create_params.rbs +54 -0
  69. data/sig/revox/models/campaign_create_response.rbs +1034 -6
  70. data/sig/revox/models/campaign_get_rows_params.rbs +2 -64
  71. data/sig/revox/models/campaign_get_rows_response.rbs +1522 -54
  72. data/sig/revox/models/campaign_list_response.rbs +1034 -6
  73. data/sig/revox/models/campaign_retrieve_response.rbs +1034 -6
  74. data/sig/revox/models/users/me_retrieve_response.rbs +8 -3
  75. data/sig/revox/models/users/me_update_response.rbs +8 -3
  76. data/sig/revox/models/voice_list_response.rbs +45 -3
  77. data/sig/revox/models/voice_preview_params.rbs +42 -1
  78. data/sig/revox/models.rbs +0 -2
  79. data/sig/revox/resources/assistants.rbs +56 -2
  80. data/sig/revox/resources/call.rbs +0 -7
  81. data/sig/revox/resources/campaigns.rbs +2 -5
  82. data/sig/revox/resources/voices.rbs +4 -0
  83. metadata +2 -8
  84. data/lib/revox/models/call_list_params.rb +0 -52
  85. data/lib/revox/models/call_list_response.rb +0 -259
  86. data/rbi/revox/models/call_list_params.rbi +0 -94
  87. data/rbi/revox/models/call_list_response.rbi +0 -563
  88. data/sig/revox/models/call_list_params.rbs +0 -63
  89. data/sig/revox/models/call_list_response.rbs +0 -226
@@ -23,13 +23,20 @@ module Revox
23
23
  name: String,
24
24
  organization_id: String,
25
25
  status: Revox::Models::CampaignCreateResponse::Campaign::status,
26
+ type: Revox::Models::CampaignCreateResponse::Campaign::type_,
26
27
  updated_at: top,
28
+ active_takeover_call_id: String?,
27
29
  assistant: Revox::Models::CampaignCreateResponse::Campaign::Assistant,
28
30
  call_retry_config: Revox::Models::CampaignCreateResponse::Campaign::CallRetryConfig?,
31
+ created_by: Revox::Models::CampaignCreateResponse::Campaign::CreatedBy?,
29
32
  from_phone_number: String?,
33
+ funnel_stats: Revox::Models::CampaignCreateResponse::Campaign::FunnelStats,
30
34
  max_concurrent_calls: Float?,
35
+ paused_reason: Revox::Models::CampaignCreateResponse::Campaign::paused_reason?,
36
+ present_count: Float,
31
37
  row_stats: Revox::Models::CampaignCreateResponse::Campaign::RowStats,
32
- scheduled_at: top
38
+ scheduled_at: top,
39
+ structured_output_extraction: Revox::Models::CampaignCreateResponse::Campaign::structured_output_extraction
33
40
  }
34
41
 
35
42
  class Campaign < Revox::Internal::Type::BaseModel
@@ -47,8 +54,12 @@ module Revox
47
54
 
48
55
  attr_accessor status: Revox::Models::CampaignCreateResponse::Campaign::status
49
56
 
57
+ attr_accessor type: Revox::Models::CampaignCreateResponse::Campaign::type_
58
+
50
59
  attr_accessor updated_at: top
51
60
 
61
+ attr_accessor active_takeover_call_id: String?
62
+
52
63
  attr_reader assistant: Revox::Models::CampaignCreateResponse::Campaign::Assistant?
53
64
 
54
65
  def assistant=: (
@@ -57,10 +68,24 @@ module Revox
57
68
 
58
69
  attr_accessor call_retry_config: Revox::Models::CampaignCreateResponse::Campaign::CallRetryConfig?
59
70
 
71
+ attr_accessor created_by: Revox::Models::CampaignCreateResponse::Campaign::CreatedBy?
72
+
60
73
  attr_accessor from_phone_number: String?
61
74
 
75
+ attr_reader funnel_stats: Revox::Models::CampaignCreateResponse::Campaign::FunnelStats?
76
+
77
+ def funnel_stats=: (
78
+ Revox::Models::CampaignCreateResponse::Campaign::FunnelStats
79
+ ) -> Revox::Models::CampaignCreateResponse::Campaign::FunnelStats
80
+
62
81
  attr_accessor max_concurrent_calls: Float?
63
82
 
83
+ attr_accessor paused_reason: Revox::Models::CampaignCreateResponse::Campaign::paused_reason?
84
+
85
+ attr_reader present_count: Float?
86
+
87
+ def present_count=: (Float) -> Float
88
+
64
89
  attr_reader row_stats: Revox::Models::CampaignCreateResponse::Campaign::RowStats?
65
90
 
66
91
  def row_stats=: (
@@ -71,6 +96,12 @@ module Revox
71
96
 
72
97
  def scheduled_at=: (top) -> top
73
98
 
99
+ attr_reader structured_output_extraction: Revox::Models::CampaignCreateResponse::Campaign::structured_output_extraction?
100
+
101
+ def structured_output_extraction=: (
102
+ Revox::Models::CampaignCreateResponse::Campaign::structured_output_extraction
103
+ ) -> Revox::Models::CampaignCreateResponse::Campaign::structured_output_extraction
104
+
74
105
  def initialize: (
75
106
  id: String,
76
107
  assistant_id: String,
@@ -79,13 +110,20 @@ module Revox
79
110
  name: String,
80
111
  organization_id: String,
81
112
  status: Revox::Models::CampaignCreateResponse::Campaign::status,
113
+ type: Revox::Models::CampaignCreateResponse::Campaign::type_,
82
114
  updated_at: top,
115
+ ?active_takeover_call_id: String?,
83
116
  ?assistant: Revox::Models::CampaignCreateResponse::Campaign::Assistant,
84
117
  ?call_retry_config: Revox::Models::CampaignCreateResponse::Campaign::CallRetryConfig?,
118
+ ?created_by: Revox::Models::CampaignCreateResponse::Campaign::CreatedBy?,
85
119
  ?from_phone_number: String?,
120
+ ?funnel_stats: Revox::Models::CampaignCreateResponse::Campaign::FunnelStats,
86
121
  ?max_concurrent_calls: Float?,
122
+ ?paused_reason: Revox::Models::CampaignCreateResponse::Campaign::paused_reason?,
123
+ ?present_count: Float,
87
124
  ?row_stats: Revox::Models::CampaignCreateResponse::Campaign::RowStats,
88
- ?scheduled_at: top
125
+ ?scheduled_at: top,
126
+ ?structured_output_extraction: Revox::Models::CampaignCreateResponse::Campaign::structured_output_extraction
89
127
  ) -> void
90
128
 
91
129
  def to_hash: -> {
@@ -96,13 +134,20 @@ module Revox
96
134
  name: String,
97
135
  organization_id: String,
98
136
  status: Revox::Models::CampaignCreateResponse::Campaign::status,
137
+ type: Revox::Models::CampaignCreateResponse::Campaign::type_,
99
138
  updated_at: top,
139
+ active_takeover_call_id: String?,
100
140
  assistant: Revox::Models::CampaignCreateResponse::Campaign::Assistant,
101
141
  call_retry_config: Revox::Models::CampaignCreateResponse::Campaign::CallRetryConfig?,
142
+ created_by: Revox::Models::CampaignCreateResponse::Campaign::CreatedBy?,
102
143
  from_phone_number: String?,
144
+ funnel_stats: Revox::Models::CampaignCreateResponse::Campaign::FunnelStats,
103
145
  max_concurrent_calls: Float?,
146
+ paused_reason: Revox::Models::CampaignCreateResponse::Campaign::paused_reason?,
147
+ present_count: Float,
104
148
  row_stats: Revox::Models::CampaignCreateResponse::Campaign::RowStats,
105
- scheduled_at: top
149
+ scheduled_at: top,
150
+ structured_output_extraction: Revox::Models::CampaignCreateResponse::Campaign::structured_output_extraction
106
151
  }
107
152
 
108
153
  type status = :draft | :running | :paused | :completed
@@ -118,44 +163,100 @@ module Revox
118
163
  def self?.values: -> ::Array[Revox::Models::CampaignCreateResponse::Campaign::status]
119
164
  end
120
165
 
166
+ type type_ = :regular | :jump_in
167
+
168
+ module Type
169
+ extend Revox::Internal::Type::Enum
170
+
171
+ REGULAR: :regular
172
+ JUMP_IN: :jump_in
173
+
174
+ def self?.values: -> ::Array[Revox::Models::CampaignCreateResponse::Campaign::type_]
175
+ end
176
+
121
177
  type assistant =
122
178
  {
123
179
  id: String,
180
+ after_call_sms_outcomes: ::Array[Revox::Models::CampaignCreateResponse::Campaign::Assistant::after_call_sms_outcome]?,
181
+ after_call_sms_prompt: String?,
124
182
  background_sound: Revox::Models::CampaignCreateResponse::Campaign::Assistant::background_sound?,
183
+ background_sound_volume: Float,
125
184
  calendly: Revox::Models::CampaignCreateResponse::Campaign::Assistant::Calendly?,
126
185
  call_retry_config: Revox::Models::CampaignCreateResponse::Campaign::Assistant::CallRetryConfig?,
186
+ cartesia_dictionary_pronunciation_id: String?,
127
187
  created_at: top,
188
+ custom_tools: ::Array[Revox::Models::CampaignCreateResponse::Campaign::Assistant::CustomTool]?,
189
+ email_notification_address: String?,
190
+ email_notification_language: Revox::Models::CampaignCreateResponse::Campaign::Assistant::email_notification_language,
191
+ email_notification_outcomes: ::Array[Revox::Models::CampaignCreateResponse::Campaign::Assistant::email_notification_outcome]?,
128
192
  end_of_call_sentence: String?,
129
193
  first_sentence: String?,
130
194
  first_sentence_delay_ms: Integer,
131
195
  first_sentence_mode: Revox::Models::CampaignCreateResponse::Campaign::Assistant::first_sentence_mode,
196
+ from_phone_number: String?,
197
+ human_transfer_mode: Revox::Models::CampaignCreateResponse::Campaign::Assistant::human_transfer_mode?,
132
198
  ivr_navigation_enabled: bool,
133
199
  llm_model: Revox::Models::CampaignCreateResponse::Campaign::Assistant::llm_model,
200
+ logo_url: String?,
134
201
  max_call_duration_secs: Float,
202
+ max_duration_end_message: String?,
135
203
  name: String,
136
204
  organization_id: String,
205
+ position: Revox::Models::CampaignCreateResponse::Campaign::Assistant::Position?,
137
206
  prompt: String,
207
+ prompt_flow: Revox::Models::CampaignCreateResponse::Campaign::Assistant::PromptFlow?,
208
+ slack: Revox::Models::CampaignCreateResponse::Campaign::Assistant::Slack?,
209
+ sms_enabled: bool,
210
+ sms_template: String?,
138
211
  structured_output_config: ::Array[Revox::Models::CampaignCreateResponse::Campaign::Assistant::StructuredOutputConfig]?,
212
+ structured_output_prompt: String?,
213
+ stt_context: Revox::Models::CampaignCreateResponse::Campaign::Assistant::SttContext?,
214
+ stt_model: Revox::Models::CampaignCreateResponse::Campaign::Assistant::stt_model,
215
+ thinking_sound: Revox::Models::CampaignCreateResponse::Campaign::Assistant::thinking_sound?,
216
+ thinking_sound_probability: Float,
217
+ thinking_sound_volume: Float,
139
218
  transfer_phone_number: String?,
219
+ type: Revox::Models::CampaignCreateResponse::Campaign::Assistant::type_,
140
220
  updated_at: top,
141
221
  voice: Revox::Models::CampaignCreateResponse::Campaign::Assistant::Voice?,
142
222
  voicemail_message: String?,
223
+ voicemail_sms_prompt: String?,
224
+ warm_transfer_summary_instructions: String?,
143
225
  webhook_url: String?,
226
+ zoho: Revox::Models::CampaignCreateResponse::Campaign::Assistant::Zoho?,
227
+ created_by: Revox::Models::CampaignCreateResponse::Campaign::Assistant::CreatedBy?,
144
228
  faq_items: ::Array[Revox::Models::CampaignCreateResponse::Campaign::Assistant::FaqItem],
229
+ is_realestate_assistant: bool,
145
230
  pending_faq_count: Float
146
231
  }
147
232
 
148
233
  class Assistant < Revox::Internal::Type::BaseModel
149
234
  attr_accessor id: String
150
235
 
236
+ attr_accessor after_call_sms_outcomes: ::Array[Revox::Models::CampaignCreateResponse::Campaign::Assistant::after_call_sms_outcome]?
237
+
238
+ attr_accessor after_call_sms_prompt: String?
239
+
151
240
  attr_accessor background_sound: Revox::Models::CampaignCreateResponse::Campaign::Assistant::background_sound?
152
241
 
242
+ attr_accessor background_sound_volume: Float
243
+
153
244
  attr_accessor calendly: Revox::Models::CampaignCreateResponse::Campaign::Assistant::Calendly?
154
245
 
155
246
  attr_accessor call_retry_config: Revox::Models::CampaignCreateResponse::Campaign::Assistant::CallRetryConfig?
156
247
 
248
+ attr_accessor cartesia_dictionary_pronunciation_id: String?
249
+
157
250
  attr_accessor created_at: top
158
251
 
252
+ attr_accessor custom_tools: ::Array[Revox::Models::CampaignCreateResponse::Campaign::Assistant::CustomTool]?
253
+
254
+ attr_accessor email_notification_address: String?
255
+
256
+ attr_accessor email_notification_language: Revox::Models::CampaignCreateResponse::Campaign::Assistant::email_notification_language
257
+
258
+ attr_accessor email_notification_outcomes: ::Array[Revox::Models::CampaignCreateResponse::Campaign::Assistant::email_notification_outcome]?
259
+
159
260
  attr_accessor end_of_call_sentence: String?
160
261
 
161
262
  attr_accessor first_sentence: String?
@@ -164,92 +265,219 @@ module Revox
164
265
 
165
266
  attr_accessor first_sentence_mode: Revox::Models::CampaignCreateResponse::Campaign::Assistant::first_sentence_mode
166
267
 
268
+ attr_accessor from_phone_number: String?
269
+
270
+ attr_accessor human_transfer_mode: Revox::Models::CampaignCreateResponse::Campaign::Assistant::human_transfer_mode?
271
+
167
272
  attr_accessor ivr_navigation_enabled: bool
168
273
 
169
274
  attr_accessor llm_model: Revox::Models::CampaignCreateResponse::Campaign::Assistant::llm_model
170
275
 
276
+ attr_accessor logo_url: String?
277
+
171
278
  attr_accessor max_call_duration_secs: Float
172
279
 
280
+ attr_accessor max_duration_end_message: String?
281
+
173
282
  attr_accessor name: String
174
283
 
175
284
  attr_accessor organization_id: String
176
285
 
286
+ attr_accessor position: Revox::Models::CampaignCreateResponse::Campaign::Assistant::Position?
287
+
177
288
  attr_accessor prompt: String
178
289
 
290
+ attr_accessor prompt_flow: Revox::Models::CampaignCreateResponse::Campaign::Assistant::PromptFlow?
291
+
292
+ attr_accessor slack: Revox::Models::CampaignCreateResponse::Campaign::Assistant::Slack?
293
+
294
+ attr_accessor sms_enabled: bool
295
+
296
+ attr_accessor sms_template: String?
297
+
179
298
  attr_accessor structured_output_config: ::Array[Revox::Models::CampaignCreateResponse::Campaign::Assistant::StructuredOutputConfig]?
180
299
 
300
+ attr_accessor structured_output_prompt: String?
301
+
302
+ attr_accessor stt_context: Revox::Models::CampaignCreateResponse::Campaign::Assistant::SttContext?
303
+
304
+ attr_accessor stt_model: Revox::Models::CampaignCreateResponse::Campaign::Assistant::stt_model
305
+
306
+ attr_accessor thinking_sound: Revox::Models::CampaignCreateResponse::Campaign::Assistant::thinking_sound?
307
+
308
+ attr_accessor thinking_sound_probability: Float
309
+
310
+ attr_accessor thinking_sound_volume: Float
311
+
181
312
  attr_accessor transfer_phone_number: String?
182
313
 
314
+ attr_accessor type: Revox::Models::CampaignCreateResponse::Campaign::Assistant::type_
315
+
183
316
  attr_accessor updated_at: top
184
317
 
185
318
  attr_accessor voice: Revox::Models::CampaignCreateResponse::Campaign::Assistant::Voice?
186
319
 
187
320
  attr_accessor voicemail_message: String?
188
321
 
322
+ attr_accessor voicemail_sms_prompt: String?
323
+
324
+ attr_accessor warm_transfer_summary_instructions: String?
325
+
189
326
  attr_accessor webhook_url: String?
190
327
 
328
+ attr_accessor zoho: Revox::Models::CampaignCreateResponse::Campaign::Assistant::Zoho?
329
+
330
+ attr_accessor created_by: Revox::Models::CampaignCreateResponse::Campaign::Assistant::CreatedBy?
331
+
191
332
  attr_reader faq_items: ::Array[Revox::Models::CampaignCreateResponse::Campaign::Assistant::FaqItem]?
192
333
 
193
334
  def faq_items=: (
194
335
  ::Array[Revox::Models::CampaignCreateResponse::Campaign::Assistant::FaqItem]
195
336
  ) -> ::Array[Revox::Models::CampaignCreateResponse::Campaign::Assistant::FaqItem]
196
337
 
338
+ attr_reader is_realestate_assistant: bool?
339
+
340
+ def is_realestate_assistant=: (bool) -> bool
341
+
197
342
  attr_reader pending_faq_count: Float?
198
343
 
199
344
  def pending_faq_count=: (Float) -> Float
200
345
 
201
346
  def initialize: (
202
347
  id: String,
348
+ after_call_sms_outcomes: ::Array[Revox::Models::CampaignCreateResponse::Campaign::Assistant::after_call_sms_outcome]?,
349
+ after_call_sms_prompt: String?,
203
350
  background_sound: Revox::Models::CampaignCreateResponse::Campaign::Assistant::background_sound?,
351
+ background_sound_volume: Float,
204
352
  calendly: Revox::Models::CampaignCreateResponse::Campaign::Assistant::Calendly?,
205
353
  call_retry_config: Revox::Models::CampaignCreateResponse::Campaign::Assistant::CallRetryConfig?,
354
+ cartesia_dictionary_pronunciation_id: String?,
206
355
  created_at: top,
356
+ custom_tools: ::Array[Revox::Models::CampaignCreateResponse::Campaign::Assistant::CustomTool]?,
357
+ email_notification_address: String?,
358
+ email_notification_language: Revox::Models::CampaignCreateResponse::Campaign::Assistant::email_notification_language,
359
+ email_notification_outcomes: ::Array[Revox::Models::CampaignCreateResponse::Campaign::Assistant::email_notification_outcome]?,
207
360
  end_of_call_sentence: String?,
208
361
  first_sentence: String?,
209
362
  first_sentence_delay_ms: Integer,
210
363
  first_sentence_mode: Revox::Models::CampaignCreateResponse::Campaign::Assistant::first_sentence_mode,
364
+ from_phone_number: String?,
365
+ human_transfer_mode: Revox::Models::CampaignCreateResponse::Campaign::Assistant::human_transfer_mode?,
211
366
  ivr_navigation_enabled: bool,
212
367
  llm_model: Revox::Models::CampaignCreateResponse::Campaign::Assistant::llm_model,
368
+ logo_url: String?,
213
369
  max_call_duration_secs: Float,
370
+ max_duration_end_message: String?,
214
371
  name: String,
215
372
  organization_id: String,
373
+ position: Revox::Models::CampaignCreateResponse::Campaign::Assistant::Position?,
216
374
  prompt: String,
375
+ prompt_flow: Revox::Models::CampaignCreateResponse::Campaign::Assistant::PromptFlow?,
376
+ slack: Revox::Models::CampaignCreateResponse::Campaign::Assistant::Slack?,
377
+ sms_enabled: bool,
378
+ sms_template: String?,
217
379
  structured_output_config: ::Array[Revox::Models::CampaignCreateResponse::Campaign::Assistant::StructuredOutputConfig]?,
380
+ structured_output_prompt: String?,
381
+ stt_context: Revox::Models::CampaignCreateResponse::Campaign::Assistant::SttContext?,
382
+ stt_model: Revox::Models::CampaignCreateResponse::Campaign::Assistant::stt_model,
383
+ thinking_sound: Revox::Models::CampaignCreateResponse::Campaign::Assistant::thinking_sound?,
384
+ thinking_sound_probability: Float,
385
+ thinking_sound_volume: Float,
218
386
  transfer_phone_number: String?,
387
+ type: Revox::Models::CampaignCreateResponse::Campaign::Assistant::type_,
219
388
  updated_at: top,
220
389
  voice: Revox::Models::CampaignCreateResponse::Campaign::Assistant::Voice?,
221
390
  voicemail_message: String?,
391
+ voicemail_sms_prompt: String?,
392
+ warm_transfer_summary_instructions: String?,
222
393
  webhook_url: String?,
394
+ zoho: Revox::Models::CampaignCreateResponse::Campaign::Assistant::Zoho?,
395
+ ?created_by: Revox::Models::CampaignCreateResponse::Campaign::Assistant::CreatedBy?,
223
396
  ?faq_items: ::Array[Revox::Models::CampaignCreateResponse::Campaign::Assistant::FaqItem],
397
+ ?is_realestate_assistant: bool,
224
398
  ?pending_faq_count: Float
225
399
  ) -> void
226
400
 
227
401
  def to_hash: -> {
228
402
  id: String,
403
+ after_call_sms_outcomes: ::Array[Revox::Models::CampaignCreateResponse::Campaign::Assistant::after_call_sms_outcome]?,
404
+ after_call_sms_prompt: String?,
229
405
  background_sound: Revox::Models::CampaignCreateResponse::Campaign::Assistant::background_sound?,
406
+ background_sound_volume: Float,
230
407
  calendly: Revox::Models::CampaignCreateResponse::Campaign::Assistant::Calendly?,
231
408
  call_retry_config: Revox::Models::CampaignCreateResponse::Campaign::Assistant::CallRetryConfig?,
409
+ cartesia_dictionary_pronunciation_id: String?,
232
410
  created_at: top,
411
+ custom_tools: ::Array[Revox::Models::CampaignCreateResponse::Campaign::Assistant::CustomTool]?,
412
+ email_notification_address: String?,
413
+ email_notification_language: Revox::Models::CampaignCreateResponse::Campaign::Assistant::email_notification_language,
414
+ email_notification_outcomes: ::Array[Revox::Models::CampaignCreateResponse::Campaign::Assistant::email_notification_outcome]?,
233
415
  end_of_call_sentence: String?,
234
416
  first_sentence: String?,
235
417
  first_sentence_delay_ms: Integer,
236
418
  first_sentence_mode: Revox::Models::CampaignCreateResponse::Campaign::Assistant::first_sentence_mode,
419
+ from_phone_number: String?,
420
+ human_transfer_mode: Revox::Models::CampaignCreateResponse::Campaign::Assistant::human_transfer_mode?,
237
421
  ivr_navigation_enabled: bool,
238
422
  llm_model: Revox::Models::CampaignCreateResponse::Campaign::Assistant::llm_model,
423
+ logo_url: String?,
239
424
  max_call_duration_secs: Float,
425
+ max_duration_end_message: String?,
240
426
  name: String,
241
427
  organization_id: String,
428
+ position: Revox::Models::CampaignCreateResponse::Campaign::Assistant::Position?,
242
429
  prompt: String,
430
+ prompt_flow: Revox::Models::CampaignCreateResponse::Campaign::Assistant::PromptFlow?,
431
+ slack: Revox::Models::CampaignCreateResponse::Campaign::Assistant::Slack?,
432
+ sms_enabled: bool,
433
+ sms_template: String?,
243
434
  structured_output_config: ::Array[Revox::Models::CampaignCreateResponse::Campaign::Assistant::StructuredOutputConfig]?,
435
+ structured_output_prompt: String?,
436
+ stt_context: Revox::Models::CampaignCreateResponse::Campaign::Assistant::SttContext?,
437
+ stt_model: Revox::Models::CampaignCreateResponse::Campaign::Assistant::stt_model,
438
+ thinking_sound: Revox::Models::CampaignCreateResponse::Campaign::Assistant::thinking_sound?,
439
+ thinking_sound_probability: Float,
440
+ thinking_sound_volume: Float,
244
441
  transfer_phone_number: String?,
442
+ type: Revox::Models::CampaignCreateResponse::Campaign::Assistant::type_,
245
443
  updated_at: top,
246
444
  voice: Revox::Models::CampaignCreateResponse::Campaign::Assistant::Voice?,
247
445
  voicemail_message: String?,
446
+ voicemail_sms_prompt: String?,
447
+ warm_transfer_summary_instructions: String?,
248
448
  webhook_url: String?,
449
+ zoho: Revox::Models::CampaignCreateResponse::Campaign::Assistant::Zoho?,
450
+ created_by: Revox::Models::CampaignCreateResponse::Campaign::Assistant::CreatedBy?,
249
451
  faq_items: ::Array[Revox::Models::CampaignCreateResponse::Campaign::Assistant::FaqItem],
452
+ is_realestate_assistant: bool,
250
453
  pending_faq_count: Float
251
454
  }
252
455
 
456
+ type after_call_sms_outcome =
457
+ :not_interested
458
+ | :interested
459
+ | :completed
460
+ | :requested_callback_later
461
+ | :requested_callback_new_number
462
+ | :do_not_contact
463
+ | :ai_averse
464
+ | :none
465
+
466
+ module AfterCallSMSOutcome
467
+ extend Revox::Internal::Type::Enum
468
+
469
+ NOT_INTERESTED: :not_interested
470
+ INTERESTED: :interested
471
+ COMPLETED: :completed
472
+ REQUESTED_CALLBACK_LATER: :requested_callback_later
473
+ REQUESTED_CALLBACK_NEW_NUMBER: :requested_callback_new_number
474
+ DO_NOT_CONTACT: :do_not_contact
475
+ AI_AVERSE: :ai_averse
476
+ NONE: :none
477
+
478
+ def self?.values: -> ::Array[Revox::Models::CampaignCreateResponse::Campaign::Assistant::after_call_sms_outcome]
479
+ end
480
+
253
481
  type background_sound = :"audio/office.ogg"
254
482
 
255
483
  module BackgroundSound
@@ -277,12 +505,18 @@ module Revox
277
505
 
278
506
  type call_retry_config =
279
507
  {
508
+ allowed_days: ::Array[Revox::Models::CampaignCreateResponse::Campaign::Assistant::CallRetryConfig::allowed_day],
509
+ call_twice_in_a_row: bool,
280
510
  calling_windows: ::Array[Revox::Models::CampaignCreateResponse::Campaign::Assistant::CallRetryConfig::CallingWindow],
281
511
  max_retry_attempts: Integer,
282
512
  timezone: String?
283
513
  }
284
514
 
285
515
  class CallRetryConfig < Revox::Internal::Type::BaseModel
516
+ attr_accessor allowed_days: ::Array[Revox::Models::CampaignCreateResponse::Campaign::Assistant::CallRetryConfig::allowed_day]
517
+
518
+ attr_accessor call_twice_in_a_row: bool
519
+
286
520
  attr_accessor calling_windows: ::Array[Revox::Models::CampaignCreateResponse::Campaign::Assistant::CallRetryConfig::CallingWindow]
287
521
 
288
522
  attr_accessor max_retry_attempts: Integer
@@ -290,17 +524,44 @@ module Revox
290
524
  attr_accessor timezone: String?
291
525
 
292
526
  def initialize: (
527
+ allowed_days: ::Array[Revox::Models::CampaignCreateResponse::Campaign::Assistant::CallRetryConfig::allowed_day],
528
+ call_twice_in_a_row: bool,
293
529
  calling_windows: ::Array[Revox::Models::CampaignCreateResponse::Campaign::Assistant::CallRetryConfig::CallingWindow],
294
530
  max_retry_attempts: Integer,
295
531
  ?timezone: String?
296
532
  ) -> void
297
533
 
298
534
  def to_hash: -> {
535
+ allowed_days: ::Array[Revox::Models::CampaignCreateResponse::Campaign::Assistant::CallRetryConfig::allowed_day],
536
+ call_twice_in_a_row: bool,
299
537
  calling_windows: ::Array[Revox::Models::CampaignCreateResponse::Campaign::Assistant::CallRetryConfig::CallingWindow],
300
538
  max_retry_attempts: Integer,
301
539
  timezone: String?
302
540
  }
303
541
 
542
+ type allowed_day =
543
+ :monday
544
+ | :tuesday
545
+ | :wednesday
546
+ | :thursday
547
+ | :friday
548
+ | :saturday
549
+ | :sunday
550
+
551
+ module AllowedDay
552
+ extend Revox::Internal::Type::Enum
553
+
554
+ MONDAY: :monday
555
+ TUESDAY: :tuesday
556
+ WEDNESDAY: :wednesday
557
+ THURSDAY: :thursday
558
+ FRIDAY: :friday
559
+ SATURDAY: :saturday
560
+ SUNDAY: :sunday
561
+
562
+ def self?.values: -> ::Array[Revox::Models::CampaignCreateResponse::Campaign::Assistant::CallRetryConfig::allowed_day]
563
+ end
564
+
304
565
  type calling_window =
305
566
  {
306
567
  calling_window_end_time: String,
@@ -329,6 +590,189 @@ module Revox
329
590
  end
330
591
  end
331
592
 
593
+ type custom_tool =
594
+ {
595
+ body_template: String?,
596
+ description: String,
597
+ headers: ::Array[Revox::Models::CampaignCreateResponse::Campaign::Assistant::CustomTool::Header],
598
+ input_schema: ::Array[Revox::Models::CampaignCreateResponse::Campaign::Assistant::CustomTool::InputSchema],
599
+ method_: Revox::Models::CampaignCreateResponse::Campaign::Assistant::CustomTool::method_,
600
+ name: String,
601
+ query_params: ::Array[Revox::Models::CampaignCreateResponse::Campaign::Assistant::CustomTool::QueryParam],
602
+ url: String
603
+ }
604
+
605
+ class CustomTool < Revox::Internal::Type::BaseModel
606
+ attr_accessor body_template: String?
607
+
608
+ attr_accessor description: String
609
+
610
+ attr_accessor headers: ::Array[Revox::Models::CampaignCreateResponse::Campaign::Assistant::CustomTool::Header]
611
+
612
+ attr_accessor input_schema: ::Array[Revox::Models::CampaignCreateResponse::Campaign::Assistant::CustomTool::InputSchema]
613
+
614
+ attr_accessor method_: Revox::Models::CampaignCreateResponse::Campaign::Assistant::CustomTool::method_
615
+
616
+ attr_accessor name: String
617
+
618
+ attr_accessor query_params: ::Array[Revox::Models::CampaignCreateResponse::Campaign::Assistant::CustomTool::QueryParam]
619
+
620
+ attr_accessor url: String
621
+
622
+ def initialize: (
623
+ body_template: String?,
624
+ description: String,
625
+ headers: ::Array[Revox::Models::CampaignCreateResponse::Campaign::Assistant::CustomTool::Header],
626
+ input_schema: ::Array[Revox::Models::CampaignCreateResponse::Campaign::Assistant::CustomTool::InputSchema],
627
+ method_: Revox::Models::CampaignCreateResponse::Campaign::Assistant::CustomTool::method_,
628
+ name: String,
629
+ query_params: ::Array[Revox::Models::CampaignCreateResponse::Campaign::Assistant::CustomTool::QueryParam],
630
+ url: String
631
+ ) -> void
632
+
633
+ def to_hash: -> {
634
+ body_template: String?,
635
+ description: String,
636
+ headers: ::Array[Revox::Models::CampaignCreateResponse::Campaign::Assistant::CustomTool::Header],
637
+ input_schema: ::Array[Revox::Models::CampaignCreateResponse::Campaign::Assistant::CustomTool::InputSchema],
638
+ method_: Revox::Models::CampaignCreateResponse::Campaign::Assistant::CustomTool::method_,
639
+ name: String,
640
+ query_params: ::Array[Revox::Models::CampaignCreateResponse::Campaign::Assistant::CustomTool::QueryParam],
641
+ url: String
642
+ }
643
+
644
+ type header = { key: String, value: String }
645
+
646
+ class Header < Revox::Internal::Type::BaseModel
647
+ attr_accessor key: String
648
+
649
+ attr_accessor value: String
650
+
651
+ def initialize: (key: String, value: String) -> void
652
+
653
+ def to_hash: -> { key: String, value: String }
654
+ end
655
+
656
+ type input_schema =
657
+ {
658
+ name: String,
659
+ required: bool,
660
+ type: Revox::Models::CampaignCreateResponse::Campaign::Assistant::CustomTool::InputSchema::type_,
661
+ description: String,
662
+ enum_options: ::Array[String]
663
+ }
664
+
665
+ class InputSchema < Revox::Internal::Type::BaseModel
666
+ attr_accessor name: String
667
+
668
+ attr_accessor required: bool
669
+
670
+ attr_accessor type: Revox::Models::CampaignCreateResponse::Campaign::Assistant::CustomTool::InputSchema::type_
671
+
672
+ attr_reader description: String?
673
+
674
+ def description=: (String) -> String
675
+
676
+ attr_reader enum_options: ::Array[String]?
677
+
678
+ def enum_options=: (::Array[String]) -> ::Array[String]
679
+
680
+ def initialize: (
681
+ name: String,
682
+ required: bool,
683
+ type: Revox::Models::CampaignCreateResponse::Campaign::Assistant::CustomTool::InputSchema::type_,
684
+ ?description: String,
685
+ ?enum_options: ::Array[String]
686
+ ) -> void
687
+
688
+ def to_hash: -> {
689
+ name: String,
690
+ required: bool,
691
+ type: Revox::Models::CampaignCreateResponse::Campaign::Assistant::CustomTool::InputSchema::type_,
692
+ description: String,
693
+ enum_options: ::Array[String]
694
+ }
695
+
696
+ type type_ =
697
+ :string | :number | :boolean | :enum | :date | :datetime
698
+
699
+ module Type
700
+ extend Revox::Internal::Type::Enum
701
+
702
+ STRING: :string
703
+ NUMBER: :number
704
+ BOOLEAN: :boolean
705
+ ENUM: :enum
706
+ DATE: :date
707
+ DATETIME: :datetime
708
+
709
+ def self?.values: -> ::Array[Revox::Models::CampaignCreateResponse::Campaign::Assistant::CustomTool::InputSchema::type_]
710
+ end
711
+ end
712
+
713
+ type method_ = :GET | :POST | :PUT | :PATCH | :DELETE
714
+
715
+ module Method
716
+ extend Revox::Internal::Type::Enum
717
+
718
+ GET: :GET
719
+ POST: :POST
720
+ PUT: :PUT
721
+ PATCH: :PATCH
722
+ DELETE: :DELETE
723
+
724
+ def self?.values: -> ::Array[Revox::Models::CampaignCreateResponse::Campaign::Assistant::CustomTool::method_]
725
+ end
726
+
727
+ type query_param = { key: String, value: String }
728
+
729
+ class QueryParam < Revox::Internal::Type::BaseModel
730
+ attr_accessor key: String
731
+
732
+ attr_accessor value: String
733
+
734
+ def initialize: (key: String, value: String) -> void
735
+
736
+ def to_hash: -> { key: String, value: String }
737
+ end
738
+ end
739
+
740
+ type email_notification_language = :en | :fr
741
+
742
+ module EmailNotificationLanguage
743
+ extend Revox::Internal::Type::Enum
744
+
745
+ EN: :en
746
+ FR: :fr
747
+
748
+ def self?.values: -> ::Array[Revox::Models::CampaignCreateResponse::Campaign::Assistant::email_notification_language]
749
+ end
750
+
751
+ type email_notification_outcome =
752
+ :not_interested
753
+ | :interested
754
+ | :completed
755
+ | :requested_callback_later
756
+ | :requested_callback_new_number
757
+ | :do_not_contact
758
+ | :ai_averse
759
+ | :none
760
+
761
+ module EmailNotificationOutcome
762
+ extend Revox::Internal::Type::Enum
763
+
764
+ NOT_INTERESTED: :not_interested
765
+ INTERESTED: :interested
766
+ COMPLETED: :completed
767
+ REQUESTED_CALLBACK_LATER: :requested_callback_later
768
+ REQUESTED_CALLBACK_NEW_NUMBER: :requested_callback_new_number
769
+ DO_NOT_CONTACT: :do_not_contact
770
+ AI_AVERSE: :ai_averse
771
+ NONE: :none
772
+
773
+ def self?.values: -> ::Array[Revox::Models::CampaignCreateResponse::Campaign::Assistant::email_notification_outcome]
774
+ end
775
+
332
776
  type first_sentence_mode = :generated | :static | :none
333
777
 
334
778
  module FirstSentenceMode
@@ -341,9 +785,22 @@ module Revox
341
785
  def self?.values: -> ::Array[Revox::Models::CampaignCreateResponse::Campaign::Assistant::first_sentence_mode]
342
786
  end
343
787
 
788
+ type human_transfer_mode = :warm | :cold
789
+
790
+ module HumanTransferMode
791
+ extend Revox::Internal::Type::Enum
792
+
793
+ WARM: :warm
794
+ COLD: :cold
795
+
796
+ def self?.values: -> ::Array[Revox::Models::CampaignCreateResponse::Campaign::Assistant::human_transfer_mode]
797
+ end
798
+
344
799
  type llm_model =
345
800
  Revox::Models::CampaignCreateResponse::Campaign::Assistant::LlmModel::UnionMember0
346
801
  | Revox::Models::CampaignCreateResponse::Campaign::Assistant::LlmModel::UnionMember1
802
+ | Revox::Models::CampaignCreateResponse::Campaign::Assistant::LlmModel::UnionMember2
803
+ | Revox::Models::CampaignCreateResponse::Campaign::Assistant::LlmModel::UnionMember3
347
804
 
348
805
  module LlmModel
349
806
  extend Revox::Internal::Type::Union
@@ -408,9 +865,256 @@ module Revox
408
865
  }
409
866
  end
410
867
 
868
+ type union_member2 =
869
+ {
870
+ api_key: String,
871
+ api_url: String,
872
+ model_name: String,
873
+ type: :custom
874
+ }
875
+
876
+ class UnionMember2 < Revox::Internal::Type::BaseModel
877
+ attr_accessor api_key: String
878
+
879
+ attr_accessor api_url: String
880
+
881
+ attr_accessor model_name: String
882
+
883
+ attr_accessor type: :custom
884
+
885
+ def initialize: (
886
+ api_key: String,
887
+ api_url: String,
888
+ model_name: String,
889
+ ?type: :custom
890
+ ) -> void
891
+
892
+ def to_hash: -> {
893
+ api_key: String,
894
+ api_url: String,
895
+ model_name: String,
896
+ type: :custom
897
+ }
898
+ end
899
+
900
+ type union_member3 =
901
+ {
902
+ provider: Revox::Models::CampaignCreateResponse::Campaign::Assistant::LlmModel::UnionMember3::provider,
903
+ realtime_model_id: String,
904
+ type: :realtime,
905
+ realtime_voice_id: String
906
+ }
907
+
908
+ class UnionMember3 < Revox::Internal::Type::BaseModel
909
+ attr_accessor provider: Revox::Models::CampaignCreateResponse::Campaign::Assistant::LlmModel::UnionMember3::provider
910
+
911
+ attr_accessor realtime_model_id: String
912
+
913
+ attr_accessor type: :realtime
914
+
915
+ attr_reader realtime_voice_id: String?
916
+
917
+ def realtime_voice_id=: (String) -> String
918
+
919
+ def initialize: (
920
+ provider: Revox::Models::CampaignCreateResponse::Campaign::Assistant::LlmModel::UnionMember3::provider,
921
+ realtime_model_id: String,
922
+ ?realtime_voice_id: String,
923
+ ?type: :realtime
924
+ ) -> void
925
+
926
+ def to_hash: -> {
927
+ provider: Revox::Models::CampaignCreateResponse::Campaign::Assistant::LlmModel::UnionMember3::provider,
928
+ realtime_model_id: String,
929
+ type: :realtime,
930
+ realtime_voice_id: String
931
+ }
932
+
933
+ type provider = :openai | :google
934
+
935
+ module Provider
936
+ extend Revox::Internal::Type::Enum
937
+
938
+ OPENAI: :openai
939
+ GOOGLE: :google
940
+
941
+ def self?.values: -> ::Array[Revox::Models::CampaignCreateResponse::Campaign::Assistant::LlmModel::UnionMember3::provider]
942
+ end
943
+ end
944
+
411
945
  def self?.variants: -> ::Array[Revox::Models::CampaignCreateResponse::Campaign::Assistant::llm_model]
412
946
  end
413
947
 
948
+ type position = { x: Float, y_: Float }
949
+
950
+ class Position < Revox::Internal::Type::BaseModel
951
+ attr_accessor x: Float
952
+
953
+ attr_accessor y_: Float
954
+
955
+ def initialize: (x: Float, y_: Float) -> void
956
+
957
+ def to_hash: -> { x: Float, y_: Float }
958
+ end
959
+
960
+ type prompt_flow =
961
+ {
962
+ edges: ::Array[Revox::Models::CampaignCreateResponse::Campaign::Assistant::PromptFlow::Edge],
963
+ nodes: ::Array[Revox::Models::CampaignCreateResponse::Campaign::Assistant::PromptFlow::Node]
964
+ }
965
+
966
+ class PromptFlow < Revox::Internal::Type::BaseModel
967
+ attr_accessor edges: ::Array[Revox::Models::CampaignCreateResponse::Campaign::Assistant::PromptFlow::Edge]
968
+
969
+ attr_accessor nodes: ::Array[Revox::Models::CampaignCreateResponse::Campaign::Assistant::PromptFlow::Node]
970
+
971
+ def initialize: (
972
+ edges: ::Array[Revox::Models::CampaignCreateResponse::Campaign::Assistant::PromptFlow::Edge],
973
+ nodes: ::Array[Revox::Models::CampaignCreateResponse::Campaign::Assistant::PromptFlow::Node]
974
+ ) -> void
975
+
976
+ def to_hash: -> {
977
+ edges: ::Array[Revox::Models::CampaignCreateResponse::Campaign::Assistant::PromptFlow::Edge],
978
+ nodes: ::Array[Revox::Models::CampaignCreateResponse::Campaign::Assistant::PromptFlow::Node]
979
+ }
980
+
981
+ type edge = { id: String, source: String, target: String }
982
+
983
+ class Edge < Revox::Internal::Type::BaseModel
984
+ attr_accessor id: String
985
+
986
+ attr_accessor source: String
987
+
988
+ attr_accessor target: String
989
+
990
+ def initialize: (
991
+ id: String,
992
+ source: String,
993
+ target: String
994
+ ) -> void
995
+
996
+ def to_hash: -> { id: String, source: String, target: String }
997
+ end
998
+
999
+ type node =
1000
+ {
1001
+ id: String,
1002
+ data: Revox::Models::CampaignCreateResponse::Campaign::Assistant::PromptFlow::Node::Data,
1003
+ position: Revox::Models::CampaignCreateResponse::Campaign::Assistant::PromptFlow::Node::Position,
1004
+ type: :promptBlock
1005
+ }
1006
+
1007
+ class Node < Revox::Internal::Type::BaseModel
1008
+ attr_accessor id: String
1009
+
1010
+ attr_accessor data: Revox::Models::CampaignCreateResponse::Campaign::Assistant::PromptFlow::Node::Data
1011
+
1012
+ attr_accessor position: Revox::Models::CampaignCreateResponse::Campaign::Assistant::PromptFlow::Node::Position
1013
+
1014
+ attr_accessor type: :promptBlock
1015
+
1016
+ def initialize: (
1017
+ id: String,
1018
+ data: Revox::Models::CampaignCreateResponse::Campaign::Assistant::PromptFlow::Node::Data,
1019
+ position: Revox::Models::CampaignCreateResponse::Campaign::Assistant::PromptFlow::Node::Position,
1020
+ ?type: :promptBlock
1021
+ ) -> void
1022
+
1023
+ def to_hash: -> {
1024
+ id: String,
1025
+ data: Revox::Models::CampaignCreateResponse::Campaign::Assistant::PromptFlow::Node::Data,
1026
+ position: Revox::Models::CampaignCreateResponse::Campaign::Assistant::PromptFlow::Node::Position,
1027
+ type: :promptBlock
1028
+ }
1029
+
1030
+ type data = { body: String, title: String }
1031
+
1032
+ class Data < Revox::Internal::Type::BaseModel
1033
+ attr_accessor body: String
1034
+
1035
+ attr_accessor title: String
1036
+
1037
+ def initialize: (body: String, title: String) -> void
1038
+
1039
+ def to_hash: -> { body: String, title: String }
1040
+ end
1041
+
1042
+ type position = { x: Float, y_: Float }
1043
+
1044
+ class Position < Revox::Internal::Type::BaseModel
1045
+ attr_accessor x: Float
1046
+
1047
+ attr_accessor y_: Float
1048
+
1049
+ def initialize: (x: Float, y_: Float) -> void
1050
+
1051
+ def to_hash: -> { x: Float, y_: Float }
1052
+ end
1053
+ end
1054
+ end
1055
+
1056
+ type slack =
1057
+ {
1058
+ channel_id: String,
1059
+ connection_id: String,
1060
+ outcomes: ::Array[Revox::Models::CampaignCreateResponse::Campaign::Assistant::Slack::outcome],
1061
+ channel_name: String?,
1062
+ template: String?
1063
+ }
1064
+
1065
+ class Slack < Revox::Internal::Type::BaseModel
1066
+ attr_accessor channel_id: String
1067
+
1068
+ attr_accessor connection_id: String
1069
+
1070
+ attr_accessor outcomes: ::Array[Revox::Models::CampaignCreateResponse::Campaign::Assistant::Slack::outcome]
1071
+
1072
+ attr_accessor channel_name: String?
1073
+
1074
+ attr_accessor template: String?
1075
+
1076
+ def initialize: (
1077
+ channel_id: String,
1078
+ connection_id: String,
1079
+ outcomes: ::Array[Revox::Models::CampaignCreateResponse::Campaign::Assistant::Slack::outcome],
1080
+ ?channel_name: String?,
1081
+ ?template: String?
1082
+ ) -> void
1083
+
1084
+ def to_hash: -> {
1085
+ channel_id: String,
1086
+ connection_id: String,
1087
+ outcomes: ::Array[Revox::Models::CampaignCreateResponse::Campaign::Assistant::Slack::outcome],
1088
+ channel_name: String?,
1089
+ template: String?
1090
+ }
1091
+
1092
+ type outcome =
1093
+ :not_interested
1094
+ | :interested
1095
+ | :completed
1096
+ | :requested_callback_later
1097
+ | :requested_callback_new_number
1098
+ | :do_not_contact
1099
+ | :ai_averse
1100
+ | :none
1101
+
1102
+ module Outcome
1103
+ extend Revox::Internal::Type::Enum
1104
+
1105
+ NOT_INTERESTED: :not_interested
1106
+ INTERESTED: :interested
1107
+ COMPLETED: :completed
1108
+ REQUESTED_CALLBACK_LATER: :requested_callback_later
1109
+ REQUESTED_CALLBACK_NEW_NUMBER: :requested_callback_new_number
1110
+ DO_NOT_CONTACT: :do_not_contact
1111
+ AI_AVERSE: :ai_averse
1112
+ NONE: :none
1113
+
1114
+ def self?.values: -> ::Array[Revox::Models::CampaignCreateResponse::Campaign::Assistant::Slack::outcome]
1115
+ end
1116
+ end
1117
+
414
1118
  type structured_output_config =
415
1119
  {
416
1120
  name: String,
@@ -468,11 +1172,93 @@ module Revox
468
1172
  end
469
1173
  end
470
1174
 
1175
+ type stt_context =
1176
+ {
1177
+ general: ::Array[Revox::Models::CampaignCreateResponse::Campaign::Assistant::SttContext::General],
1178
+ terms: ::Array[String]
1179
+ }
1180
+
1181
+ class SttContext < Revox::Internal::Type::BaseModel
1182
+ attr_accessor general: ::Array[Revox::Models::CampaignCreateResponse::Campaign::Assistant::SttContext::General]
1183
+
1184
+ attr_accessor terms: ::Array[String]
1185
+
1186
+ def initialize: (
1187
+ general: ::Array[Revox::Models::CampaignCreateResponse::Campaign::Assistant::SttContext::General],
1188
+ terms: ::Array[String]
1189
+ ) -> void
1190
+
1191
+ def to_hash: -> {
1192
+ general: ::Array[Revox::Models::CampaignCreateResponse::Campaign::Assistant::SttContext::General],
1193
+ terms: ::Array[String]
1194
+ }
1195
+
1196
+ type general = { key: String, value: String }
1197
+
1198
+ class General < Revox::Internal::Type::BaseModel
1199
+ attr_accessor key: String
1200
+
1201
+ attr_accessor value: String
1202
+
1203
+ def initialize: (key: String, value: String) -> void
1204
+
1205
+ def to_hash: -> { key: String, value: String }
1206
+ end
1207
+ end
1208
+
1209
+ type stt_model = :"stt-rt-v4" | :"stt-rt-v5"
1210
+
1211
+ module SttModel
1212
+ extend Revox::Internal::Type::Enum
1213
+
1214
+ STT_RT_V4: :"stt-rt-v4"
1215
+ STT_RT_V5: :"stt-rt-v5"
1216
+
1217
+ def self?.values: -> ::Array[Revox::Models::CampaignCreateResponse::Campaign::Assistant::stt_model]
1218
+ end
1219
+
1220
+ type thinking_sound =
1221
+ :"city-ambience.ogg"
1222
+ | :"forest-ambience.ogg"
1223
+ | :"office-ambience.ogg"
1224
+ | :"crowded-room.ogg"
1225
+ | :"keyboard-typing.ogg"
1226
+ | :"keyboard-typing2.ogg"
1227
+ | :"hold_music.ogg"
1228
+
1229
+ module ThinkingSound
1230
+ extend Revox::Internal::Type::Enum
1231
+
1232
+ CITY_AMBIENCE_OGG: :"city-ambience.ogg"
1233
+ FOREST_AMBIENCE_OGG: :"forest-ambience.ogg"
1234
+ OFFICE_AMBIENCE_OGG: :"office-ambience.ogg"
1235
+ CROWDED_ROOM_OGG: :"crowded-room.ogg"
1236
+ KEYBOARD_TYPING_OGG: :"keyboard-typing.ogg"
1237
+ KEYBOARD_TYPING2_OGG: :"keyboard-typing2.ogg"
1238
+ HOLD_MUSIC_OGG: :"hold_music.ogg"
1239
+
1240
+ def self?.values: -> ::Array[Revox::Models::CampaignCreateResponse::Campaign::Assistant::thinking_sound]
1241
+ end
1242
+
1243
+ type type_ = :standalone | :"multi-step" | :"sub-assistant"
1244
+
1245
+ module Type
1246
+ extend Revox::Internal::Type::Enum
1247
+
1248
+ STANDALONE: :standalone
1249
+ MULTI_STEP: :"multi-step"
1250
+ SUB_ASSISTANT: :"sub-assistant"
1251
+
1252
+ def self?.values: -> ::Array[Revox::Models::CampaignCreateResponse::Campaign::Assistant::type_]
1253
+ end
1254
+
471
1255
  type voice =
472
1256
  {
473
1257
  id: String,
474
1258
  provider: Revox::Models::CampaignCreateResponse::Campaign::Assistant::Voice::provider,
475
- speed: Float
1259
+ model: Revox::Models::CampaignCreateResponse::Campaign::Assistant::Voice::model,
1260
+ speed: Float,
1261
+ volume: Float
476
1262
  }
477
1263
 
478
1264
  class Voice < Revox::Internal::Type::BaseModel
@@ -480,20 +1266,34 @@ module Revox
480
1266
 
481
1267
  attr_accessor provider: Revox::Models::CampaignCreateResponse::Campaign::Assistant::Voice::provider
482
1268
 
1269
+ attr_reader model: Revox::Models::CampaignCreateResponse::Campaign::Assistant::Voice::model?
1270
+
1271
+ def model=: (
1272
+ Revox::Models::CampaignCreateResponse::Campaign::Assistant::Voice::model
1273
+ ) -> Revox::Models::CampaignCreateResponse::Campaign::Assistant::Voice::model
1274
+
483
1275
  attr_reader speed: Float?
484
1276
 
485
1277
  def speed=: (Float) -> Float
486
1278
 
1279
+ attr_reader volume: Float?
1280
+
1281
+ def volume=: (Float) -> Float
1282
+
487
1283
  def initialize: (
488
1284
  id: String,
489
1285
  provider: Revox::Models::CampaignCreateResponse::Campaign::Assistant::Voice::provider,
490
- ?speed: Float
1286
+ ?model: Revox::Models::CampaignCreateResponse::Campaign::Assistant::Voice::model,
1287
+ ?speed: Float,
1288
+ ?volume: Float
491
1289
  ) -> void
492
1290
 
493
1291
  def to_hash: -> {
494
1292
  id: String,
495
1293
  provider: Revox::Models::CampaignCreateResponse::Campaign::Assistant::Voice::provider,
496
- speed: Float
1294
+ model: Revox::Models::CampaignCreateResponse::Campaign::Assistant::Voice::model,
1295
+ speed: Float,
1296
+ volume: Float
497
1297
  }
498
1298
 
499
1299
  type provider = :cartesia | :elevenlabs
@@ -506,6 +1306,128 @@ module Revox
506
1306
 
507
1307
  def self?.values: -> ::Array[Revox::Models::CampaignCreateResponse::Campaign::Assistant::Voice::provider]
508
1308
  end
1309
+
1310
+ type model = :"sonic-3" | :"sonic-3.5"
1311
+
1312
+ module Model
1313
+ extend Revox::Internal::Type::Enum
1314
+
1315
+ SONIC_3: :"sonic-3"
1316
+ SONIC_3_5: :"sonic-3.5"
1317
+
1318
+ def self?.values: -> ::Array[Revox::Models::CampaignCreateResponse::Campaign::Assistant::Voice::model]
1319
+ end
1320
+ end
1321
+
1322
+ type zoho =
1323
+ {
1324
+ connection_id: String,
1325
+ field_mapping: ::Array[Revox::Models::CampaignCreateResponse::Campaign::Assistant::Zoho::FieldMapping],
1326
+ log_call_activity: bool,
1327
+ module_: String,
1328
+ outcomes: ::Array[Revox::Models::CampaignCreateResponse::Campaign::Assistant::Zoho::outcome],
1329
+ template: String?
1330
+ }
1331
+
1332
+ class Zoho < Revox::Internal::Type::BaseModel
1333
+ attr_accessor connection_id: String
1334
+
1335
+ attr_accessor field_mapping: ::Array[Revox::Models::CampaignCreateResponse::Campaign::Assistant::Zoho::FieldMapping]
1336
+
1337
+ attr_accessor log_call_activity: bool
1338
+
1339
+ attr_accessor module_: String
1340
+
1341
+ attr_accessor outcomes: ::Array[Revox::Models::CampaignCreateResponse::Campaign::Assistant::Zoho::outcome]
1342
+
1343
+ attr_accessor template: String?
1344
+
1345
+ def initialize: (
1346
+ connection_id: String,
1347
+ field_mapping: ::Array[Revox::Models::CampaignCreateResponse::Campaign::Assistant::Zoho::FieldMapping],
1348
+ log_call_activity: bool,
1349
+ module_: String,
1350
+ outcomes: ::Array[Revox::Models::CampaignCreateResponse::Campaign::Assistant::Zoho::outcome],
1351
+ ?template: String?
1352
+ ) -> void
1353
+
1354
+ def to_hash: -> {
1355
+ connection_id: String,
1356
+ field_mapping: ::Array[Revox::Models::CampaignCreateResponse::Campaign::Assistant::Zoho::FieldMapping],
1357
+ log_call_activity: bool,
1358
+ module_: String,
1359
+ outcomes: ::Array[Revox::Models::CampaignCreateResponse::Campaign::Assistant::Zoho::outcome],
1360
+ template: String?
1361
+ }
1362
+
1363
+ type field_mapping = { source: String, zoho_field: String }
1364
+
1365
+ class FieldMapping < Revox::Internal::Type::BaseModel
1366
+ attr_accessor source: String
1367
+
1368
+ attr_accessor zoho_field: String
1369
+
1370
+ def initialize: (source: String, zoho_field: String) -> void
1371
+
1372
+ def to_hash: -> { source: String, zoho_field: String }
1373
+ end
1374
+
1375
+ type outcome =
1376
+ :not_interested
1377
+ | :interested
1378
+ | :completed
1379
+ | :requested_callback_later
1380
+ | :requested_callback_new_number
1381
+ | :do_not_contact
1382
+ | :ai_averse
1383
+ | :none
1384
+
1385
+ module Outcome
1386
+ extend Revox::Internal::Type::Enum
1387
+
1388
+ NOT_INTERESTED: :not_interested
1389
+ INTERESTED: :interested
1390
+ COMPLETED: :completed
1391
+ REQUESTED_CALLBACK_LATER: :requested_callback_later
1392
+ REQUESTED_CALLBACK_NEW_NUMBER: :requested_callback_new_number
1393
+ DO_NOT_CONTACT: :do_not_contact
1394
+ AI_AVERSE: :ai_averse
1395
+ NONE: :none
1396
+
1397
+ def self?.values: -> ::Array[Revox::Models::CampaignCreateResponse::Campaign::Assistant::Zoho::outcome]
1398
+ end
1399
+ end
1400
+
1401
+ type created_by =
1402
+ {
1403
+ id: String,
1404
+ email: String,
1405
+ first_name: String?,
1406
+ last_name: String?
1407
+ }
1408
+
1409
+ class CreatedBy < Revox::Internal::Type::BaseModel
1410
+ attr_accessor id: String
1411
+
1412
+ attr_accessor email: String
1413
+
1414
+ attr_accessor first_name: String?
1415
+
1416
+ attr_accessor last_name: String?
1417
+
1418
+ def initialize: (
1419
+ id: String,
1420
+ email: String,
1421
+ first_name: String?,
1422
+ last_name: String?
1423
+ ) -> void
1424
+
1425
+ def to_hash: -> {
1426
+ id: String,
1427
+ email: String,
1428
+ first_name: String?,
1429
+ last_name: String?
1430
+ }
509
1431
  end
510
1432
 
511
1433
  type faq_item =
@@ -567,12 +1489,18 @@ module Revox
567
1489
 
568
1490
  type call_retry_config =
569
1491
  {
1492
+ allowed_days: ::Array[Revox::Models::CampaignCreateResponse::Campaign::CallRetryConfig::allowed_day],
1493
+ call_twice_in_a_row: bool,
570
1494
  calling_windows: ::Array[Revox::Models::CampaignCreateResponse::Campaign::CallRetryConfig::CallingWindow],
571
1495
  max_retry_attempts: Integer,
572
1496
  timezone: String?
573
1497
  }
574
1498
 
575
1499
  class CallRetryConfig < Revox::Internal::Type::BaseModel
1500
+ attr_accessor allowed_days: ::Array[Revox::Models::CampaignCreateResponse::Campaign::CallRetryConfig::allowed_day]
1501
+
1502
+ attr_accessor call_twice_in_a_row: bool
1503
+
576
1504
  attr_accessor calling_windows: ::Array[Revox::Models::CampaignCreateResponse::Campaign::CallRetryConfig::CallingWindow]
577
1505
 
578
1506
  attr_accessor max_retry_attempts: Integer
@@ -580,17 +1508,44 @@ module Revox
580
1508
  attr_accessor timezone: String?
581
1509
 
582
1510
  def initialize: (
1511
+ allowed_days: ::Array[Revox::Models::CampaignCreateResponse::Campaign::CallRetryConfig::allowed_day],
1512
+ call_twice_in_a_row: bool,
583
1513
  calling_windows: ::Array[Revox::Models::CampaignCreateResponse::Campaign::CallRetryConfig::CallingWindow],
584
1514
  max_retry_attempts: Integer,
585
1515
  ?timezone: String?
586
1516
  ) -> void
587
1517
 
588
1518
  def to_hash: -> {
1519
+ allowed_days: ::Array[Revox::Models::CampaignCreateResponse::Campaign::CallRetryConfig::allowed_day],
1520
+ call_twice_in_a_row: bool,
589
1521
  calling_windows: ::Array[Revox::Models::CampaignCreateResponse::Campaign::CallRetryConfig::CallingWindow],
590
1522
  max_retry_attempts: Integer,
591
1523
  timezone: String?
592
1524
  }
593
1525
 
1526
+ type allowed_day =
1527
+ :monday
1528
+ | :tuesday
1529
+ | :wednesday
1530
+ | :thursday
1531
+ | :friday
1532
+ | :saturday
1533
+ | :sunday
1534
+
1535
+ module AllowedDay
1536
+ extend Revox::Internal::Type::Enum
1537
+
1538
+ MONDAY: :monday
1539
+ TUESDAY: :tuesday
1540
+ WEDNESDAY: :wednesday
1541
+ THURSDAY: :thursday
1542
+ FRIDAY: :friday
1543
+ SATURDAY: :saturday
1544
+ SUNDAY: :sunday
1545
+
1546
+ def self?.values: -> ::Array[Revox::Models::CampaignCreateResponse::Campaign::CallRetryConfig::allowed_day]
1547
+ end
1548
+
594
1549
  type calling_window =
595
1550
  {
596
1551
  calling_window_end_time: String,
@@ -619,6 +1574,67 @@ module Revox
619
1574
  end
620
1575
  end
621
1576
 
1577
+ type created_by =
1578
+ { id: String, email: String, first_name: String?, last_name: String? }
1579
+
1580
+ class CreatedBy < Revox::Internal::Type::BaseModel
1581
+ attr_accessor id: String
1582
+
1583
+ attr_accessor email: String
1584
+
1585
+ attr_accessor first_name: String?
1586
+
1587
+ attr_accessor last_name: String?
1588
+
1589
+ def initialize: (
1590
+ id: String,
1591
+ email: String,
1592
+ first_name: String?,
1593
+ last_name: String?
1594
+ ) -> void
1595
+
1596
+ def to_hash: -> {
1597
+ id: String,
1598
+ email: String,
1599
+ first_name: String?,
1600
+ last_name: String?
1601
+ }
1602
+ end
1603
+
1604
+ type funnel_stats =
1605
+ { hot: Float, talked_to_human: Float, total_leads: Float }
1606
+
1607
+ class FunnelStats < Revox::Internal::Type::BaseModel
1608
+ attr_accessor hot: Float
1609
+
1610
+ attr_accessor talked_to_human: Float
1611
+
1612
+ attr_accessor total_leads: Float
1613
+
1614
+ def initialize: (
1615
+ hot: Float,
1616
+ talked_to_human: Float,
1617
+ total_leads: Float
1618
+ ) -> void
1619
+
1620
+ def to_hash: -> {
1621
+ hot: Float,
1622
+ talked_to_human: Float,
1623
+ total_leads: Float
1624
+ }
1625
+ end
1626
+
1627
+ type paused_reason = :manual | :no_presence
1628
+
1629
+ module PausedReason
1630
+ extend Revox::Internal::Type::Enum
1631
+
1632
+ MANUAL: :manual
1633
+ NO_PRESENCE: :no_presence
1634
+
1635
+ def self?.values: -> ::Array[Revox::Models::CampaignCreateResponse::Campaign::paused_reason]
1636
+ end
1637
+
622
1638
  type row_stats =
623
1639
  {
624
1640
  calling: Float,
@@ -660,6 +1676,18 @@ module Revox
660
1676
  total: Float
661
1677
  }
662
1678
  end
1679
+
1680
+ type structured_output_extraction = :none | :running | :completed
1681
+
1682
+ module StructuredOutputExtraction
1683
+ extend Revox::Internal::Type::Enum
1684
+
1685
+ NONE: :none
1686
+ RUNNING: :running
1687
+ COMPLETED: :completed
1688
+
1689
+ def self?.values: -> ::Array[Revox::Models::CampaignCreateResponse::Campaign::structured_output_extraction]
1690
+ end
663
1691
  end
664
1692
  end
665
1693
  end