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::CallCreateResponse::Call::Assignee, nil]
32
+ required :assignee, -> { Revox::Models::CallCreateResponse::Call::Assignee }, nil?: true
33
+
28
34
  # @!attribute assistant
29
35
  #
30
36
  # @return [Revox::Models::CallCreateResponse::Call::Assistant, nil]
@@ -55,6 +61,13 @@ module Revox
55
61
  # @return [Revox::Models::CallCreateResponse::Call::Campaign, nil]
56
62
  required :campaign, -> { Revox::Models::CallCreateResponse::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::CallCreateResponse::Call::Contact]
69
+ required :contact, -> { Revox::Models::CallCreateResponse::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::CallCreateResponse::Call::LlmModel::UnionMember0, Revox::Models::CallCreateResponse::Call::LlmModel::UnionMember1]
119
+ # @return [Revox::Models::CallCreateResponse::Call::LlmModel::UnionMember0, Revox::Models::CallCreateResponse::Call::LlmModel::UnionMember1, Revox::Models::CallCreateResponse::Call::LlmModel::UnionMember2, Revox::Models::CallCreateResponse::Call::LlmModel::UnionMember3]
107
120
  required :llm_model, union: -> { Revox::Models::CallCreateResponse::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::CallCreateResponse::Call::Outcome, nil]
170
+ optional :outcome, enum: -> { Revox::Models::CallCreateResponse::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::CallCreateResponse::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::CallCreateResponse::Call::Assignee, nil] The team member responsible for following up on this call.
188
+ #
149
189
  # @param assistant [Revox::Models::CallCreateResponse::Call::Assistant, nil]
150
190
  #
151
191
  # @param call_attempts [Array<Revox::Models::CallCreateResponse::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::CallCreateResponse::Call::Campaign, nil]
158
198
  #
199
+ # @param contact [Revox::Models::CallCreateResponse::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::CallCreateResponse::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::CallCreateResponse::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::CallCreateResponse::Call::LlmModel::UnionMember0, Revox::Models::CallCreateResponse::Call::LlmModel::UnionMember1]
215
+ # @param llm_model [Revox::Models::CallCreateResponse::Call::LlmModel::UnionMember0, Revox::Models::CallCreateResponse::Call::LlmModel::UnionMember1, Revox::Models::CallCreateResponse::Call::LlmModel::UnionMember2, Revox::Models::CallCreateResponse::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::CallCreateResponse::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::CallCreateResponse::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::CallCreateResponse::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::CallCreateResponse::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::CallCreateResponse::Call::Assistant::AfterCallSMSOutcome>, nil]
282
+ required :after_call_sms_outcomes,
283
+ -> { Revox::Internal::Type::ArrayOf[enum: Revox::Models::CallCreateResponse::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::CallCreateResponse::Call::Assistant::BackgroundSound, nil]
197
297
  required :background_sound,
198
298
  enum: -> { Revox::Models::CallCreateResponse::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::CallCreateResponse::Call::Assistant::Calendly, nil]
@@ -212,11 +318,48 @@ module Revox
212
318
  -> { Revox::Models::CallCreateResponse::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::CallCreateResponse::Call::Assistant::CustomTool>, nil]
335
+ required :custom_tools,
336
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CallCreateResponse::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::CallCreateResponse::Call::Assistant::EmailNotificationLanguage]
351
+ required :email_notification_language,
352
+ enum: -> { Revox::Models::CallCreateResponse::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::CallCreateResponse::Call::Assistant::EmailNotificationOutcome>, nil]
359
+ required :email_notification_outcomes,
360
+ -> { Revox::Internal::Type::ArrayOf[enum: Revox::Models::CallCreateResponse::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::CallCreateResponse::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::CallCreateResponse::Call::Assistant::HumanTransferMode, nil]
397
+ required :human_transfer_mode,
398
+ enum: -> { Revox::Models::CallCreateResponse::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::CallCreateResponse::Call::Assistant::LlmModel::UnionMember0, Revox::Models::CallCreateResponse::Call::Assistant::LlmModel::UnionMember1]
410
+ # @return [Revox::Models::CallCreateResponse::Call::Assistant::LlmModel::UnionMember0, Revox::Models::CallCreateResponse::Call::Assistant::LlmModel::UnionMember1, Revox::Models::CallCreateResponse::Call::Assistant::LlmModel::UnionMember2, Revox::Models::CallCreateResponse::Call::Assistant::LlmModel::UnionMember3]
252
411
  required :llm_model, union: -> { Revox::Models::CallCreateResponse::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::CallCreateResponse::Call::Assistant::Position, nil]
448
+ required :position, -> { Revox::Models::CallCreateResponse::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::CallCreateResponse::Call::Assistant::PromptFlow, nil]
458
+ required :prompt_flow, -> { Revox::Models::CallCreateResponse::Call::Assistant::PromptFlow }, nil?: true
459
+
460
+ # @!attribute slack
461
+ #
462
+ # @return [Revox::Models::CallCreateResponse::Call::Assistant::Slack, nil]
463
+ required :slack, -> { Revox::Models::CallCreateResponse::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::CallCreateResponse::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::CallCreateResponse::Call::Assistant::SttContext, nil]
503
+ required :stt_context, -> { Revox::Models::CallCreateResponse::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::CallCreateResponse::Call::Assistant::SttModel]
509
+ required :stt_model, enum: -> { Revox::Models::CallCreateResponse::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::CallCreateResponse::Call::Assistant::ThinkingSound, nil]
516
+ required :thinking_sound,
517
+ enum: -> { Revox::Models::CallCreateResponse::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::CallCreateResponse::Call::Assistant::Type]
542
+ required :type, enum: -> { Revox::Models::CallCreateResponse::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::CallCreateResponse::Call::Assistant::Zoho, nil]
584
+ required :zoho, -> { Revox::Models::CallCreateResponse::Call::Assistant::Zoho }, nil?: true
585
+
586
+ # @!attribute created_by
587
+ # The user who created the assistant.
588
+ #
589
+ # @return [Revox::Models::CallCreateResponse::Call::Assistant::CreatedBy, nil]
590
+ optional :created_by, -> { Revox::Models::CallCreateResponse::Call::Assistant::CreatedBy }, nil?: true
591
+
314
592
  # @!attribute faq_items
315
593
  #
316
594
  # @return [Array<Revox::Models::CallCreateResponse::Call::Assistant::FaqItem>, nil]
317
595
  optional :faq_items,
318
596
  -> { Revox::Internal::Type::ArrayOf[Revox::Models::CallCreateResponse::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::CallCreateResponse::Call::Assistant} for more details.
328
611
  #
329
612
  # @param id [String]
330
613
  #
331
- # @param background_sound [Symbol, Revox::Models::CallCreateResponse::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::CallCreateResponse::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::CallCreateResponse::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::CallCreateResponse::Call::Assistant::Calendly, nil]
334
623
  #
335
624
  # @param call_retry_config [Revox::Models::CallCreateResponse::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::CallCreateResponse::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::CallCreateResponse::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::CallCreateResponse::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::CallCreateResponse::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::CallCreateResponse::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::CallCreateResponse::Call::Assistant::LlmModel::UnionMember0, Revox::Models::CallCreateResponse::Call::Assistant::LlmModel::UnionMember1]
652
+ # @param llm_model [Revox::Models::CallCreateResponse::Call::Assistant::LlmModel::UnionMember0, Revox::Models::CallCreateResponse::Call::Assistant::LlmModel::UnionMember1, Revox::Models::CallCreateResponse::Call::Assistant::LlmModel::UnionMember2, Revox::Models::CallCreateResponse::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::CallCreateResponse::Call::Assistant::Position, nil]
665
+ #
357
666
  # @param prompt [String]
358
667
  #
668
+ # @param prompt_flow [Revox::Models::CallCreateResponse::Call::Assistant::PromptFlow, nil]
669
+ #
670
+ # @param slack [Revox::Models::CallCreateResponse::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::CallCreateResponse::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::CallCreateResponse::Call::Assistant::SttContext, nil] Assistant-level speech-to-text context: structured `general` key/value pairs plu
681
+ #
682
+ # @param stt_model [Symbol, Revox::Models::CallCreateResponse::Call::Assistant::SttModel] Transcriber (speech-to-text) model used for the assistant.
683
+ #
684
+ # @param thinking_sound [Symbol, Revox::Models::CallCreateResponse::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::CallCreateResponse::Call::Assistant::Type]
693
+ #
363
694
  # @param updated_at [Object]
364
695
  #
365
696
  # @param voice [Revox::Models::CallCreateResponse::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::CallCreateResponse::Call::Assistant::Zoho, nil]
707
+ #
708
+ # @param created_by [Revox::Models::CallCreateResponse::Call::Assistant::CreatedBy, nil] The user who created the assistant.
709
+ #
371
710
  # @param faq_items [Array<Revox::Models::CallCreateResponse::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::CallCreateResponse::Call::Assistant#background_sound
379
735
  module BackgroundSound
@@ -411,6 +767,23 @@ module Revox
411
767
 
412
768
  # @see Revox::Models::CallCreateResponse::Call::Assistant#call_retry_config
413
769
  class CallRetryConfig < Revox::Internal::Type::BaseModel
770
+ # @!attribute allowed_days
771
+ # Days of the week when calls are allowed, in the recipient's timezone. Default:
772
+ # Monday through Friday.
773
+ #
774
+ # @return [Array<Symbol, Revox::Models::CallCreateResponse::Call::Assistant::CallRetryConfig::AllowedDay>]
775
+ required :allowed_days,
776
+ -> { Revox::Internal::Type::ArrayOf[enum: Revox::Models::CallCreateResponse::Call::Assistant::CallRetryConfig::AllowedDay] }
777
+
778
+ # @!attribute call_twice_in_a_row
779
+ # If true and max_retry_attempts >= 2, attempt #2 fires immediately (skipping
780
+ # retry_delay_seconds) when attempt #1 didn't reach a human.
781
+ # Calling-window/allowed-days checks still apply. Only affects the 1→2 transition.
782
+ # Default: false.
783
+ #
784
+ # @return [Boolean]
785
+ required :call_twice_in_a_row, Revox::Internal::Type::Boolean
786
+
414
787
  # @!attribute calling_windows
415
788
  #
416
789
  # @return [Array<Revox::Models::CallCreateResponse::Call::Assistant::CallRetryConfig::CallingWindow>]
@@ -431,7 +804,7 @@ module Revox
431
804
  # @return [String, nil]
432
805
  optional :timezone, String, nil?: true
433
806
 
434
- # @!method initialize(calling_windows:, max_retry_attempts:, timezone: nil)
807
+ # @!method initialize(allowed_days:, call_twice_in_a_row:, calling_windows:, max_retry_attempts:, timezone: nil)
435
808
  # Some parameter documentations has been truncated, see
436
809
  # {Revox::Models::CallCreateResponse::Call::Assistant::CallRetryConfig} for more
437
810
  # details.
@@ -439,12 +812,31 @@ module Revox
439
812
  # Configuration for call retry behavior including time windows, delays, and max
440
813
  # iterations. If not provided, defaults will be used.
441
814
  #
815
+ # @param allowed_days [Array<Symbol, Revox::Models::CallCreateResponse::Call::Assistant::CallRetryConfig::AllowedDay>] Days of the week when calls are allowed, in the recipient's timezone. Default: M
816
+ #
817
+ # @param call_twice_in_a_row [Boolean] If true and max_retry_attempts >= 2, attempt #2 fires immediately (skipping retr
818
+ #
442
819
  # @param calling_windows [Array<Revox::Models::CallCreateResponse::Call::Assistant::CallRetryConfig::CallingWindow>]
443
820
  #
444
821
  # @param max_retry_attempts [Integer] Maximum number of call retry attempts. Default: 3.
445
822
  #
446
823
  # @param timezone [String, nil] Optional IANA timezone identifier to override the automatic timezone detection f
447
824
 
825
+ module AllowedDay
826
+ extend Revox::Internal::Type::Enum
827
+
828
+ MONDAY = :monday
829
+ TUESDAY = :tuesday
830
+ WEDNESDAY = :wednesday
831
+ THURSDAY = :thursday
832
+ FRIDAY = :friday
833
+ SATURDAY = :saturday
834
+ SUNDAY = :sunday
835
+
836
+ # @!method self.values
837
+ # @return [Array<Symbol>]
838
+ end
839
+
448
840
  class CallingWindow < Revox::Internal::Type::BaseModel
449
841
  # @!attribute calling_window_end_time
450
842
  # End time for the calling window in the recipient's timezone (or
@@ -481,72 +873,298 @@ module Revox
481
873
  end
482
874
  end
483
875
 
484
- # @see Revox::Models::CallCreateResponse::Call::Assistant#first_sentence_mode
485
- module FirstSentenceMode
486
- extend Revox::Internal::Type::Enum
876
+ class CustomTool < Revox::Internal::Type::BaseModel
877
+ # @!attribute body_template
878
+ # JSON body template for the request. Use quoted {{variable}} placeholders (e.g.
879
+ # "{{name}}") for dynamic values
880
+ #
881
+ # @return [String, nil]
882
+ required :body_template, String, nil?: true
487
883
 
488
- GENERATED = :generated
489
- STATIC = :static
490
- NONE = :none
884
+ # @!attribute description
885
+ # Human-readable description of what the tool does, used by the LLM to decide when
886
+ # to call it
887
+ #
888
+ # @return [String]
889
+ required :description, String
491
890
 
492
- # @!method self.values
493
- # @return [Array<Symbol>]
494
- end
891
+ # @!attribute headers
892
+ # HTTP headers to include in the request. Values support {{variable}} placeholders
893
+ #
894
+ # @return [Array<Revox::Models::CallCreateResponse::Call::Assistant::CustomTool::Header>]
895
+ required :headers,
896
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CallCreateResponse::Call::Assistant::CustomTool::Header] }
495
897
 
