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
@@ -25,6 +25,12 @@ module Revox
25
25
  # @return [String]
26
26
  required :id, String
27
27
 
28
+ # @!attribute assignee
29
+ # The team member responsible for following up on this call.
30
+ #
31
+ # @return [Revox::Models::CallRetrieveResponse::Call::Assignee, nil]
32
+ required :assignee, -> { Revox::Models::CallRetrieveResponse::Call::Assignee }, nil?: true
33
+
28
34
  # @!attribute assistant
29
35
  #
30
36
  # @return [Revox::Models::CallRetrieveResponse::Call::Assistant, nil]
@@ -55,6 +61,13 @@ module Revox
55
61
  # @return [Revox::Models::CallRetrieveResponse::Call::Campaign, nil]
56
62
  required :campaign, -> { Revox::Models::CallRetrieveResponse::Call::Campaign }, nil?: true
57
63
 
64
+ # @!attribute contact
65
+ # Magic contact variables (prospect identity) extracted from the call's input data
66
+ # and transcript.
67
+ #
68
+ # @return [Revox::Models::CallRetrieveResponse::Call::Contact]
69
+ required :contact, -> { Revox::Models::CallRetrieveResponse::Call::Contact }
70
+
58
71
  # @!attribute created_at
59
72
  # The time the call order was created.
60
73
  #
@@ -103,7 +116,7 @@ module Revox
103
116
 
104
117
  # @!attribute llm_model
105
118
  #
106
- # @return [Revox::Models::CallRetrieveResponse::Call::LlmModel::UnionMember0, Revox::Models::CallRetrieveResponse::Call::LlmModel::UnionMember1]
119
+ # @return [Revox::Models::CallRetrieveResponse::Call::LlmModel::UnionMember0, Revox::Models::CallRetrieveResponse::Call::LlmModel::UnionMember1, Revox::Models::CallRetrieveResponse::Call::LlmModel::UnionMember2, Revox::Models::CallRetrieveResponse::Call::LlmModel::UnionMember3]
107
120
  required :llm_model, union: -> { Revox::Models::CallRetrieveResponse::Call::LlmModel }
108
121
 
109
122
  # @!attribute metadata
@@ -118,6 +131,12 @@ module Revox
118
131
  # @return [String]
119
132
  required :organization_id, String
120
133
 
134
+ # @!attribute prompt_variables
135
+ # Variables used to interpolate the prompt.
136
+ #
137
+ # @return [Hash{Symbol=>String}, nil]
138
+ required :prompt_variables, Revox::Internal::Type::HashOf[String], nil?: true
139
+
121
140
  # @!attribute scheduled_at
122
141
  # The time the call order is scheduled to start.
123
142
  #
@@ -137,7 +156,26 @@ module Revox
137
156
  # @return [String]
138
157
  required :to_phone_number, String
139
158
 
140
- # @!method initialize(id:, assistant:, call_attempts:, call_retry_config:, calls_count:, campaign:, created_at:, direction:, first_sentence_delay_ms:, from_phone_number:, is_cancelled:, is_completed:, last_call_attempt:, llm_model:, metadata:, organization_id:, scheduled_at:, status:, to_phone_number:)
159
+ # @!attribute updated_at
160
+ # The time the call order was last updated (any state change, retry, or analysis
161
+ # result).
162
+ #
163
+ # @return [Object]
164
+ required :updated_at, Revox::Internal::Type::Unknown
165
+
166
+ # @!attribute outcome
167
+ # Business outcome of the call. Null if not computed or no transcript.
168
+ #
169
+ # @return [Symbol, Revox::Models::CallRetrieveResponse::Call::Outcome, nil]
170
+ optional :outcome, enum: -> { Revox::Models::CallRetrieveResponse::Call::Outcome }, nil?: true
171
+
172
+ # @!attribute outcome_summary
173
+ # LLM explanation for the outcome, when outcome was computed from the transcript.
174
+ #
175
+ # @return [String, nil]
176
+ optional :outcome_summary, String, nil?: true
177
+
178
+ # @!method initialize(id:, assignee:, assistant:, call_attempts:, call_retry_config:, calls_count:, campaign:, contact:, created_at:, direction:, first_sentence_delay_ms:, from_phone_number:, is_cancelled:, is_completed:, last_call_attempt:, llm_model:, metadata:, organization_id:, prompt_variables:, scheduled_at:, status:, to_phone_number:, updated_at:, outcome: nil, outcome_summary: nil)
141
179
  # Some parameter documentations has been truncated, see
142
180
  # {Revox::Models::CallRetrieveResponse::Call} for more details.
143
181
  #
@@ -146,6 +184,8 @@ module Revox
146
184
  #
147
185
  # @param id [String] The ID of the call.
148
186
  #
187
+ # @param assignee [Revox::Models::CallRetrieveResponse::Call::Assignee, nil] The team member responsible for following up on this call.
188
+ #
149
189
  # @param assistant [Revox::Models::CallRetrieveResponse::Call::Assistant, nil]
150
190
  #
151
191
  # @param call_attempts [Array<Revox::Models::CallRetrieveResponse::Call::CallAttempt>] All call attempts for this call order, ordered by most recent first.
@@ -156,6 +196,8 @@ module Revox
156
196
  #
157
197
  # @param campaign [Revox::Models::CallRetrieveResponse::Call::Campaign, nil]
158
198
  #
199
+ # @param contact [Revox::Models::CallRetrieveResponse::Call::Contact] Magic contact variables (prospect identity) extracted from the call's input data
200
+ #
159
201
  # @param created_at [Object] The time the call order was created.
160
202
  #
161
203
  # @param direction [Symbol, Revox::Models::CallRetrieveResponse::Call::Direction] Whether the call is inbound or outbound.
@@ -170,17 +212,60 @@ module Revox
170
212
  #
171
213
  # @param last_call_attempt [Revox::Models::CallRetrieveResponse::Call::LastCallAttempt, nil] This represent a single call attempt. A call attempt is a single call made to th
172
214
  #
173
- # @param llm_model [Revox::Models::CallRetrieveResponse::Call::LlmModel::UnionMember0, Revox::Models::CallRetrieveResponse::Call::LlmModel::UnionMember1]
215
+ # @param llm_model [Revox::Models::CallRetrieveResponse::Call::LlmModel::UnionMember0, Revox::Models::CallRetrieveResponse::Call::LlmModel::UnionMember1, Revox::Models::CallRetrieveResponse::Call::LlmModel::UnionMember2, Revox::Models::CallRetrieveResponse::Call::LlmModel::UnionMember3]
174
216
  #
175
217
  # @param metadata [Hash{Symbol=>String}, nil] Metadata stored with the call.
176
218
  #
177
219
  # @param organization_id [String] The ID of the organization that owns the call.
178
220
  #
221
+ # @param prompt_variables [Hash{Symbol=>String}, nil] Variables used to interpolate the prompt.
222
+ #
179
223
  # @param scheduled_at [Object] The time the call order is scheduled to start.
180
224
  #
181
225
  # @param status [Symbol, Revox::Models::CallRetrieveResponse::Call::Status] The status of the call.
182
226
  #
183
227
  # @param to_phone_number [String] The phone number that received the call. Formatted in E.164 format. Example: +12
228
+ #
229
+ # @param updated_at [Object] The time the call order was last updated (any state change, retry, or analysis r
230
+ #
231
+ # @param outcome [Symbol, Revox::Models::CallRetrieveResponse::Call::Outcome, nil] Business outcome of the call. Null if not computed or no transcript.
232
+ #
233
+ # @param outcome_summary [String, nil] LLM explanation for the outcome, when outcome was computed from the transcript.
234
+
235
+ # @see Revox::Models::CallRetrieveResponse::Call#assignee
236
+ class Assignee < Revox::Internal::Type::BaseModel
237
+ # @!attribute id
238
+ # The database user id of the assignee.
239
+ #
240
+ # @return [String]
241
+ required :id, String
242
+
243
+ # @!attribute email
244
+ #
245
+ # @return [String]
246
+ required :email, String
247
+
248
+ # @!attribute first_name
249
+ #
250
+ # @return [String, nil]
251
+ required :first_name, String, nil?: true
252
+
253
+ # @!attribute last_name
254
+ #
255
+ # @return [String, nil]
256
+ required :last_name, String, nil?: true
257
+
258
+ # @!method initialize(id:, email:, first_name:, last_name:)
259
+ # The team member responsible for following up on this call.
260
+ #
261
+ # @param id [String] The database user id of the assignee.
262
+ #
263
+ # @param email [String]
264
+ #
265
+ # @param first_name [String, nil]
266
+ #
267
+ # @param last_name [String, nil]
268
+ end
184
269
 
185
270
  # @see Revox::Models::CallRetrieveResponse::Call#assistant
186
271
  class Assistant < Revox::Internal::Type::BaseModel
@@ -189,15 +274,36 @@ module Revox
189
274
  # @return [String]
190
275
  required :id, String
191
276
 
277
+ # @!attribute after_call_sms_outcomes
278
+ # Which call outcomes trigger the after-call SMS. When empty or null, no
279
+ # after-call SMS is sent. Use "none" when outcome is null.
280
+ #
281
+ # @return [Array<Symbol, Revox::Models::CallRetrieveResponse::Call::Assistant::AfterCallSMSOutcome>, nil]
282
+ required :after_call_sms_outcomes,
283
+ -> { Revox::Internal::Type::ArrayOf[enum: Revox::Models::CallRetrieveResponse::Call::Assistant::AfterCallSMSOutcome] },
284
+ nil?: true
285
+
286
+ # @!attribute after_call_sms_prompt
287
+ # Prompt / instructions for the after-call SMS. Supports {{variable}}
288
+ # placeholders. When null, no after-call SMS is sent.
289
+ #
290
+ # @return [String, nil]
291
+ required :after_call_sms_prompt, String, nil?: true
292
+
192
293
  # @!attribute background_sound
193
- # The background sound to play during the call. Useful to give the impression that
194
- # your AI agent is in an office.
294
+ # Ambient background sound to play during the call. null disables it.
195
295
  #
196
296
  # @return [Symbol, Revox::Models::CallRetrieveResponse::Call::Assistant::BackgroundSound, nil]
197
297
  required :background_sound,
198
298
  enum: -> { Revox::Models::CallRetrieveResponse::Call::Assistant::BackgroundSound },
199
299
  nil?: true
200
300
 
301
+ # @!attribute background_sound_volume
302
+ # Volume of the ambient background sound (0 = silent, 1 = max).
303
+ #
304
+ # @return [Float]
305
+ required :background_sound_volume, Float
306
+
201
307
  # @!attribute calendly
202
308
  #
203
309
  # @return [Revox::Models::CallRetrieveResponse::Call::Assistant::Calendly, nil]
@@ -212,11 +318,48 @@ module Revox
212
318
  -> { Revox::Models::CallRetrieveResponse::Call::Assistant::CallRetryConfig },
213
319
  nil?: true
214
320
 
321
+ # @!attribute cartesia_dictionary_pronunciation_id
322
+ # Optional Cartesia pronunciation dictionary ID linked to this assistant.
323
+ #
324
+ # @return [String, nil]
325
+ required :cartesia_dictionary_pronunciation_id, String, nil?: true
326
+
215
327
  # @!attribute created_at
216
328
  #
217
329
  # @return [Object]
218
330
  required :created_at, Revox::Internal::Type::Unknown
219
331
 
332
+ # @!attribute custom_tools
333
+ #
334
+ # @return [Array<Revox::Models::CallRetrieveResponse::Call::Assistant::CustomTool>, nil]
335
+ required :custom_tools,
336
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CallRetrieveResponse::Call::Assistant::CustomTool] },
337
+ nil?: true
338
+
339
+ # @!attribute email_notification_address
340
+ # Email address(es) to receive notifications when a call ends with a matching
341
+ # outcome. Accepts a single email or a comma-separated list (e.g. "alice@x.com,
342
+ # bob@y.com").
343
+ #
344
+ # @return [String, nil]
345
+ required :email_notification_address, String, nil?: true
346
+
347
+ # @!attribute email_notification_language
348
+ # The language used for the notification email content. One of "en" or "fr".
349
+ #
350
+ # @return [Symbol, Revox::Models::CallRetrieveResponse::Call::Assistant::EmailNotificationLanguage]
351
+ required :email_notification_language,
352
+ enum: -> { Revox::Models::CallRetrieveResponse::Call::Assistant::EmailNotificationLanguage }
353
+
354
+ # @!attribute email_notification_outcomes
355
+ # Which call outcomes trigger an email notification. E.g. ["interested",
356
+ # "completed", "none"]. Use "none" when outcome is null.
357
+ #
358
+ # @return [Array<Symbol, Revox::Models::CallRetrieveResponse::Call::Assistant::EmailNotificationOutcome>, nil]
359
+ required :email_notification_outcomes,
360
+ -> { Revox::Internal::Type::ArrayOf[enum: Revox::Models::CallRetrieveResponse::Call::Assistant::EmailNotificationOutcome] },
361
+ nil?: true
362
+
220
363
  # @!attribute end_of_call_sentence
221
364
  #
222
365
  # @return [String, nil]
@@ -239,6 +382,22 @@ module Revox
239
382
  required :first_sentence_mode,
240
383
  enum: -> { Revox::Models::CallRetrieveResponse::Call::Assistant::FirstSentenceMode }
241
384
 
385
+ # @!attribute from_phone_number
386
+ # Override the default outbound phone number for calls placed with this assistant.
387
+ # When null, the organization's default phone number is used.
388
+ #
389
+ # @return [String, nil]
390
+ required :from_phone_number, String, nil?: true
391
+
392
+ # @!attribute human_transfer_mode
393
+ # Warm or cold transfer when transfer_phone_number is set; null when transfer is
394
+ # not configured.
395
+ #
396
+ # @return [Symbol, Revox::Models::CallRetrieveResponse::Call::Assistant::HumanTransferMode, nil]
397
+ required :human_transfer_mode,
398
+ enum: -> { Revox::Models::CallRetrieveResponse::Call::Assistant::HumanTransferMode },
399
+ nil?: true
400
+
242
401
  # @!attribute ivr_navigation_enabled
243
402
  # Enable IVR navigation tools. When enabled, the assistant can send DTMF tones and
244
403
  # skip turns to navigate phone menus.
@@ -248,9 +407,16 @@ module Revox
248
407
 
249
408
  # @!attribute llm_model
250
409
  #
251
- # @return [Revox::Models::CallRetrieveResponse::Call::Assistant::LlmModel::UnionMember0, Revox::Models::CallRetrieveResponse::Call::Assistant::LlmModel::UnionMember1]
410
+ # @return [Revox::Models::CallRetrieveResponse::Call::Assistant::LlmModel::UnionMember0, Revox::Models::CallRetrieveResponse::Call::Assistant::LlmModel::UnionMember1, Revox::Models::CallRetrieveResponse::Call::Assistant::LlmModel::UnionMember2, Revox::Models::CallRetrieveResponse::Call::Assistant::LlmModel::UnionMember3]
252
411
  required :llm_model, union: -> { Revox::Models::CallRetrieveResponse::Call::Assistant::LlmModel }
253
412
 
