revox 0.0.2 → 0.1.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 (106) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +25 -0
  3. data/README.md +63 -22
  4. data/lib/revox/client.rb +4 -0
  5. data/lib/revox/internal/type/base_model.rb +3 -3
  6. data/lib/revox/internal/util.rb +31 -0
  7. data/lib/revox/models/assistant_create_params.rb +2 -2
  8. data/lib/revox/models/assistant_delete_params.rb +7 -1
  9. data/lib/revox/models/assistant_retrieve_params.rb +7 -1
  10. data/lib/revox/models/assistant_update_params.rb +10 -3
  11. data/lib/revox/models/call_create_params.rb +2 -2
  12. data/lib/revox/models/call_create_response.rb +720 -12
  13. data/lib/revox/models/call_list_params.rb +30 -7
  14. data/lib/revox/models/call_list_response.rb +63 -1
  15. data/lib/revox/models/call_retrieve_params.rb +7 -1
  16. data/lib/revox/models/call_retrieve_response.rb +723 -12
  17. data/lib/revox/models/campaign_cancel_params.rb +20 -0
  18. data/lib/revox/models/campaign_cancel_response.rb +16 -0
  19. data/lib/revox/models/campaign_create_params.rb +174 -0
  20. data/lib/revox/models/campaign_create_response.rb +775 -0
  21. data/lib/revox/models/campaign_delete_params.rb +20 -0
  22. data/lib/revox/models/campaign_delete_response.rb +16 -0
  23. data/lib/revox/models/campaign_export_rows_params.rb +20 -0
  24. data/lib/revox/models/campaign_export_rows_response.rb +22 -0
  25. data/lib/revox/models/campaign_get_rows_params.rb +65 -0
  26. data/lib/revox/models/campaign_get_rows_response.rb +1468 -0
  27. data/lib/revox/models/campaign_list_params.rb +14 -0
  28. data/lib/revox/models/campaign_list_response.rb +771 -0
  29. data/lib/revox/models/campaign_retrieve_params.rb +20 -0
  30. data/lib/revox/models/campaign_retrieve_response.rb +776 -0
  31. data/lib/revox/models/voice_preview_params.rb +1 -9
  32. data/lib/revox/models/voice_retrieve_params.rb +7 -1
  33. data/lib/revox/models.rb +14 -0
  34. data/lib/revox/resources/assistants.rb +26 -2
  35. data/lib/revox/resources/call.rb +20 -8
  36. data/lib/revox/resources/campaigns.rb +181 -0
  37. data/lib/revox/resources/voices.rb +12 -8
  38. data/lib/revox/version.rb +1 -1
  39. data/lib/revox.rb +15 -0
  40. data/rbi/revox/client.rbi +3 -0
  41. data/rbi/revox/internal/util.rbi +20 -0
  42. data/rbi/revox/models/assistant_create_params.rbi +3 -5
  43. data/rbi/revox/models/assistant_delete_params.rbi +11 -5
  44. data/rbi/revox/models/assistant_retrieve_params.rbi +11 -5
  45. data/rbi/revox/models/assistant_update_params.rbi +9 -5
  46. data/rbi/revox/models/call_create_params.rbi +3 -5
  47. data/rbi/revox/models/call_create_response.rbi +1537 -11
  48. data/rbi/revox/models/call_list_params.rbi +53 -6
  49. data/rbi/revox/models/call_list_response.rbi +162 -0
  50. data/rbi/revox/models/call_retrieve_params.rbi +11 -5
  51. data/rbi/revox/models/call_retrieve_response.rbi +1543 -11
  52. data/rbi/revox/models/campaign_cancel_params.rbi +33 -0
  53. data/rbi/revox/models/campaign_cancel_response.rbi +23 -0
  54. data/rbi/revox/models/campaign_create_params.rbi +297 -0
  55. data/rbi/revox/models/campaign_create_response.rbi +1490 -0
  56. data/rbi/revox/models/campaign_delete_params.rbi +33 -0
  57. data/rbi/revox/models/campaign_delete_response.rbi +23 -0
  58. data/rbi/revox/models/campaign_export_rows_params.rbi +33 -0
  59. data/rbi/revox/models/campaign_export_rows_response.rbi +29 -0
  60. data/rbi/revox/models/campaign_get_rows_params.rbi +113 -0
  61. data/rbi/revox/models/campaign_get_rows_response.rbi +2981 -0
  62. data/rbi/revox/models/campaign_list_params.rbi +27 -0
  63. data/rbi/revox/models/campaign_list_response.rbi +1482 -0
  64. data/rbi/revox/models/campaign_retrieve_params.rbi +33 -0
  65. data/rbi/revox/models/campaign_retrieve_response.rbi +1495 -0
  66. data/rbi/revox/models/voice_preview_params.rbi +0 -11
  67. data/rbi/revox/models/voice_retrieve_params.rbi +6 -1
  68. data/rbi/revox/models.rbi +14 -0
  69. data/rbi/revox/resources/assistants.rbi +21 -2
  70. data/rbi/revox/resources/call.rbi +18 -6
  71. data/rbi/revox/resources/campaigns.rbi +128 -0
  72. data/rbi/revox/resources/voices.rbi +9 -7
  73. data/sig/revox/client.rbs +2 -0
  74. data/sig/revox/internal/util.rbs +10 -0
  75. data/sig/revox/models/assistant_create_params.rbs +8 -4
  76. data/sig/revox/models/assistant_delete_params.rbs +8 -3
  77. data/sig/revox/models/assistant_retrieve_params.rbs +8 -3
  78. data/sig/revox/models/assistant_update_params.rbs +13 -4
  79. data/sig/revox/models/call_create_params.rbs +8 -4
  80. data/sig/revox/models/call_create_response.rbs +615 -8
  81. data/sig/revox/models/call_list_params.rbs +42 -7
  82. data/sig/revox/models/call_list_response.rbs +57 -2
  83. data/sig/revox/models/call_retrieve_params.rbs +9 -3
  84. data/sig/revox/models/call_retrieve_response.rbs +615 -8
  85. data/sig/revox/models/campaign_cancel_params.rbs +20 -0
  86. data/sig/revox/models/campaign_cancel_response.rbs +13 -0
  87. data/sig/revox/models/campaign_create_params.rbs +149 -0
  88. data/sig/revox/models/campaign_create_response.rbs +666 -0
  89. data/sig/revox/models/campaign_delete_params.rbs +20 -0
  90. data/sig/revox/models/campaign_delete_response.rbs +13 -0
  91. data/sig/revox/models/campaign_export_rows_params.rbs +20 -0
  92. data/sig/revox/models/campaign_export_rows_response.rbs +15 -0
  93. data/sig/revox/models/campaign_get_rows_params.rbs +82 -0
  94. data/sig/revox/models/campaign_get_rows_response.rbs +1220 -0
  95. data/sig/revox/models/campaign_list_params.rbs +14 -0
  96. data/sig/revox/models/campaign_list_response.rbs +666 -0
  97. data/sig/revox/models/campaign_retrieve_params.rbs +20 -0
  98. data/sig/revox/models/campaign_retrieve_response.rbs +666 -0
  99. data/sig/revox/models/voice_preview_params.rbs +1 -8
  100. data/sig/revox/models/voice_retrieve_params.rbs +5 -1
  101. data/sig/revox/models.rbs +14 -0
  102. data/sig/revox/resources/assistants.rbs +2 -2
  103. data/sig/revox/resources/call.rbs +3 -2
  104. data/sig/revox/resources/campaigns.rbs +52 -0
  105. data/sig/revox/resources/voices.rbs +0 -1
  106. metadata +47 -2