496
- # @see Revox::Models::CallCreateResponse::Call::Assistant#llm_model
497
- module LlmModel
498
- extend Revox::Internal::Type::Union
898
+ # @!attribute input_schema
899
+ # Schema defining the parameters the LLM should extract from the conversation to
900
+ # pass to this tool
901
+ #
902
+ # @return [Array<Revox::Models::CallCreateResponse::Call::Assistant::CustomTool::InputSchema>]
903
+ required :input_schema,
904
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CallCreateResponse::Call::Assistant::CustomTool::InputSchema] }
499
905
 
500
- variant -> { Revox::Models::CallCreateResponse::Call::Assistant::LlmModel::UnionMember0 }
906
+ # @!attribute method_
907
+ # HTTP method to use when calling the API endpoint
908
+ #
909
+ # @return [Symbol, Revox::Models::CallCreateResponse::Call::Assistant::CustomTool::Method]
910
+ required :method_,
911
+ enum: -> { Revox::Models::CallCreateResponse::Call::Assistant::CustomTool::Method },
912
+ api_name: :method
501
913
 
502
- variant -> { Revox::Models::CallCreateResponse::Call::Assistant::LlmModel::UnionMember1 }
914
+ # @!attribute name
915
+ # Unique tool name in lowercase_snake_case (e.g. check_inventory)
916
+ #
917
+ # @return [String]
918
+ required :name, String
503
919
 
504
- class UnionMember0 < Revox::Internal::Type::BaseModel
920
+ # @!attribute query_params
921
+ # Query string parameters appended to the URL. Values support {{variable}}
922
+ # placeholders
923
+ #
924
+ # @return [Array<Revox::Models::CallCreateResponse::Call::Assistant::CustomTool::QueryParam>]
925
+ required :query_params,
926
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CallCreateResponse::Call::Assistant::CustomTool::QueryParam] }
927
+
928
+ # @!attribute url
929
+ # Full URL of the API endpoint. Supports {{variable}} placeholders for dynamic
930
+ # values
931
+ #
932
+ # @return [String]
933
+ required :url, String
934
+
935
+ # @!method initialize(body_template:, description:, headers:, input_schema:, method_:, name:, query_params:, url:)
936
+ # Some parameter documentations has been truncated, see
937
+ # {Revox::Models::CallCreateResponse::Call::Assistant::CustomTool} for more
938
+ # details.
939
+ #
940
+ # @param body_template [String, nil] JSON body template for the request. Use quoted {{variable}} placeholders (e.g. "
941
+ #
942
+ # @param description [String] Human-readable description of what the tool does, used by the LLM to decide when
943
+ #
944
+ # @param headers [Array<Revox::Models::CallCreateResponse::Call::Assistant::CustomTool::Header>] HTTP headers to include in the request. Values support {{variable}} placeholders
945
+ #
946
+ # @param input_schema [Array<Revox::Models::CallCreateResponse::Call::Assistant::CustomTool::InputSchema>] Schema defining the parameters the LLM should extract from the conversation to p
947
+ #
948
+ # @param method_ [Symbol, Revox::Models::CallCreateResponse::Call::Assistant::CustomTool::Method] HTTP method to use when calling the API endpoint
949
+ #
950
+ # @param name [String] Unique tool name in lowercase_snake_case (e.g. check_inventory)
951
+ #
952
+ # @param query_params [Array<Revox::Models::CallCreateResponse::Call::Assistant::CustomTool::QueryParam>] Query string parameters appended to the URL. Values support {{variable}} placeho
953
+ #
954
+ # @param url [String] Full URL of the API endpoint. Supports {{variable}} placeholders for dynamic val
955
+
956
+ class Header < Revox::Internal::Type::BaseModel
957
+ # @!attribute key
958
+ #
959
+ # @return [String]
960
+ required :key, String
961
+
962
+ # @!attribute value
963
+ #
964
+ # @return [String]
965
+ required :value, String
966
+
967
+ # @!method initialize(key:, value:)
968
+ # @param key [String]
969
+ # @param value [String]
970
+ end
971
+
972
+ class InputSchema < Revox::Internal::Type::BaseModel
505
973
  # @!attribute name
506
974
  #
507
- # @return [Symbol, Revox::Models::CallCreateResponse::Call::Assistant::LlmModel::UnionMember0::Name]
508
- required :name,
509
- enum: -> { Revox::Models::CallCreateResponse::Call::Assistant::LlmModel::UnionMember0::Name }
975
+ # @return [String]
976
+ required :name, String
977
+
978
+ # @!attribute required
979
+ #
980
+ # @return [Boolean]
981
+ required :required, Revox::Internal::Type::Boolean
510
982
 
511
983
  # @!attribute type
512
984
  #
513
- # @return [Symbol, :"dedicated-instance"]
514
- required :type, const: :"dedicated-instance"
985
+ # @return [Symbol, Revox::Models::CallCreateResponse::Call::Assistant::CustomTool::InputSchema::Type]
986
+ required :type,
987
+ enum: -> { Revox::Models::CallCreateResponse::Call::Assistant::CustomTool::InputSchema::Type }
515
988
 
516
- # @!method initialize(name:, type: :"dedicated-instance")
517
- # @param name [Symbol, Revox::Models::CallCreateResponse::Call::Assistant::LlmModel::UnionMember0::Name]
518
- # @param type [Symbol, :"dedicated-instance"]
989
+ # @!attribute description
990
+ #
991
+ # @return [String, nil]
992
+ optional :description, String
519
993
 
520
- # @see Revox::Models::CallCreateResponse::Call::Assistant::LlmModel::UnionMember0#name
521
- module Name
994
+ # @!attribute enum_options
995
+ #
996
+ # @return [Array<String>, nil]
997
+ optional :enum_options, Revox::Internal::Type::ArrayOf[String]
998
+
999
+ # @!method initialize(name:, required:, type:, description: nil, enum_options: nil)
1000
+ # @param name [String]
1001
+ # @param required [Boolean]
1002
+ # @param type [Symbol, Revox::Models::CallCreateResponse::Call::Assistant::CustomTool::InputSchema::Type]
1003
+ # @param description [String]
1004
+ # @param enum_options [Array<String>]
1005
+
1006
+ # @see Revox::Models::CallCreateResponse::Call::Assistant::CustomTool::InputSchema#type
1007
+ module Type
522
1008
  extend Revox::Internal::Type::Enum
523
1009
 
524
- GPT_4_1 = :"gpt-4.1"
525
- MINISTRAL_3_8B_INSTRUCT = :"ministral-3-8b-instruct"
1010
+ STRING = :string
1011
+ NUMBER = :number
1012
+ BOOLEAN = :boolean
1013
+ ENUM = :enum
1014
+ DATE = :date
1015
+ DATETIME = :datetime
526
1016
 
527
1017
  # @!method self.values
528
1018
  # @return [Array<Symbol>]
529
1019
  end
530
1020
  end
531
1021
 
532
- class UnionMember1 < Revox::Internal::Type::BaseModel
533
- # @!attribute openrouter_model_id
534
- # The model ID to use from OpenRouter. eg: openai/gpt-4.1
1022
+ # HTTP method to use when calling the API endpoint
1023
+ #
1024
+ # @see Revox::Models::CallCreateResponse::Call::Assistant::CustomTool#method_
1025
+ module Method
1026
+ extend Revox::Internal::Type::Enum
1027
+
1028
+ GET = :GET
1029
+ POST = :POST
1030
+ PUT = :PUT
1031
+ PATCH = :PATCH
1032
+ DELETE = :DELETE
1033
+
1034
+ # @!method self.values
1035
+ # @return [Array<Symbol>]
1036
+ end
1037
+
1038
+ class QueryParam < Revox::Internal::Type::BaseModel
1039
+ # @!attribute key
535
1040
  #
536
1041
  # @return [String]
537
- required :openrouter_model_id, String
1042
+ required :key, String
538
1043
 
539
- # @!attribute openrouter_provider
540
- # The provider to use from OpenRouter. eg: nebius, openai, azure, etc.
1044
+ # @!attribute value
541
1045
  #
542
1046
  # @return [String]
543
- required :openrouter_provider, String
1047
+ required :value, String
544
1048
 