413
+ # @!attribute logo_url
414
+ # Public URL of the brand logo shown on the assistant's demo page. Null when
415
+ # unset.
416
+ #
417
+ # @return [String, nil]
418
+ required :logo_url, String, nil?: true
419
+
254
420
  # @!attribute max_call_duration_secs
255
421
  # The maximum duration of the call in seconds. This is the maximum time the call
256
422
  # will be allowed to run.
@@ -258,6 +424,14 @@ module Revox
258
424
  # @return [Float]
259
425
  required :max_call_duration_secs, Float
260
426
 
427
+ # @!attribute max_duration_end_message
428
+ # Optional message the agent will say, without being interruptible, when the call
429
+ # reaches its max duration. Kept short so it fits inside the farewell buffer. If
430
+ # null, the call ends silently.
431
+ #
432
+ # @return [String, nil]
433
+ required :max_duration_end_message, String, nil?: true
434
+
261
435
  # @!attribute name
262
436
  #
263
437
  # @return [String]
@@ -268,11 +442,41 @@ module Revox
268
442
  # @return [String]
269
443
  required :organization_id, String
270
444
 
445
+ # @!attribute position
446
+ #
447
+ # @return [Revox::Models::CallRetrieveResponse::Call::Assistant::Position, nil]
448
+ required :position, -> { Revox::Models::CallRetrieveResponse::Call::Assistant::Position }, nil?: true
449
+
271
450
  # @!attribute prompt
272
451
  #
273
452
  # @return [String]
274
453
  required :prompt, String
275
454
 
455
+ # @!attribute prompt_flow
456
+ #
457
+ # @return [Revox::Models::CallRetrieveResponse::Call::Assistant::PromptFlow, nil]
458
+ required :prompt_flow, -> { Revox::Models::CallRetrieveResponse::Call::Assistant::PromptFlow }, nil?: true
459
+
460
+ # @!attribute slack
461
+ #
462
+ # @return [Revox::Models::CallRetrieveResponse::Call::Assistant::Slack, nil]
463
+ required :slack, -> { Revox::Models::CallRetrieveResponse::Call::Assistant::Slack }, nil?: true
464
+
465
+ # @!attribute sms_enabled
466
+ # Enable SMS tool during calls. When enabled, the agent can send SMS messages to
467
+ # the user on the call.
468
+ #
469
+ # @return [Boolean]
470
+ required :sms_enabled, Revox::Internal::Type::Boolean
471
+
472
+ # @!attribute sms_template
473
+ # Hardcoded SMS template to send during calls. When set, this exact text is sent
474
+ # instead of letting the agent generate the message. Supports {{variable}}
475
+ # placeholders.
476
+ #
477
+ # @return [String, nil]
478
+ required :sms_template, String, nil?: true
479
+
276
480
  # @!attribute structured_output_config
277
481
  # The structured output config to use for the call. This is used to extract the
278
482
  # data from the call (like email, name, company name, etc.).
@@ -282,12 +486,61 @@ module Revox
282
486
  -> { Revox::Internal::Type::ArrayOf[Revox::Models::CallRetrieveResponse::Call::Assistant::StructuredOutputConfig] },
283
487
  nil?: true
284
488
 
489
+ # @!attribute structured_output_prompt
490
+ # Custom prompt for structured data extraction. If not provided, a default prompt
491
+ # is used. Available variables: {{transcript}}, {{call_direction}},
492
+ # {{user_phone_number}}, {{agent_phone_number}}.
493
+ #
494
+ # @return [String, nil]
495
+ required :structured_output_prompt, String, nil?: true
496
+
497
+ # @!attribute stt_context
498
+ # Assistant-level speech-to-text context: structured `general` key/value pairs
499
+ # plus a list of domain `terms`. Prompt-derived context is merged in without
500
+ # replacing existing entries.
501
+ #
502
+ # @return [Revox::Models::CallRetrieveResponse::Call::Assistant::SttContext, nil]
503
+ required :stt_context, -> { Revox::Models::CallRetrieveResponse::Call::Assistant::SttContext }, nil?: true
504
+
505
+ # @!attribute stt_model
506
+ # Transcriber (speech-to-text) model used for the assistant.
507
+ #
508
+ # @return [Symbol, Revox::Models::CallRetrieveResponse::Call::Assistant::SttModel]
509
+ required :stt_model, enum: -> { Revox::Models::CallRetrieveResponse::Call::Assistant::SttModel }
510
+
511
+ # @!attribute thinking_sound
512
+ # Audio clip to play while the agent is processing a response. One of the built-in
513
+ # LiveKit audio clips; null disables it.
514
+ #
515
+ # @return [Symbol, Revox::Models::CallRetrieveResponse::Call::Assistant::ThinkingSound, nil]
516
+ required :thinking_sound,
517
+ enum: -> { Revox::Models::CallRetrieveResponse::Call::Assistant::ThinkingSound },
518
+ nil?: true
519
+
520
+ # @!attribute thinking_sound_probability
521
+ # Probability [0..1] that the thinking sound plays on any given turn; otherwise
522
+ # the agent is silent while thinking.
523
+ #
524
+ # @return [Float]
525
+ required :thinking_sound_probability, Float
526
+
527
+ # @!attribute thinking_sound_volume
528
+ # Volume of the thinking sound (0 = silent, 1 = max).
529
+ #
530
+ # @return [Float]
531
+ required :thinking_sound_volume, Float
532
+
285
533
  # @!attribute transfer_phone_number
286
534
  # Phone number to transfer calls to when users request to speak to a human agent.
287
535
  #
288
536
  # @return [String, nil]
289
537
  required :transfer_phone_number, String, nil?: true
290
538
 
539
+ # @!attribute type
540
+ #
541
+ # @return [Symbol, Revox::Models::CallRetrieveResponse::Call::Assistant::Type]
542
+ required :type, enum: -> { Revox::Models::CallRetrieveResponse::Call::Assistant::Type }
543
+
291
544
  # @!attribute updated_at
292
545
  #
293
546
  # @return [Object]
@@ -305,37 +558,83 @@ module Revox
305
558
  # @return [String, nil]
306
559
  required :voicemail_message, String, nil?: true
307
560
 
561
+ # @!attribute voicemail_sms_prompt
562
+ # Prompt / instructions for the voicemail SMS. Supports {{variable}} placeholders.
563
+ # When null, no SMS is sent on voicemail.
564
+ #
565
+ # @return [String, nil]
566
+ required :voicemail_sms_prompt, String, nil?: true
567
+
568
+ # @!attribute warm_transfer_summary_instructions
569
+ # Warm transfer only: instructions for the supervisor handoff summary; null when
570
+ # not configured or cold transfer.
571
+ #
572
+ # @return [String, nil]
573
+ required :warm_transfer_summary_instructions, String, nil?: true
574
+
308
575
  # @!attribute webhook_url
309
576
  # The webhook URL to call when the call is completed.
310
577
  #
311
578
  # @return [String, nil]
312
579
  required :webhook_url, String, nil?: true
313
580
 
581
+ # @!attribute zoho
582
+ #
583
+ # @return [Revox::Models::CallRetrieveResponse::Call::Assistant::Zoho, nil]
584
+ required :zoho, -> { Revox::Models::CallRetrieveResponse::Call::Assistant::Zoho }, nil?: true
585
+
586
+ # @!attribute created_by
587
+ # The user who created the assistant.
588
+ #
589
+ # @return [Revox::Models::CallRetrieveResponse::Call::Assistant::CreatedBy, nil]
590
+ optional :created_by, -> { Revox::Models::CallRetrieveResponse::Call::Assistant::CreatedBy }, nil?: true
591
+
314
592
  # @!attribute faq_items
315
593
  #
316
594
  # @return [Array<Revox::Models::CallRetrieveResponse::Call::Assistant::FaqItem>, nil]
317
595
  optional :faq_items,
318
596
  -> { Revox::Internal::Type::ArrayOf[Revox::Models::CallRetrieveResponse::Call::Assistant::FaqItem] }
319
597
 
598
+ # @!attribute is_realestate_assistant
599
+ #
600
+ # @return [Boolean, nil]
601
+ optional :is_realestate_assistant, Revox::Internal::Type::Boolean
602
+
320
603
  # @!attribute pending_faq_count
321
604
  #
322
605
  # @return [Float, nil]
323
606
  optional :pending_faq_count, Float
324
607
 
325
- # @!method initialize(id:, background_sound:, calendly:, call_retry_config:, created_at:, end_of_call_sentence:, first_sentence:, first_sentence_delay_ms:, first_sentence_mode:, ivr_navigation_enabled:, llm_model:, max_call_duration_secs:, name:, organization_id:, prompt:, structured_output_config:, transfer_phone_number:, updated_at:, voice:, voicemail_message:, webhook_url:, faq_items: nil, pending_faq_count: nil)
608
+ # @!method initialize(id:, after_call_sms_outcomes:, after_call_sms_prompt:, background_sound:, background_sound_volume:, calendly:, call_retry_config:, cartesia_dictionary_pronunciation_id:, created_at:, custom_tools:, email_notification_address:, email_notification_language:, email_notification_outcomes:, end_of_call_sentence:, first_sentence:, first_sentence_delay_ms:, first_sentence_mode:, from_phone_number:, human_transfer_mode:, ivr_navigation_enabled:, llm_model:, logo_url:, max_call_duration_secs:, max_duration_end_message:, name:, organization_id:, position:, prompt:, prompt_flow:, slack:, sms_enabled:, sms_template:, structured_output_config:, structured_output_prompt:, stt_context:, stt_model:, thinking_sound:, thinking_sound_probability:, thinking_sound_volume:, transfer_phone_number:, type:, updated_at:, voice:, voicemail_message:, voicemail_sms_prompt:, warm_transfer_summary_instructions:, webhook_url:, zoho:, created_by: nil, faq_items: nil, is_realestate_assistant: nil, pending_faq_count: nil)
326
609
  # Some parameter documentations has been truncated, see
327
610
  # {Revox::Models::CallRetrieveResponse::Call::Assistant} for more details.
328
611
  #
329
612
  # @param id [String]
330
613
  #
331
- # @param background_sound [Symbol, Revox::Models::CallRetrieveResponse::Call::Assistant::BackgroundSound, nil] The background sound to play during the call. Useful to give the impression that
614
+ # @param after_call_sms_outcomes [Array<Symbol, Revox::Models::CallRetrieveResponse::Call::Assistant::AfterCallSMSOutcome>, nil] Which call outcomes trigger the after-call SMS. When empty or null, no after-cal
615
+ #
616
+ # @param after_call_sms_prompt [String, nil] Prompt / instructions for the after-call SMS. Supports {{variable}} placeholders
617
+ #
618
+ # @param background_sound [Symbol, Revox::Models::CallRetrieveResponse::Call::Assistant::BackgroundSound, nil] Ambient background sound to play during the call. null disables it.
619
+ #
620
+ # @param background_sound_volume [Float] Volume of the ambient background sound (0 = silent, 1 = max).
332
621
  #
333
622
  # @param calendly [Revox::Models::CallRetrieveResponse::Call::Assistant::Calendly, nil]
334
623
  #
335
624
  # @param call_retry_config [Revox::Models::CallRetrieveResponse::Call::Assistant::CallRetryConfig, nil] Configuration for call retry behavior including time windows, delays, and max it
336
625
  #
626
+ # @param cartesia_dictionary_pronunciation_id [String, nil] Optional Cartesia pronunciation dictionary ID linked to this assistant.
627
+ #
337
628
  # @param created_at [Object]
338
629
  #
630
+ # @param custom_tools [Array<Revox::Models::CallRetrieveResponse::Call::Assistant::CustomTool>, nil]
631
+ #
632
+ # @param email_notification_address [String, nil] Email address(es) to receive notifications when a call ends with a matching outc
633
+ #
634
+ # @param email_notification_language [Symbol, Revox::Models::CallRetrieveResponse::Call::Assistant::EmailNotificationLanguage] The language used for the notification email content. One of "en" or "fr".
635
+ #
636
+ # @param email_notification_outcomes [Array<Symbol, Revox::Models::CallRetrieveResponse::Call::Assistant::EmailNotificationOutcome>, nil] Which call outcomes trigger an email notification. E.g. ["interested", "complete
637
+ #
339
638
  # @param end_of_call_sentence [String, nil]
340
639
  #
341
640
  # @param first_sentence [String, nil]
@@ -344,36 +643,93 @@ module Revox
344
643
  #
345
644
  # @param first_sentence_mode [Symbol, Revox::Models::CallRetrieveResponse::Call::Assistant::FirstSentenceMode]
346
645
  #
646
+ # @param from_phone_number [String, nil] Override the default outbound phone number for calls placed with this assistant.
647
+ #
648
+ # @param human_transfer_mode [Symbol, Revox::Models::CallRetrieveResponse::Call::Assistant::HumanTransferMode, nil] Warm or cold transfer when transfer_phone_number is set; null when transfer is n
649
+ #
347
650
  # @param ivr_navigation_enabled [Boolean] Enable IVR navigation tools. When enabled, the assistant can send DTMF tones and
348
651
  #
349
- # @param llm_model [Revox::Models::CallRetrieveResponse::Call::Assistant::LlmModel::UnionMember0, Revox::Models::CallRetrieveResponse::Call::Assistant::LlmModel::UnionMember1]
652
+ # @param llm_model [Revox::Models::CallRetrieveResponse::Call::Assistant::LlmModel::UnionMember0, Revox::Models::CallRetrieveResponse::Call::Assistant::LlmModel::UnionMember1, Revox::Models::CallRetrieveResponse::Call::Assistant::LlmModel::UnionMember2, Revox::Models::CallRetrieveResponse::Call::Assistant::LlmModel::UnionMember3]
653
+ #
654
+ # @param logo_url [String, nil] Public URL of the brand logo shown on the assistant's demo page. Null when unset
350
655
  #
351
656
  # @param max_call_duration_secs [Float] The maximum duration of the call in seconds. This is the maximum time the call w
352
657
  #
658
+ # @param max_duration_end_message [String, nil] Optional message the agent will say, without being interruptible, when the call
659
+ #
353
660
  # @param name [String]
354
661
  #
355
662
  # @param organization_id [String]
356
663
  #
664
+ # @param position [Revox::Models::CallRetrieveResponse::Call::Assistant::Position, nil]
665
+ #
357
666
  # @param prompt [String]
358
667
  #
668
+ # @param prompt_flow [Revox::Models::CallRetrieveResponse::Call::Assistant::PromptFlow, nil]
669
+ #
670
+ # @param slack [Revox::Models::CallRetrieveResponse::Call::Assistant::Slack, nil]
671
+ #
672
+ # @param sms_enabled [Boolean] Enable SMS tool during calls. When enabled, the agent can send SMS messages to t
673
+ #
674
+ # @param sms_template [String, nil] Hardcoded SMS template to send during calls. When set, this exact text is sent i
675
+ #
359
676
  # @param structured_output_config [Array<Revox::Models::CallRetrieveResponse::Call::Assistant::StructuredOutputConfig>, nil] The structured output config to use for the call. This is used to extract the da
360
677
  #