@@ -0,0 +1,1220 @@
1
+ module Revox
2
+ module Models
3
+ type campaign_get_rows_response =
4
+ {
5
+ page: Float,
6
+ page_size: Float,
7
+ rows: ::Array[Revox::Models::CampaignGetRowsResponse::Row],
8
+ total: Float
9
+ }
10
+
11
+ class CampaignGetRowsResponse < Revox::Internal::Type::BaseModel
12
+ attr_accessor page: Float
13
+
14
+ attr_accessor page_size: Float
15
+
16
+ attr_accessor rows: ::Array[Revox::Models::CampaignGetRowsResponse::Row]
17
+
18
+ attr_accessor total: Float
19
+
20
+ def initialize: (
21
+ page: Float,
22
+ page_size: Float,
23
+ rows: ::Array[Revox::Models::CampaignGetRowsResponse::Row],
24
+ total: Float
25
+ ) -> void
26
+
27
+ def to_hash: -> {
28
+ page: Float,
29
+ page_size: Float,
30
+ rows: ::Array[Revox::Models::CampaignGetRowsResponse::Row],
31
+ total: Float
32
+ }
33
+
34
+ type row =
35
+ {
36
+ id: String,
37
+ input_data: ::Hash[Symbol, String],
38
+ phone_number: String,
39
+ row_index: Float,
40
+ call: Revox::Models::CampaignGetRowsResponse::Row::Call
41
+ }
42
+
43
+ class Row < Revox::Internal::Type::BaseModel
44
+ attr_accessor id: String
45
+
46
+ attr_accessor input_data: ::Hash[Symbol, String]
47
+
48
+ attr_accessor phone_number: String
49
+
50
+ attr_accessor row_index: Float
51
+
52
+ attr_reader call: Revox::Models::CampaignGetRowsResponse::Row::Call?
53
+
54
+ def call=: (
55
+ Revox::Models::CampaignGetRowsResponse::Row::Call
56
+ ) -> Revox::Models::CampaignGetRowsResponse::Row::Call
57
+
58
+ def initialize: (
59
+ id: String,
60
+ input_data: ::Hash[Symbol, String],
61
+ phone_number: String,
62
+ row_index: Float,
63
+ ?call: Revox::Models::CampaignGetRowsResponse::Row::Call
64
+ ) -> void
65
+
66
+ def to_hash: -> {
67
+ id: String,
68
+ input_data: ::Hash[Symbol, String],
69
+ phone_number: String,
70
+ row_index: Float,
71
+ call: Revox::Models::CampaignGetRowsResponse::Row::Call
72
+ }
73
+
74
+ type call =
75
+ {
76
+ id: String,
77
+ assistant: Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant?,
78
+ call_attempts: ::Array[Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt],
79
+ call_retry_config: Revox::Models::CampaignGetRowsResponse::Row::Call::CallRetryConfig?,
80
+ calls_count: Float,
81
+ campaign: Revox::Models::CampaignGetRowsResponse::Row::Call::Campaign?,
82
+ created_at: top,
83
+ direction: Revox::Models::CampaignGetRowsResponse::Row::Call::direction,
84
+ first_sentence_delay_ms: Integer,
85
+ from_phone_number: String,
86
+ is_cancelled: bool,
87
+ is_completed: bool,
88
+ last_call_attempt: Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt?,
89
+ llm_model: Revox::Models::CampaignGetRowsResponse::Row::Call::llm_model,
90
+ metadata: ::Hash[Symbol, String]?,
91
+ organization_id: String,
92
+ scheduled_at: top,
93
+ status: Revox::Models::CampaignGetRowsResponse::Row::Call::status,
94
+ to_phone_number: String
95
+ }
96
+
97
+ class Call < Revox::Internal::Type::BaseModel
98
+ attr_accessor id: String
99
+
100
+ attr_accessor assistant: Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant?
101
+
102
+ attr_accessor call_attempts: ::Array[Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt]
103
+
104
+ attr_accessor call_retry_config: Revox::Models::CampaignGetRowsResponse::Row::Call::CallRetryConfig?
105
+
106
+ attr_accessor calls_count: Float
107
+
108
+ attr_accessor campaign: Revox::Models::CampaignGetRowsResponse::Row::Call::Campaign?
109
+
110
+ attr_accessor created_at: top
111
+
112
+ attr_accessor direction: Revox::Models::CampaignGetRowsResponse::Row::Call::direction
113
+
114
+ attr_accessor first_sentence_delay_ms: Integer
115
+
116
+ attr_accessor from_phone_number: String
117
+
118
+ attr_accessor is_cancelled: bool
119
+
120
+ attr_accessor is_completed: bool
121
+
122
+ attr_accessor last_call_attempt: Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt?
123
+
124
+ attr_accessor llm_model: Revox::Models::CampaignGetRowsResponse::Row::Call::llm_model
125
+
126
+ attr_accessor metadata: ::Hash[Symbol, String]?
127
+
128
+ attr_accessor organization_id: String
129
+
130
+ attr_accessor scheduled_at: top
131
+
132
+ attr_accessor status: Revox::Models::CampaignGetRowsResponse::Row::Call::status
133
+
134
+ attr_accessor to_phone_number: String
135
+
136
+ def initialize: (
137
+ id: String,
138
+ assistant: Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant?,
139
+ call_attempts: ::Array[Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt],
140
+ call_retry_config: Revox::Models::CampaignGetRowsResponse::Row::Call::CallRetryConfig?,
141
+ calls_count: Float,
142
+ campaign: Revox::Models::CampaignGetRowsResponse::Row::Call::Campaign?,
143
+ created_at: top,
144
+ direction: Revox::Models::CampaignGetRowsResponse::Row::Call::direction,
145
+ first_sentence_delay_ms: Integer,
146
+ from_phone_number: String,
147
+ is_cancelled: bool,
148
+ is_completed: bool,
149
+ last_call_attempt: Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt?,
150
+ llm_model: Revox::Models::CampaignGetRowsResponse::Row::Call::llm_model,
151
+ metadata: ::Hash[Symbol, String]?,
152
+ organization_id: String,
153
+ scheduled_at: top,
154
+ status: Revox::Models::CampaignGetRowsResponse::Row::Call::status,
155
+ to_phone_number: String
156
+ ) -> void
157
+
158
+ def to_hash: -> {
159
+ id: String,
160
+ assistant: Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant?,
161
+ call_attempts: ::Array[Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt],
162
+ call_retry_config: Revox::Models::CampaignGetRowsResponse::Row::Call::CallRetryConfig?,
163
+ calls_count: Float,
164
+ campaign: Revox::Models::CampaignGetRowsResponse::Row::Call::Campaign?,
165
+ created_at: top,
166
+ direction: Revox::Models::CampaignGetRowsResponse::Row::Call::direction,
167
+ first_sentence_delay_ms: Integer,
168
+ from_phone_number: String,
169
+ is_cancelled: bool,
170
+ is_completed: bool,
171
+ last_call_attempt: Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt?,
172
+ llm_model: Revox::Models::CampaignGetRowsResponse::Row::Call::llm_model,
173
+ metadata: ::Hash[Symbol, String]?,
174
+ organization_id: String,
175
+ scheduled_at: top,
176
+ status: Revox::Models::CampaignGetRowsResponse::Row::Call::status,
177
+ to_phone_number: String
178
+ }
179
+
180
+ type assistant =
181
+ {
182
+ id: String,
183
+ background_sound: Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::background_sound?,
184
+ calendly: Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Calendly?,
185
+ call_retry_config: Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::CallRetryConfig?,
186
+ created_at: top,
187
+ end_of_call_sentence: String?,
188
+ first_sentence: String?,
189
+ first_sentence_delay_ms: Integer,
190
+ first_sentence_mode: Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::first_sentence_mode,
191
+ ivr_navigation_enabled: bool,
192
+ llm_model: Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::llm_model,
193
+ max_call_duration_secs: Float,
194
+ name: String,
195
+ organization_id: String,
196
+ prompt: String,
197
+ structured_output_config: ::Array[Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::StructuredOutputConfig]?,
198
+ transfer_phone_number: String?,
199
+ updated_at: top,
200
+ voice: Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Voice?,
201
+ voicemail_message: String?,
202
+ webhook_url: String?,
203
+ faq_items: ::Array[Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::FaqItem],
204
+ pending_faq_count: Float
205
+ }
206
+
207
+ class Assistant < Revox::Internal::Type::BaseModel
208
+ attr_accessor id: String
209
+
210
+ attr_accessor background_sound: Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::background_sound?
211
+
212
+ attr_accessor calendly: Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Calendly?
213
+
214
+ attr_accessor call_retry_config: Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::CallRetryConfig?
215
+
216
+ attr_accessor created_at: top
217
+
218
+ attr_accessor end_of_call_sentence: String?
219
+
220
+ attr_accessor first_sentence: String?
221
+
222
+ attr_accessor first_sentence_delay_ms: Integer
223
+
224
+ attr_accessor first_sentence_mode: Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::first_sentence_mode
225
+
226
+ attr_accessor ivr_navigation_enabled: bool
227
+
228
+ attr_accessor llm_model: Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::llm_model
229
+
230
+ attr_accessor max_call_duration_secs: Float
231
+
232
+ attr_accessor name: String
233
+
234
+ attr_accessor organization_id: String
235
+
236
+ attr_accessor prompt: String
237
+
238
+ attr_accessor structured_output_config: ::Array[Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::StructuredOutputConfig]?
239
+
240
+ attr_accessor transfer_phone_number: String?
241
+
242
+ attr_accessor updated_at: top
243
+
244
+ attr_accessor voice: Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Voice?
245
+
246
+ attr_accessor voicemail_message: String?
247
+
248
+ attr_accessor webhook_url: String?
249
+
250
+ attr_reader faq_items: ::Array[Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::FaqItem]?
251
+
252
+ def faq_items=: (
253
+ ::Array[Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::FaqItem]
254
+ ) -> ::Array[Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::FaqItem]
255
+
256
+ attr_reader pending_faq_count: Float?
257
+
258
+ def pending_faq_count=: (Float) -> Float
259
+
260
+ def initialize: (
261
+ id: String,
262
+ background_sound: Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::background_sound?,
263
+ calendly: Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Calendly?,
264
+ call_retry_config: Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::CallRetryConfig?,
265
+ created_at: top,
266
+ end_of_call_sentence: String?,
267
+ first_sentence: String?,
268
+ first_sentence_delay_ms: Integer,
269
+ first_sentence_mode: Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::first_sentence_mode,
270
+ ivr_navigation_enabled: bool,
271
+ llm_model: Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::llm_model,
272
+ max_call_duration_secs: Float,
273
+ name: String,
274
+ organization_id: String,
275
+ prompt: String,
276
+ structured_output_config: ::Array[Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::StructuredOutputConfig]?,
277
+ transfer_phone_number: String?,
278
+ updated_at: top,
279
+ voice: Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Voice?,
280
+ voicemail_message: String?,
281
+ webhook_url: String?,
282
+ ?faq_items: ::Array[Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::FaqItem],
283
+ ?pending_faq_count: Float
284
+ ) -> void
285
+
286
+ def to_hash: -> {
287
+ id: String,
288
+ background_sound: Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::background_sound?,
289
+ calendly: Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Calendly?,
290
+ call_retry_config: Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::CallRetryConfig?,
291
+ created_at: top,
292
+ end_of_call_sentence: String?,
293
+ first_sentence: String?,
294
+ first_sentence_delay_ms: Integer,
295
+ first_sentence_mode: Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::first_sentence_mode,
296
+ ivr_navigation_enabled: bool,
297
+ llm_model: Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::llm_model,
298
+ max_call_duration_secs: Float,
299
+ name: String,
300
+ organization_id: String,
301
+ prompt: String,
302
+ structured_output_config: ::Array[Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::StructuredOutputConfig]?,
303
+ transfer_phone_number: String?,
304
+ updated_at: top,
305
+ voice: Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Voice?,
306
+ voicemail_message: String?,
307
+ webhook_url: String?,
308
+ faq_items: ::Array[Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::FaqItem],
309
+ pending_faq_count: Float
310
+ }
311
+
312
+ type background_sound = :"audio/office.ogg"
313
+
314
+ module BackgroundSound
315
+ extend Revox::Internal::Type::Enum
316
+
317
+ AUDIO_OFFICE_OGG: :"audio/office.ogg"
318
+
319
+ def self?.values: -> ::Array[Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::background_sound]
320
+ end
321
+
322
+ type calendly = { connection_id: String, event_type_id: String }
323
+
324
+ class Calendly < Revox::Internal::Type::BaseModel
325
+ attr_accessor connection_id: String
326
+
327
+ attr_accessor event_type_id: String
328
+
329
+ def initialize: (
330
+ connection_id: String,
331
+ event_type_id: String
332
+ ) -> void
333
+
334
+ def to_hash: -> { connection_id: String, event_type_id: String }
335
+ end
336
+
337
+ type call_retry_config =
338
+ {
339
+ calling_windows: ::Array[Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::CallRetryConfig::CallingWindow],
340
+ max_retry_attempts: Integer,
341
+ timezone: String?
342
+ }
343
+
344
+ class CallRetryConfig < Revox::Internal::Type::BaseModel
345
+ attr_accessor calling_windows: ::Array[Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::CallRetryConfig::CallingWindow]
346
+
347
+ attr_accessor max_retry_attempts: Integer
348
+
349
+ attr_accessor timezone: String?
350
+
351
+ def initialize: (
352
+ calling_windows: ::Array[Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::CallRetryConfig::CallingWindow],
353
+ max_retry_attempts: Integer,
354
+ ?timezone: String?
355
+ ) -> void
356
+
357
+ def to_hash: -> {
358
+ calling_windows: ::Array[Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::CallRetryConfig::CallingWindow],
359
+ max_retry_attempts: Integer,
360
+ timezone: String?
361
+ }
362
+
363
+ type calling_window =
364
+ {
365
+ calling_window_end_time: String,
366
+ calling_window_start_time: String,
367
+ retry_delay_seconds: Integer
368
+ }
369
+
370
+ class CallingWindow < Revox::Internal::Type::BaseModel
371
+ attr_accessor calling_window_end_time: String
372
+
373
+ attr_accessor calling_window_start_time: String
374
+
375
+ attr_accessor retry_delay_seconds: Integer
376
+
377
+ def initialize: (
378
+ calling_window_end_time: String,
379
+ calling_window_start_time: String,
380
+ retry_delay_seconds: Integer
381
+ ) -> void
382
+
383
+ def to_hash: -> {
384
+ calling_window_end_time: String,
385
+ calling_window_start_time: String,
386
+ retry_delay_seconds: Integer
387
+ }
388
+ end
389
+ end
390
+
391
+ type first_sentence_mode = :generated | :static | :none
392
+
393
+ module FirstSentenceMode
394
+ extend Revox::Internal::Type::Enum
395
+
396
+ GENERATED: :generated
397
+ STATIC: :static
398
+ NONE: :none
399
+
400
+ def self?.values: -> ::Array[Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::first_sentence_mode]
401
+ end
402
+
403
+ type llm_model =
404
+ Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::LlmModel::UnionMember0
405
+ | Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::LlmModel::UnionMember1
406
+
407
+ module LlmModel
408
+ extend Revox::Internal::Type::Union
409
+
410
+ type union_member0 =
411
+ {
412
+ name: Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::LlmModel::UnionMember0::name_,
413
+ type: :"dedicated-instance"
414
+ }
415
+
416
+ class UnionMember0 < Revox::Internal::Type::BaseModel
417
+ attr_accessor name: Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::LlmModel::UnionMember0::name_
418
+
419
+ attr_accessor type: :"dedicated-instance"
420
+
421
+ def initialize: (
422
+ name: Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::LlmModel::UnionMember0::name_,
423
+ ?type: :"dedicated-instance"
424
+ ) -> void
425
+
426
+ def to_hash: -> {
427
+ name: Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::LlmModel::UnionMember0::name_,
428
+ type: :"dedicated-instance"
429
+ }
430
+
431
+ type name_ = :"gpt-4.1" | :"ministral-3-8b-instruct"
432
+
433
+ module Name
434
+ extend Revox::Internal::Type::Enum
435
+
436
+ GPT_4_1: :"gpt-4.1"
437
+ MINISTRAL_3_8B_INSTRUCT: :"ministral-3-8b-instruct"
438
+
439
+ def self?.values: -> ::Array[Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::LlmModel::UnionMember0::name_]
440
+ end
441
+ end
442
+
443
+ type union_member1 =
444
+ {
445
+ openrouter_model_id: String,
446
+ openrouter_provider: String,
447
+ type: :openrouter
448
+ }
449
+
450
+ class UnionMember1 < Revox::Internal::Type::BaseModel
451
+ attr_accessor openrouter_model_id: String
452
+
453
+ attr_accessor openrouter_provider: String
454
+
455
+ attr_accessor type: :openrouter
456
+
457
+ def initialize: (
458
+ openrouter_model_id: String,
459
+ openrouter_provider: String,
460
+ ?type: :openrouter
461
+ ) -> void
462
+
463
+ def to_hash: -> {
464
+ openrouter_model_id: String,
465
+ openrouter_provider: String,
466
+ type: :openrouter
467
+ }
468
+ end
469
+
470
+ def self?.variants: -> ::Array[Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::llm_model]
471
+ end
472
+
473
+ type structured_output_config =
474
+ {
475
+ name: String,
476
+ required: bool,
477
+ type: Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::StructuredOutputConfig::type_,
478
+ description: String,
479
+ enum_options: ::Array[String]
480
+ }
481
+
482
+ class StructuredOutputConfig < Revox::Internal::Type::BaseModel
483
+ attr_accessor name: String
484
+
485
+ attr_accessor required: bool
486
+
487
+ attr_accessor type: Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::StructuredOutputConfig::type_
488
+
489
+ attr_reader description: String?
490
+
491
+ def description=: (String) -> String
492
+
493
+ attr_reader enum_options: ::Array[String]?
494
+
495
+ def enum_options=: (::Array[String]) -> ::Array[String]
496
+
497
+ def initialize: (
498
+ name: String,
499
+ required: bool,
500
+ type: Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::StructuredOutputConfig::type_,
501
+ ?description: String,
502
+ ?enum_options: ::Array[String]
503
+ ) -> void
504
+
505
+ def to_hash: -> {
506
+ name: String,
507
+ required: bool,
508
+ type: Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::StructuredOutputConfig::type_,
509
+ description: String,
510
+ enum_options: ::Array[String]
511
+ }
512
+
513
+ type type_ =
514
+ :string | :number | :boolean | :enum | :date | :datetime
515
+
516
+ module Type
517
+ extend Revox::Internal::Type::Enum
518
+
519
+ STRING: :string
520
+ NUMBER: :number
521
+ BOOLEAN: :boolean
522
+ ENUM: :enum
523
+ DATE: :date
524
+ DATETIME: :datetime
525
+
526
+ def self?.values: -> ::Array[Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::StructuredOutputConfig::type_]
527
+ end
528
+ end
529
+
530
+ type voice =
531
+ {
532
+ id: String,
533
+ provider: Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Voice::provider,
534
+ speed: Float
535
+ }
536
+
537
+ class Voice < Revox::Internal::Type::BaseModel
538
+ attr_accessor id: String
539
+
540
+ attr_accessor provider: Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Voice::provider
541
+
542
+ attr_reader speed: Float?
543
+
544
+ def speed=: (Float) -> Float
545
+
546
+ def initialize: (
547
+ id: String,
548
+ provider: Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Voice::provider,
549
+ ?speed: Float
550
+ ) -> void
551
+
552
+ def to_hash: -> {
553
+ id: String,
554
+ provider: Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Voice::provider,
555
+ speed: Float
556
+ }
557
+
558
+ type provider = :cartesia | :elevenlabs
559
+
560
+ module Provider
561
+ extend Revox::Internal::Type::Enum
562
+
563
+ CARTESIA: :cartesia
564
+ ELEVENLABS: :elevenlabs
565
+
566
+ def self?.values: -> ::Array[Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::Voice::provider]
567
+ end
568
+ end
569
+
570
+ type faq_item =
571
+ {
572
+ answer: String,
573
+ question: String,
574
+ id: String,
575
+ needs_human_answer: bool,
576
+ source: Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::FaqItem::source
577
+ }
578
+
579
+ class FaqItem < Revox::Internal::Type::BaseModel
580
+ attr_accessor answer: String
581
+
582
+ attr_accessor question: String
583
+
584
+ attr_reader id: String?
585
+
586
+ def id=: (String) -> String
587
+
588
+ attr_reader needs_human_answer: bool?
589
+
590
+ def needs_human_answer=: (bool) -> bool
591
+
592
+ attr_reader source: Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::FaqItem::source?
593
+
594
+ def source=: (
595
+ Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::FaqItem::source
596
+ ) -> Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::FaqItem::source
597
+
598
+ def initialize: (
599
+ answer: String,
600
+ question: String,
601
+ ?id: String,
602
+ ?needs_human_answer: bool,
603
+ ?source: Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::FaqItem::source
604
+ ) -> void
605
+
606
+ def to_hash: -> {
607
+ answer: String,
608
+ question: String,
609
+ id: String,
610
+ needs_human_answer: bool,
611
+ source: Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::FaqItem::source
612
+ }
613
+
614
+ type source = :human | :ai
615
+
616
+ module Source
617
+ extend Revox::Internal::Type::Enum
618
+
619
+ HUMAN: :human
620
+ AI: :ai
621
+
622
+ def self?.values: -> ::Array[Revox::Models::CampaignGetRowsResponse::Row::Call::Assistant::FaqItem::source]
623
+ end
624
+ end
625
+ end
626
+
627
+ type call_attempt =
628
+ {
629
+ id: String,
630
+ answered_at: top,
631
+ dial_error: Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::dial_error?,
632
+ ended_at: top,
633
+ phone_number: String,
634
+ recording_url: String?,
635
+ result: Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::result?,
636
+ started_at: top,
637
+ status: Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::status,
638
+ end_reason: String?,
639
+ ended_by: Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::ended_by?,
640
+ structured_output: ::Hash[Symbol, top]?,
641
+ transcript: ::Array[Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::Transcript]?
642
+ }
643
+
644
+ class CallAttempt < Revox::Internal::Type::BaseModel
645
+ attr_accessor id: String
646
+
647
+ attr_accessor answered_at: top
648
+
649
+ attr_accessor dial_error: Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::dial_error?
650
+
651
+ attr_accessor ended_at: top
652
+
653
+ attr_accessor phone_number: String
654
+
655
+ attr_accessor recording_url: String?
656
+
657
+ attr_accessor result: Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::result?
658
+
659
+ attr_accessor started_at: top
660
+
661
+ attr_accessor status: Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::status
662
+
663
+ attr_accessor end_reason: String?
664
+
665
+ attr_accessor ended_by: Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::ended_by?
666
+
667
+ attr_accessor structured_output: ::Hash[Symbol, top]?
668
+
669
+ attr_accessor transcript: ::Array[Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::Transcript]?
670
+
671
+ def initialize: (
672
+ id: String,
673
+ answered_at: top,
674
+ dial_error: Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::dial_error?,
675
+ ended_at: top,
676
+ phone_number: String,
677
+ recording_url: String?,
678
+ result: Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::result?,
679
+ started_at: top,
680
+ status: Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::status,
681
+ ?end_reason: String?,
682
+ ?ended_by: Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::ended_by?,
683
+ ?structured_output: ::Hash[Symbol, top]?,
684
+ ?transcript: ::Array[Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::Transcript]?
685
+ ) -> void
686
+
687
+ def to_hash: -> {
688
+ id: String,
689
+ answered_at: top,
690
+ dial_error: Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::dial_error?,
691
+ ended_at: top,
692
+ phone_number: String,
693
+ recording_url: String?,
694
+ result: Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::result?,
695
+ started_at: top,
696
+ status: Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::status,
697
+ end_reason: String?,
698
+ ended_by: Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::ended_by?,
699
+ structured_output: ::Hash[Symbol, top]?,
700
+ transcript: ::Array[Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::Transcript]?
701
+ }
702
+
703
+ type dial_error =
704
+ :number_non_attributed
705
+ | :too_many_calls
706
+ | :busy
707
+ | :temporarily_unavailable
708
+ | :no_answer
709
+ | :no_international_permission
710
+ | :precondition_failed
711
+ | :non_classified_error
712
+
713
+ module DialError
714
+ extend Revox::Internal::Type::Enum
715
+
716
+ NUMBER_NON_ATTRIBUTED: :number_non_attributed
717
+ TOO_MANY_CALLS: :too_many_calls
718
+ BUSY: :busy
719
+ TEMPORARILY_UNAVAILABLE: :temporarily_unavailable
720
+ NO_ANSWER: :no_answer
721
+ NO_INTERNATIONAL_PERMISSION: :no_international_permission
722
+ PRECONDITION_FAILED: :precondition_failed
723
+ NON_CLASSIFIED_ERROR: :non_classified_error
724
+
725
+ def self?.values: -> ::Array[Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::dial_error]
726
+ end
727
+
728
+ type result =
729
+ :IVR | :voicemail | :human | :unknown | :"ios-screening-filter"
730
+
731
+ module Result
732
+ extend Revox::Internal::Type::Enum
733
+
734
+ IVR: :IVR
735
+ VOICEMAIL: :voicemail
736
+ HUMAN: :human
737
+ UNKNOWN: :unknown
738
+ IOS_SCREENING_FILTER: :"ios-screening-filter"
739
+
740
+ def self?.values: -> ::Array[Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::result]
741
+ end
742
+
743
+ type status = :queued | :ringing | :ongoing | :completed | :error
744
+
745
+ module Status
746
+ extend Revox::Internal::Type::Enum
747
+
748
+ QUEUED: :queued
749
+ RINGING: :ringing
750
+ ONGOING: :ongoing
751
+ COMPLETED: :completed
752
+ ERROR: :error
753
+
754
+ def self?.values: -> ::Array[Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::status]
755
+ end
756
+
757
+ type ended_by = :agent | :user | :system
758
+
759
+ module EndedBy
760
+ extend Revox::Internal::Type::Enum
761
+
762
+ AGENT: :agent
763
+ USER: :user
764
+ SYSTEM: :system
765
+
766
+ def self?.values: -> ::Array[Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::ended_by]
767
+ end
768
+
769
+ type transcript =
770
+ {
771
+ content: String,
772
+ role: Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::Transcript::role,
773
+ tool_arguments: Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::Transcript::tool_arguments,
774
+ tool_is_error: bool,
775
+ tool_name: String
776
+ }
777
+
778
+ class Transcript < Revox::Internal::Type::BaseModel
779
+ attr_accessor content: String
780
+
781
+ attr_accessor role: Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::Transcript::role
782
+
783
+ attr_reader tool_arguments: Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::Transcript::tool_arguments?
784
+
785
+ def tool_arguments=: (
786
+ Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::Transcript::tool_arguments
787
+ ) -> Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::Transcript::tool_arguments
788
+
789
+ attr_reader tool_is_error: bool?
790
+
791
+ def tool_is_error=: (bool) -> bool
792
+
793
+ attr_reader tool_name: String?
794
+
795
+ def tool_name=: (String) -> String
796
+
797
+ def initialize: (
798
+ content: String,
799
+ role: Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::Transcript::role,
800
+ ?tool_arguments: Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::Transcript::tool_arguments,
801
+ ?tool_is_error: bool,
802
+ ?tool_name: String
803
+ ) -> void
804
+
805
+ def to_hash: -> {
806
+ content: String,
807
+ role: Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::Transcript::role,
808
+ tool_arguments: Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::Transcript::tool_arguments,
809
+ tool_is_error: bool,
810
+ tool_name: String
811
+ }
812
+
813
+ type role = :user | :assistant | :tool
814
+
815
+ module Role
816
+ extend Revox::Internal::Type::Enum
817
+
818
+ USER: :user
819
+ ASSISTANT: :assistant
820
+ TOOL: :tool
821
+
822
+ def self?.values: -> ::Array[Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::Transcript::role]
823
+ end
824
+
825
+ type tool_arguments = ::Hash[Symbol, top] | String
826
+
827
+ module ToolArguments
828
+ extend Revox::Internal::Type::Union
829
+
830
+ def self?.variants: -> ::Array[Revox::Models::CampaignGetRowsResponse::Row::Call::CallAttempt::Transcript::tool_arguments]
831
+
832
+ UnionMember0Map: Revox::Internal::Type::Converter
833
+ end
834
+ end
835
+ end
836
+
837
+ type call_retry_config =
838
+ {
839
+ calling_windows: ::Array[Revox::Models::CampaignGetRowsResponse::Row::Call::CallRetryConfig::CallingWindow],
840
+ max_retry_attempts: Integer,
841
+ timezone: String?
842
+ }
843
+
844
+ class CallRetryConfig < Revox::Internal::Type::BaseModel
845
+ attr_accessor calling_windows: ::Array[Revox::Models::CampaignGetRowsResponse::Row::Call::CallRetryConfig::CallingWindow]
846
+
847
+ attr_accessor max_retry_attempts: Integer
848
+
849
+ attr_accessor timezone: String?
850
+
851
+ def initialize: (
852
+ calling_windows: ::Array[Revox::Models::CampaignGetRowsResponse::Row::Call::CallRetryConfig::CallingWindow],
853
+ max_retry_attempts: Integer,
854
+ ?timezone: String?
855
+ ) -> void
856
+
857
+ def to_hash: -> {
858
+ calling_windows: ::Array[Revox::Models::CampaignGetRowsResponse::Row::Call::CallRetryConfig::CallingWindow],
859
+ max_retry_attempts: Integer,
860
+ timezone: String?
861
+ }
862
+
863
+ type calling_window =
864
+ {
865
+ calling_window_end_time: String,
866
+ calling_window_start_time: String,
867
+ retry_delay_seconds: Integer
868
+ }
869
+
870
+ class CallingWindow < Revox::Internal::Type::BaseModel
871
+ attr_accessor calling_window_end_time: String
872
+
873
+ attr_accessor calling_window_start_time: String
874
+
875
+ attr_accessor retry_delay_seconds: Integer
876
+
877
+ def initialize: (
878
+ calling_window_end_time: String,
879
+ calling_window_start_time: String,
880
+ retry_delay_seconds: Integer
881
+ ) -> void
882
+
883
+ def to_hash: -> {
884
+ calling_window_end_time: String,
885
+ calling_window_start_time: String,
886
+ retry_delay_seconds: Integer
887
+ }
888
+ end
889
+ end
890
+
891
+ type campaign = { id: String, name: String }
892
+
893
+ class Campaign < Revox::Internal::Type::BaseModel
894
+ attr_accessor id: String
895
+
896
+ attr_accessor name: String
897
+
898
+ def initialize: (id: String, name: String) -> void
899
+
900
+ def to_hash: -> { id: String, name: String }
901
+ end
902
+
903
+ type direction = :inbound | :outbound
904
+
905
+ module Direction
906
+ extend Revox::Internal::Type::Enum
907
+
908
+ INBOUND: :inbound
909
+ OUTBOUND: :outbound
910
+
911
+ def self?.values: -> ::Array[Revox::Models::CampaignGetRowsResponse::Row::Call::direction]
912
+ end
913
+
914
+ type last_call_attempt =
915
+ {
916
+ id: String,
917
+ answered_at: top,
918
+ dial_error: Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::dial_error?,
919
+ ended_at: top,
920
+ phone_number: String,
921
+ recording_url: String?,
922
+ result: Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::result?,
923
+ started_at: top,
924
+ status: Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::status,
925
+ end_reason: String?,
926
+ ended_by: Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::ended_by?,
927
+ structured_output: ::Hash[Symbol, top]?,
928
+ transcript: ::Array[Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::Transcript]?
929
+ }
930
+
931
+ class LastCallAttempt < Revox::Internal::Type::BaseModel
932
+ attr_accessor id: String
933
+
934
+ attr_accessor answered_at: top
935
+
936
+ attr_accessor dial_error: Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::dial_error?
937
+
938
+ attr_accessor ended_at: top
939
+
940
+ attr_accessor phone_number: String
941
+
942
+ attr_accessor recording_url: String?
943
+
944
+ attr_accessor result: Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::result?
945
+
946
+ attr_accessor started_at: top
947
+
948
+ attr_accessor status: Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::status
949
+
950
+ attr_accessor end_reason: String?
951
+
952
+ attr_accessor ended_by: Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::ended_by?
953
+
954
+ attr_accessor structured_output: ::Hash[Symbol, top]?
955
+
956
+ attr_accessor transcript: ::Array[Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::Transcript]?
957
+
958
+ def initialize: (
959
+ id: String,
960
+ answered_at: top,
961
+ dial_error: Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::dial_error?,
962
+ ended_at: top,
963
+ phone_number: String,
964
+ recording_url: String?,
965
+ result: Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::result?,
966
+ started_at: top,
967
+ status: Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::status,
968
+ ?end_reason: String?,
969
+ ?ended_by: Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::ended_by?,
970
+ ?structured_output: ::Hash[Symbol, top]?,
971
+ ?transcript: ::Array[Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::Transcript]?
972
+ ) -> void
973
+
974
+ def to_hash: -> {
975
+ id: String,
976
+ answered_at: top,
977
+ dial_error: Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::dial_error?,
978
+ ended_at: top,
979
+ phone_number: String,
980
+ recording_url: String?,
981
+ result: Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::result?,
982
+ started_at: top,
983
+ status: Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::status,
984
+ end_reason: String?,
985
+ ended_by: Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::ended_by?,
986
+ structured_output: ::Hash[Symbol, top]?,
987
+ transcript: ::Array[Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::Transcript]?
988
+ }
989
+
990
+ type dial_error =
991
+ :number_non_attributed
992
+ | :too_many_calls
993
+ | :busy
994
+ | :temporarily_unavailable
995
+ | :no_answer
996
+ | :no_international_permission
997
+ | :precondition_failed
998
+ | :non_classified_error
999
+
1000
+ module DialError
1001
+ extend Revox::Internal::Type::Enum
1002
+
1003
+ NUMBER_NON_ATTRIBUTED: :number_non_attributed
1004
+ TOO_MANY_CALLS: :too_many_calls
1005
+ BUSY: :busy
1006
+ TEMPORARILY_UNAVAILABLE: :temporarily_unavailable
1007
+ NO_ANSWER: :no_answer
1008
+ NO_INTERNATIONAL_PERMISSION: :no_international_permission
1009
+ PRECONDITION_FAILED: :precondition_failed
1010
+ NON_CLASSIFIED_ERROR: :non_classified_error
1011
+
1012
+ def self?.values: -> ::Array[Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::dial_error]
1013
+ end
1014
+
1015
+ type result =
1016
+ :IVR | :voicemail | :human | :unknown | :"ios-screening-filter"
1017
+
1018
+ module Result
1019
+ extend Revox::Internal::Type::Enum
1020
+
1021
+ IVR: :IVR
1022
+ VOICEMAIL: :voicemail
1023
+ HUMAN: :human
1024
+ UNKNOWN: :unknown
1025
+ IOS_SCREENING_FILTER: :"ios-screening-filter"
1026
+
1027
+ def self?.values: -> ::Array[Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::result]
1028
+ end
1029
+
1030
+ type status = :queued | :ringing | :ongoing | :completed | :error
1031
+
1032
+ module Status
1033
+ extend Revox::Internal::Type::Enum
1034
+
1035
+ QUEUED: :queued
1036
+ RINGING: :ringing
1037
+ ONGOING: :ongoing
1038
+ COMPLETED: :completed
1039
+ ERROR: :error
1040
+
1041
+ def self?.values: -> ::Array[Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::status]
1042
+ end
1043
+
1044
+ type ended_by = :agent | :user | :system
1045
+
1046
+ module EndedBy
1047
+ extend Revox::Internal::Type::Enum
1048
+
1049
+ AGENT: :agent
1050
+ USER: :user
1051
+ SYSTEM: :system
1052
+
1053
+ def self?.values: -> ::Array[Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::ended_by]
1054
+ end
1055
+
1056
+ type transcript =
1057
+ {
1058
+ content: String,
1059
+ role: Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::Transcript::role,
1060
+ tool_arguments: Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::Transcript::tool_arguments,
1061
+ tool_is_error: bool,
1062
+ tool_name: String
1063
+ }
1064
+
1065
+ class Transcript < Revox::Internal::Type::BaseModel
1066
+ attr_accessor content: String
1067
+
1068
+ attr_accessor role: Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::Transcript::role
1069
+
1070
+ attr_reader tool_arguments: Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::Transcript::tool_arguments?
1071
+
1072
+ def tool_arguments=: (
1073
+ Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::Transcript::tool_arguments
1074
+ ) -> Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::Transcript::tool_arguments
1075
+
1076
+ attr_reader tool_is_error: bool?
1077
+
1078
+ def tool_is_error=: (bool) -> bool
1079
+
1080
+ attr_reader tool_name: String?
1081
+
1082
+ def tool_name=: (String) -> String
1083
+
1084
+ def initialize: (
1085
+ content: String,
1086
+ role: Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::Transcript::role,
1087
+ ?tool_arguments: Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::Transcript::tool_arguments,
1088
+ ?tool_is_error: bool,
1089
+ ?tool_name: String
1090
+ ) -> void
1091
+
1092
+ def to_hash: -> {
1093
+ content: String,
1094
+ role: Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::Transcript::role,
1095
+ tool_arguments: Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::Transcript::tool_arguments,
1096
+ tool_is_error: bool,
1097
+ tool_name: String
1098
+ }
1099
+
1100
+ type role = :user | :assistant | :tool
1101
+
1102
+ module Role
1103
+ extend Revox::Internal::Type::Enum
1104
+
1105
+ USER: :user
1106
+ ASSISTANT: :assistant
1107
+ TOOL: :tool
1108
+
1109
+ def self?.values: -> ::Array[Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::Transcript::role]
1110
+ end
1111
+
1112
+ type tool_arguments = ::Hash[Symbol, top] | String
1113
+
1114
+ module ToolArguments
1115
+ extend Revox::Internal::Type::Union
1116
+
1117
+ def self?.variants: -> ::Array[Revox::Models::CampaignGetRowsResponse::Row::Call::LastCallAttempt::Transcript::tool_arguments]
1118
+
1119
+ UnionMember0Map: Revox::Internal::Type::Converter
1120
+ end
1121
+ end
1122
+ end
1123
+
1124
+ type llm_model =
1125
+ Revox::Models::CampaignGetRowsResponse::Row::Call::LlmModel::UnionMember0
1126
+ | Revox::Models::CampaignGetRowsResponse::Row::Call::LlmModel::UnionMember1
1127
+
1128
+ module LlmModel
1129
+ extend Revox::Internal::Type::Union
1130
+
1131
+ type union_member0 =
1132
+ {
1133
+ name: Revox::Models::CampaignGetRowsResponse::Row::Call::LlmModel::UnionMember0::name_,
1134
+ type: :"dedicated-instance"
1135
+ }
1136
+
1137
+ class UnionMember0 < Revox::Internal::Type::BaseModel
1138
+ attr_accessor name: Revox::Models::CampaignGetRowsResponse::Row::Call::LlmModel::UnionMember0::name_
1139
+
1140
+ attr_accessor type: :"dedicated-instance"
1141
+
1142
+ def initialize: (
1143
+ name: Revox::Models::CampaignGetRowsResponse::Row::Call::LlmModel::UnionMember0::name_,
1144
+ ?type: :"dedicated-instance"
1145
+ ) -> void
1146
+
1147
+ def to_hash: -> {
1148
+ name: Revox::Models::CampaignGetRowsResponse::Row::Call::LlmModel::UnionMember0::name_,
1149
+ type: :"dedicated-instance"
1150
+ }
1151
+
1152
+ type name_ = :"gpt-4.1" | :"ministral-3-8b-instruct"
1153
+
1154
+ module Name
1155
+ extend Revox::Internal::Type::Enum
1156
+
1157
+ GPT_4_1: :"gpt-4.1"
1158
+ MINISTRAL_3_8B_INSTRUCT: :"ministral-3-8b-instruct"
1159
+
1160
+ def self?.values: -> ::Array[Revox::Models::CampaignGetRowsResponse::Row::Call::LlmModel::UnionMember0::name_]
1161
+ end
1162
+ end
1163
+
1164
+ type union_member1 =
1165
+ {
1166
+ openrouter_model_id: String,
1167
+ openrouter_provider: String,
1168
+ type: :openrouter
1169
+ }
1170
+
1171
+ class UnionMember1 < Revox::Internal::Type::BaseModel
1172
+ attr_accessor openrouter_model_id: String
1173
+
1174
+ attr_accessor openrouter_provider: String
1175
+
1176
+ attr_accessor type: :openrouter
1177
+
1178
+ def initialize: (
1179
+ openrouter_model_id: String,
1180
+ openrouter_provider: String,
1181
+ ?type: :openrouter
1182
+ ) -> void
1183
+
1184
+ def to_hash: -> {
1185
+ openrouter_model_id: String,
1186
+ openrouter_provider: String,
1187
+ type: :openrouter
1188
+ }
1189
+ end
1190
+
1191
+ def self?.variants: -> ::Array[Revox::Models::CampaignGetRowsResponse::Row::Call::llm_model]
1192
+ end
1193
+
1194
+ type status =
1195
+ :initializing
1196
+ | :queued_for_calling
1197
+ | :calling
1198
+ | :scheduled
1199
+ | :completed
1200
+ | :cancelled
1201
+ | :errored
1202
+
1203
+ module Status
1204
+ extend Revox::Internal::Type::Enum
1205
+
1206
+ INITIALIZING: :initializing
1207
+ QUEUED_FOR_CALLING: :queued_for_calling
1208
+ CALLING: :calling
1209
+ SCHEDULED: :scheduled
1210
+ COMPLETED: :completed
1211
+ CANCELLED: :cancelled
1212
+ ERRORED: :errored
1213
+
1214
+ def self?.values: -> ::Array[Revox::Models::CampaignGetRowsResponse::Row::Call::status]
1215
+ end
1216
+ end
1217
+ end
1218
+ end
1219
+ end
1220
+ end