545
- # @!attribute type
546
- # Use a model from OpenRouter.
547
- #
548
- # @return [Symbol, :openrouter]
549
- required :type, const: :openrouter
1049
+ # @!method initialize(key:, value:)
1050
+ # @param key [String]
1051
+ # @param value [String]
1052
+ end
1053
+ end
1054
+
1055
+ # The language used for the notification email content. One of "en" or "fr".
1056
+ #
1057
+ # @see Revox::Models::CallCreateResponse::Call::Assistant#email_notification_language
1058
+ module EmailNotificationLanguage
1059
+ extend Revox::Internal::Type::Enum
1060
+
1061
+ EN = :en
1062
+ FR = :fr
1063
+
1064
+ # @!method self.values
1065
+ # @return [Array<Symbol>]
1066
+ end
1067
+
1068
+ module EmailNotificationOutcome
1069
+ extend Revox::Internal::Type::Enum
1070
+
1071
+ NOT_INTERESTED = :not_interested
1072
+ INTERESTED = :interested
1073
+ COMPLETED = :completed
1074
+ REQUESTED_CALLBACK_LATER = :requested_callback_later
1075
+ REQUESTED_CALLBACK_NEW_NUMBER = :requested_callback_new_number
1076
+ DO_NOT_CONTACT = :do_not_contact
1077
+ AI_AVERSE = :ai_averse
1078
+ NONE = :none
1079
+
1080
+ # @!method self.values
1081
+ # @return [Array<Symbol>]
1082
+ end
1083
+
1084
+ # @see Revox::Models::CallCreateResponse::Call::Assistant#first_sentence_mode
1085
+ module FirstSentenceMode
1086
+ extend Revox::Internal::Type::Enum
1087
+
1088
+ GENERATED = :generated
1089
+ STATIC = :static
1090
+ NONE = :none
1091
+
1092
+ # @!method self.values
1093
+ # @return [Array<Symbol>]
1094
+ end
1095
+
1096
+ # Warm or cold transfer when transfer_phone_number is set; null when transfer is
1097
+ # not configured.
1098
+ #
1099
+ # @see Revox::Models::CallCreateResponse::Call::Assistant#human_transfer_mode
1100
+ module HumanTransferMode
1101
+ extend Revox::Internal::Type::Enum
1102
+
1103
+ WARM = :warm
1104
+ COLD = :cold
1105
+
1106
+ # @!method self.values
1107
+ # @return [Array<Symbol>]
1108
+ end
1109
+
1110
+ # @see Revox::Models::CallCreateResponse::Call::Assistant#llm_model
1111
+ module LlmModel
1112
+ extend Revox::Internal::Type::Union
1113
+
1114
+ variant -> { Revox::Models::CallCreateResponse::Call::Assistant::LlmModel::UnionMember0 }
1115
+
1116
+ variant -> { Revox::Models::CallCreateResponse::Call::Assistant::LlmModel::UnionMember1 }
1117
+
1118
+ variant -> { Revox::Models::CallCreateResponse::Call::Assistant::LlmModel::UnionMember2 }
1119
+
1120
+ variant -> { Revox::Models::CallCreateResponse::Call::Assistant::LlmModel::UnionMember3 }
1121
+
1122
+ class UnionMember0 < Revox::Internal::Type::BaseModel
1123
+ # @!attribute name
1124
+ #
1125
+ # @return [Symbol, Revox::Models::CallCreateResponse::Call::Assistant::LlmModel::UnionMember0::Name]
1126
+ required :name,
1127
+ enum: -> { Revox::Models::CallCreateResponse::Call::Assistant::LlmModel::UnionMember0::Name }
1128
+
1129
+ # @!attribute type
1130
+ #
1131
+ # @return [Symbol, :"dedicated-instance"]
1132
+ required :type, const: :"dedicated-instance"
1133
+
1134
+ # @!method initialize(name:, type: :"dedicated-instance")
1135
+ # @param name [Symbol, Revox::Models::CallCreateResponse::Call::Assistant::LlmModel::UnionMember0::Name]
1136
+ # @param type [Symbol, :"dedicated-instance"]
1137
+
1138
+ # @see Revox::Models::CallCreateResponse::Call::Assistant::LlmModel::UnionMember0#name
1139
+ module Name
1140
+ extend Revox::Internal::Type::Enum
1141
+
1142
+ GPT_4_1 = :"gpt-4.1"
1143
+ MINISTRAL_3_8B_INSTRUCT = :"ministral-3-8b-instruct"
1144
+
1145
+ # @!method self.values
1146
+ # @return [Array<Symbol>]
1147
+ end
1148
+ end
1149
+
1150
+ class UnionMember1 < Revox::Internal::Type::BaseModel
1151
+ # @!attribute openrouter_model_id
1152
+ # The model ID to use from OpenRouter. eg: openai/gpt-4.1
1153
+ #
1154
+ # @return [String]
1155
+ required :openrouter_model_id, String
1156
+
1157
+ # @!attribute openrouter_provider
1158
+ # The provider to use from OpenRouter. eg: nebius, openai, azure, etc.
1159
+ #
1160
+ # @return [String]
1161
+ required :openrouter_provider, String
1162
+
1163
+ # @!attribute type
1164
+ # Use a model from OpenRouter.
1165
+ #
1166
+ # @return [Symbol, :openrouter]
1167
+ required :type, const: :openrouter
550
1168
 
551
1169
  # @!method initialize(openrouter_model_id:, openrouter_provider:, type: :openrouter)
552
1170
  # @param openrouter_model_id [String] The model ID to use from OpenRouter. eg: openai/gpt-4.1
@@ -556,8 +1174,282 @@ module Revox
556
1174
  # @param type [Symbol, :openrouter] Use a model from OpenRouter.
557
1175
  end
558
1176
 
1177
+ class UnionMember2 < Revox::Internal::Type::BaseModel
1178
+ # @!attribute api_key
1179
+ # API key sent as Bearer token to the custom endpoint.
1180
+ #
1181
+ # @return [String]
1182
+ required :api_key, String
1183
+
1184
+ # @!attribute api_url
1185
+ # Base URL for the OpenAI-compatible API, e.g. https://api.together.xyz/v1
1186
+ #
1187
+ # @return [String]
1188
+ required :api_url, String
1189
+
1190
+ # @!attribute model_name
1191
+ # Model name as expected by the provider, e.g. meta-llama/llama-3-70b
1192
+ #
1193
+ # @return [String]
1194
+ required :model_name, String
1195
+
1196
+ # @!attribute type
1197
+ # OpenAI-compatible chat completions API (bring your own endpoint and key).
1198
+ #
1199
+ # @return [Symbol, :custom]
1200
+ required :type, const: :custom
1201
+
1202
+ # @!method initialize(api_key:, api_url:, model_name:, type: :custom)
1203
+ # @param api_key [String] API key sent as Bearer token to the custom endpoint.
1204
+ #
1205
+ # @param api_url [String] Base URL for the OpenAI-compatible API, e.g. https://api.together.xyz/v1
1206
+ #
1207
+ # @param model_name [String] Model name as expected by the provider, e.g. meta-llama/llama-3-70b
1208
+ #
1209
+ # @param type [Symbol, :custom] OpenAI-compatible chat completions API (bring your own endpoint and key).
1210
+ end
1211
+
1212
+ class UnionMember3 < Revox::Internal::Type::BaseModel
1213
+ # @!attribute provider
1214
+ # The provider to use from Realtime. eg: openai, google.
1215
+ #
1216
+ # @return [Symbol, Revox::Models::CallCreateResponse::Call::Assistant::LlmModel::UnionMember3::Provider]
1217
+ required :provider,
1218
+ enum: -> { Revox::Models::CallCreateResponse::Call::Assistant::LlmModel::UnionMember3::Provider }
1219
+
1220
+ # @!attribute realtime_model_id
1221
+ # The model ID to use from Realtime. eg: gpt-4.1
1222
+ #
1223
+ # @return [String]
1224
+ required :realtime_model_id, String
1225
+
1226
+ # @!attribute type
1227
+ # Use a model from Realtime.
1228
+ #
1229
+ # @return [Symbol, :realtime]
1230
+ required :type, const: :realtime
1231
+
1232
+ # @!attribute realtime_voice_id
1233
+ # Output voice for the realtime provider (e.g. OpenAI: marin; Gemini: Puck).
1234
+ #
1235
+ # @return [String, nil]
1236
+ optional :realtime_voice_id, String
1237
+
1238
+ # @!method initialize(provider:, realtime_model_id:, realtime_voice_id: nil, type: :realtime)
1239
+ # @param provider [Symbol, Revox::Models::CallCreateResponse::Call::Assistant::LlmModel::UnionMember3::Provider] The provider to use from Realtime. eg: openai, google.
1240
+ #
1241
+ # @param realtime_model_id [String] The model ID to use from Realtime. eg: gpt-4.1
1242
+ #
1243
+ # @param realtime_voice_id [String] Output voice for the realtime provider (e.g. OpenAI: marin; Gemini: Puck).
1244
+ #
1245
+ # @param type [Symbol, :realtime] Use a model from Realtime.
1246
+
1247
+ # The provider to use from Realtime. eg: openai, google.
1248
+ #
1249
+ # @see Revox::Models::CallCreateResponse::Call::Assistant::LlmModel::UnionMember3#provider
1250
+ module Provider
1251
+ extend Revox::Internal::Type::Enum
1252
+
1253
+ OPENAI = :openai
1254
+ GOOGLE = :google
1255
+
1256
+ # @!method self.values
1257
+ # @return [Array<Symbol>]
1258
+ end
1259
+ end
1260
+
559
1261
  # @!method self.variants
560
- # @return [Array(Revox::Models::CallCreateResponse::Call::Assistant::LlmModel::UnionMember0, Revox::Models::CallCreateResponse::Call::Assistant::LlmModel::UnionMember1)]
1262
+ # @return [Array(Revox::Models::CallCreateResponse::Call::Assistant::LlmModel::UnionMember0, Revox::Models::CallCreateResponse::Call::Assistant::LlmModel::UnionMember1, Revox::Models::CallCreateResponse::Call::Assistant::LlmModel::UnionMember2, Revox::Models::CallCreateResponse::Call::Assistant::LlmModel::UnionMember3)]
1263
+ end
1264
+
1265
+ # @see Revox::Models::CallCreateResponse::Call::Assistant#position
1266
+ class Position < Revox::Internal::Type::BaseModel
1267
+ # @!attribute x
1268
+ #
1269
+ # @return [Float]
1270
+ required :x, Float
1271
+
1272
+ # @!attribute y_
1273
+ #
1274
+ # @return [Float]
1275
+ required :y_, Float, api_name: :y
1276
+
1277
+ # @!method initialize(x:, y_:)
1278
+ # @param x [Float]
1279
+ # @param y_ [Float]
1280
+ end
1281
+
1282
+ # @see Revox::Models::CallCreateResponse::Call::Assistant#prompt_flow
1283
+ class PromptFlow < Revox::Internal::Type::BaseModel
1284
+ # @!attribute edges
1285
+ #
1286
+ # @return [Array<Revox::Models::CallCreateResponse::Call::Assistant::PromptFlow::Edge>]
1287
+ required :edges,
1288
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CallCreateResponse::Call::Assistant::PromptFlow::Edge] }
1289
+
1290
+ # @!attribute nodes
1291
+ #
1292
+ # @return [Array<Revox::Models::CallCreateResponse::Call::Assistant::PromptFlow::Node>]
1293
+ required :nodes,
1294
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CallCreateResponse::Call::Assistant::PromptFlow::Node] }
1295
+
1296
+ # @!method initialize(edges:, nodes:)
1297
+ # @param edges [Array<Revox::Models::CallCreateResponse::Call::Assistant::PromptFlow::Edge>]
1298
+ # @param nodes [Array<Revox::Models::CallCreateResponse::Call::Assistant::PromptFlow::Node>]
1299
+
1300
+ class Edge < Revox::Internal::Type::BaseModel
1301
+ # @!attribute id
1302
+ #
1303
+ # @return [String]
1304
+ required :id, String
1305
+
1306
+ # @!attribute source
1307
+ #
1308
+ # @return [String]
1309
+ required :source, String
1310
+
1311
+ # @!attribute target
1312
+ #
1313
+ # @return [String]
1314
+ required :target, String
1315
+
1316
+ # @!method initialize(id:, source:, target:)
1317
+ # @param id [String]
1318
+ # @param source [String]
1319
+ # @param target [String]
1320
+ end
1321
+
1322
+ class Node < Revox::Internal::Type::BaseModel
1323
+ # @!attribute id
1324
+ #
1325
+ # @return [String]
1326
+ required :id, String
1327
+
1328
+ # @!attribute data
1329
+ #
1330
+ # @return [Revox::Models::CallCreateResponse::Call::Assistant::PromptFlow::Node::Data]
1331
+ required :data, -> { Revox::Models::CallCreateResponse::Call::Assistant::PromptFlow::Node::Data }
1332
+
1333
+ # @!attribute position
1334
+ #
1335
+ # @return [Revox::Models::CallCreateResponse::Call::Assistant::PromptFlow::Node::Position]
1336
+ required :position, -> { Revox::Models::CallCreateResponse::Call::Assistant::PromptFlow::Node::Position }
1337
+
1338
+ # @!attribute type
1339
+ #
1340
+ # @return [Symbol, :promptBlock]
1341
+ required :type, const: :promptBlock
1342
+
1343
+ # @!method initialize(id:, data:, position:, type: :promptBlock)
1344
+ # @param id [String]
1345
+ # @param data [Revox::Models::CallCreateResponse::Call::Assistant::PromptFlow::Node::Data]
1346
+ # @param position [Revox::Models::CallCreateResponse::Call::Assistant::PromptFlow::Node::Position]
1347
+ # @param type [Symbol, :promptBlock]
1348
+
1349
+ # @see Revox::Models::CallCreateResponse::Call::Assistant::PromptFlow::Node#data
1350
+ class Data < Revox::Internal::Type::BaseModel
1351
+ # @!attribute body
1352
+ #
1353
+ # @return [String]
1354
+ required :body, String
1355
+
1356
+ # @!attribute title
1357
+ #
1358
+ # @return [String]
1359
+ required :title, String
1360
+
1361
+ # @!method initialize(body:, title:)
1362
+ # @param body [String]
1363
+ # @param title [String]
1364
+ end
1365
+
1366
+ # @see Revox::Models::CallCreateResponse::Call::Assistant::PromptFlow::Node#position
1367
+ class Position < Revox::Internal::Type::BaseModel
1368
+ # @!attribute x
1369
+ #
1370
+ # @return [Float]
1371
+ required :x, Float
1372
+
1373
+ # @!attribute y_
1374
+ #
1375
+ # @return [Float]
1376
+ required :y_, Float, api_name: :y
1377
+
1378
+ # @!method initialize(x:, y_:)
1379
+ # @param x [Float]
1380
+ # @param y_ [Float]
1381
+ end
1382
+ end
1383
+ end
1384
+
1385
+ # @see Revox::Models::CallCreateResponse::Call::Assistant#slack
1386
+ class Slack < Revox::Internal::Type::BaseModel
1387
+ # @!attribute channel_id
1388
+ # The Slack channel ID where the notification will be posted.
1389
+ #
1390
+ # @return [String]
1391
+ required :channel_id, String
1392
+
1393
+ # @!attribute connection_id
1394
+ # The Nango connection ID linking the org's Slack workspace to Revox.
1395
+ #
1396
+ # @return [String]
1397
+ required :connection_id, String
1398
+
1399
+ # @!attribute outcomes
1400
+ # Which call outcomes trigger a Slack notification (e.g. ['interested', 'none']).
1401
+ # Use 'none' to notify when outcome is null.
1402
+ #
1403
+ # @return [Array<Symbol, Revox::Models::CallCreateResponse::Call::Assistant::Slack::Outcome>]
1404
+ required :outcomes,
1405
+ -> { Revox::Internal::Type::ArrayOf[enum: Revox::Models::CallCreateResponse::Call::Assistant::Slack::Outcome] }
1406
+
1407
+ # @!attribute channel_name
1408
+ # Human-readable Slack channel name, cached for display in the UI.
1409
+ #
1410
+ # @return [String, nil]
1411
+ optional :channel_name, String, nil?: true
1412
+
1413
+ # @!attribute template
1414
+ # Optional message template. Supports {{summary}}, {{outcome}}, {{phone}},
1415
+ # {{call_url}}, {{assistant_name}}, {{campaign_name}}, {{first_name}},
1416
+ # {{last_name}}, {{email}}, {{company}}, {{contact_name}}, {{contact_line}}, plus
1417
+ # prompt_variables and structured_output keys. When null/empty a default template
1418
+ # is used.
1419
+ #
1420
+ # @return [String, nil]
1421
+ optional :template, String, nil?: true
1422
+
1423
+ # @!method initialize(channel_id:, connection_id:, outcomes:, channel_name: nil, template: nil)
1424
+ # Some parameter documentations has been truncated, see
1425
+ # {Revox::Models::CallCreateResponse::Call::Assistant::Slack} for more details.
1426
+ #
1427
+ # @param channel_id [String] The Slack channel ID where the notification will be posted.
1428
+ #
1429
+ # @param connection_id [String] The Nango connection ID linking the org's Slack workspace to Revox.
1430
+ #
1431
+ # @param outcomes [Array<Symbol, Revox::Models::CallCreateResponse::Call::Assistant::Slack::Outcome>] Which call outcomes trigger a Slack notification (e.g. ['interested', 'none']).
1432
+ #
1433
+ # @param channel_name [String, nil] Human-readable Slack channel name, cached for display in the UI.
1434
+ #
1435
+ # @param template [String, nil] Optional message template. Supports {{summary}}, {{outcome}}, {{phone}},
1436
+ # {{call\_
1437
+
1438
+ module Outcome
1439
+ extend Revox::Internal::Type::Enum
1440
+
1441
+ NOT_INTERESTED = :not_interested
1442
+ INTERESTED = :interested
1443
+ COMPLETED = :completed
1444
+ REQUESTED_CALLBACK_LATER = :requested_callback_later
1445
+ REQUESTED_CALLBACK_NEW_NUMBER = :requested_callback_new_number
1446
+ DO_NOT_CONTACT = :do_not_contact
1447
+ AI_AVERSE = :ai_averse
1448
+ NONE = :none
1449
+
1450
+ # @!method self.values
1451
+ # @return [Array<Symbol>]
1452
+ end
561
1453
  end