678
+ # @param structured_output_prompt [String, nil] Custom prompt for structured data extraction. If not provided, a default prompt
679
+ #
680
+ # @param stt_context [Revox::Models::CallRetrieveResponse::Call::Assistant::SttContext, nil] Assistant-level speech-to-text context: structured `general` key/value pairs plu
681
+ #
682
+ # @param stt_model [Symbol, Revox::Models::CallRetrieveResponse::Call::Assistant::SttModel] Transcriber (speech-to-text) model used for the assistant.
683
+ #
684
+ # @param thinking_sound [Symbol, Revox::Models::CallRetrieveResponse::Call::Assistant::ThinkingSound, nil] Audio clip to play while the agent is processing a response. One of the built-in
685
+ #
686
+ # @param thinking_sound_probability [Float] Probability [0..1] that the thinking sound plays on any given turn; otherwise th
687
+ #
688
+ # @param thinking_sound_volume [Float] Volume of the thinking sound (0 = silent, 1 = max).
689
+ #
361
690
  # @param transfer_phone_number [String, nil] Phone number to transfer calls to when users request to speak to a human agent.
362
691
  #
692
+ # @param type [Symbol, Revox::Models::CallRetrieveResponse::Call::Assistant::Type]
693
+ #
363
694
  # @param updated_at [Object]
364
695
  #
365
696
  # @param voice [Revox::Models::CallRetrieveResponse::Call::Assistant::Voice, nil]
366
697
  #
367
698
  # @param voicemail_message [String, nil] If set, when voicemail is detected the agent will speak this message then hang u
368
699
  #
700
+ # @param voicemail_sms_prompt [String, nil] Prompt / instructions for the voicemail SMS. Supports {{variable}} placeholders.
701
+ #
702
+ # @param warm_transfer_summary_instructions [String, nil] Warm transfer only: instructions for the supervisor handoff summary; null when n
703
+ #
369
704
  # @param webhook_url [String, nil] The webhook URL to call when the call is completed.
370
705
  #
706
+ # @param zoho [Revox::Models::CallRetrieveResponse::Call::Assistant::Zoho, nil]
707
+ #
708
+ # @param created_by [Revox::Models::CallRetrieveResponse::Call::Assistant::CreatedBy, nil] The user who created the assistant.
709
+ #
371
710
  # @param faq_items [Array<Revox::Models::CallRetrieveResponse::Call::Assistant::FaqItem>]
372
711
  #
712
+ # @param is_realestate_assistant [Boolean]
713
+ #
373
714
  # @param pending_faq_count [Float]
374
715
 
375
- # The background sound to play during the call. Useful to give the impression that
376
- # your AI agent is in an office.
716
+ module AfterCallSMSOutcome
717
+ extend Revox::Internal::Type::Enum
718
+
719
+ NOT_INTERESTED = :not_interested
720
+ INTERESTED = :interested
721
+ COMPLETED = :completed
722
+ REQUESTED_CALLBACK_LATER = :requested_callback_later
723
+ REQUESTED_CALLBACK_NEW_NUMBER = :requested_callback_new_number
724
+ DO_NOT_CONTACT = :do_not_contact
725
+ AI_AVERSE = :ai_averse
726
+ NONE = :none
727
+
728
+ # @!method self.values
729
+ # @return [Array<Symbol>]
730
+ end
731
+
732
+ # Ambient background sound to play during the call. null disables it.
377
733
  #
378
734
  # @see Revox::Models::CallRetrieveResponse::Call::Assistant#background_sound
379
735
  module BackgroundSound
@@ -412,6 +768,23 @@ module Revox
412
768
 
413
769
  # @see Revox::Models::CallRetrieveResponse::Call::Assistant#call_retry_config
414
770
  class CallRetryConfig < Revox::Internal::Type::BaseModel
771
+ # @!attribute allowed_days
772
+ # Days of the week when calls are allowed, in the recipient's timezone. Default:
773
+ # Monday through Friday.
774
+ #
775
+ # @return [Array<Symbol, Revox::Models::CallRetrieveResponse::Call::Assistant::CallRetryConfig::AllowedDay>]
776
+ required :allowed_days,
777
+ -> { Revox::Internal::Type::ArrayOf[enum: Revox::Models::CallRetrieveResponse::Call::Assistant::CallRetryConfig::AllowedDay] }
778
+
779
+ # @!attribute call_twice_in_a_row
780
+ # If true and max_retry_attempts >= 2, attempt #2 fires immediately (skipping
781
+ # retry_delay_seconds) when attempt #1 didn't reach a human.
782
+ # Calling-window/allowed-days checks still apply. Only affects the 1→2 transition.
783
+ # Default: false.
784
+ #
785
+ # @return [Boolean]
786
+ required :call_twice_in_a_row, Revox::Internal::Type::Boolean
787
+
415
788
  # @!attribute calling_windows
416
789
  #
417
790
  # @return [Array<Revox::Models::CallRetrieveResponse::Call::Assistant::CallRetryConfig::CallingWindow>]
@@ -432,7 +805,7 @@ module Revox
432
805
  # @return [String, nil]
433
806
  optional :timezone, String, nil?: true
434
807
 
435
- # @!method initialize(calling_windows:, max_retry_attempts:, timezone: nil)
808
+ # @!method initialize(allowed_days:, call_twice_in_a_row:, calling_windows:, max_retry_attempts:, timezone: nil)
436
809
  # Some parameter documentations has been truncated, see
437
810
  # {Revox::Models::CallRetrieveResponse::Call::Assistant::CallRetryConfig} for more
438
811
  # details.
@@ -440,12 +813,31 @@ module Revox
440
813
  # Configuration for call retry behavior including time windows, delays, and max
441
814
  # iterations. If not provided, defaults will be used.
442
815
  #
816
+ # @param allowed_days [Array<Symbol, Revox::Models::CallRetrieveResponse::Call::Assistant::CallRetryConfig::AllowedDay>] Days of the week when calls are allowed, in the recipient's timezone. Default: M
817
+ #
818
+ # @param call_twice_in_a_row [Boolean] If true and max_retry_attempts >= 2, attempt #2 fires immediately (skipping retr
819
+ #
443
820
  # @param calling_windows [Array<Revox::Models::CallRetrieveResponse::Call::Assistant::CallRetryConfig::CallingWindow>]
444
821
  #
445
822
  # @param max_retry_attempts [Integer] Maximum number of call retry attempts. Default: 3.
446
823
  #
447
824
  # @param timezone [String, nil] Optional IANA timezone identifier to override the automatic timezone detection f
448
825
 
826
+ module AllowedDay
827
+ extend Revox::Internal::Type::Enum
828
+
829
+ MONDAY = :monday
830
+ TUESDAY = :tuesday
831
+ WEDNESDAY = :wednesday
832
+ THURSDAY = :thursday
833
+ FRIDAY = :friday
834
+ SATURDAY = :saturday
835
+ SUNDAY = :sunday
836
+
837
+ # @!method self.values
838
+ # @return [Array<Symbol>]
839
+ end
840
+
449
841
  class CallingWindow < Revox::Internal::Type::BaseModel
450
842
  # @!attribute calling_window_end_time
451
843
  # End time for the calling window in the recipient's timezone (or
@@ -482,72 +874,298 @@ module Revox
482
874
  end
483
875
  end
484
876
 
485
- # @see Revox::Models::CallRetrieveResponse::Call::Assistant#first_sentence_mode
486
- module FirstSentenceMode
487
- extend Revox::Internal::Type::Enum
877
+ class CustomTool < Revox::Internal::Type::BaseModel
878
+ # @!attribute body_template
879
+ # JSON body template for the request. Use quoted {{variable}} placeholders (e.g.
880
+ # "{{name}}") for dynamic values
881
+ #
882
+ # @return [String, nil]
883
+ required :body_template, String, nil?: true
488
884
 
489
- GENERATED = :generated
490
- STATIC = :static
491
- NONE = :none
885
+ # @!attribute description
886
+ # Human-readable description of what the tool does, used by the LLM to decide when
887
+ # to call it
888
+ #
889
+ # @return [String]
890
+ required :description, String
492
891
 
493
- # @!method self.values
494
- # @return [Array<Symbol>]
495
- end
892
+ # @!attribute headers
893
+ # HTTP headers to include in the request. Values support {{variable}} placeholders
894
+ #
895
+ # @return [Array<Revox::Models::CallRetrieveResponse::Call::Assistant::CustomTool::Header>]
896
+ required :headers,
897
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CallRetrieveResponse::Call::Assistant::CustomTool::Header] }
496
898
 
497
- # @see Revox::Models::CallRetrieveResponse::Call::Assistant#llm_model
498
- module LlmModel
499
- extend Revox::Internal::Type::Union
899
+ # @!attribute input_schema
900
+ # Schema defining the parameters the LLM should extract from the conversation to
901
+ # pass to this tool
902
+ #
903
+ # @return [Array<Revox::Models::CallRetrieveResponse::Call::Assistant::CustomTool::InputSchema>]
904
+ required :input_schema,
905
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CallRetrieveResponse::Call::Assistant::CustomTool::InputSchema] }
500
906
 
501
- variant -> { Revox::Models::CallRetrieveResponse::Call::Assistant::LlmModel::UnionMember0 }
907
+ # @!attribute method_
908
+ # HTTP method to use when calling the API endpoint
909
+ #
910
+ # @return [Symbol, Revox::Models::CallRetrieveResponse::Call::Assistant::CustomTool::Method]
911
+ required :method_,
912
+ enum: -> { Revox::Models::CallRetrieveResponse::Call::Assistant::CustomTool::Method },
913
+ api_name: :method
502
914
 
503
- variant -> { Revox::Models::CallRetrieveResponse::Call::Assistant::LlmModel::UnionMember1 }
915
+ # @!attribute name
916
+ # Unique tool name in lowercase_snake_case (e.g. check_inventory)
917
+ #
918
+ # @return [String]
919
+ required :name, String
504
920
 
505
- class UnionMember0 < Revox::Internal::Type::BaseModel
921
+ # @!attribute query_params
922
+ # Query string parameters appended to the URL. Values support {{variable}}
923
+ # placeholders
924
+ #
925
+ # @return [Array<Revox::Models::CallRetrieveResponse::Call::Assistant::CustomTool::QueryParam>]
926
+ required :query_params,
927
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CallRetrieveResponse::Call::Assistant::CustomTool::QueryParam] }
928
+
929
+ # @!attribute url
930
+ # Full URL of the API endpoint. Supports {{variable}} placeholders for dynamic
931
+ # values
932
+ #
933
+ # @return [String]
934
+ required :url, String
935
+
936
+ # @!method initialize(body_template:, description:, headers:, input_schema:, method_:, name:, query_params:, url:)
937
+ # Some parameter documentations has been truncated, see
938
+ # {Revox::Models::CallRetrieveResponse::Call::Assistant::CustomTool} for more
939
+ # details.
940
+ #
941
+ # @param body_template [String, nil] JSON body template for the request. Use quoted {{variable}} placeholders (e.g. "
942
+ #
943
+ # @param description [String] Human-readable description of what the tool does, used by the LLM to decide when
944
+ #
945
+ # @param headers [Array<Revox::Models::CallRetrieveResponse::Call::Assistant::CustomTool::Header>] HTTP headers to include in the request. Values support {{variable}} placeholders
946
+ #
947
+ # @param input_schema [Array<Revox::Models::CallRetrieveResponse::Call::Assistant::CustomTool::InputSchema>] Schema defining the parameters the LLM should extract from the conversation to p
948
+ #
949
+ # @param method_ [Symbol, Revox::Models::CallRetrieveResponse::Call::Assistant::CustomTool::Method] HTTP method to use when calling the API endpoint
950
+ #
951
+ # @param name [String] Unique tool name in lowercase_snake_case (e.g. check_inventory)
952
+ #
953
+ # @param query_params [Array<Revox::Models::CallRetrieveResponse::Call::Assistant::CustomTool::QueryParam>] Query string parameters appended to the URL. Values support {{variable}} placeho
954
+ #
955
+ # @param url [String] Full URL of the API endpoint. Supports {{variable}} placeholders for dynamic val
956
+
957
+ class Header < Revox::Internal::Type::BaseModel
958
+ # @!attribute key
959
+ #
960
+ # @return [String]
961
+ required :key, String
962
+
963
+ # @!attribute value
964
+ #
965
+ # @return [String]
966
+ required :value, String
967
+
968
+ # @!method initialize(key:, value:)
969
+ # @param key [String]
970
+ # @param value [String]
971
+ end
972
+
973
+ class InputSchema < Revox::Internal::Type::BaseModel
506
974
  # @!attribute name
507
975
  #
508
- # @return [Symbol, Revox::Models::CallRetrieveResponse::Call::Assistant::LlmModel::UnionMember0::Name]
509
- required :name,
510
- enum: -> { Revox::Models::CallRetrieveResponse::Call::Assistant::LlmModel::UnionMember0::Name }
976
+ # @return [String]
977
+ required :name, String
978
+
979
+ # @!attribute required
980
+ #
981
+ # @return [Boolean]
982
+ required :required, Revox::Internal::Type::Boolean
511
983
 
512
984
  # @!attribute type
513
985
  #
514
- # @return [Symbol, :"dedicated-instance"]
515
- required :type, const: :"dedicated-instance"
986
+ # @return [Symbol, Revox::Models::CallRetrieveResponse::Call::Assistant::CustomTool::InputSchema::Type]
987
+ required :type,
988
+ enum: -> { Revox::Models::CallRetrieveResponse::Call::Assistant::CustomTool::InputSchema::Type }
516
989
 
517
- # @!method initialize(name:, type: :"dedicated-instance")
518
- # @param name [Symbol, Revox::Models::CallRetrieveResponse::Call::Assistant::LlmModel::UnionMember0::Name]
519
- # @param type [Symbol, :"dedicated-instance"]
990
+ # @!attribute description
991
+ #
992
+ # @return [String, nil]
993
+ optional :description, String
520
994
 
521
- # @see Revox::Models::CallRetrieveResponse::Call::Assistant::LlmModel::UnionMember0#name
522
- module Name
995
+ # @!attribute enum_options
996
+ #
997
+ # @return [Array<String>, nil]
998
+ optional :enum_options, Revox::Internal::Type::ArrayOf[String]
999
+
1000
+ # @!method initialize(name:, required:, type:, description: nil, enum_options: nil)
1001
+ # @param name [String]
1002
+ # @param required [Boolean]
1003
+ # @param type [Symbol, Revox::Models::CallRetrieveResponse::Call::Assistant::CustomTool::InputSchema::Type]
1004
+ # @param description [String]
1005
+ # @param enum_options [Array<String>]
1006
+
1007
+ # @see Revox::Models::CallRetrieveResponse::Call::Assistant::CustomTool::InputSchema#type
1008
+ module Type
523
1009
  extend Revox::Internal::Type::Enum
524
1010
 
525
- GPT_4_1 = :"gpt-4.1"
526
- MINISTRAL_3_8B_INSTRUCT = :"ministral-3-8b-instruct"
1011
+ STRING = :string
1012
+ NUMBER = :number
1013
+ BOOLEAN = :boolean
1014
+ ENUM = :enum
1015
+ DATE = :date
1016
+ DATETIME = :datetime
527
1017
 
528
1018
  # @!method self.values
529
1019
  # @return [Array<Symbol>]
530
1020
  end
531
1021
  end
532
1022
 
533
- class UnionMember1 < Revox::Internal::Type::BaseModel
534
- # @!attribute openrouter_model_id
535
- # The model ID to use from OpenRouter. eg: openai/gpt-4.1
1023
+ # HTTP method to use when calling the API endpoint
1024
+ #
1025
+ # @see Revox::Models::CallRetrieveResponse::Call::Assistant::CustomTool#method_
1026
+ module Method
1027
+ extend Revox::Internal::Type::Enum
1028
+
1029
+ GET = :GET
1030
+ POST = :POST
1031
+ PUT = :PUT
1032
+ PATCH = :PATCH
1033
+ DELETE = :DELETE
1034
+
1035
+ # @!method self.values
1036
+ # @return [Array<Symbol>]
1037
+ end
1038
+
1039
+ class QueryParam < Revox::Internal::Type::BaseModel
1040
+ # @!attribute key
536
1041
  #
537
1042
  # @return [String]
538
- required :openrouter_model_id, String
1043
+ required :key, String
539
1044
 
540
- # @!attribute openrouter_provider
541
- # The provider to use from OpenRouter. eg: nebius, openai, azure, etc.
1045
+ # @!attribute value
542
1046
  #
543
1047
  # @return [String]
544
- required :openrouter_provider, String
1048
+ required :value, String
545
1049
 
546
- # @!attribute type
547
- # Use a model from OpenRouter.
548
- #
549
- # @return [Symbol, :openrouter]
550
- required :type, const: :openrouter
1050
+ # @!method initialize(key:, value:)
1051
+ # @param key [String]
1052
+ # @param value [String]
1053
+ end
1054
+ end
1055
+
1056
+ # The language used for the notification email content. One of "en" or "fr".
1057
+ #
1058
+ # @see Revox::Models::CallRetrieveResponse::Call::Assistant#email_notification_language
1059
+ module EmailNotificationLanguage
1060
+ extend Revox::Internal::Type::Enum
1061
+
1062
+ EN = :en
1063
+ FR = :fr
1064
+
1065
+ # @!method self.values
1066
+ # @return [Array<Symbol>]
1067
+ end
1068
+
1069
+ module EmailNotificationOutcome
1070
+ extend Revox::Internal::Type::Enum
1071
+
1072
+ NOT_INTERESTED = :not_interested
1073
+ INTERESTED = :interested
1074
+ COMPLETED = :completed
1075
+ REQUESTED_CALLBACK_LATER = :requested_callback_later
1076
+ REQUESTED_CALLBACK_NEW_NUMBER = :requested_callback_new_number
1077
+ DO_NOT_CONTACT = :do_not_contact
1078
+ AI_AVERSE = :ai_averse
1079
+ NONE = :none
1080
+
1081
+ # @!method self.values
1082
+ # @return [Array<Symbol>]
1083
+ end
1084
+
1085
+ # @see Revox::Models::CallRetrieveResponse::Call::Assistant#first_sentence_mode
1086
+ module FirstSentenceMode
1087
+ extend Revox::Internal::Type::Enum
1088
+
1089
+ GENERATED = :generated
1090
+ STATIC = :static
1091
+ NONE = :none
1092
+
1093
+ # @!method self.values
1094
+ # @return [Array<Symbol>]
1095
+ end
1096
+
1097
+ # Warm or cold transfer when transfer_phone_number is set; null when transfer is
1098
+ # not configured.
1099
+ #
1100
+ # @see Revox::Models::CallRetrieveResponse::Call::Assistant#human_transfer_mode
1101
+ module HumanTransferMode
1102
+ extend Revox::Internal::Type::Enum
1103
+
1104
+ WARM = :warm
1105
+ COLD = :cold
1106
+
1107
+ # @!method self.values
1108
+ # @return [Array<Symbol>]
1109
+ end
1110
+
1111
+ # @see Revox::Models::CallRetrieveResponse::Call::Assistant#llm_model
1112
+ module LlmModel
1113
+ extend Revox::Internal::Type::Union
1114
+
1115
+ variant -> { Revox::Models::CallRetrieveResponse::Call::Assistant::LlmModel::UnionMember0 }
1116
+
1117
+ variant -> { Revox::Models::CallRetrieveResponse::Call::Assistant::LlmModel::UnionMember1 }
1118
+
1119
+ variant -> { Revox::Models::CallRetrieveResponse::Call::Assistant::LlmModel::UnionMember2 }
1120
+
1121
+ variant -> { Revox::Models::CallRetrieveResponse::Call::Assistant::LlmModel::UnionMember3 }
1122
+
1123
+ class UnionMember0 < Revox::Internal::Type::BaseModel
1124
+ # @!attribute name
1125
+ #
1126
+ # @return [Symbol, Revox::Models::CallRetrieveResponse::Call::Assistant::LlmModel::UnionMember0::Name]
1127
+ required :name,
1128
+ enum: -> { Revox::Models::CallRetrieveResponse::Call::Assistant::LlmModel::UnionMember0::Name }
1129
+
1130
+ # @!attribute type
1131
+ #
1132
+ # @return [Symbol, :"dedicated-instance"]
1133
+ required :type, const: :"dedicated-instance"
1134
+
1135
+ # @!method initialize(name:, type: :"dedicated-instance")
1136
+ # @param name [Symbol, Revox::Models::CallRetrieveResponse::Call::Assistant::LlmModel::UnionMember0::Name]
1137
+ # @param type [Symbol, :"dedicated-instance"]
1138
+
1139
+ # @see Revox::Models::CallRetrieveResponse::Call::Assistant::LlmModel::UnionMember0#name
1140
+ module Name
1141
+ extend Revox::Internal::Type::Enum
1142
+
1143
+ GPT_4_1 = :"gpt-4.1"
1144
+ MINISTRAL_3_8B_INSTRUCT = :"ministral-3-8b-instruct"
1145
+
1146
+ # @!method self.values
1147
+ # @return [Array<Symbol>]
1148
+ end
1149
+ end
1150
+
1151
+ class UnionMember1 < Revox::Internal::Type::BaseModel
1152
+ # @!attribute openrouter_model_id
1153
+ # The model ID to use from OpenRouter. eg: openai/gpt-4.1
1154
+ #
1155
+ # @return [String]
1156
+ required :openrouter_model_id, String
1157
+
1158
+ # @!attribute openrouter_provider
1159
+ # The provider to use from OpenRouter. eg: nebius, openai, azure, etc.
1160
+ #
1161
+ # @return [String]
1162
+ required :openrouter_provider, String
1163
+
1164
+ # @!attribute type
1165
+ # Use a model from OpenRouter.
1166
+ #
1167
+ # @return [Symbol, :openrouter]
1168
+ required :type, const: :openrouter
551
1169
 
552
1170
  # @!method initialize(openrouter_model_id:, openrouter_provider:, type: :openrouter)
553
1171
  # @param openrouter_model_id [String] The model ID to use from OpenRouter. eg: openai/gpt-4.1
@@ -557,8 +1175,283 @@ module Revox
557
1175
  # @param type [Symbol, :openrouter] Use a model from OpenRouter.
558
1176
  end
559
1177
 
1178
+ class UnionMember2 < Revox::Internal::Type::BaseModel
1179
+ # @!attribute api_key
1180
+ # API key sent as Bearer token to the custom endpoint.
1181
+ #
1182
+ # @return [String]
1183
+ required :api_key, String
1184
+
1185
+ # @!attribute api_url
1186
+ # Base URL for the OpenAI-compatible API, e.g. https://api.together.xyz/v1
1187
+ #
1188
+ # @return [String]
1189
+ required :api_url, String
1190
+
1191
+ # @!attribute model_name
1192
+ # Model name as expected by the provider, e.g. meta-llama/llama-3-70b
1193
+ #
1194
+ # @return [String]
1195
+ required :model_name, String
1196
+
1197
+ # @!attribute type
1198
+ # OpenAI-compatible chat completions API (bring your own endpoint and key).
1199
+ #
1200
+ # @return [Symbol, :custom]
1201
+ required :type, const: :custom
1202
+
1203
+ # @!method initialize(api_key:, api_url:, model_name:, type: :custom)
1204
+ # @param api_key [String] API key sent as Bearer token to the custom endpoint.
1205
+ #
1206
+ # @param api_url [String] Base URL for the OpenAI-compatible API, e.g. https://api.together.xyz/v1
1207
+ #
1208
+ # @param model_name [String] Model name as expected by the provider, e.g. meta-llama/llama-3-70b
1209
+ #
1210
+ # @param type [Symbol, :custom] OpenAI-compatible chat completions API (bring your own endpoint and key).
1211
+ end
1212
+
1213
+ class UnionMember3 < Revox::Internal::Type::BaseModel
1214
+ # @!attribute provider
1215
+ # The provider to use from Realtime. eg: openai, google.
1216
+ #
1217
+ # @return [Symbol, Revox::Models::CallRetrieveResponse::Call::Assistant::LlmModel::UnionMember3::Provider]
1218
+ required :provider,
1219
+ enum: -> { Revox::Models::CallRetrieveResponse::Call::Assistant::LlmModel::UnionMember3::Provider }
1220
+
1221
+ # @!attribute realtime_model_id
1222
+ # The model ID to use from Realtime. eg: gpt-4.1
1223
+ #
1224
+ # @return [String]
1225
+ required :realtime_model_id, String
1226
+
1227
+ # @!attribute type
1228
+ # Use a model from Realtime.
1229
+ #
1230
+ # @return [Symbol, :realtime]
1231
+ required :type, const: :realtime
1232
+
1233
+ # @!attribute realtime_voice_id
1234
+ # Output voice for the realtime provider (e.g. OpenAI: marin; Gemini: Puck).
1235
+ #
1236
+ # @return [String, nil]
1237
+ optional :realtime_voice_id, String
1238
+
1239
+ # @!method initialize(provider:, realtime_model_id:, realtime_voice_id: nil, type: :realtime)
1240
+ # @param provider [Symbol, Revox::Models::CallRetrieveResponse::Call::Assistant::LlmModel::UnionMember3::Provider] The provider to use from Realtime. eg: openai, google.
1241
+ #
1242
+ # @param realtime_model_id [String] The model ID to use from Realtime. eg: gpt-4.1
1243
+ #
1244
+ # @param realtime_voice_id [String] Output voice for the realtime provider (e.g. OpenAI: marin; Gemini: Puck).
1245
+ #
1246
+ # @param type [Symbol, :realtime] Use a model from Realtime.
1247
+
1248
+ # The provider to use from Realtime. eg: openai, google.
1249
+ #
1250
+ # @see Revox::Models::CallRetrieveResponse::Call::Assistant::LlmModel::UnionMember3#provider
1251
+ module Provider
1252
+ extend Revox::Internal::Type::Enum
1253
+
1254
+ OPENAI = :openai
1255
+ GOOGLE = :google
1256
+
1257
+ # @!method self.values
1258
+ # @return [Array<Symbol>]
1259
+ end
1260
+ end
1261
+
560
1262
  # @!method self.variants