562
1454
 
563
1455
  class StructuredOutputConfig < Revox::Internal::Type::BaseModel
@@ -610,6 +1502,88 @@ module Revox
610
1502
  end
611
1503
  end
612
1504
 
1505
+ # @see Revox::Models::CallCreateResponse::Call::Assistant#stt_context
1506
+ class SttContext < Revox::Internal::Type::BaseModel
1507
+ # @!attribute general
1508
+ #
1509
+ # @return [Array<Revox::Models::CallCreateResponse::Call::Assistant::SttContext::General>]
1510
+ required :general,
1511
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CallCreateResponse::Call::Assistant::SttContext::General] }
1512
+
1513
+ # @!attribute terms
1514
+ #
1515
+ # @return [Array<String>]
1516
+ required :terms, Revox::Internal::Type::ArrayOf[String]
1517
+
1518
+ # @!method initialize(general:, terms:)
1519
+ # Assistant-level speech-to-text context: structured `general` key/value pairs
1520
+ # plus a list of domain `terms`. Prompt-derived context is merged in without
1521
+ # replacing existing entries.
1522
+ #
1523
+ # @param general [Array<Revox::Models::CallCreateResponse::Call::Assistant::SttContext::General>]
1524
+ # @param terms [Array<String>]
1525
+
1526
+ class General < Revox::Internal::Type::BaseModel
1527
+ # @!attribute key
1528
+ #
1529
+ # @return [String]
1530
+ required :key, String
1531
+
1532
+ # @!attribute value
1533
+ #
1534
+ # @return [String]
1535
+ required :value, String
1536
+
1537
+ # @!method initialize(key:, value:)
1538
+ # @param key [String]
1539
+ # @param value [String]
1540
+ end
1541
+ end
1542
+
1543
+ # Transcriber (speech-to-text) model used for the assistant.
1544
+ #
1545
+ # @see Revox::Models::CallCreateResponse::Call::Assistant#stt_model
1546
+ module SttModel
1547
+ extend Revox::Internal::Type::Enum
1548
+
1549
+ STT_RT_V4 = :"stt-rt-v4"
1550
+ STT_RT_V5 = :"stt-rt-v5"
1551
+
1552
+ # @!method self.values
1553
+ # @return [Array<Symbol>]
1554
+ end
1555
+
1556
+ # Audio clip to play while the agent is processing a response. One of the built-in
1557
+ # LiveKit audio clips; null disables it.
1558
+ #
1559
+ # @see Revox::Models::CallCreateResponse::Call::Assistant#thinking_sound
1560
+ module ThinkingSound
1561
+ extend Revox::Internal::Type::Enum
1562
+
1563
+ CITY_AMBIENCE_OGG = :"city-ambience.ogg"
1564
+ FOREST_AMBIENCE_OGG = :"forest-ambience.ogg"
1565
+ OFFICE_AMBIENCE_OGG = :"office-ambience.ogg"
1566
+ CROWDED_ROOM_OGG = :"crowded-room.ogg"
1567
+ KEYBOARD_TYPING_OGG = :"keyboard-typing.ogg"
1568
+ KEYBOARD_TYPING2_OGG = :"keyboard-typing2.ogg"
1569
+ HOLD_MUSIC_OGG = :"hold_music.ogg"
1570
+
1571
+ # @!method self.values
1572
+ # @return [Array<Symbol>]
1573
+ end
1574
+
1575
+ # @see Revox::Models::CallCreateResponse::Call::Assistant#type
1576
+ module Type
1577
+ extend Revox::Internal::Type::Enum
1578
+
1579
+ STANDALONE = :standalone
1580
+ MULTI_STEP = :"multi-step"
1581
+ SUB_ASSISTANT = :"sub-assistant"
1582
+
1583
+ # @!method self.values
1584
+ # @return [Array<Symbol>]
1585
+ end
1586
+
613
1587
  # @see Revox::Models::CallCreateResponse::Call::Assistant#voice
614
1588
  class Voice < Revox::Internal::Type::BaseModel
615
1589
  # @!attribute id
@@ -624,6 +1598,13 @@ module Revox
624
1598
  # @return [Symbol, Revox::Models::CallCreateResponse::Call::Assistant::Voice::Provider]
625
1599
  required :provider, enum: -> { Revox::Models::CallCreateResponse::Call::Assistant::Voice::Provider }
626
1600
 
1601
+ # @!attribute model
1602
+ # Cartesia TTS model (Cartesia only). Defaults to sonic-3 when omitted. Ignored
1603
+ # for other providers.
1604
+ #
1605
+ # @return [Symbol, Revox::Models::CallCreateResponse::Call::Assistant::Voice::Model, nil]
1606
+ optional :model, enum: -> { Revox::Models::CallCreateResponse::Call::Assistant::Voice::Model }
1607
+
627
1608
  # @!attribute speed
628
1609
  # The speed of the voice. Range depends on provider: Cartesia 0.6–1.5, ElevenLabs
629
1610
  # 0.7–1.2. Default is 1.0.
@@ -631,7 +1612,14 @@ module Revox
631
1612
  # @return [Float, nil]
632
1613
  optional :speed, Float
633
1614
 
634
- # @!method initialize(id:, provider:, speed: nil)
1615
+ # @!attribute volume
1616
+ # Volume of the voice (Cartesia only). 0.5–2.0, default 1.0. Ignored for other
1617
+ # providers.
1618
+ #
1619
+ # @return [Float, nil]
1620
+ optional :volume, Float
1621
+
1622
+ # @!method initialize(id:, provider:, model: nil, speed: nil, volume: nil)
635
1623
  # Some parameter documentations has been truncated, see
636
1624
  # {Revox::Models::CallCreateResponse::Call::Assistant::Voice} for more details.
637
1625
  #
@@ -639,7 +1627,11 @@ module Revox
639
1627
  #
640
1628
  # @param provider [Symbol, Revox::Models::CallCreateResponse::Call::Assistant::Voice::Provider] The provider of the voice.
641
1629
  #
1630
+ # @param model [Symbol, Revox::Models::CallCreateResponse::Call::Assistant::Voice::Model] Cartesia TTS model (Cartesia only). Defaults to sonic-3 when omitted. Ignored fo
1631
+ #
642
1632
  # @param speed [Float] The speed of the voice. Range depends on provider: Cartesia 0.6–1.5, ElevenLabs
1633
+ #
1634
+ # @param volume [Float] Volume of the voice (Cartesia only). 0.5–2.0, default 1.0. Ignored for other pro
643
1635
 
644
1636
  # The provider of the voice.
645
1637
  #
@@ -653,6 +1645,159 @@ module Revox
653
1645
  # @!method self.values
654
1646
  # @return [Array<Symbol>]
655
1647
  end