561
- # @return [Array(Revox::Models::CallRetrieveResponse::Call::Assistant::LlmModel::UnionMember0, Revox::Models::CallRetrieveResponse::Call::Assistant::LlmModel::UnionMember1)]
1263
+ # @return [Array(Revox::Models::CallRetrieveResponse::Call::Assistant::LlmModel::UnionMember0, Revox::Models::CallRetrieveResponse::Call::Assistant::LlmModel::UnionMember1, Revox::Models::CallRetrieveResponse::Call::Assistant::LlmModel::UnionMember2, Revox::Models::CallRetrieveResponse::Call::Assistant::LlmModel::UnionMember3)]
1264
+ end
1265
+
1266
+ # @see Revox::Models::CallRetrieveResponse::Call::Assistant#position
1267
+ class Position < Revox::Internal::Type::BaseModel
1268
+ # @!attribute x
1269
+ #
1270
+ # @return [Float]
1271
+ required :x, Float
1272
+
1273
+ # @!attribute y_
1274
+ #
1275
+ # @return [Float]
1276
+ required :y_, Float, api_name: :y
1277
+
1278
+ # @!method initialize(x:, y_:)
1279
+ # @param x [Float]
1280
+ # @param y_ [Float]
1281
+ end
1282
+
1283
+ # @see Revox::Models::CallRetrieveResponse::Call::Assistant#prompt_flow
1284
+ class PromptFlow < Revox::Internal::Type::BaseModel
1285
+ # @!attribute edges
1286
+ #
1287
+ # @return [Array<Revox::Models::CallRetrieveResponse::Call::Assistant::PromptFlow::Edge>]
1288
+ required :edges,
1289
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CallRetrieveResponse::Call::Assistant::PromptFlow::Edge] }
1290
+
1291
+ # @!attribute nodes
1292
+ #
1293
+ # @return [Array<Revox::Models::CallRetrieveResponse::Call::Assistant::PromptFlow::Node>]
1294
+ required :nodes,
1295
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CallRetrieveResponse::Call::Assistant::PromptFlow::Node] }
1296
+
1297
+ # @!method initialize(edges:, nodes:)
1298
+ # @param edges [Array<Revox::Models::CallRetrieveResponse::Call::Assistant::PromptFlow::Edge>]
1299
+ # @param nodes [Array<Revox::Models::CallRetrieveResponse::Call::Assistant::PromptFlow::Node>]
1300
+
1301
+ class Edge < Revox::Internal::Type::BaseModel
1302
+ # @!attribute id
1303
+ #
1304
+ # @return [String]
1305
+ required :id, String
1306
+
1307
+ # @!attribute source
1308
+ #
1309
+ # @return [String]
1310
+ required :source, String
1311
+
1312
+ # @!attribute target
1313
+ #
1314
+ # @return [String]
1315
+ required :target, String
1316
+
1317
+ # @!method initialize(id:, source:, target:)
1318
+ # @param id [String]
1319
+ # @param source [String]
1320
+ # @param target [String]
1321
+ end
1322
+
1323
+ class Node < Revox::Internal::Type::BaseModel
1324
+ # @!attribute id
1325
+ #
1326
+ # @return [String]
1327
+ required :id, String
1328
+
1329
+ # @!attribute data
1330
+ #
1331
+ # @return [Revox::Models::CallRetrieveResponse::Call::Assistant::PromptFlow::Node::Data]
1332
+ required :data, -> { Revox::Models::CallRetrieveResponse::Call::Assistant::PromptFlow::Node::Data }
1333
+
1334
+ # @!attribute position
1335
+ #
1336
+ # @return [Revox::Models::CallRetrieveResponse::Call::Assistant::PromptFlow::Node::Position]
1337
+ required :position,
1338
+ -> { Revox::Models::CallRetrieveResponse::Call::Assistant::PromptFlow::Node::Position }
1339
+
1340
+ # @!attribute type
1341
+ #
1342
+ # @return [Symbol, :promptBlock]
1343
+ required :type, const: :promptBlock
1344
+
1345
+ # @!method initialize(id:, data:, position:, type: :promptBlock)
1346
+ # @param id [String]
1347
+ # @param data [Revox::Models::CallRetrieveResponse::Call::Assistant::PromptFlow::Node::Data]
1348
+ # @param position [Revox::Models::CallRetrieveResponse::Call::Assistant::PromptFlow::Node::Position]
1349
+ # @param type [Symbol, :promptBlock]
1350
+
1351
+ # @see Revox::Models::CallRetrieveResponse::Call::Assistant::PromptFlow::Node#data
1352
+ class Data < Revox::Internal::Type::BaseModel
1353
+ # @!attribute body
1354
+ #
1355
+ # @return [String]
1356
+ required :body, String
1357
+
1358
+ # @!attribute title
1359
+ #
1360
+ # @return [String]
1361
+ required :title, String
1362
+
1363
+ # @!method initialize(body:, title:)
1364
+ # @param body [String]
1365
+ # @param title [String]
1366
+ end
1367
+
1368
+ # @see Revox::Models::CallRetrieveResponse::Call::Assistant::PromptFlow::Node#position
1369
+ class Position < Revox::Internal::Type::BaseModel
1370
+ # @!attribute x
1371
+ #
1372
+ # @return [Float]
1373
+ required :x, Float
1374
+
1375
+ # @!attribute y_
1376
+ #
1377
+ # @return [Float]
1378
+ required :y_, Float, api_name: :y
1379
+
1380
+ # @!method initialize(x:, y_:)
1381
+ # @param x [Float]
1382
+ # @param y_ [Float]
1383
+ end
1384
+ end
1385
+ end
1386
+
1387
+ # @see Revox::Models::CallRetrieveResponse::Call::Assistant#slack
1388
+ class Slack < Revox::Internal::Type::BaseModel
1389
+ # @!attribute channel_id
1390
+ # The Slack channel ID where the notification will be posted.
1391
+ #
1392
+ # @return [String]
1393
+ required :channel_id, String
1394
+
1395
+ # @!attribute connection_id
1396
+ # The Nango connection ID linking the org's Slack workspace to Revox.
1397
+ #
1398
+ # @return [String]
1399
+ required :connection_id, String
1400
+
1401
+ # @!attribute outcomes
1402
+ # Which call outcomes trigger a Slack notification (e.g. ['interested', 'none']).
1403
+ # Use 'none' to notify when outcome is null.
1404
+ #
1405
+ # @return [Array<Symbol, Revox::Models::CallRetrieveResponse::Call::Assistant::Slack::Outcome>]
1406
+ required :outcomes,
1407
+ -> { Revox::Internal::Type::ArrayOf[enum: Revox::Models::CallRetrieveResponse::Call::Assistant::Slack::Outcome] }
1408
+
1409
+ # @!attribute channel_name
1410
+ # Human-readable Slack channel name, cached for display in the UI.
1411
+ #
1412
+ # @return [String, nil]
1413
+ optional :channel_name, String, nil?: true
1414
+
1415
+ # @!attribute template
1416
+ # Optional message template. Supports {{summary}}, {{outcome}}, {{phone}},
1417
+ # {{call_url}}, {{assistant_name}}, {{campaign_name}}, {{first_name}},
1418
+ # {{last_name}}, {{email}}, {{company}}, {{contact_name}}, {{contact_line}}, plus
1419
+ # prompt_variables and structured_output keys. When null/empty a default template
1420
+ # is used.
1421
+ #
1422
+ # @return [String, nil]
1423
+ optional :template, String, nil?: true
1424
+
1425
+ # @!method initialize(channel_id:, connection_id:, outcomes:, channel_name: nil, template: nil)
1426
+ # Some parameter documentations has been truncated, see
1427
+ # {Revox::Models::CallRetrieveResponse::Call::Assistant::Slack} for more details.
1428
+ #
1429
+ # @param channel_id [String] The Slack channel ID where the notification will be posted.
1430
+ #
1431
+ # @param connection_id [String] The Nango connection ID linking the org's Slack workspace to Revox.
1432
+ #
1433
+ # @param outcomes [Array<Symbol, Revox::Models::CallRetrieveResponse::Call::Assistant::Slack::Outcome>] Which call outcomes trigger a Slack notification (e.g. ['interested', 'none']).
1434
+ #
1435
+ # @param channel_name [String, nil] Human-readable Slack channel name, cached for display in the UI.
1436
+ #
1437
+ # @param template [String, nil] Optional message template. Supports {{summary}}, {{outcome}}, {{phone}},
1438
+ # {{call\_
1439
+
1440
+ module Outcome
1441
+ extend Revox::Internal::Type::Enum
1442
+
1443
+ NOT_INTERESTED = :not_interested
1444
+ INTERESTED = :interested
1445
+ COMPLETED = :completed
1446
+ REQUESTED_CALLBACK_LATER = :requested_callback_later
1447
+ REQUESTED_CALLBACK_NEW_NUMBER = :requested_callback_new_number
1448
+ DO_NOT_CONTACT = :do_not_contact
1449
+ AI_AVERSE = :ai_averse
1450
+ NONE = :none
1451
+
1452
+ # @!method self.values
1453
+ # @return [Array<Symbol>]
1454
+ end
562
1455
  end
563
1456
 
564
1457
  class StructuredOutputConfig < Revox::Internal::Type::BaseModel
@@ -611,6 +1504,88 @@ module Revox
611
1504
  end
612
1505
  end
613
1506
 
1507
+ # @see Revox::Models::CallRetrieveResponse::Call::Assistant#stt_context
1508
+ class SttContext < Revox::Internal::Type::BaseModel
1509
+ # @!attribute general
1510
+ #
1511
+ # @return [Array<Revox::Models::CallRetrieveResponse::Call::Assistant::SttContext::General>]
1512
+ required :general,
1513
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CallRetrieveResponse::Call::Assistant::SttContext::General] }
1514
+
1515
+ # @!attribute terms
1516
+ #
1517
+ # @return [Array<String>]
1518
+ required :terms, Revox::Internal::Type::ArrayOf[String]
1519
+
1520
+ # @!method initialize(general:, terms:)
1521
+ # Assistant-level speech-to-text context: structured `general` key/value pairs
1522
+ # plus a list of domain `terms`. Prompt-derived context is merged in without
1523
+ # replacing existing entries.
1524
+ #
1525
+ # @param general [Array<Revox::Models::CallRetrieveResponse::Call::Assistant::SttContext::General>]
1526
+ # @param terms [Array<String>]
1527
+
1528
+ class General < Revox::Internal::Type::BaseModel
1529
+ # @!attribute key
1530
+ #
1531
+ # @return [String]
1532
+ required :key, String
1533
+
1534
+ # @!attribute value
1535
+ #
1536
+ # @return [String]
1537
+ required :value, String
1538
+
1539
+ # @!method initialize(key:, value:)
1540
+ # @param key [String]
1541
+ # @param value [String]
1542
+ end
1543
+ end
1544
+
1545
+ # Transcriber (speech-to-text) model used for the assistant.
1546
+ #
1547
+ # @see Revox::Models::CallRetrieveResponse::Call::Assistant#stt_model
1548
+ module SttModel
1549
+ extend Revox::Internal::Type::Enum
1550
+
1551
+ STT_RT_V4 = :"stt-rt-v4"
1552
+ STT_RT_V5 = :"stt-rt-v5"
1553
+
1554
+ # @!method self.values
1555
+ # @return [Array<Symbol>]
1556
+ end
1557
+
1558
+ # Audio clip to play while the agent is processing a response. One of the built-in
1559
+ # LiveKit audio clips; null disables it.
1560
+ #
1561
+ # @see Revox::Models::CallRetrieveResponse::Call::Assistant#thinking_sound
1562
+ module ThinkingSound
1563
+ extend Revox::Internal::Type::Enum
1564
+
1565
+ CITY_AMBIENCE_OGG = :"city-ambience.ogg"
1566
+ FOREST_AMBIENCE_OGG = :"forest-ambience.ogg"
1567
+ OFFICE_AMBIENCE_OGG = :"office-ambience.ogg"
1568
+ CROWDED_ROOM_OGG = :"crowded-room.ogg"
1569
+ KEYBOARD_TYPING_OGG = :"keyboard-typing.ogg"
1570
+ KEYBOARD_TYPING2_OGG = :"keyboard-typing2.ogg"
1571
+ HOLD_MUSIC_OGG = :"hold_music.ogg"
1572
+
1573
+ # @!method self.values
1574
+ # @return [Array<Symbol>]
1575
+ end
1576
+
1577
+ # @see Revox::Models::CallRetrieveResponse::Call::Assistant#type
1578
+ module Type
1579
+ extend Revox::Internal::Type::Enum
1580
+
1581
+ STANDALONE = :standalone
1582
+ MULTI_STEP = :"multi-step"
1583
+ SUB_ASSISTANT = :"sub-assistant"
1584
+
1585
+ # @!method self.values
1586
+ # @return [Array<Symbol>]
1587
+ end
1588
+
614
1589
  # @see Revox::Models::CallRetrieveResponse::Call::Assistant#voice
615
1590
  class Voice < Revox::Internal::Type::BaseModel
616
1591
  # @!attribute id
@@ -625,6 +1600,13 @@ module Revox
625
1600
  # @return [Symbol, Revox::Models::CallRetrieveResponse::Call::Assistant::Voice::Provider]
626
1601
  required :provider, enum: -> { Revox::Models::CallRetrieveResponse::Call::Assistant::Voice::Provider }
627
1602
 
1603
+ # @!attribute model
1604
+ # Cartesia TTS model (Cartesia only). Defaults to sonic-3 when omitted. Ignored
1605
+ # for other providers.
1606
+ #
1607
+ # @return [Symbol, Revox::Models::CallRetrieveResponse::Call::Assistant::Voice::Model, nil]
1608
+ optional :model, enum: -> { Revox::Models::CallRetrieveResponse::Call::Assistant::Voice::Model }
1609
+
628
1610
  # @!attribute speed
629
1611
  # The speed of the voice. Range depends on provider: Cartesia 0.6–1.5, ElevenLabs
630
1612
  # 0.7–1.2. Default is 1.0.
@@ -632,7 +1614,14 @@ module Revox
632
1614
  # @return [Float, nil]
633
1615
  optional :speed, Float
634
1616
 
635
- # @!method initialize(id:, provider:, speed: nil)
1617
+ # @!attribute volume
1618
+ # Volume of the voice (Cartesia only). 0.5–2.0, default 1.0. Ignored for other
1619
+ # providers.
1620
+ #
1621
+ # @return [Float, nil]
1622
+ optional :volume, Float
1623
+
1624
+ # @!method initialize(id:, provider:, model: nil, speed: nil, volume: nil)
636
1625
  # Some parameter documentations has been truncated, see
637
1626
  # {Revox::Models::CallRetrieveResponse::Call::Assistant::Voice} for more details.
638
1627
  #
@@ -640,7 +1629,11 @@ module Revox
640
1629
  #
641
1630
  # @param provider [Symbol, Revox::Models::CallRetrieveResponse::Call::Assistant::Voice::Provider] The provider of the voice.
642
1631
  #
1632
+ # @param model [Symbol, Revox::Models::CallRetrieveResponse::Call::Assistant::Voice::Model] Cartesia TTS model (Cartesia only). Defaults to sonic-3 when omitted. Ignored fo
1633
+ #
643
1634
  # @param speed [Float] The speed of the voice. Range depends on provider: Cartesia 0.6–1.5, ElevenLabs
1635
+ #
1636
+ # @param volume [Float] Volume of the voice (Cartesia only). 0.5–2.0, default 1.0. Ignored for other pro
644
1637
 
645
1638
  # The provider of the voice.
646
1639
  #
@@ -654,6 +1647,159 @@ module Revox
654
1647
  # @!method self.values
655
1648
  # @return [Array<Symbol>]
656
1649
  end
1650
+
1651
+ # Cartesia TTS model (Cartesia only). Defaults to sonic-3 when omitted. Ignored
1652
+ # for other providers.
1653
+ #
1654
+ # @see Revox::Models::CallRetrieveResponse::Call::Assistant::Voice#model
1655
+ module Model
1656
+ extend Revox::Internal::Type::Enum
1657
+
1658
+ SONIC_3 = :"sonic-3"
1659
+ SONIC_3_5 = :"sonic-3.5"
1660
+
1661
+ # @!method self.values
1662
+ # @return [Array<Symbol>]
1663
+ end
1664
+ end
1665
+
1666
+ # @see Revox::Models::CallRetrieveResponse::Call::Assistant#zoho
1667
+ class Zoho < Revox::Internal::Type::BaseModel
1668
+ # @!attribute connection_id
1669
+ # The Nango connection ID linking the org's Zoho CRM account to Revox.
1670
+ #
1671
+ # @return [String]
1672
+ required :connection_id, String
1673
+
1674
+ # @!attribute field_mapping
1675
+ # Maps extracted call fields (structured_output / prompt variables) onto Zoho
1676
+ # field API names on the upserted record.
1677
+ #
1678
+ # @return [Array<Revox::Models::CallRetrieveResponse::Call::Assistant::Zoho::FieldMapping>]
1679
+ required :field_mapping,
1680
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CallRetrieveResponse::Call::Assistant::Zoho::FieldMapping] }
1681
+
1682
+ # @!attribute log_call_activity
1683
+ # When true, also log the call as a record in Zoho's Calls module (related to the
1684
+ # upserted prospect via Who_Id).
1685
+ #
1686
+ # @return [Boolean]
1687
+ required :log_call_activity, Revox::Internal::Type::Boolean
1688
+
1689
+ # @!attribute module_
1690
+ # Zoho module the prospect record is upserted into (e.g. 'Leads' or 'Contacts').
1691
+ #
1692
+ # @return [String]
1693
+ required :module_, String, api_name: :module
1694
+
1695
+ # @!attribute outcomes
1696
+ # Which call outcomes trigger the Zoho push (e.g. ['interested', 'none']). Use
1697
+ # 'none' to push when outcome is null.
1698
+ #
1699
+ # @return [Array<Symbol, Revox::Models::CallRetrieveResponse::Call::Assistant::Zoho::Outcome>]
1700
+ required :outcomes,
1701
+ -> { Revox::Internal::Type::ArrayOf[enum: Revox::Models::CallRetrieveResponse::Call::Assistant::Zoho::Outcome] }
1702
+
1703
+ # @!attribute template
1704
+ # Optional Note body template. Supports {{summary}}, {{outcome}}, {{phone}},
1705
+ # {{call_url}}, {{assistant_name}}, {{campaign_name}}, {{transcript}}, plus
1706
+ # prompt_variables and structured_output keys. When null/empty a default note
1707
+ # (outcome + summary + auto-listed extracted fields) is used.
1708
+ #
1709
+ # @return [String, nil]
1710
+ optional :template, String, nil?: true
1711
+
1712
+ # @!method initialize(connection_id:, field_mapping:, log_call_activity:, module_:, outcomes:, template: nil)
1713
+ # Some parameter documentations has been truncated, see
1714
+ # {Revox::Models::CallRetrieveResponse::Call::Assistant::Zoho} for more details.
1715
+ #
1716
+ # @param connection_id [String] The Nango connection ID linking the org's Zoho CRM account to Revox.
1717
+ #
1718
+ # @param field_mapping [Array<Revox::Models::CallRetrieveResponse::Call::Assistant::Zoho::FieldMapping>] Maps extracted call fields (structured_output / prompt variables) onto Zoho fiel
1719
+ #
1720
+ # @param log_call_activity [Boolean] When true, also log the call as a record in Zoho's Calls module (related to the
1721
+ #
1722
+ # @param module_ [String] Zoho module the prospect record is upserted into (e.g. 'Leads' or 'Contacts').
1723
+ #
1724
+ # @param outcomes [Array<Symbol, Revox::Models::CallRetrieveResponse::Call::Assistant::Zoho::Outcome>] Which call outcomes trigger the Zoho push (e.g. ['interested', 'none']). Use 'no
1725
+ #
1726
+ # @param template [String, nil] Optional Note body template. Supports {{summary}}, {{outcome}}, {{phone}}, {{cal
1727
+
1728
+ class FieldMapping < Revox::Internal::Type::BaseModel
1729
+ # @!attribute source
1730
+ # Source key to read from the call: a structured_output field name, falling back
1731
+ # to a prompt variable of the same name.
1732
+ #
1733
+ # @return [String]
1734
+ required :source, String
1735
+
1736
+ # @!attribute zoho_field
1737
+ # Destination Zoho field API name on the upserted record (e.g. 'Email', 'Company',
1738
+ # or a custom 'Budget\_\_c').
1739
+ #
1740
+ # @return [String]
1741
+ required :zoho_field, String
1742
+
1743
+ # @!method initialize(source:, zoho_field:)
1744
+ # Some parameter documentations has been truncated, see
1745
+ # {Revox::Models::CallRetrieveResponse::Call::Assistant::Zoho::FieldMapping} for
1746
+ # more details.
1747
+ #
1748
+ # @param source [String] Source key to read from the call: a structured_output field name, falling back t
1749
+ #
1750
+ # @param zoho_field [String] Destination Zoho field API name on the upserted record (e.g. 'Email', 'Company',
1751
+ end
1752
+
1753
+ module Outcome
1754
+ extend Revox::Internal::Type::Enum
1755
+
1756
+ NOT_INTERESTED = :not_interested
1757
+ INTERESTED = :interested
1758
+ COMPLETED = :completed
1759
+ REQUESTED_CALLBACK_LATER = :requested_callback_later
1760
+ REQUESTED_CALLBACK_NEW_NUMBER = :requested_callback_new_number
1761
+ DO_NOT_CONTACT = :do_not_contact
1762
+ AI_AVERSE = :ai_averse
1763
+ NONE = :none
1764
+
1765
+ # @!method self.values
1766
+ # @return [Array<Symbol>]
1767
+ end
1768
+ end
1769
+
1770
+ # @see Revox::Models::CallRetrieveResponse::Call::Assistant#created_by
1771
+ class CreatedBy < Revox::Internal::Type::BaseModel
1772
+ # @!attribute id
1773
+ # The database user id of the creator.
1774
+ #
1775
+ # @return [String]
1776
+ required :id, String
1777
+
1778
+ # @!attribute email
1779
+ #
1780
+ # @return [String]
1781
+ required :email, String
1782
+
1783
+ # @!attribute first_name
1784
+ #
1785
+ # @return [String, nil]
1786
+ required :first_name, String, nil?: true
1787
+
1788
+ # @!attribute last_name
1789
+ #
1790
+ # @return [String, nil]
1791
+ required :last_name, String, nil?: true
1792
+
1793
+ # @!method initialize(id:, email:, first_name:, last_name:)
1794
+ # The user who created the assistant.
1795
+ #
1796
+ # @param id [String] The database user id of the creator.
1797
+ #
1798
+ # @param email [String]
1799
+ #
1800
+ # @param first_name [String, nil]
1801
+ #
1802
+ # @param last_name [String, nil]
657
1803
  end
658
1804
 
659
1805
  class FaqItem < Revox::Internal::Type::BaseModel
@@ -759,12 +1905,20 @@ module Revox
759
1905
  # @return [Symbol, Revox::Models::CallRetrieveResponse::Call::CallAttempt::Status]
760
1906
  required :status, enum: -> { Revox::Models::CallRetrieveResponse::Call::CallAttempt::Status }
761
1907
 
1908
+ # @!attribute assistants_used
1909
+ # Assistant node ids entered during this attempt, in traversal order.
1910
+ #
1911
+ # @return [Array<String>, nil]
1912
+ optional :assistants_used, Revox::Internal::Type::ArrayOf[String], nil?: true
1913
+
762
1914
  # @!attribute end_reason
763
1915
  # Reason for ending the call when ended_by is 'agent'. E.g. 'tool_end_call',
764
1916
  # 'voicemail', 'transfer', 'ivr_no_navigate'.
765
1917
  #
766
- # @return [String, nil]
767
- optional :end_reason, String, nil?: true
1918
+ # @return [Symbol, Revox::Models::CallRetrieveResponse::Call::CallAttempt::EndReason, nil]
1919
+ optional :end_reason,
1920
+ enum: -> { Revox::Models::CallRetrieveResponse::Call::CallAttempt::EndReason },
1921
+ nil?: true
768
1922
 
769
1923
  # @!attribute ended_by
770
1924
  # Who ended the call: 'agent' (AI agent), 'user' (caller/callee hung up), or
@@ -775,6 +1929,25 @@ module Revox
775
1929
  enum: -> { Revox::Models::CallRetrieveResponse::Call::CallAttempt::EndedBy },
776
1930
  nil?: true
777
1931
 
1932
+ # @!attribute post_call_transcript
1933
+ # Higher-quality transcript generated after the call via Soniox async STT. Null
1934
+ # until generated or when no recording is available.
1935
+ #
1936
+ # @return [Array<Revox::Models::CallRetrieveResponse::Call::CallAttempt::PostCallTranscript>, nil]
1937
+ optional :post_call_transcript,
1938
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CallRetrieveResponse::Call::CallAttempt::PostCallTranscript] },
1939
+ nil?: true
1940
+
1941
+ # @!attribute sms_log
1942
+ # Automatic SMS sent after the call (voicemail and after-call), ordered oldest
1943
+ # first. The in-call `send_sms` is excluded — it already appears in the transcript
1944
+ # as a tool call.
1945
+ #
1946
+ # @return [Array<Revox::Models::CallRetrieveResponse::Call::CallAttempt::SMSLog>, nil]
1947
+ optional :sms_log,
1948
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CallRetrieveResponse::Call::CallAttempt::SMSLog] },
1949
+ nil?: true
1950
+
778
1951
  # @!attribute structured_output
779
1952
  # The data extracted from the call, using the structured output config from the
780
1953
  # parent call object.
@@ -785,14 +1958,14 @@ module Revox
785
1958
  nil?: true
786
1959
 
787
1960
  # @!attribute transcript
788
- # The transcript of the call.
1961
+ # The live transcript of the call, built in real time.
789
1962
  #
790
1963
  # @return [Array<Revox::Models::CallRetrieveResponse::Call::CallAttempt::Transcript>, nil]
791
1964
  optional :transcript,
792
1965
  -> { Revox::Internal::Type::ArrayOf[Revox::Models::CallRetrieveResponse::Call::CallAttempt::Transcript] },
793
1966
  nil?: true
794
1967
 
795
- # @!method initialize(id:, answered_at:, dial_error:, ended_at:, phone_number:, recording_url:, result:, started_at:, status:, end_reason: nil, ended_by: nil, structured_output: nil, transcript: nil)
1968
+ # @!method initialize(id:, answered_at:, dial_error:, ended_at:, phone_number:, recording_url:, result:, started_at:, status:, assistants_used: nil, end_reason: nil, ended_by: nil, post_call_transcript: nil, sms_log: nil, structured_output: nil, transcript: nil)
796
1969
  # Some parameter documentations has been truncated, see
797
1970
  # {Revox::Models::CallRetrieveResponse::Call::CallAttempt} for more details.
798
1971
  #
@@ -817,13 +1990,19 @@ module Revox
817
1990
  #
818
1991
  # @param status [Symbol, Revox::Models::CallRetrieveResponse::Call::CallAttempt::Status] The status of the call attempt.
819
1992
  #
820
- # @param end_reason [String, nil] Reason for ending the call when ended_by is 'agent'. E.g. 'tool_end_call', 'voic
1993
+ # @param assistants_used [Array<String>, nil] Assistant node ids entered during this attempt, in traversal order.
1994
+ #
1995
+ # @param end_reason [Symbol, Revox::Models::CallRetrieveResponse::Call::CallAttempt::EndReason, nil] Reason for ending the call when ended_by is 'agent'. E.g. 'tool_end_call', 'voic
821
1996
  #
822
1997
  # @param ended_by [Symbol, Revox::Models::CallRetrieveResponse::Call::CallAttempt::EndedBy, nil] Who ended the call: 'agent' (AI agent), 'user' (caller/callee hung up), or 'syst
823
1998
  #
1999
+ # @param post_call_transcript [Array<Revox::Models::CallRetrieveResponse::Call::CallAttempt::PostCallTranscript>, nil] Higher-quality transcript generated after the call via Soniox async STT. Null un
2000
+ #
2001
+ # @param sms_log [Array<Revox::Models::CallRetrieveResponse::Call::CallAttempt::SMSLog>, nil] Automatic SMS sent after the call (voicemail and after-call), ordered oldest fir
2002
+ #
824
2003
  # @param structured_output [Hash{Symbol=>Object}, nil] The data extracted from the call, using the structured output config from the pa
825
2004
  #
826
- # @param transcript [Array<Revox::Models::CallRetrieveResponse::Call::CallAttempt::Transcript>, nil] The transcript of the call.
2005
+ # @param transcript [Array<Revox::Models::CallRetrieveResponse::Call::CallAttempt::Transcript>, nil] The live transcript of the call, built in real time.
827
2006
 
828
2007
  # The SIP error that occurred.
829
2008
  #
@@ -848,45 +2027,201 @@ module Revox
848
2027
  module Result
849
2028
  extend Revox::Internal::Type::Enum
850
2029
 
851
- IVR = :IVR
852
- VOICEMAIL = :voicemail
853
- HUMAN = :human
854
- UNKNOWN = :unknown
855
- IOS_SCREENING_FILTER = :"ios-screening-filter"
2030
+ IVR = :IVR
2031
+ VOICEMAIL = :voicemail
2032
+ HUMAN = :human
2033
+ UNKNOWN = :unknown
2034
+ IOS_SCREENING_FILTER = :"ios-screening-filter"
2035
+
2036
+ # @!method self.values
2037
+ # @return [Array<Symbol>]
2038
+ end
2039
+
2040
+ # The status of the call attempt.
2041
+ #
2042
+ # @see Revox::Models::CallRetrieveResponse::Call::CallAttempt#status
2043
+ module Status
2044
+ extend Revox::Internal::Type::Enum
2045
+
2046
+ QUEUED = :queued
2047
+ RINGING = :ringing
2048
+ ONGOING = :ongoing
2049
+ COMPLETED = :completed
2050
+ ERROR = :error
2051
+
2052
+ # @!method self.values
2053
+ # @return [Array<Symbol>]
2054
+ end
2055
+
2056
+ # Reason for ending the call when ended_by is 'agent'. E.g. 'tool_end_call',
2057
+ # 'voicemail', 'transfer', 'ivr_no_navigate'.
2058
+ #
2059
+ # @see Revox::Models::CallRetrieveResponse::Call::CallAttempt#end_reason
2060
+ module EndReason
2061
+ extend Revox::Internal::Type::Enum
2062
+
2063
+ CLIENT_INITIATED = :client_initiated
2064
+ CONNECTION_TIMEOUT = :connection_timeout
2065
+ HUMAN_TAKEOVER = :human_takeover
2066
+ IVR_NO_NAVIGATE = :ivr_no_navigate
2067
+ MAX_DURATION = :max_duration
2068
+ PARTICIPANT_REMOVED = :participant_removed
2069
+ TOOL_END_CALL = :tool_end_call
2070
+ TRANSFER = :transfer
2071
+ USER_INACTIVE = :user_inactive
2072
+ USER_REJECTED = :user_rejected
2073
+ USER_UNAVAILABLE = :user_unavailable
2074
+ VOICEMAIL = :voicemail
2075
+ SPEED_DIAL_ABANDONED = :speed_dial_abandoned
2076
+ SPEED_DIAL_OPERATOR_MISSED = :speed_dial_operator_missed
2077
+ SPEED_DIAL_TIMEOUT = :speed_dial_timeout
2078
+ SPEED_DIAL_HANGUP = :speed_dial_hangup
2079
+
2080
+ # @!method self.values
2081
+ # @return [Array<Symbol>]
2082
+ end
2083
+
2084
+ # Who ended the call: 'agent' (AI agent), 'user' (caller/callee hung up), or
2085
+ # 'system' (e.g. max duration limit).
2086
+ #
2087
+ # @see Revox::Models::CallRetrieveResponse::Call::CallAttempt#ended_by
2088
+ module EndedBy
2089
+ extend Revox::Internal::Type::Enum
2090
+
2091
+ AGENT = :agent
2092
+ USER = :user
2093
+ SYSTEM = :system
2094
+
2095
+ # @!method self.values
2096
+ # @return [Array<Symbol>]
2097
+ end
2098
+
2099
+ class PostCallTranscript < Revox::Internal::Type::BaseModel
2100
+ # @!attribute content
2101
+ #
2102
+ # @return [String]
2103
+ required :content, String
2104
+
2105
+ # @!attribute role
2106
+ #
2107
+ # @return [Symbol, Revox::Models::CallRetrieveResponse::Call::CallAttempt::PostCallTranscript::Role]
2108
+ required :role,
2109
+ enum: -> { Revox::Models::CallRetrieveResponse::Call::CallAttempt::PostCallTranscript::Role }
2110
+
2111
+ # @!attribute tool_arguments
2112
+ #
2113
+ # @return [Hash{Symbol=>Object}, String, nil]
2114
+ optional :tool_arguments,
2115
+ union: -> { Revox::Models::CallRetrieveResponse::Call::CallAttempt::PostCallTranscript::ToolArguments }
2116
+
2117
+ # @!attribute tool_is_error
2118
+ #
2119
+ # @return [Boolean, nil]
2120
+ optional :tool_is_error, Revox::Internal::Type::Boolean
2121
+
2122
+ # @!attribute tool_name
2123
+ #
2124
+ # @return [String, nil]
2125
+ optional :tool_name, String
2126
+
2127
+ # @!attribute tool_output
2128
+ #
2129
+ # @return [String, nil]
2130
+ optional :tool_output, String
2131
+
2132
+ # @!method initialize(content:, role:, tool_arguments: nil, tool_is_error: nil, tool_name: nil, tool_output: nil)
2133
+ # @param content [String]
2134
+ # @param role [Symbol, Revox::Models::CallRetrieveResponse::Call::CallAttempt::PostCallTranscript::Role]
2135
+ # @param tool_arguments [Hash{Symbol=>Object}, String]
2136
+ # @param tool_is_error [Boolean]
2137
+ # @param tool_name [String]
2138
+ # @param tool_output [String]
2139
+
2140
+ # @see Revox::Models::CallRetrieveResponse::Call::CallAttempt::PostCallTranscript#role
2141
+ module Role
2142
+ extend Revox::Internal::Type::Enum
2143
+
2144
+ USER = :user
2145
+ ASSISTANT = :assistant
2146
+ HUMAN_AGENT = :human_agent
2147
+ TOOL = :tool
2148
+
2149
+ # @!method self.values
2150
+ # @return [Array<Symbol>]
2151
+ end
2152
+
2153
+ # @see Revox::Models::CallRetrieveResponse::Call::CallAttempt::PostCallTranscript#tool_arguments
2154
+ module ToolArguments
2155
+ extend Revox::Internal::Type::Union
2156
+
2157
+ variant -> { Revox::Models::CallRetrieveResponse::Call::CallAttempt::PostCallTranscript::ToolArguments::UnionMember0Map }
2158
+
2159
+ variant String
2160
+
2161
+ # @!method self.variants
2162
+ # @return [Array(Hash{Symbol=>Object}, String)]
2163
+
2164
+ # @type [Revox::Internal::Type::Converter]
2165
+ UnionMember0Map = Revox::Internal::Type::HashOf[Revox::Internal::Type::Unknown]
2166
+ end
2167
+ end
2168
+
2169
+ class SMSLog < Revox::Internal::Type::BaseModel
2170
+ # @!attribute id
2171
+ #
2172
+ # @return [String]
2173
+ required :id, String
2174
+
2175
+ # @!attribute created_at
2176
+ # When the SMS was sent.
2177
+ #
2178
+ # @return [Object]
2179
+ required :created_at, Revox::Internal::Type::Unknown
856
2180
 