1648
+
1649
+ # Cartesia TTS model (Cartesia only). Defaults to sonic-3 when omitted. Ignored
1650
+ # for other providers.
1651
+ #
1652
+ # @see Revox::Models::CallCreateResponse::Call::Assistant::Voice#model
1653
+ module Model
1654
+ extend Revox::Internal::Type::Enum
1655
+
1656
+ SONIC_3 = :"sonic-3"
1657
+ SONIC_3_5 = :"sonic-3.5"
1658
+
1659
+ # @!method self.values
1660
+ # @return [Array<Symbol>]
1661
+ end
1662
+ end
1663
+
1664
+ # @see Revox::Models::CallCreateResponse::Call::Assistant#zoho
1665
+ class Zoho < Revox::Internal::Type::BaseModel
1666
+ # @!attribute connection_id
1667
+ # The Nango connection ID linking the org's Zoho CRM account to Revox.
1668
+ #
1669
+ # @return [String]
1670
+ required :connection_id, String
1671
+
1672
+ # @!attribute field_mapping
1673
+ # Maps extracted call fields (structured_output / prompt variables) onto Zoho
1674
+ # field API names on the upserted record.
1675
+ #
1676
+ # @return [Array<Revox::Models::CallCreateResponse::Call::Assistant::Zoho::FieldMapping>]
1677
+ required :field_mapping,
1678
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CallCreateResponse::Call::Assistant::Zoho::FieldMapping] }
1679
+
1680
+ # @!attribute log_call_activity
1681
+ # When true, also log the call as a record in Zoho's Calls module (related to the
1682
+ # upserted prospect via Who_Id).
1683
+ #
1684
+ # @return [Boolean]
1685
+ required :log_call_activity, Revox::Internal::Type::Boolean
1686
+
1687
+ # @!attribute module_
1688
+ # Zoho module the prospect record is upserted into (e.g. 'Leads' or 'Contacts').
1689
+ #
1690
+ # @return [String]
1691
+ required :module_, String, api_name: :module
1692
+
1693
+ # @!attribute outcomes
1694
+ # Which call outcomes trigger the Zoho push (e.g. ['interested', 'none']). Use
1695
+ # 'none' to push when outcome is null.
1696
+ #
1697
+ # @return [Array<Symbol, Revox::Models::CallCreateResponse::Call::Assistant::Zoho::Outcome>]
1698
+ required :outcomes,
1699
+ -> { Revox::Internal::Type::ArrayOf[enum: Revox::Models::CallCreateResponse::Call::Assistant::Zoho::Outcome] }
1700
+
1701
+ # @!attribute template
1702
+ # Optional Note body template. Supports {{summary}}, {{outcome}}, {{phone}},
1703
+ # {{call_url}}, {{assistant_name}}, {{campaign_name}}, {{transcript}}, plus
1704
+ # prompt_variables and structured_output keys. When null/empty a default note
1705
+ # (outcome + summary + auto-listed extracted fields) is used.
1706
+ #
1707
+ # @return [String, nil]
1708
+ optional :template, String, nil?: true
1709
+
1710
+ # @!method initialize(connection_id:, field_mapping:, log_call_activity:, module_:, outcomes:, template: nil)
1711
+ # Some parameter documentations has been truncated, see
1712
+ # {Revox::Models::CallCreateResponse::Call::Assistant::Zoho} for more details.
1713
+ #
1714
+ # @param connection_id [String] The Nango connection ID linking the org's Zoho CRM account to Revox.
1715
+ #
1716
+ # @param field_mapping [Array<Revox::Models::CallCreateResponse::Call::Assistant::Zoho::FieldMapping>] Maps extracted call fields (structured_output / prompt variables) onto Zoho fiel
1717
+ #
1718
+ # @param log_call_activity [Boolean] When true, also log the call as a record in Zoho's Calls module (related to the
1719
+ #
1720
+ # @param module_ [String] Zoho module the prospect record is upserted into (e.g. 'Leads' or 'Contacts').
1721
+ #
1722
+ # @param outcomes [Array<Symbol, Revox::Models::CallCreateResponse::Call::Assistant::Zoho::Outcome>] Which call outcomes trigger the Zoho push (e.g. ['interested', 'none']). Use 'no
1723
+ #
1724
+ # @param template [String, nil] Optional Note body template. Supports {{summary}}, {{outcome}}, {{phone}}, {{cal
1725
+
1726
+ class FieldMapping < Revox::Internal::Type::BaseModel
1727
+ # @!attribute source
1728
+ # Source key to read from the call: a structured_output field name, falling back
1729
+ # to a prompt variable of the same name.
1730
+ #
1731
+ # @return [String]
1732
+ required :source, String
1733
+
1734
+ # @!attribute zoho_field
1735
+ # Destination Zoho field API name on the upserted record (e.g. 'Email', 'Company',
1736
+ # or a custom 'Budget\_\_c').
1737
+ #
1738
+ # @return [String]
1739
+ required :zoho_field, String
1740
+
1741
+ # @!method initialize(source:, zoho_field:)
1742
+ # Some parameter documentations has been truncated, see
1743
+ # {Revox::Models::CallCreateResponse::Call::Assistant::Zoho::FieldMapping} for
1744
+ # more details.
1745
+ #
1746
+ # @param source [String] Source key to read from the call: a structured_output field name, falling back t
1747
+ #
1748
+ # @param zoho_field [String] Destination Zoho field API name on the upserted record (e.g. 'Email', 'Company',
1749
+ end
1750
+
1751
+ module Outcome
1752
+ extend Revox::Internal::Type::Enum
1753
+
1754
+ NOT_INTERESTED = :not_interested
1755
+ INTERESTED = :interested
1756
+ COMPLETED = :completed
1757
+ REQUESTED_CALLBACK_LATER = :requested_callback_later
1758
+ REQUESTED_CALLBACK_NEW_NUMBER = :requested_callback_new_number
1759
+ DO_NOT_CONTACT = :do_not_contact
1760
+ AI_AVERSE = :ai_averse
1761
+ NONE = :none
1762
+
1763
+ # @!method self.values
1764
+ # @return [Array<Symbol>]
1765
+ end
1766
+ end
1767
+
1768
+ # @see Revox::Models::CallCreateResponse::Call::Assistant#created_by
1769
+ class CreatedBy < Revox::Internal::Type::BaseModel
1770
+ # @!attribute id
1771
+ # The database user id of the creator.
1772
+ #
1773
+ # @return [String]
1774
+ required :id, String
1775
+
1776
+ # @!attribute email
1777
+ #
1778
+ # @return [String]
1779
+ required :email, String
1780
+
1781
+ # @!attribute first_name
1782
+ #
1783
+ # @return [String, nil]
1784
+ required :first_name, String, nil?: true
1785
+
1786
+ # @!attribute last_name
1787
+ #
1788
+ # @return [String, nil]
1789
+ required :last_name, String, nil?: true
1790
+
1791
+ # @!method initialize(id:, email:, first_name:, last_name:)
1792
+ # The user who created the assistant.
1793
+ #
1794
+ # @param id [String] The database user id of the creator.
1795
+ #
1796
+ # @param email [String]
1797
+ #
1798
+ # @param first_name [String, nil]
1799
+ #
1800
+ # @param last_name [String, nil]
656
1801
  end
657
1802
 
658
1803
  class FaqItem < Revox::Internal::Type::BaseModel
@@ -758,12 +1903,20 @@ module Revox
758
1903
  # @return [Symbol, Revox::Models::CallCreateResponse::Call::CallAttempt::Status]
759
1904
  required :status, enum: -> { Revox::Models::CallCreateResponse::Call::CallAttempt::Status }
760
1905
 
1906
+ # @!attribute assistants_used
1907
+ # Assistant node ids entered during this attempt, in traversal order.
1908
+ #
1909
+ # @return [Array<String>, nil]
1910
+ optional :assistants_used, Revox::Internal::Type::ArrayOf[String], nil?: true
1911
+
761
1912
  # @!attribute end_reason
762
1913
  # Reason for ending the call when ended_by is 'agent'. E.g. 'tool_end_call',
763
1914
  # 'voicemail', 'transfer', 'ivr_no_navigate'.
764
1915
  #
765
- # @return [String, nil]
766
- optional :end_reason, String, nil?: true
1916
+ # @return [Symbol, Revox::Models::CallCreateResponse::Call::CallAttempt::EndReason, nil]
1917
+ optional :end_reason,
1918
+ enum: -> { Revox::Models::CallCreateResponse::Call::CallAttempt::EndReason },
1919
+ nil?: true
767
1920
 
768
1921
  # @!attribute ended_by
769
1922
  # Who ended the call: 'agent' (AI agent), 'user' (caller/callee hung up), or
@@ -772,6 +1925,25 @@ module Revox
772
1925
  # @return [Symbol, Revox::Models::CallCreateResponse::Call::CallAttempt::EndedBy, nil]
773
1926
  optional :ended_by, enum: -> { Revox::Models::CallCreateResponse::Call::CallAttempt::EndedBy }, nil?: true
774
1927
 
1928
+ # @!attribute post_call_transcript
1929
+ # Higher-quality transcript generated after the call via Soniox async STT. Null
1930
+ # until generated or when no recording is available.
1931
+ #
1932
+ # @return [Array<Revox::Models::CallCreateResponse::Call::CallAttempt::PostCallTranscript>, nil]
1933
+ optional :post_call_transcript,
1934
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CallCreateResponse::Call::CallAttempt::PostCallTranscript] },
1935
+ nil?: true
1936
+
1937
+ # @!attribute sms_log
1938
+ # Automatic SMS sent after the call (voicemail and after-call), ordered oldest
1939
+ # first. The in-call `send_sms` is excluded — it already appears in the transcript
1940
+ # as a tool call.
1941
+ #
1942
+ # @return [Array<Revox::Models::CallCreateResponse::Call::CallAttempt::SMSLog>, nil]
1943
+ optional :sms_log,
1944
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CallCreateResponse::Call::CallAttempt::SMSLog] },
1945
+ nil?: true
1946
+
775
1947
  # @!attribute structured_output
776
1948
  # The data extracted from the call, using the structured output config from the
777
1949
  # parent call object.
@@ -782,14 +1954,14 @@ module Revox
782
1954
  nil?: true
783
1955
 
784
1956
  # @!attribute transcript
785
- # The transcript of the call.
1957
+ # The live transcript of the call, built in real time.
786
1958
  #
787
1959
  # @return [Array<Revox::Models::CallCreateResponse::Call::CallAttempt::Transcript>, nil]
788
1960
  optional :transcript,
789
1961
  -> { Revox::Internal::Type::ArrayOf[Revox::Models::CallCreateResponse::Call::CallAttempt::Transcript] },
790
1962
  nil?: true
791
1963
 
792
- # @!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)
1964
+ # @!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)
793
1965
  # Some parameter documentations has been truncated, see
794
1966
  # {Revox::Models::CallCreateResponse::Call::CallAttempt} for more details.
795
1967
  #
@@ -814,13 +1986,19 @@ module Revox
814
1986
  #
815
1987
  # @param status [Symbol, Revox::Models::CallCreateResponse::Call::CallAttempt::Status] The status of the call attempt.
816
1988
  #
817
- # @param end_reason [String, nil] Reason for ending the call when ended_by is 'agent'. E.g. 'tool_end_call', 'voic
1989
+ # @param assistants_used [Array<String>, nil] Assistant node ids entered during this attempt, in traversal order.
1990
+ #
1991
+ # @param end_reason [Symbol, Revox::Models::CallCreateResponse::Call::CallAttempt::EndReason, nil] Reason for ending the call when ended_by is 'agent'. E.g. 'tool_end_call', 'voic
818
1992
  #
819
1993
  # @param ended_by [Symbol, Revox::Models::CallCreateResponse::Call::CallAttempt::EndedBy, nil] Who ended the call: 'agent' (AI agent), 'user' (caller/callee hung up), or 'syst
820
1994
  #
1995
+ # @param post_call_transcript [Array<Revox::Models::CallCreateResponse::Call::CallAttempt::PostCallTranscript>, nil] Higher-quality transcript generated after the call via Soniox async STT. Null un
1996
+ #
1997
+ # @param sms_log [Array<Revox::Models::CallCreateResponse::Call::CallAttempt::SMSLog>, nil] Automatic SMS sent after the call (voicemail and after-call), ordered oldest fir
1998
+ #
821
1999
  # @param structured_output [Hash{Symbol=>Object}, nil] The data extracted from the call, using the structured output config from the pa
822
2000
  #
823
- # @param transcript [Array<Revox::Models::CallCreateResponse::Call::CallAttempt::Transcript>, nil] The transcript of the call.
2001
+ # @param transcript [Array<Revox::Models::CallCreateResponse::Call::CallAttempt::Transcript>, nil] The live transcript of the call, built in real time.
824
2002
 
825
2003
  # The SIP error that occurred.
826
2004
  #
@@ -845,45 +2023,201 @@ module Revox
845
2023
  module Result
846
2024
  extend Revox::Internal::Type::Enum
847
2025
 