857
- # @!method self.values
858
- # @return [Array<Symbol>]
859
- end
2181
+ # @!attribute message_body
2182
+ #
2183
+ # @return [String]
2184
+ required :message_body, String
860
2185
 
861
- # The status of the call attempt.
862
- #
863
- # @see Revox::Models::CallRetrieveResponse::Call::CallAttempt#status
864
- module Status
865
- extend Revox::Internal::Type::Enum
2186
+ # @!attribute to_phone_number
2187
+ #
2188
+ # @return [String]
2189
+ required :to_phone_number, String
866
2190
 
867
- QUEUED = :queued
868
- RINGING = :ringing
869
- ONGOING = :ongoing
870
- COMPLETED = :completed
871
- ERROR = :error
2191
+ # @!attribute twilio_message_sid
2192
+ #
2193
+ # @return [String, nil]
2194
+ required :twilio_message_sid, String, nil?: true
872
2195
 
873
- # @!method self.values
874
- # @return [Array<Symbol>]
875
- end
2196
+ # @!attribute type
2197
+ #
2198
+ # @return [Symbol, Revox::Models::CallRetrieveResponse::Call::CallAttempt::SMSLog::Type]
2199
+ required :type, enum: -> { Revox::Models::CallRetrieveResponse::Call::CallAttempt::SMSLog::Type }
876
2200
 
877
- # Who ended the call: 'agent' (AI agent), 'user' (caller/callee hung up), or
878
- # 'system' (e.g. max duration limit).
879
- #
880
- # @see Revox::Models::CallRetrieveResponse::Call::CallAttempt#ended_by
881
- module EndedBy
882
- extend Revox::Internal::Type::Enum
2201
+ # @!method initialize(id:, created_at:, message_body:, to_phone_number:, twilio_message_sid:, type:)
2202
+ # @param id [String]
2203
+ #
2204
+ # @param created_at [Object] When the SMS was sent.
2205
+ #
2206
+ # @param message_body [String]
2207
+ #
2208
+ # @param to_phone_number [String]
2209
+ #
2210
+ # @param twilio_message_sid [String, nil]
2211
+ #
2212
+ # @param type [Symbol, Revox::Models::CallRetrieveResponse::Call::CallAttempt::SMSLog::Type]
883
2213
 
884
- AGENT = :agent
885
- USER = :user
886
- SYSTEM = :system
2214
+ # @see Revox::Models::CallRetrieveResponse::Call::CallAttempt::SMSLog#type
2215
+ module Type
2216
+ extend Revox::Internal::Type::Enum
887
2217
 
888
- # @!method self.values
889
- # @return [Array<Symbol>]
2218
+ IN_CALL = :in_call
2219
+ VOICEMAIL = :voicemail
2220
+ AFTER_CALL = :after_call
2221
+
2222
+ # @!method self.values
2223
+ # @return [Array<Symbol>]
2224
+ end
890
2225
  end
891
2226
 
892
2227
  class Transcript < Revox::Internal::Type::BaseModel
@@ -916,12 +2251,18 @@ module Revox
916
2251
  # @return [String, nil]
917
2252
  optional :tool_name, String
918
2253
 
919
- # @!method initialize(content:, role:, tool_arguments: nil, tool_is_error: nil, tool_name: nil)
2254
+ # @!attribute tool_output
2255
+ #
2256
+ # @return [String, nil]
2257
+ optional :tool_output, String
2258
+
2259
+ # @!method initialize(content:, role:, tool_arguments: nil, tool_is_error: nil, tool_name: nil, tool_output: nil)
920
2260
  # @param content [String]
921
2261
  # @param role [Symbol, Revox::Models::CallRetrieveResponse::Call::CallAttempt::Transcript::Role]
922
2262
  # @param tool_arguments [Hash{Symbol=>Object}, String]
923
2263
  # @param tool_is_error [Boolean]
924
2264
  # @param tool_name [String]
2265
+ # @param tool_output [String]
925
2266
 
926
2267
  # @see Revox::Models::CallRetrieveResponse::Call::CallAttempt::Transcript#role
927
2268
  module Role
@@ -929,6 +2270,7 @@ module Revox
929
2270
 
930
2271
  USER = :user
931
2272
  ASSISTANT = :assistant
2273
+ HUMAN_AGENT = :human_agent
932
2274
  TOOL = :tool
933
2275
 
934
2276
  # @!method self.values
@@ -954,6 +2296,23 @@ module Revox
954
2296
 
955
2297
  # @see Revox::Models::CallRetrieveResponse::Call#call_retry_config
956
2298
  class CallRetryConfig < Revox::Internal::Type::BaseModel
2299
+ # @!attribute allowed_days
2300
+ # Days of the week when calls are allowed, in the recipient's timezone. Default:
2301
+ # Monday through Friday.
2302
+ #
2303
+ # @return [Array<Symbol, Revox::Models::CallRetrieveResponse::Call::CallRetryConfig::AllowedDay>]
2304
+ required :allowed_days,
2305
+ -> { Revox::Internal::Type::ArrayOf[enum: Revox::Models::CallRetrieveResponse::Call::CallRetryConfig::AllowedDay] }
2306
+
2307
+ # @!attribute call_twice_in_a_row
2308
+ # If true and max_retry_attempts >= 2, attempt #2 fires immediately (skipping
2309
+ # retry_delay_seconds) when attempt #1 didn't reach a human.
2310
+ # Calling-window/allowed-days checks still apply. Only affects the 1→2 transition.
2311
+ # Default: false.
2312
+ #
2313
+ # @return [Boolean]
2314
+ required :call_twice_in_a_row, Revox::Internal::Type::Boolean
2315
+
957
2316
  # @!attribute calling_windows
958
2317
  #
959
2318
  # @return [Array<Revox::Models::CallRetrieveResponse::Call::CallRetryConfig::CallingWindow>]
@@ -974,19 +2333,38 @@ module Revox
974
2333
  # @return [String, nil]
975
2334
  optional :timezone, String, nil?: true
976
2335
 
977
- # @!method initialize(calling_windows:, max_retry_attempts:, timezone: nil)
2336
+ # @!method initialize(allowed_days:, call_twice_in_a_row:, calling_windows:, max_retry_attempts:, timezone: nil)
978
2337
  # Some parameter documentations has been truncated, see
979
2338
  # {Revox::Models::CallRetrieveResponse::Call::CallRetryConfig} for more details.
980
2339
  #
981
2340
  # Configuration for call retry behavior including time windows, delays, and max
982
2341
  # iterations. If not provided, defaults will be used.
983
2342
  #
2343
+ # @param allowed_days [Array<Symbol, Revox::Models::CallRetrieveResponse::Call::CallRetryConfig::AllowedDay>] Days of the week when calls are allowed, in the recipient's timezone. Default: M
2344
+ #
2345
+ # @param call_twice_in_a_row [Boolean] If true and max_retry_attempts >= 2, attempt #2 fires immediately (skipping retr
2346
+ #
984
2347
  # @param calling_windows [Array<Revox::Models::CallRetrieveResponse::Call::CallRetryConfig::CallingWindow>]
985
2348
  #
986
2349
  # @param max_retry_attempts [Integer] Maximum number of call retry attempts. Default: 3.
987
2350
  #
988
2351
  # @param timezone [String, nil] Optional IANA timezone identifier to override the automatic timezone detection f
989
2352
 
2353
+ module AllowedDay
2354
+ extend Revox::Internal::Type::Enum
2355
+
2356
+ MONDAY = :monday
2357
+ TUESDAY = :tuesday
2358
+ WEDNESDAY = :wednesday
2359
+ THURSDAY = :thursday
2360
+ FRIDAY = :friday
2361
+ SATURDAY = :saturday
2362
+ SUNDAY = :sunday
2363
+
2364
+ # @!method self.values
2365
+ # @return [Array<Symbol>]
2366
+ end
2367
+
990
2368
  class CallingWindow < Revox::Internal::Type::BaseModel
991
2369
  # @!attribute calling_window_end_time
992
2370
  # End time for the calling window in the recipient's timezone (or
@@ -1040,6 +2418,38 @@ module Revox
1040
2418
  # @param name [String]
1041
2419
  end
1042
2420
 
2421
+ # @see Revox::Models::CallRetrieveResponse::Call#contact
2422
+ class Contact < Revox::Internal::Type::BaseModel
2423
+ # @!attribute company
2424
+ #
2425
+ # @return [String, nil]
2426
+ required :company, String, nil?: true
2427
+
2428
+ # @!attribute email
2429
+ #
2430
+ # @return [String, nil]
2431
+ required :email, String, nil?: true
2432
+
2433
+ # @!attribute first_name
2434
+ #
2435
+ # @return [String, nil]
2436
+ required :first_name, String, nil?: true
2437
+
2438
+ # @!attribute last_name
2439
+ #
2440
+ # @return [String, nil]
2441
+ required :last_name, String, nil?: true
2442
+
2443
+ # @!method initialize(company:, email:, first_name:, last_name:)
2444
+ # Magic contact variables (prospect identity) extracted from the call's input data
2445
+ # and transcript.
2446
+ #
2447
+ # @param company [String, nil]
2448
+ # @param email [String, nil]
2449
+ # @param first_name [String, nil]
2450
+ # @param last_name [String, nil]
2451
+ end
2452
+
1043
2453
  # Whether the call is inbound or outbound.
1044
2454
  #
1045
2455
  # @see Revox::Models::CallRetrieveResponse::Call#direction
@@ -1113,12 +2523,20 @@ module Revox
1113
2523
  # @return [Symbol, Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::Status]
1114
2524
  required :status, enum: -> { Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::Status }
1115
2525
 
2526
+ # @!attribute assistants_used
2527
+ # Assistant node ids entered during this attempt, in traversal order.
2528
+ #
2529
+ # @return [Array<String>, nil]
2530
+ optional :assistants_used, Revox::Internal::Type::ArrayOf[String], nil?: true
2531
+
1116
2532
  # @!attribute end_reason
1117
2533
  # Reason for ending the call when ended_by is 'agent'. E.g. 'tool_end_call',
1118
2534
  # 'voicemail', 'transfer', 'ivr_no_navigate'.
1119
2535
  #
1120
- # @return [String, nil]
1121
- optional :end_reason, String, nil?: true
2536
+ # @return [Symbol, Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::EndReason, nil]
2537
+ optional :end_reason,
2538
+ enum: -> { Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::EndReason },
2539
+ nil?: true
1122
2540
 
1123
2541
  # @!attribute ended_by
1124
2542
  # Who ended the call: 'agent' (AI agent), 'user' (caller/callee hung up), or
@@ -1129,6 +2547,25 @@ module Revox
1129
2547
  enum: -> { Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::EndedBy },
1130
2548
  nil?: true
1131
2549
 
2550
+ # @!attribute post_call_transcript
2551
+ # Higher-quality transcript generated after the call via Soniox async STT. Null
2552
+ # until generated or when no recording is available.
2553
+ #
2554
+ # @return [Array<Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::PostCallTranscript>, nil]
2555
+ optional :post_call_transcript,
2556
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::PostCallTranscript] },
2557
+ nil?: true
2558
+
2559
+ # @!attribute sms_log
2560
+ # Automatic SMS sent after the call (voicemail and after-call), ordered oldest
2561
+ # first. The in-call `send_sms` is excluded — it already appears in the transcript
2562
+ # as a tool call.
2563
+ #
2564
+ # @return [Array<Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::SMSLog>, nil]
2565
+ optional :sms_log,
2566
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::SMSLog] },
2567
+ nil?: true
2568
+
1132
2569
  # @!attribute structured_output
1133
2570
  # The data extracted from the call, using the structured output config from the
1134
2571
  # parent call object.
@@ -1139,14 +2576,14 @@ module Revox
1139
2576
  nil?: true
1140
2577
 
1141
2578
  # @!attribute transcript
1142
- # The transcript of the call.
2579
+ # The live transcript of the call, built in real time.
1143
2580
  #
1144
2581
  # @return [Array<Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::Transcript>, nil]
1145
2582
  optional :transcript,
1146
2583
  -> { Revox::Internal::Type::ArrayOf[Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::Transcript] },
1147
2584
  nil?: true
1148
2585
 
1149
- # @!method initialize(id:, answered_at:, dial_error:, ended_at:, phone_number:, recording_url:, result:, started_at:, status:, end_reason: nil, ended_by: nil, structured_output: nil, transcript: nil)
2586
+ # @!method initialize(id:, answered_at:, dial_error:, ended_at:, phone_number:, recording_url:, result:, started_at:, status:, assistants_used: nil, end_reason: nil, ended_by: nil, post_call_transcript: nil, sms_log: nil, structured_output: nil, transcript: nil)
1150
2587
  # Some parameter documentations has been truncated, see
1151
2588
  # {Revox::Models::CallRetrieveResponse::Call::LastCallAttempt} for more details.
1152
2589
  #
@@ -1171,13 +2608,19 @@ module Revox
1171
2608
  #
1172
2609
  # @param status [Symbol, Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::Status] The status of the call attempt.
1173
2610
  #
1174
- # @param end_reason [String, nil] Reason for ending the call when ended_by is 'agent'. E.g. 'tool_end_call', 'voic
2611
+ # @param assistants_used [Array<String>, nil] Assistant node ids entered during this attempt, in traversal order.
2612
+ #
2613
+ # @param end_reason [Symbol, Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::EndReason, nil] Reason for ending the call when ended_by is 'agent'. E.g. 'tool_end_call', 'voic
1175
2614
  #
1176
2615
  # @param ended_by [Symbol, Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::EndedBy, nil] Who ended the call: 'agent' (AI agent), 'user' (caller/callee hung up), or 'syst
1177
2616
  #
2617
+ # @param post_call_transcript [Array<Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::PostCallTranscript>, nil] Higher-quality transcript generated after the call via Soniox async STT. Null un
2618
+ #
2619
+ # @param sms_log [Array<Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::SMSLog>, nil] Automatic SMS sent after the call (voicemail and after-call), ordered oldest fir
2620
+ #
1178
2621
  # @param structured_output [Hash{Symbol=>Object}, nil] The data extracted from the call, using the structured output config from the pa
1179
2622
  #