848
- IVR = :IVR
849
- VOICEMAIL = :voicemail
850
- HUMAN = :human
851
- UNKNOWN = :unknown
852
- IOS_SCREENING_FILTER = :"ios-screening-filter"
2026
+ IVR = :IVR
2027
+ VOICEMAIL = :voicemail
2028
+ HUMAN = :human
2029
+ UNKNOWN = :unknown
2030
+ IOS_SCREENING_FILTER = :"ios-screening-filter"
2031
+
2032
+ # @!method self.values
2033
+ # @return [Array<Symbol>]
2034
+ end
2035
+
2036
+ # The status of the call attempt.
2037
+ #
2038
+ # @see Revox::Models::CallCreateResponse::Call::CallAttempt#status
2039
+ module Status
2040
+ extend Revox::Internal::Type::Enum
2041
+
2042
+ QUEUED = :queued
2043
+ RINGING = :ringing
2044
+ ONGOING = :ongoing
2045
+ COMPLETED = :completed
2046
+ ERROR = :error
2047
+
2048
+ # @!method self.values
2049
+ # @return [Array<Symbol>]
2050
+ end
2051
+
2052
+ # Reason for ending the call when ended_by is 'agent'. E.g. 'tool_end_call',
2053
+ # 'voicemail', 'transfer', 'ivr_no_navigate'.
2054
+ #
2055
+ # @see Revox::Models::CallCreateResponse::Call::CallAttempt#end_reason
2056
+ module EndReason
2057
+ extend Revox::Internal::Type::Enum
2058
+
2059
+ CLIENT_INITIATED = :client_initiated
2060
+ CONNECTION_TIMEOUT = :connection_timeout
2061
+ HUMAN_TAKEOVER = :human_takeover
2062
+ IVR_NO_NAVIGATE = :ivr_no_navigate
2063
+ MAX_DURATION = :max_duration
2064
+ PARTICIPANT_REMOVED = :participant_removed
2065
+ TOOL_END_CALL = :tool_end_call
2066
+ TRANSFER = :transfer
2067
+ USER_INACTIVE = :user_inactive
2068
+ USER_REJECTED = :user_rejected
2069
+ USER_UNAVAILABLE = :user_unavailable
2070
+ VOICEMAIL = :voicemail
2071
+ SPEED_DIAL_ABANDONED = :speed_dial_abandoned
2072
+ SPEED_DIAL_OPERATOR_MISSED = :speed_dial_operator_missed
2073
+ SPEED_DIAL_TIMEOUT = :speed_dial_timeout
2074
+ SPEED_DIAL_HANGUP = :speed_dial_hangup
2075
+
2076
+ # @!method self.values
2077
+ # @return [Array<Symbol>]
2078
+ end
2079
+
2080
+ # Who ended the call: 'agent' (AI agent), 'user' (caller/callee hung up), or
2081
+ # 'system' (e.g. max duration limit).
2082
+ #
2083
+ # @see Revox::Models::CallCreateResponse::Call::CallAttempt#ended_by
2084
+ module EndedBy
2085
+ extend Revox::Internal::Type::Enum
2086
+
2087
+ AGENT = :agent
2088
+ USER = :user
2089
+ SYSTEM = :system
2090
+
2091
+ # @!method self.values
2092
+ # @return [Array<Symbol>]
2093
+ end
2094
+
2095
+ class PostCallTranscript < Revox::Internal::Type::BaseModel
2096
+ # @!attribute content
2097
+ #
2098
+ # @return [String]
2099
+ required :content, String
2100
+
2101
+ # @!attribute role
2102
+ #
2103
+ # @return [Symbol, Revox::Models::CallCreateResponse::Call::CallAttempt::PostCallTranscript::Role]
2104
+ required :role,
2105
+ enum: -> { Revox::Models::CallCreateResponse::Call::CallAttempt::PostCallTranscript::Role }
2106
+
2107
+ # @!attribute tool_arguments
2108
+ #
2109
+ # @return [Hash{Symbol=>Object}, String, nil]
2110
+ optional :tool_arguments,
2111
+ union: -> { Revox::Models::CallCreateResponse::Call::CallAttempt::PostCallTranscript::ToolArguments }
2112
+
2113
+ # @!attribute tool_is_error
2114
+ #
2115
+ # @return [Boolean, nil]
2116
+ optional :tool_is_error, Revox::Internal::Type::Boolean
2117
+
2118
+ # @!attribute tool_name
2119
+ #
2120
+ # @return [String, nil]
2121
+ optional :tool_name, String
2122
+
2123
+ # @!attribute tool_output
2124
+ #
2125
+ # @return [String, nil]
2126
+ optional :tool_output, String
2127
+
2128
+ # @!method initialize(content:, role:, tool_arguments: nil, tool_is_error: nil, tool_name: nil, tool_output: nil)
2129
+ # @param content [String]
2130
+ # @param role [Symbol, Revox::Models::CallCreateResponse::Call::CallAttempt::PostCallTranscript::Role]
2131
+ # @param tool_arguments [Hash{Symbol=>Object}, String]
2132
+ # @param tool_is_error [Boolean]
2133
+ # @param tool_name [String]
2134
+ # @param tool_output [String]
2135
+
2136
+ # @see Revox::Models::CallCreateResponse::Call::CallAttempt::PostCallTranscript#role
2137
+ module Role
2138
+ extend Revox::Internal::Type::Enum
2139
+
2140
+ USER = :user
2141
+ ASSISTANT = :assistant
2142
+ HUMAN_AGENT = :human_agent
2143
+ TOOL = :tool
2144
+
2145
+ # @!method self.values
2146
+ # @return [Array<Symbol>]
2147
+ end
2148
+
2149
+ # @see Revox::Models::CallCreateResponse::Call::CallAttempt::PostCallTranscript#tool_arguments
2150
+ module ToolArguments
2151
+ extend Revox::Internal::Type::Union
2152
+
2153
+ variant -> { Revox::Models::CallCreateResponse::Call::CallAttempt::PostCallTranscript::ToolArguments::UnionMember0Map }
2154
+
2155
+ variant String
2156
+
2157
+ # @!method self.variants
2158
+ # @return [Array(Hash{Symbol=>Object}, String)]
2159
+
2160
+ # @type [Revox::Internal::Type::Converter]
2161
+ UnionMember0Map = Revox::Internal::Type::HashOf[Revox::Internal::Type::Unknown]
2162
+ end
2163
+ end
2164
+
2165
+ class SMSLog < Revox::Internal::Type::BaseModel
2166
+ # @!attribute id
2167
+ #
2168
+ # @return [String]
2169
+ required :id, String
2170
+
2171
+ # @!attribute created_at
2172
+ # When the SMS was sent.
2173
+ #
2174
+ # @return [Object]
2175
+ required :created_at, Revox::Internal::Type::Unknown
853
2176
 
854
- # @!method self.values
855
- # @return [Array<Symbol>]
856
- end
2177
+ # @!attribute message_body
2178
+ #
2179
+ # @return [String]
2180
+ required :message_body, String
857
2181
 
858
- # The status of the call attempt.
859
- #
860
- # @see Revox::Models::CallCreateResponse::Call::CallAttempt#status
861
- module Status
862
- extend Revox::Internal::Type::Enum
2182
+ # @!attribute to_phone_number
2183
+ #
2184
+ # @return [String]
2185
+ required :to_phone_number, String
863
2186
 
864
- QUEUED = :queued
865
- RINGING = :ringing
866
- ONGOING = :ongoing
867
- COMPLETED = :completed
868
- ERROR = :error
2187
+ # @!attribute twilio_message_sid
2188
+ #
2189
+ # @return [String, nil]
2190
+ required :twilio_message_sid, String, nil?: true
869
2191
 
870
- # @!method self.values
871
- # @return [Array<Symbol>]
872
- end
2192
+ # @!attribute type
2193
+ #
2194
+ # @return [Symbol, Revox::Models::CallCreateResponse::Call::CallAttempt::SMSLog::Type]
2195
+ required :type, enum: -> { Revox::Models::CallCreateResponse::Call::CallAttempt::SMSLog::Type }
873
2196
 
874
- # Who ended the call: 'agent' (AI agent), 'user' (caller/callee hung up), or
875
- # 'system' (e.g. max duration limit).
876
- #
877
- # @see Revox::Models::CallCreateResponse::Call::CallAttempt#ended_by
878
- module EndedBy
879
- extend Revox::Internal::Type::Enum
2197
+ # @!method initialize(id:, created_at:, message_body:, to_phone_number:, twilio_message_sid:, type:)
2198
+ # @param id [String]
2199
+ #
2200
+ # @param created_at [Object] When the SMS was sent.
2201
+ #
2202
+ # @param message_body [String]
2203
+ #
2204
+ # @param to_phone_number [String]
2205
+ #
2206
+ # @param twilio_message_sid [String, nil]
2207
+ #
2208
+ # @param type [Symbol, Revox::Models::CallCreateResponse::Call::CallAttempt::SMSLog::Type]
880
2209
 
881
- AGENT = :agent
882
- USER = :user
883
- SYSTEM = :system
2210
+ # @see Revox::Models::CallCreateResponse::Call::CallAttempt::SMSLog#type
2211
+ module Type
2212
+ extend Revox::Internal::Type::Enum
884
2213
 
885
- # @!method self.values
886
- # @return [Array<Symbol>]
2214
+ IN_CALL = :in_call
2215
+ VOICEMAIL = :voicemail
2216
+ AFTER_CALL = :after_call
2217
+
2218
+ # @!method self.values
2219
+ # @return [Array<Symbol>]
2220
+ end
887
2221
  end
888
2222
 
889
2223
  class Transcript < Revox::Internal::Type::BaseModel
@@ -913,12 +2247,18 @@ module Revox
913
2247
  # @return [String, nil]
914
2248
  optional :tool_name, String
915
2249
 
916
- # @!method initialize(content:, role:, tool_arguments: nil, tool_is_error: nil, tool_name: nil)
2250
+ # @!attribute tool_output
2251
+ #
2252
+ # @return [String, nil]
2253
+ optional :tool_output, String
2254
+
2255
+ # @!method initialize(content:, role:, tool_arguments: nil, tool_is_error: nil, tool_name: nil, tool_output: nil)
917
2256
  # @param content [String]
918
2257
  # @param role [Symbol, Revox::Models::CallCreateResponse::Call::CallAttempt::Transcript::Role]
919
2258
  # @param tool_arguments [Hash{Symbol=>Object}, String]
920
2259
  # @param tool_is_error [Boolean]
921
2260
  # @param tool_name [String]
2261
+ # @param tool_output [String]
922
2262
 
923
2263
  # @see Revox::Models::CallCreateResponse::Call::CallAttempt::Transcript#role
924
2264
  module Role
@@ -926,6 +2266,7 @@ module Revox
926
2266
 
927
2267
  USER = :user
928
2268
  ASSISTANT = :assistant
2269
+ HUMAN_AGENT = :human_agent
929
2270
  TOOL = :tool
930
2271
 
931
2272
  # @!method self.values
@@ -951,6 +2292,23 @@ module Revox
951
2292
 
952
2293
  # @see Revox::Models::CallCreateResponse::Call#call_retry_config
953
2294
  class CallRetryConfig < Revox::Internal::Type::BaseModel
2295
+ # @!attribute allowed_days
2296
+ # Days of the week when calls are allowed, in the recipient's timezone. Default:
2297
+ # Monday through Friday.
2298
+ #
2299
+ # @return [Array<Symbol, Revox::Models::CallCreateResponse::Call::CallRetryConfig::AllowedDay>]
2300
+ required :allowed_days,
2301
+ -> { Revox::Internal::Type::ArrayOf[enum: Revox::Models::CallCreateResponse::Call::CallRetryConfig::AllowedDay] }
2302
+
2303
+ # @!attribute call_twice_in_a_row
2304
+ # If true and max_retry_attempts >= 2, attempt #2 fires immediately (skipping
2305
+ # retry_delay_seconds) when attempt #1 didn't reach a human.
2306
+ # Calling-window/allowed-days checks still apply. Only affects the 1→2 transition.
2307
+ # Default: false.
2308
+ #
2309
+ # @return [Boolean]
2310
+ required :call_twice_in_a_row, Revox::Internal::Type::Boolean
2311
+
954
2312
  # @!attribute calling_windows
955
2313
  #
956
2314
  # @return [Array<Revox::Models::CallCreateResponse::Call::CallRetryConfig::CallingWindow>]
@@ -971,19 +2329,38 @@ module Revox
971
2329
  # @return [String, nil]
972
2330
  optional :timezone, String, nil?: true
973
2331
 
974
- # @!method initialize(calling_windows:, max_retry_attempts:, timezone: nil)
2332
+ # @!method initialize(allowed_days:, call_twice_in_a_row:, calling_windows:, max_retry_attempts:, timezone: nil)
975
2333
  # Some parameter documentations has been truncated, see
976
2334
  # {Revox::Models::CallCreateResponse::Call::CallRetryConfig} for more details.
977
2335
  #
978
2336
  # Configuration for call retry behavior including time windows, delays, and max
979
2337
  # iterations. If not provided, defaults will be used.
980
2338
  #
2339
+ # @param allowed_days [Array<Symbol, Revox::Models::CallCreateResponse::Call::CallRetryConfig::AllowedDay>] Days of the week when calls are allowed, in the recipient's timezone. Default: M
2340
+ #
2341
+ # @param call_twice_in_a_row [Boolean] If true and max_retry_attempts >= 2, attempt #2 fires immediately (skipping retr
2342
+ #
981
2343
  # @param calling_windows [Array<Revox::Models::CallCreateResponse::Call::CallRetryConfig::CallingWindow>]
982
2344
  #
983
2345
  # @param max_retry_attempts [Integer] Maximum number of call retry attempts. Default: 3.
984
2346
  #
985
2347
  # @param timezone [String, nil] Optional IANA timezone identifier to override the automatic timezone detection f
986
2348
 
2349
+ module AllowedDay
2350
+ extend Revox::Internal::Type::Enum
2351
+
2352
+ MONDAY = :monday
2353
+ TUESDAY = :tuesday
2354
+ WEDNESDAY = :wednesday
2355
+ THURSDAY = :thursday
2356
+ FRIDAY = :friday
2357
+ SATURDAY = :saturday
2358
+ SUNDAY = :sunday
2359
+
2360
+ # @!method self.values
2361
+ # @return [Array<Symbol>]
2362
+ end
2363
+
987
2364
  class CallingWindow < Revox::Internal::Type::BaseModel
988
2365
  # @!attribute calling_window_end_time
989
2366
  # End time for the calling window in the recipient's timezone (or
@@ -1037,6 +2414,38 @@ module Revox
1037
2414
  # @param name [String]
1038
2415
  end
1039
2416
 
2417
+ # @see Revox::Models::CallCreateResponse::Call#contact
2418
+ class Contact < Revox::Internal::Type::BaseModel
2419
+ # @!attribute company
2420
+ #
2421
+ # @return [String, nil]
2422
+ required :company, String, nil?: true
2423
+
2424
+ # @!attribute email
2425
+ #
2426
+ # @return [String, nil]
2427
+ required :email, String, nil?: true
2428
+
2429
+ # @!attribute first_name
2430
+ #
2431
+ # @return [String, nil]
2432
+ required :first_name, String, nil?: true
2433
+
2434
+ # @!attribute last_name
2435
+ #
2436
+ # @return [String, nil]
2437
+ required :last_name, String, nil?: true
2438
+
2439
+ # @!method initialize(company:, email:, first_name:, last_name:)
2440
+ # Magic contact variables (prospect identity) extracted from the call's input data
2441
+ # and transcript.
2442
+ #
2443
+ # @param company [String, nil]
2444
+ # @param email [String, nil]
2445
+ # @param first_name [String, nil]
2446
+ # @param last_name [String, nil]
2447
+ end
2448
+
1040
2449
  # Whether the call is inbound or outbound.
1041
2450
  #
1042
2451
  # @see Revox::Models::CallCreateResponse::Call#direction
@@ -1110,12 +2519,20 @@ module Revox
1110
2519
  # @return [Symbol, Revox::Models::CallCreateResponse::Call::LastCallAttempt::Status]
1111
2520
  required :status, enum: -> { Revox::Models::CallCreateResponse::Call::LastCallAttempt::Status }
1112
2521
 
2522
+ # @!attribute assistants_used
2523
+ # Assistant node ids entered during this attempt, in traversal order.
2524
+ #
2525
+ # @return [Array<String>, nil]
2526
+ optional :assistants_used, Revox::Internal::Type::ArrayOf[String], nil?: true
2527
+
1113
2528
  # @!attribute end_reason
1114
2529
  # Reason for ending the call when ended_by is 'agent'. E.g. 'tool_end_call',
1115
2530
  # 'voicemail', 'transfer', 'ivr_no_navigate'.
1116
2531
  #
1117
- # @return [String, nil]
1118
- optional :end_reason, String, nil?: true
2532
+ # @return [Symbol, Revox::Models::CallCreateResponse::Call::LastCallAttempt::EndReason, nil]
2533
+ optional :end_reason,
2534
+ enum: -> { Revox::Models::CallCreateResponse::Call::LastCallAttempt::EndReason },
2535
+ nil?: true
1119
2536
 
1120
2537
  # @!attribute ended_by
1121
2538
  # Who ended the call: 'agent' (AI agent), 'user' (caller/callee hung up), or
@@ -1126,6 +2543,25 @@ module Revox
1126
2543
  enum: -> { Revox::Models::CallCreateResponse::Call::LastCallAttempt::EndedBy },
1127
2544
  nil?: true
1128
2545
 
2546
+ # @!attribute post_call_transcript
2547
+ # Higher-quality transcript generated after the call via Soniox async STT. Null
2548
+ # until generated or when no recording is available.
2549
+ #
2550
+ # @return [Array<Revox::Models::CallCreateResponse::Call::LastCallAttempt::PostCallTranscript>, nil]
2551
+ optional :post_call_transcript,
2552
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CallCreateResponse::Call::LastCallAttempt::PostCallTranscript] },
2553
+ nil?: true
2554
+
2555
+ # @!attribute sms_log
2556
+ # Automatic SMS sent after the call (voicemail and after-call), ordered oldest
2557
+ # first. The in-call `send_sms` is excluded — it already appears in the transcript
2558
+ # as a tool call.
2559
+ #
2560
+ # @return [Array<Revox::Models::CallCreateResponse::Call::LastCallAttempt::SMSLog>, nil]
2561
+ optional :sms_log,
2562
+ -> { Revox::Internal::Type::ArrayOf[Revox::Models::CallCreateResponse::Call::LastCallAttempt::SMSLog] },
2563
+ nil?: true
2564
+
1129
2565
  # @!attribute structured_output
1130
2566
  # The data extracted from the call, using the structured output config from the
1131
2567
  # parent call object.
@@ -1136,14 +2572,14 @@ module Revox
1136
2572
  nil?: true
1137
2573
 
1138
2574
  # @!attribute transcript
1139
- # The transcript of the call.
2575
+ # The live transcript of the call, built in real time.
1140
2576
  #
1141
2577
  # @return [Array<Revox::Models::CallCreateResponse::Call::LastCallAttempt::Transcript>, nil]
1142
2578
  optional :transcript,
1143
2579
  -> { Revox::Internal::Type::ArrayOf[Revox::Models::CallCreateResponse::Call::LastCallAttempt::Transcript] },
1144
2580
  nil?: true
1145
2581
 
1146
- # @!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)
2582
+ # @!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)
1147
2583
  # Some parameter documentations has been truncated, see
1148
2584
  # {Revox::Models::CallCreateResponse::Call::LastCallAttempt} for more details.
1149
2585
  #
@@ -1168,13 +2604,19 @@ module Revox
1168
2604
  #
1169
2605
  # @param status [Symbol, Revox::Models::CallCreateResponse::Call::LastCallAttempt::Status] The status of the call attempt.
1170
2606
  #
1171
- # @param end_reason [String, nil] Reason for ending the call when ended_by is 'agent'. E.g. 'tool_end_call', 'voic
2607
+ # @param assistants_used [Array<String>, nil] Assistant node ids entered during this attempt, in traversal order.
2608
+ #
2609
+ # @param end_reason [Symbol, Revox::Models::CallCreateResponse::Call::LastCallAttempt::EndReason, nil] Reason for ending the call when ended_by is 'agent'. E.g. 'tool_end_call', 'voic
1172
2610
  #
1173
2611
  # @param ended_by [Symbol, Revox::Models::CallCreateResponse::Call::LastCallAttempt::EndedBy, nil] Who ended the call: 'agent' (AI agent), 'user' (caller/callee hung up), or 'syst
1174
2612
  #
2613
+ # @param post_call_transcript [Array<Revox::Models::CallCreateResponse::Call::LastCallAttempt::PostCallTranscript>, nil] Higher-quality transcript generated after the call via Soniox async STT. Null un
2614
+ #
2615
+ # @param sms_log [Array<Revox::Models::CallCreateResponse::Call::LastCallAttempt::SMSLog>, nil] Automatic SMS sent after the call (voicemail and after-call), ordered oldest fir
2616
+ #
1175
2617
  # @param structured_output [Hash{Symbol=>Object}, nil] The data extracted from the call, using the structured output config from the pa
1176
2618
  #
1177
- # @param transcript [Array<Revox::Models::CallCreateResponse::Call::LastCallAttempt::Transcript>, nil] The transcript of the call.
2619
+ # @param transcript [Array<Revox::Models::CallCreateResponse::Call::LastCallAttempt::Transcript>, nil] The live transcript of the call, built in real time.
1178
2620
 
1179
2621
  # The SIP error that occurred.
1180
2622
  #
@@ -1225,6 +2667,34 @@ module Revox
1225
2667
  # @return [Array<Symbol>]
1226
2668
  end
1227
2669
 
2670
+ # Reason for ending the call when ended_by is 'agent'. E.g. 'tool_end_call',
2671
+ # 'voicemail', 'transfer', 'ivr_no_navigate'.
2672
+ #
2673
+ # @see Revox::Models::CallCreateResponse::Call::LastCallAttempt#end_reason
2674
+ module EndReason
2675
+ extend Revox::Internal::Type::Enum
2676
+
2677
+ CLIENT_INITIATED = :client_initiated
2678
+ CONNECTION_TIMEOUT = :connection_timeout
2679
+ HUMAN_TAKEOVER = :human_takeover
2680
+ IVR_NO_NAVIGATE = :ivr_no_navigate
2681
+ MAX_DURATION = :max_duration
2682
+ PARTICIPANT_REMOVED = :participant_removed
2683
+ TOOL_END_CALL = :tool_end_call
2684
+ TRANSFER = :transfer
2685
+ USER_INACTIVE = :user_inactive
2686
+ USER_REJECTED = :user_rejected
2687
+ USER_UNAVAILABLE = :user_unavailable
2688
+ VOICEMAIL = :voicemail
2689
+ SPEED_DIAL_ABANDONED = :speed_dial_abandoned
2690
+ SPEED_DIAL_OPERATOR_MISSED = :speed_dial_operator_missed
2691
+ SPEED_DIAL_TIMEOUT = :speed_dial_timeout
2692
+ SPEED_DIAL_HANGUP = :speed_dial_hangup
2693
+
2694
+ # @!method self.values
2695
+ # @return [Array<Symbol>]
2696
+ end
2697
+
1228
2698
  # Who ended the call: 'agent' (AI agent), 'user' (caller/callee hung up), or
1229
2699
  # 'system' (e.g. max duration limit).
1230
2700
  #
@@ -1240,6 +2710,134 @@ module Revox
1240
2710
  # @return [Array<Symbol>]
1241
2711
  end
1242
2712
 