1180
- # @param transcript [Array<Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::Transcript>, nil] The transcript of the call.
2623
+ # @param transcript [Array<Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::Transcript>, nil] The live transcript of the call, built in real time.
1181
2624
 
1182
2625
  # The SIP error that occurred.
1183
2626
  #
@@ -1228,6 +2671,34 @@ module Revox
1228
2671
  # @return [Array<Symbol>]
1229
2672
  end
1230
2673
 
2674
+ # Reason for ending the call when ended_by is 'agent'. E.g. 'tool_end_call',
2675
+ # 'voicemail', 'transfer', 'ivr_no_navigate'.
2676
+ #
2677
+ # @see Revox::Models::CallRetrieveResponse::Call::LastCallAttempt#end_reason
2678
+ module EndReason
2679
+ extend Revox::Internal::Type::Enum
2680
+
2681
+ CLIENT_INITIATED = :client_initiated
2682
+ CONNECTION_TIMEOUT = :connection_timeout
2683
+ HUMAN_TAKEOVER = :human_takeover
2684
+ IVR_NO_NAVIGATE = :ivr_no_navigate
2685
+ MAX_DURATION = :max_duration
2686
+ PARTICIPANT_REMOVED = :participant_removed
2687
+ TOOL_END_CALL = :tool_end_call
2688
+ TRANSFER = :transfer
2689
+ USER_INACTIVE = :user_inactive
2690
+ USER_REJECTED = :user_rejected
2691
+ USER_UNAVAILABLE = :user_unavailable
2692
+ VOICEMAIL = :voicemail
2693
+ SPEED_DIAL_ABANDONED = :speed_dial_abandoned
2694
+ SPEED_DIAL_OPERATOR_MISSED = :speed_dial_operator_missed
2695
+ SPEED_DIAL_TIMEOUT = :speed_dial_timeout
2696
+ SPEED_DIAL_HANGUP = :speed_dial_hangup
2697
+
2698
+ # @!method self.values
2699
+ # @return [Array<Symbol>]
2700
+ end
2701
+
1231
2702
  # Who ended the call: 'agent' (AI agent), 'user' (caller/callee hung up), or
1232
2703
  # 'system' (e.g. max duration limit).
1233
2704
  #
@@ -1243,6 +2714,134 @@ module Revox
1243
2714
  # @return [Array<Symbol>]
1244
2715
  end
1245
2716
 
2717
+ class PostCallTranscript < Revox::Internal::Type::BaseModel
2718
+ # @!attribute content
2719
+ #
2720
+ # @return [String]
2721
+ required :content, String
2722
+
2723
+ # @!attribute role
2724
+ #
2725
+ # @return [Symbol, Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::PostCallTranscript::Role]
2726
+ required :role,
2727
+ enum: -> { Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::PostCallTranscript::Role }
2728
+
2729
+ # @!attribute tool_arguments
2730
+ #
2731
+ # @return [Hash{Symbol=>Object}, String, nil]
2732
+ optional :tool_arguments,
2733
+ union: -> { Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::PostCallTranscript::ToolArguments }
2734
+
2735
+ # @!attribute tool_is_error
2736
+ #
2737
+ # @return [Boolean, nil]
2738
+ optional :tool_is_error, Revox::Internal::Type::Boolean
2739
+
2740
+ # @!attribute tool_name
2741
+ #
2742
+ # @return [String, nil]
2743
+ optional :tool_name, String
2744
+
2745
+ # @!attribute tool_output
2746
+ #
2747
+ # @return [String, nil]
2748
+ optional :tool_output, String
2749
+
2750
+ # @!method initialize(content:, role:, tool_arguments: nil, tool_is_error: nil, tool_name: nil, tool_output: nil)
2751
+ # @param content [String]
2752
+ # @param role [Symbol, Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::PostCallTranscript::Role]
2753
+ # @param tool_arguments [Hash{Symbol=>Object}, String]
2754
+ # @param tool_is_error [Boolean]
2755
+ # @param tool_name [String]
2756
+ # @param tool_output [String]
2757
+
2758
+ # @see Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::PostCallTranscript#role
2759
+ module Role
2760
+ extend Revox::Internal::Type::Enum
2761
+
2762
+ USER = :user
2763
+ ASSISTANT = :assistant
2764
+ HUMAN_AGENT = :human_agent
2765
+ TOOL = :tool
2766
+
2767
+ # @!method self.values
2768
+ # @return [Array<Symbol>]
2769
+ end
2770
+
2771
+ # @see Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::PostCallTranscript#tool_arguments
2772
+ module ToolArguments
2773
+ extend Revox::Internal::Type::Union
2774
+
2775
+ variant -> { Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::PostCallTranscript::ToolArguments::UnionMember0Map }
2776
+
2777
+ variant String
2778
+
2779
+ # @!method self.variants
2780
+ # @return [Array(Hash{Symbol=>Object}, String)]
2781
+
2782
+ # @type [Revox::Internal::Type::Converter]
2783
+ UnionMember0Map = Revox::Internal::Type::HashOf[Revox::Internal::Type::Unknown]
2784
+ end
2785
+ end
2786
+
2787
+ class SMSLog < Revox::Internal::Type::BaseModel
2788
+ # @!attribute id
2789
+ #
2790
+ # @return [String]
2791
+ required :id, String
2792
+
2793
+ # @!attribute created_at
2794
+ # When the SMS was sent.
2795
+ #
2796
+ # @return [Object]
2797
+ required :created_at, Revox::Internal::Type::Unknown
2798
+
2799
+ # @!attribute message_body
2800
+ #
2801
+ # @return [String]
2802
+ required :message_body, String
2803
+
2804
+ # @!attribute to_phone_number
2805
+ #
2806
+ # @return [String]
2807
+ required :to_phone_number, String
2808
+
2809
+ # @!attribute twilio_message_sid
2810
+ #
2811
+ # @return [String, nil]
2812
+ required :twilio_message_sid, String, nil?: true
2813
+
2814
+ # @!attribute type
2815
+ #
2816
+ # @return [Symbol, Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::SMSLog::Type]
2817
+ required :type, enum: -> { Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::SMSLog::Type }
2818
+
2819
+ # @!method initialize(id:, created_at:, message_body:, to_phone_number:, twilio_message_sid:, type:)
2820
+ # @param id [String]
2821
+ #
2822
+ # @param created_at [Object] When the SMS was sent.
2823
+ #
2824
+ # @param message_body [String]
2825
+ #
2826
+ # @param to_phone_number [String]
2827
+ #
2828
+ # @param twilio_message_sid [String, nil]
2829
+ #
2830
+ # @param type [Symbol, Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::SMSLog::Type]
2831
+
2832
+ # @see Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::SMSLog#type
2833
+ module Type
2834
+ extend Revox::Internal::Type::Enum
2835
+
2836
+ IN_CALL = :in_call
2837
+ VOICEMAIL = :voicemail
2838
+ AFTER_CALL = :after_call
2839
+
2840
+ # @!method self.values
2841
+ # @return [Array<Symbol>]
2842
+ end
2843
+ end
2844
+
1246
2845
  class Transcript < Revox::Internal::Type::BaseModel
1247
2846
  # @!attribute content
1248
2847
  #
@@ -1270,12 +2869,18 @@ module Revox
1270
2869
  # @return [String, nil]
1271
2870
  optional :tool_name, String
1272
2871
 
1273
- # @!method initialize(content:, role:, tool_arguments: nil, tool_is_error: nil, tool_name: nil)
2872
+ # @!attribute tool_output
2873
+ #
2874
+ # @return [String, nil]
2875
+ optional :tool_output, String
2876
+
2877
+ # @!method initialize(content:, role:, tool_arguments: nil, tool_is_error: nil, tool_name: nil, tool_output: nil)
1274
2878
  # @param content [String]
1275
2879
  # @param role [Symbol, Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::Transcript::Role]
1276
2880
  # @param tool_arguments [Hash{Symbol=>Object}, String]
1277
2881
  # @param tool_is_error [Boolean]
1278
2882
  # @param tool_name [String]
2883
+ # @param tool_output [String]
1279
2884
 
1280
2885
  # @see Revox::Models::CallRetrieveResponse::Call::LastCallAttempt::Transcript#role
1281
2886
  module Role
@@ -1283,6 +2888,7 @@ module Revox
1283
2888
 
1284
2889
  USER = :user
1285
2890
  ASSISTANT = :assistant
2891
+ HUMAN_AGENT = :human_agent
1286
2892
  TOOL = :tool
1287
2893
 
1288
2894
  # @!method self.values
@@ -1314,6 +2920,10 @@ module Revox
1314
2920
 
1315
2921
  variant -> { Revox::Models::CallRetrieveResponse::Call::LlmModel::UnionMember1 }
1316
2922
 
2923
+ variant -> { Revox::Models::CallRetrieveResponse::Call::LlmModel::UnionMember2 }
2924
+
2925
+ variant -> { Revox::Models::CallRetrieveResponse::Call::LlmModel::UnionMember3 }
2926
+
1317
2927
  class UnionMember0 < Revox::Internal::Type::BaseModel
1318
2928
  # @!attribute name
1319
2929
  #
@@ -1368,8 +2978,92 @@ module Revox
1368
2978
  # @param type [Symbol, :openrouter] Use a model from OpenRouter.
1369
2979
  end
1370
2980
 
2981
+ class UnionMember2 < Revox::Internal::Type::BaseModel
2982
+ # @!attribute api_key
2983
+ # API key sent as Bearer token to the custom endpoint.
2984
+ #
2985
+ # @return [String]
2986
+ required :api_key, String
2987
+
2988
+ # @!attribute api_url
2989
+ # Base URL for the OpenAI-compatible API, e.g. https://api.together.xyz/v1
2990
+ #
2991
+ # @return [String]
2992
+ required :api_url, String
2993
+
2994
+ # @!attribute model_name
2995
+ # Model name as expected by the provider, e.g. meta-llama/llama-3-70b
2996
+ #
2997
+ # @return [String]
2998
+ required :model_name, String
2999
+
3000
+ # @!attribute type
3001
+ # OpenAI-compatible chat completions API (bring your own endpoint and key).
3002
+ #
3003
+ # @return [Symbol, :custom]
3004
+ required :type, const: :custom
3005
+
3006
+ # @!method initialize(api_key:, api_url:, model_name:, type: :custom)
3007
+ # @param api_key [String] API key sent as Bearer token to the custom endpoint.
3008
+ #
3009
+ # @param api_url [String] Base URL for the OpenAI-compatible API, e.g. https://api.together.xyz/v1
3010
+ #
3011
+ # @param model_name [String] Model name as expected by the provider, e.g. meta-llama/llama-3-70b
3012
+ #
3013
+ # @param type [Symbol, :custom] OpenAI-compatible chat completions API (bring your own endpoint and key).
3014
+ end
3015
+
3016
+ class UnionMember3 < Revox::Internal::Type::BaseModel
3017
+ # @!attribute provider
3018
+ # The provider to use from Realtime. eg: openai, google.
3019
+ #
3020
+ # @return [Symbol, Revox::Models::CallRetrieveResponse::Call::LlmModel::UnionMember3::Provider]
3021
+ required :provider,
3022
+ enum: -> { Revox::Models::CallRetrieveResponse::Call::LlmModel::UnionMember3::Provider }
3023
+
3024
+ # @!attribute realtime_model_id
3025
+ # The model ID to use from Realtime. eg: gpt-4.1
3026
+ #
3027
+ # @return [String]
3028
+ required :realtime_model_id, String
3029
+
3030
+ # @!attribute type
3031
+ # Use a model from Realtime.
3032
+ #
3033
+ # @return [Symbol, :realtime]
3034
+ required :type, const: :realtime
3035
+
3036
+ # @!attribute realtime_voice_id
3037
+ # Output voice for the realtime provider (e.g. OpenAI: marin; Gemini: Puck).
3038
+ #
3039
+ # @return [String, nil]
3040
+ optional :realtime_voice_id, String
3041
+
3042
+ # @!method initialize(provider:, realtime_model_id:, realtime_voice_id: nil, type: :realtime)
3043
+ # @param provider [Symbol, Revox::Models::CallRetrieveResponse::Call::LlmModel::UnionMember3::Provider] The provider to use from Realtime. eg: openai, google.
3044
+ #
3045
+ # @param realtime_model_id [String] The model ID to use from Realtime. eg: gpt-4.1
3046
+ #
3047
+ # @param realtime_voice_id [String] Output voice for the realtime provider (e.g. OpenAI: marin; Gemini: Puck).
3048
+ #
3049
+ # @param type [Symbol, :realtime] Use a model from Realtime.
3050
+
3051
+ # The provider to use from Realtime. eg: openai, google.
3052
+ #
3053
+ # @see Revox::Models::CallRetrieveResponse::Call::LlmModel::UnionMember3#provider
3054
+ module Provider
3055
+ extend Revox::Internal::Type::Enum
3056
+
3057
+ OPENAI = :openai
3058
+ GOOGLE = :google
3059
+
3060
+ # @!method self.values
3061
+ # @return [Array<Symbol>]
3062
+ end
3063
+ end
3064
+
1371
3065
  # @!method self.variants
1372
- # @return [Array(Revox::Models::CallRetrieveResponse::Call::LlmModel::UnionMember0, Revox::Models::CallRetrieveResponse::Call::LlmModel::UnionMember1)]
3066
+ # @return [Array(Revox::Models::CallRetrieveResponse::Call::LlmModel::UnionMember0, Revox::Models::CallRetrieveResponse::Call::LlmModel::UnionMember1, Revox::Models::CallRetrieveResponse::Call::LlmModel::UnionMember2, Revox::Models::CallRetrieveResponse::Call::LlmModel::UnionMember3)]
1373
3067
  end
1374
3068
 
1375
3069
  # The status of the call.
@@ -1381,7 +3075,9 @@ module Revox
1381
3075
  INITIALIZING = :initializing
1382
3076
  QUEUED_FOR_CALLING = :queued_for_calling
1383
3077
  CALLING = :calling
3078
+ POST_PROCESSING = :post_processing
1384
3079
  SCHEDULED = :scheduled
3080
+ PAUSED = :paused
1385
3081
  COMPLETED = :completed
1386
3082
  CANCELLED = :cancelled
1387
3083
  ERRORED = :errored
@@ -1389,6 +3085,24 @@ module Revox
1389
3085
  # @!method self.values
1390
3086
  # @return [Array<Symbol>]
1391
3087
  end
3088
+
3089
+ # Business outcome of the call. Null if not computed or no transcript.
3090
+ #
3091
+ # @see Revox::Models::CallRetrieveResponse::Call#outcome
3092
+ module Outcome
3093
+ extend Revox::Internal::Type::Enum
3094
+
3095
+ NOT_INTERESTED = :not_interested
3096
+ INTERESTED = :interested
3097
+ COMPLETED = :completed
3098
+ REQUESTED_CALLBACK_LATER = :requested_callback_later
3099
+ REQUESTED_CALLBACK_NEW_NUMBER = :requested_callback_new_number
3100
+ DO_NOT_CONTACT = :do_not_contact
3101
+ AI_AVERSE = :ai_averse
3102
+
3103
+ # @!method self.values
3104
+ # @return [Array<Symbol>]
3105
+ end
1392
3106
  end
1393
3107
  end
1394
3108
  end