2713
+ class PostCallTranscript < Revox::Internal::Type::BaseModel
2714
+ # @!attribute content
2715
+ #
2716
+ # @return [String]
2717
+ required :content, String
2718
+
2719
+ # @!attribute role
2720
+ #
2721
+ # @return [Symbol, Revox::Models::CallCreateResponse::Call::LastCallAttempt::PostCallTranscript::Role]
2722
+ required :role,
2723
+ enum: -> { Revox::Models::CallCreateResponse::Call::LastCallAttempt::PostCallTranscript::Role }
2724
+
2725
+ # @!attribute tool_arguments
2726
+ #
2727
+ # @return [Hash{Symbol=>Object}, String, nil]
2728
+ optional :tool_arguments,
2729
+ union: -> { Revox::Models::CallCreateResponse::Call::LastCallAttempt::PostCallTranscript::ToolArguments }
2730
+
2731
+ # @!attribute tool_is_error
2732
+ #
2733
+ # @return [Boolean, nil]
2734
+ optional :tool_is_error, Revox::Internal::Type::Boolean
2735
+
2736
+ # @!attribute tool_name
2737
+ #
2738
+ # @return [String, nil]
2739
+ optional :tool_name, String
2740
+
2741
+ # @!attribute tool_output
2742
+ #
2743
+ # @return [String, nil]
2744
+ optional :tool_output, String
2745
+
2746
+ # @!method initialize(content:, role:, tool_arguments: nil, tool_is_error: nil, tool_name: nil, tool_output: nil)
2747
+ # @param content [String]
2748
+ # @param role [Symbol, Revox::Models::CallCreateResponse::Call::LastCallAttempt::PostCallTranscript::Role]
2749
+ # @param tool_arguments [Hash{Symbol=>Object}, String]
2750
+ # @param tool_is_error [Boolean]
2751
+ # @param tool_name [String]
2752
+ # @param tool_output [String]
2753
+
2754
+ # @see Revox::Models::CallCreateResponse::Call::LastCallAttempt::PostCallTranscript#role
2755
+ module Role
2756
+ extend Revox::Internal::Type::Enum
2757
+
2758
+ USER = :user
2759
+ ASSISTANT = :assistant
2760
+ HUMAN_AGENT = :human_agent
2761
+ TOOL = :tool
2762
+
2763
+ # @!method self.values
2764
+ # @return [Array<Symbol>]
2765
+ end
2766
+
2767
+ # @see Revox::Models::CallCreateResponse::Call::LastCallAttempt::PostCallTranscript#tool_arguments
2768
+ module ToolArguments
2769
+ extend Revox::Internal::Type::Union
2770
+
2771
+ variant -> { Revox::Models::CallCreateResponse::Call::LastCallAttempt::PostCallTranscript::ToolArguments::UnionMember0Map }
2772
+
2773
+ variant String
2774
+
2775
+ # @!method self.variants
2776
+ # @return [Array(Hash{Symbol=>Object}, String)]
2777
+
2778
+ # @type [Revox::Internal::Type::Converter]
2779
+ UnionMember0Map = Revox::Internal::Type::HashOf[Revox::Internal::Type::Unknown]
2780
+ end
2781
+ end
2782
+
2783
+ class SMSLog < Revox::Internal::Type::BaseModel
2784
+ # @!attribute id
2785
+ #
2786
+ # @return [String]
2787
+ required :id, String
2788
+
2789
+ # @!attribute created_at
2790
+ # When the SMS was sent.
2791
+ #
2792
+ # @return [Object]
2793
+ required :created_at, Revox::Internal::Type::Unknown
2794
+
2795
+ # @!attribute message_body
2796
+ #
2797
+ # @return [String]
2798
+ required :message_body, String
2799
+
2800
+ # @!attribute to_phone_number
2801
+ #
2802
+ # @return [String]
2803
+ required :to_phone_number, String
2804
+
2805
+ # @!attribute twilio_message_sid
2806
+ #
2807
+ # @return [String, nil]
2808
+ required :twilio_message_sid, String, nil?: true
2809
+
2810
+ # @!attribute type
2811
+ #
2812
+ # @return [Symbol, Revox::Models::CallCreateResponse::Call::LastCallAttempt::SMSLog::Type]
2813
+ required :type, enum: -> { Revox::Models::CallCreateResponse::Call::LastCallAttempt::SMSLog::Type }
2814
+
2815
+ # @!method initialize(id:, created_at:, message_body:, to_phone_number:, twilio_message_sid:, type:)
2816
+ # @param id [String]
2817
+ #
2818
+ # @param created_at [Object] When the SMS was sent.
2819
+ #
2820
+ # @param message_body [String]
2821
+ #
2822
+ # @param to_phone_number [String]
2823
+ #
2824
+ # @param twilio_message_sid [String, nil]
2825
+ #
2826
+ # @param type [Symbol, Revox::Models::CallCreateResponse::Call::LastCallAttempt::SMSLog::Type]
2827
+
2828
+ # @see Revox::Models::CallCreateResponse::Call::LastCallAttempt::SMSLog#type
2829
+ module Type
2830
+ extend Revox::Internal::Type::Enum
2831
+
2832
+ IN_CALL = :in_call
2833
+ VOICEMAIL = :voicemail
2834
+ AFTER_CALL = :after_call
2835
+
2836
+ # @!method self.values
2837
+ # @return [Array<Symbol>]
2838
+ end
2839
+ end
2840
+
1243
2841
  class Transcript < Revox::Internal::Type::BaseModel
1244
2842
  # @!attribute content
1245
2843
  #
@@ -1267,12 +2865,18 @@ module Revox
1267
2865
  # @return [String, nil]
1268
2866
  optional :tool_name, String
1269
2867
 
1270
- # @!method initialize(content:, role:, tool_arguments: nil, tool_is_error: nil, tool_name: nil)
2868
+ # @!attribute tool_output
2869
+ #
2870
+ # @return [String, nil]
2871
+ optional :tool_output, String
2872
+
2873
+ # @!method initialize(content:, role:, tool_arguments: nil, tool_is_error: nil, tool_name: nil, tool_output: nil)
1271
2874
  # @param content [String]
1272
2875
  # @param role [Symbol, Revox::Models::CallCreateResponse::Call::LastCallAttempt::Transcript::Role]
1273
2876
  # @param tool_arguments [Hash{Symbol=>Object}, String]
1274
2877
  # @param tool_is_error [Boolean]
1275
2878
  # @param tool_name [String]
2879
+ # @param tool_output [String]
1276
2880
 
1277
2881
  # @see Revox::Models::CallCreateResponse::Call::LastCallAttempt::Transcript#role
1278
2882
  module Role
@@ -1280,6 +2884,7 @@ module Revox
1280
2884
 
1281
2885
  USER = :user
1282
2886
  ASSISTANT = :assistant
2887
+ HUMAN_AGENT = :human_agent
1283
2888
  TOOL = :tool
1284
2889
 
1285
2890
  # @!method self.values
@@ -1311,6 +2916,10 @@ module Revox
1311
2916
 
1312
2917
  variant -> { Revox::Models::CallCreateResponse::Call::LlmModel::UnionMember1 }
1313
2918
 
2919
+ variant -> { Revox::Models::CallCreateResponse::Call::LlmModel::UnionMember2 }
2920
+
2921
+ variant -> { Revox::Models::CallCreateResponse::Call::LlmModel::UnionMember3 }
2922
+
1314
2923
  class UnionMember0 < Revox::Internal::Type::BaseModel
1315
2924
  # @!attribute name
1316
2925
  #
@@ -1365,8 +2974,91 @@ module Revox
1365
2974
  # @param type [Symbol, :openrouter] Use a model from OpenRouter.
1366
2975
  end
1367
2976
 
2977
+ class UnionMember2 < Revox::Internal::Type::BaseModel
2978
+ # @!attribute api_key
2979
+ # API key sent as Bearer token to the custom endpoint.
2980
+ #
2981
+ # @return [String]
2982
+ required :api_key, String
2983
+
2984
+ # @!attribute api_url
2985
+ # Base URL for the OpenAI-compatible API, e.g. https://api.together.xyz/v1
2986
+ #
2987
+ # @return [String]
2988
+ required :api_url, String
2989
+
2990
+ # @!attribute model_name
2991
+ # Model name as expected by the provider, e.g. meta-llama/llama-3-70b
2992
+ #
2993
+ # @return [String]
2994
+ required :model_name, String
2995
+
2996
+ # @!attribute type
2997
+ # OpenAI-compatible chat completions API (bring your own endpoint and key).
2998
+ #
2999
+ # @return [Symbol, :custom]
3000
+ required :type, const: :custom
3001
+
3002
+ # @!method initialize(api_key:, api_url:, model_name:, type: :custom)
3003
+ # @param api_key [String] API key sent as Bearer token to the custom endpoint.
3004
+ #
3005
+ # @param api_url [String] Base URL for the OpenAI-compatible API, e.g. https://api.together.xyz/v1
3006
+ #
3007
+ # @param model_name [String] Model name as expected by the provider, e.g. meta-llama/llama-3-70b
3008
+ #
3009
+ # @param type [Symbol, :custom] OpenAI-compatible chat completions API (bring your own endpoint and key).
3010
+ end
3011
+
3012
+ class UnionMember3 < Revox::Internal::Type::BaseModel
3013
+ # @!attribute provider
3014
+ # The provider to use from Realtime. eg: openai, google.
3015
+ #
3016
+ # @return [Symbol, Revox::Models::CallCreateResponse::Call::LlmModel::UnionMember3::Provider]
3017
+ required :provider, enum: -> { Revox::Models::CallCreateResponse::Call::LlmModel::UnionMember3::Provider }
3018
+
3019
+ # @!attribute realtime_model_id
3020
+ # The model ID to use from Realtime. eg: gpt-4.1
3021
+ #
3022
+ # @return [String]
3023
+ required :realtime_model_id, String
3024
+
3025
+ # @!attribute type
3026
+ # Use a model from Realtime.
3027
+ #
3028
+ # @return [Symbol, :realtime]
3029
+ required :type, const: :realtime
3030
+
3031
+ # @!attribute realtime_voice_id
3032
+ # Output voice for the realtime provider (e.g. OpenAI: marin; Gemini: Puck).
3033
+ #
3034
+ # @return [String, nil]
3035
+ optional :realtime_voice_id, String
3036
+
3037
+ # @!method initialize(provider:, realtime_model_id:, realtime_voice_id: nil, type: :realtime)
3038
+ # @param provider [Symbol, Revox::Models::CallCreateResponse::Call::LlmModel::UnionMember3::Provider] The provider to use from Realtime. eg: openai, google.
3039
+ #
3040
+ # @param realtime_model_id [String] The model ID to use from Realtime. eg: gpt-4.1
3041
+ #
3042
+ # @param realtime_voice_id [String] Output voice for the realtime provider (e.g. OpenAI: marin; Gemini: Puck).
3043
+ #
3044
+ # @param type [Symbol, :realtime] Use a model from Realtime.
3045
+
3046
+ # The provider to use from Realtime. eg: openai, google.
3047
+ #
3048
+ # @see Revox::Models::CallCreateResponse::Call::LlmModel::UnionMember3#provider
3049
+ module Provider
3050
+ extend Revox::Internal::Type::Enum
3051
+
3052
+ OPENAI = :openai
3053
+ GOOGLE = :google
3054
+
3055
+ # @!method self.values
3056
+ # @return [Array<Symbol>]
3057
+ end
3058
+ end
3059
+
1368
3060
  # @!method self.variants
1369
- # @return [Array(Revox::Models::CallCreateResponse::Call::LlmModel::UnionMember0, Revox::Models::CallCreateResponse::Call::LlmModel::UnionMember1)]
3061
+ # @return [Array(Revox::Models::CallCreateResponse::Call::LlmModel::UnionMember0, Revox::Models::CallCreateResponse::Call::LlmModel::UnionMember1, Revox::Models::CallCreateResponse::Call::LlmModel::UnionMember2, Revox::Models::CallCreateResponse::Call::LlmModel::UnionMember3)]
1370
3062
  end
1371
3063
 
1372
3064
  # The status of the call.
@@ -1378,7 +3070,9 @@ module Revox
1378
3070
  INITIALIZING = :initializing
1379
3071
  QUEUED_FOR_CALLING = :queued_for_calling
1380
3072
  CALLING = :calling
3073
+ POST_PROCESSING = :post_processing
1381
3074
  SCHEDULED = :scheduled
3075
+ PAUSED = :paused
1382
3076
  COMPLETED = :completed
1383
3077
  CANCELLED = :cancelled
1384
3078
  ERRORED = :errored
@@ -1386,6 +3080,24 @@ module Revox
1386
3080
  # @!method self.values
1387
3081
  # @return [Array<Symbol>]
1388
3082
  end
3083
+
3084
+ # Business outcome of the call. Null if not computed or no transcript.
3085
+ #
3086
+ # @see Revox::Models::CallCreateResponse::Call#outcome
3087
+ module Outcome
3088
+ extend Revox::Internal::Type::Enum
3089
+
3090
+ NOT_INTERESTED = :not_interested
3091
+ INTERESTED = :interested
3092
+ COMPLETED = :completed
3093
+ REQUESTED_CALLBACK_LATER = :requested_callback_later
3094
+ REQUESTED_CALLBACK_NEW_NUMBER = :requested_callback_new_number
3095
+ DO_NOT_CONTACT = :do_not_contact
3096
+ AI_AVERSE = :ai_averse
3097
+
3098
+ # @!method self.values
3099
+ # @return [Array<Symbol>]
3100
+ end
1389
3101
  end
1390
3102
  end
1391
3103
  end